]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Make --repart-dir take a list of paths
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 7 Apr 2023 12:05:44 +0000 (14:05 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 7 Apr 2023 13:02:45 +0000 (15:02 +0200)
systemd-repart supports multiple definition directories so let's
extend that to mkosi as well.

mkosi/__init__.py
mkosi/backend.py

index 4bb39e9166de146e482e1ba09ee19fe90d60d8e5..095d8f4b21cf48b60eaf8e40ede991de6b073e9c 100644 (file)
@@ -1245,10 +1245,10 @@ SETTINGS = (
         parse=config_parse_boolean,
     ),
     MkosiConfigSetting(
-        dest="repart_dir",
-        name="RepartDirectory",
+        dest="repart_dirs",
+        name="RepartDirectories",
         section="Output",
-        parse=config_make_path_parser(required=True),
+        parse=config_make_list_parser(delimiter=",", parse=make_path_parser(required=True)),
         paths=("mkosi.repart",),
     ),
     MkosiConfigSetting(
@@ -1719,6 +1719,7 @@ def create_argument_parser() -> argparse.ArgumentParser:
         "--repart-dir",
         metavar="PATH",
         help="Directory containing systemd-repart partition definitions",
+        dest="repart_dirs",
         action=action,
     )
     group.add_argument(
@@ -2838,8 +2839,9 @@ def invoke_repart(state: MkosiState, skip: Sequence[str] = [], split: bool = Fal
     if split and state.config.split_artifacts:
         cmdline += ["--split=yes"]
 
-    if state.config.repart_dir:
-        definitions = Path(state.config.repart_dir)
+    if state.config.repart_dirs:
+        for d in state.config.repart_dirs:
+            cmdline += ["--definitions", d]
     else:
         definitions = state.workspace / "repart-definitions"
         if not definitions.exists():
@@ -2868,7 +2870,7 @@ def invoke_repart(state: MkosiState, skip: Sequence[str] = [], split: bool = Fal
                 )
             )
 
-    cmdline += ["--definitions", definitions]
+        cmdline += ["--definitions", definitions]
 
     env = dict(TMPDIR=str(state.workspace))
     for fs, options in state.installer.filesystem_options(state).items():
index 4dba35b2da109dee1cf61886b3ad9ae2a6349e22..7a29930f4231749d4bf196f283d69b0f181f0de6 100644 (file)
@@ -210,7 +210,7 @@ class MkosiConfig:
     repository_key_check: bool
     repositories: list[str]
     repo_dirs: list[Path]
-    repart_dir: Optional[str]
+    repart_dirs: list[Path]
     architecture: str
     output_format: OutputFormat
     manifest_format: list[ManifestFormat]