From: Daan De Meyer Date: Sat, 16 Mar 2024 19:31:38 +0000 (+0100) Subject: Store cpus and memory as integers X-Git-Tag: v23~85^2~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=71a1f6414a02ad4db3fe14210977091e7cb18c62;p=thirdparty%2Fmkosi.git Store cpus and memory as integers --- diff --git a/mkosi/config.py b/mkosi/config.py index a38e668e3..b02bc67f2 100644 --- a/mkosi/config.py +++ b/mkosi/config.py @@ -933,6 +933,16 @@ def config_parse_bytes(value: Optional[str], old: Optional[int] = None) -> Optio return parse_bytes(value) +def config_parse_number(value: Optional[str], old: Optional[int] = None) -> Optional[int]: + if not value: + return None + + try: + return int(value) + except ValueError: + die(f"{value!r} is not a valid number") + + def config_parse_profile(value: Optional[str], old: Optional[int] = None) -> Optional[str]: if not value: return None @@ -1377,8 +1387,8 @@ class Config: # QEMU-specific options qemu_gui: bool - qemu_smp: str - qemu_mem: str + qemu_smp: int + qemu_mem: int qemu_kvm: ConfigFeature qemu_vsock: ConfigFeature qemu_vsock_cid: int @@ -2647,14 +2657,16 @@ SETTINGS = ( dest="qemu_smp", metavar="SMP", section="Host", - default="1", + parse=config_parse_number, + default=1, help="Configure guest's SMP settings", ), ConfigSetting( dest="qemu_mem", metavar="MEM", section="Host", - default="2G", + parse=config_parse_bytes, + default=parse_bytes("2G"), help="Configure guest's RAM size", ), ConfigSetting( diff --git a/mkosi/qemu.py b/mkosi/qemu.py index 95079bb51..f64748140 100644 --- a/mkosi/qemu.py +++ b/mkosi/qemu.py @@ -590,7 +590,7 @@ def run_qemu(args: Args, config: Config) -> None: # A shared memory backend might increase ram usage so only add one if actually necessary for virtiofsd. shm = [] if config.runtime_trees or config.output_format == OutputFormat.directory: - shm = ["-object", f"memory-backend-memfd,id=mem,size={config.qemu_mem},share=on"] + shm = ["-object", f"memory-backend-memfd,id=mem,size={config.qemu_mem // 1024**2}M,share=on"] machine = f"type={config.architecture.default_qemu_machine()}" if firmware.is_uefi() and config.architecture.supports_smm(): @@ -601,8 +601,8 @@ def run_qemu(args: Args, config: Config) -> None: cmdline: list[PathString] = [ find_qemu_binary(config), "-machine", machine, - "-smp", config.qemu_smp, - "-m", config.qemu_mem, + "-smp", str(config.qemu_smp), + "-m", f"{config.qemu_mem // 1024**2}M", "-object", "rng-random,filename=/dev/urandom,id=rng0", "-device", "virtio-rng-pci,rng=rng0,id=rng-device0", *shm, diff --git a/mkosi/vmspawn.py b/mkosi/vmspawn.py index 1c6f9a5ff..d4af6f71b 100644 --- a/mkosi/vmspawn.py +++ b/mkosi/vmspawn.py @@ -55,8 +55,8 @@ def run_vmspawn(args: Args, config: Config) -> None: cmdline: list[PathString] = [ "systemd-vmspawn", - "--cpus", config.qemu_smp, - "--ram", config.qemu_mem, + "--cpus", str(config.qemu_smp), + "--ram", str(config.qemu_mem), "--kvm", config.qemu_kvm.to_tristate(), "--vsock", config.qemu_vsock.to_tristate(), "--tpm", config.qemu_swtpm.to_tristate(), diff --git a/tests/test_json.py b/tests/test_json.py index fdbbd151d..0b0859c21 100644 --- a/tests/test_json.py +++ b/tests/test_json.py @@ -224,8 +224,8 @@ def test_config() -> None: "QemuGui": true, "QemuKernel": null, "QemuKvm": "auto", - "QemuMem": "", - "QemuSmp": "yes", + "QemuMem": 123, + "QemuSmp": 2, "QemuSwtpm": "auto", "QemuVsock": "enabled", "QemuVsockConnectionId": -2, @@ -401,8 +401,8 @@ def test_config() -> None: qemu_gui = True, qemu_kernel = None, qemu_kvm = ConfigFeature.auto, - qemu_mem = "", - qemu_smp = "yes", + qemu_mem = 123, + qemu_smp = 2, qemu_swtpm = ConfigFeature.auto, qemu_vsock = ConfigFeature.enabled, qemu_vsock_cid = QemuVsockCID.hash,