]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Store cpus and memory as integers
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Sat, 16 Mar 2024 19:31:38 +0000 (20:31 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Sun, 17 Mar 2024 08:26:03 +0000 (09:26 +0100)
mkosi/config.py
mkosi/qemu.py
mkosi/vmspawn.py
tests/test_json.py

index a38e668e30f611fb5c8f2409f7f8b0e0ccea70cd..b02bc67f20a49bc771bc02f8dfcebb9a2bb6a164 100644 (file)
@@ -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(
index 95079bb51c6fee33677780edb776f54123522fe5..f64748140daf38521b55f45efdab810983e251a5 100644 (file)
@@ -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,
index 1c6f9a5ff05662da7bb291c48037522e789e6194..d4af6f71b251b5beec8a51423c9db0c888bb119c 100644 (file)
@@ -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(),
index fdbbd151d35da0c423f78102974a90e75592c880..0b0859c21c54c0169b95acd6e99537689140eef1 100644 (file)
@@ -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,