from mkosi.archive import extract_tar, make_cpio, make_tar
from mkosi.burn import run_burn
from mkosi.config import (
- Architecture,
Args,
BiosBootloader,
Bootloader,
def build_microcode_initrd(context: Context) -> Optional[Path]:
- if context.config.architecture not in (Architecture.x86, Architecture.x86_64):
+ if not context.config.architecture.is_x86_variant():
return None
microcode = context.workspace / "initrd-microcode.img"
}.get(self, "ttyS0")
def supports_smbios(self, firmware: QemuFirmware) -> bool:
- if self in (Architecture.x86, Architecture.x86_64):
+ if self.is_x86_variant():
return True
- return self in (Architecture.arm, Architecture.arm64) and firmware == QemuFirmware.uefi
+ return self.is_arm_variant() and firmware == QemuFirmware.uefi
def supports_fw_cfg(self) -> bool:
- return self in (Architecture.x86, Architecture.x86_64, Architecture.arm, Architecture.arm64)
+ return self.is_x86_variant() or self.is_arm_variant()
def supports_smm(self) -> bool:
- return self in (Architecture.x86, Architecture.x86_64)
+ return self.is_x86_variant()
def default_qemu_machine(self) -> str:
m = {
def is_native(self) -> bool:
return self == self.native()
+ def is_x86_variant(self) -> bool:
+ return self in (Architecture.x86, Architecture.x86_64)
+
+ def is_arm_variant(self) -> bool:
+ return self in (Architecture.arm, Architecture.arm64)
+
@classmethod
def native(cls) -> "Architecture":
return cls.from_uname(platform.machine())
if context.config.local_mirror:
yield Pacman.Repository("core", context.config.local_mirror)
else:
- if context.config.architecture == Architecture.arm64:
+ if context.config.architecture.is_arm_variant():
url = f"{context.config.mirror or 'http://mirror.archlinuxarm.org'}/$arch/$repo"
else:
url = f"{context.config.mirror or 'https://geo.mirror.pkgbuild.com'}/$repo/os/$arch"
a = {
Architecture.x86_64 : "x86_64",
Architecture.arm64 : "aarch64",
+ Architecture.arm : "armv7h",
}.get(arch)
if not a:
from collections.abc import Iterable
from pathlib import Path
-from mkosi.config import Architecture
from mkosi.context import Context
from mkosi.distributions import debian
from mkosi.installer.apt import Apt
)
return
- if context.config.architecture in (Architecture.x86, Architecture.x86_64):
+ if context.config.architecture.is_x86_variant():
mirror = context.config.mirror or "http://archive.ubuntu.com/ubuntu"
else:
mirror = context.config.mirror or "http://ports.ubuntu.com"
)
# Security updates repos are never mirrored. But !x86 are on the ports server.
- if context.config.architecture in [Architecture.x86, Architecture.x86_64]:
+ if context.config.architecture.is_x86_variant():
mirror = "http://security.ubuntu.com/ubuntu/"
else:
mirror = "http://ports.ubuntu.com/"
cmdline += ["-chardev", f"socket,id=chrtpm,path={sock}",
"-tpmdev", "emulator,id=tpm0,chardev=chrtpm"]
- if config.architecture == Architecture.x86_64:
+ if config.architecture.is_x86_variant():
cmdline += ["-device", "tpm-tis,tpmdev=tpm0"]
- elif config.architecture == Architecture.arm64:
+ elif config.architecture.is_arm_variant():
cmdline += ["-device", "tpm-tis-device,tpmdev=tpm0"]
if QemuDeviceNode.vhost_vsock in qemu_device_fds and config.architecture.supports_smbios(firmware):