diff --git a/pmb/core/arch.py b/pmb/core/arch.py index 9684206c..6f370f20 100644 --- a/pmb/core/arch.py +++ b/pmb/core/arch.py @@ -182,6 +182,21 @@ class Arch(enum.Enum): f"Can not map Alpine architecture '{self}' to the right hostspec value" ) + def go(self) -> str: + match self: + case Arch.armhf | Arch.armv7: + return "arm" + case Arch.aarch64: + return "arm64" + case Arch.riscv64 | Arch.ppc64le: + return str(self) + case Arch.x86: + return "386" + case Arch.x86_64: + return "amd64" + case _: + raise ValueError(f"Can not map architecture '{self}' to Go arch") + def cpu_emulation_required(self) -> bool: # Obvious case: host arch is target arch if self == Arch.native(): diff --git a/test/core/test_arch.py b/test/core/test_arch.py index f81bf411..f97e6868 100644 --- a/test/core/test_arch.py +++ b/test/core/test_arch.py @@ -49,6 +49,17 @@ def test_valid_arches(): assert Arch.ppc64.qemu() == "ppc64" assert Arch.ppc64le.qemu() == "ppc64" + # Go arch + assert Arch.armhf.go() == "arm" + assert Arch.armv7.go() == "arm" + assert Arch.aarch64.go() == "arm64" + assert Arch.riscv64.go() == "riscv64" + assert Arch.ppc64le.go() == "ppc64le" + assert Arch.x86_64.go() == "amd64" + with pytest.raises(ValueError) as excinfo: + Arch.mips64.go() + assert "Can not map architecture 'mips64' to Go arch" in str(excinfo.value) + # Check that Arch.cpu_emulation_required() works assert Arch.native() == Arch.x86_64 or Arch.x86_64.cpu_emulation_required() assert Arch.native() == Arch.aarch64 or Arch.aarch64.cpu_emulation_required()