]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Add ToolsTreePrepareScripts=
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Sun, 9 Feb 2025 15:04:32 +0000 (16:04 +0100)
committerJörg Behrmann <behrmann@physik.fu-berlin.de>
Mon, 10 Feb 2025 09:53:28 +0000 (10:53 +0100)
Let's give users a way to make arbitrary modifications to the default
tools tree.

mkosi/__init__.py
mkosi/config.py
mkosi/resources/man/mkosi.1.md
tests/test_json.py

index 3219d5bd3f04c632b61970fd3a931e1367e26452..75d47c76e5554993504aa319ba086a08048f064b 100644 (file)
@@ -4448,6 +4448,9 @@ def finalize_default_tools(config: Config, *, resources: Path) -> Config:
         "--incremental", str(config.incremental),
         *([f"--package={package}" for package in config.tools_tree_packages]),
         *([f"--package-directory={os.fspath(directory)}" for directory in config.tools_tree_package_directories]),  # noqa: E501
+        *([f"--build-sources={tree}" for tree in config.build_sources]),
+        "--build-sources-ephemeral", str(config.build_sources_ephemeral),
+        *([f"--prepare-script={os.fspath(script)}" for script in config.tools_tree_prepare_scripts]),
         "--output=tools",
         *(["--source-date-epoch", str(config.source_date_epoch)] if config.source_date_epoch is not None else []),  # noqa: E501
         *([f"--environment={k}='{v}'" for k, v in config.environment.items()]),
index e8ca9e75ca2d947d01537eaec76f0b7b6cc6fadb..ed24c7d15525d06c316b869e8eb65a9a5a7790ad 100644 (file)
@@ -1913,6 +1913,7 @@ class Config:
     tools_tree_sandbox_trees: list[ConfigTree]
     tools_tree_packages: list[str]
     tools_tree_package_directories: list[Path]
+    tools_tree_prepare_scripts: list[Path]
     tools_tree_certificates: bool
     extra_search_paths: list[Path]
     incremental: Incremental
@@ -3283,6 +3284,16 @@ SETTINGS: list[ConfigSetting[Any]] = [
         parse=config_make_list_parser(delimiter=",", parse=make_path_parser()),
         help="Specify a directory containing extra tools tree packages",
     ),
+    ConfigSetting(
+        dest="tools_tree_prepare_scripts",
+        long="--tools-tree-prepare-script",
+        metavar="PATH",
+        section="Build",
+        parse=config_make_list_parser(delimiter=",", parse=make_path_parser()),
+        paths=("mkosi.tools.prepare", "mkosi.tools.prepare.chroot"),
+        recursive_paths=("mkosi.tools.prepare.d/*",),
+        help="Prepare script to run inside the tools tree before it is cached",
+    ),
     ConfigSetting(
         dest="tools_tree_certificates",
         metavar="BOOL",
@@ -5007,6 +5018,7 @@ def summary(config: Config) -> str:
            Tools Tree Sandbox Trees: {line_join_list(config.tools_tree_sandbox_trees)}
                 Tools Tree Packages: {line_join_list(config.tools_tree_packages)}
      Tools Tree Package Directories: {line_join_list(config.tools_tree_package_directories)}
+         Tools Tree Prepare Scripts: {line_join_list(config.tools_tree_prepare_scripts)}
             Tools Tree Certificates: {yes_no(config.tools_tree_certificates)}
 
                  Extra Search Paths: {line_join_list(config.extra_search_paths)}
index db3f4d576a2db756086bbdff56377e45eb74236c..a8d6cb9c4c779519725f570281a5f4e1d3d12340 100644 (file)
@@ -1348,6 +1348,9 @@ boolean argument: either `1`, `yes`, or `true` to enable, or `0`, `no`,
 `ToolsTreePackageDirectories=`, `--tools-tree-package-directory=`
 :   Same as `PackageDirectories=`, but for the default tools tree.
 
+`ToolsTreePrepareScripts=`, `--tools-tree-prepare-script=`
+:   Same as `PrepareScripts=`, but for the default tools tree.
+
 `ToolsTreeCertificates=`, `--tools-tree-certificates=`
 :   Specify whether to use certificates and keys from the tools tree.
     Enabled by default. If enabled, `/etc/pki`, `/etc/ssl`,
index ad096794465e26021c6f0cc75902d948cae8003a..31265dfc13e097d1f25f7e21a84f3e2e572ddac7 100644 (file)
@@ -367,6 +367,9 @@ def test_config() -> None:
                 "/abc"
             ],
             "ToolsTreePackages": [],
+            "ToolsTreePrepareScripts": [
+                "/prepare"
+            ],
             "ToolsTreeRelease": null,
             "ToolsTreeRepositories": [
                 "abc"
@@ -571,6 +574,7 @@ def test_config() -> None:
         tools_tree_mirror=None,
         tools_tree_package_directories=[Path("/abc")],
         tools_tree_packages=[],
+        tools_tree_prepare_scripts=[Path("/prepare")],
         tools_tree_release=None,
         tools_tree_repositories=["abc"],
         tools_tree_sandbox_trees=[ConfigTree(Path("/a/b/c"), Path("/"))],