From: Daan De Meyer Date: Wed, 10 Jan 2024 09:58:29 +0000 (+0100) Subject: Copy nspawn settings to the output directory again X-Git-Tag: v20.1~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=325a461bf46545dc90f02c7a43f5ea20d477c1b1;p=thirdparty%2Fmkosi.git Copy nspawn settings to the output directory again machinectl pull-tar looks for a settings file so let's make sure the output directory can be used directly for this purpose by copying the nspawn settings file to the output directory again. --- diff --git a/mkosi/__init__.py b/mkosi/__init__.py index f3a9dae55..f03a68fc9 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -1911,6 +1911,14 @@ def copy_vmlinuz(context: Context) -> None: break +def copy_nspawn_settings(context: Context) -> None: + if context.config.nspawn_settings is None: + return None + + with complete_step("Copying nspawn settings file…"): + shutil.copy2(context.config.nspawn_settings, context.staging / context.config.output_nspawn_settings) + + def copy_initrd(context: Context) -> None: if (context.staging / context.config.output_split_initrd).exists(): return @@ -2096,6 +2104,7 @@ def check_outputs(config: Config) -> None: config.output_with_compression, config.output_checksum if config.checksum else None, config.output_signature if config.sign else None, + config.output_nspawn_settings if config.nspawn_settings else None, ): if f and (config.output_dir_or_cwd() / f).exists(): die(f"Output path {f} exists already. (Consider invocation with --force.)") @@ -2848,6 +2857,7 @@ def build_image(args: Args, config: Config) -> None: if context.config.split_artifacts: make_disk(context, split=True, msg="Extracting partitions") + copy_nspawn_settings(context) copy_vmlinuz(context) copy_initrd(context) @@ -2993,9 +3003,11 @@ def run_shell(args: Args, config: Config) -> None: cmdline += [f"--set-credential={k}:{v}"] with contextlib.ExitStack() as stack: + # Make sure the latest nspawn settings are always used. if config.nspawn_settings: + if not (config.output_dir_or_cwd() / f"{name}.nspawn").exists(): + stack.callback(lambda: (config.output_dir_or_cwd() / f"{name}.nspawn").unlink(missing_ok=True)) shutil.copy2(config.nspawn_settings, config.output_dir_or_cwd() / f"{name}.nspawn") - stack.callback(lambda: (config.output_dir_or_cwd() / f"{name}.nspawn").unlink()) if config.ephemeral: fname = stack.enter_context(copy_ephemeral(config, config.output_dir_or_cwd() / config.output)) diff --git a/mkosi/config.py b/mkosi/config.py index 929fa5e3b..d8d476418 100644 --- a/mkosi/config.py +++ b/mkosi/config.py @@ -1281,6 +1281,10 @@ class Config: def output_split_initrd(self) -> str: return f"{self.output}.initrd" + @property + def output_nspawn_settings(self) -> str: + return f"{self.output}.nspawn" + @property def output_checksum(self) -> str: return f"{self.output}.SHA256SUMS"