From: Daan De Meyer Date: Sun, 9 Feb 2025 15:04:32 +0000 (+0100) Subject: Add ToolsTreePrepareScripts= X-Git-Tag: v26~400 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3c15c12315386593f0ebcded41bea4ee08426f4;p=thirdparty%2Fmkosi.git Add ToolsTreePrepareScripts= Let's give users a way to make arbitrary modifications to the default tools tree. --- diff --git a/mkosi/__init__.py b/mkosi/__init__.py index 3219d5bd3..75d47c76e 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -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()]), diff --git a/mkosi/config.py b/mkosi/config.py index e8ca9e75c..ed24c7d15 100644 --- a/mkosi/config.py +++ b/mkosi/config.py @@ -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)} diff --git a/mkosi/resources/man/mkosi.1.md b/mkosi/resources/man/mkosi.1.md index db3f4d576..a8d6cb9c4 100644 --- a/mkosi/resources/man/mkosi.1.md +++ b/mkosi/resources/man/mkosi.1.md @@ -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`, diff --git a/tests/test_json.py b/tests/test_json.py index ad0967944..31265dfc1 100644 --- a/tests/test_json.py +++ b/tests/test_json.py @@ -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("/"))],