From: Daan De Meyer Date: Sat, 2 Mar 2024 13:29:54 +0000 (+0100) Subject: Add ToolsTreeRepositories= and ToolsTreePackageManagerTrees= X-Git-Tag: v21~21^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F2447%2Fhead;p=thirdparty%2Fmkosi.git Add ToolsTreeRepositories= and ToolsTreePackageManagerTrees= Fixes #2430 --- diff --git a/mkosi/__init__.py b/mkosi/__init__.py index 27786d617..acbfc13db 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -3584,6 +3584,8 @@ def finalize_default_tools(args: Args, config: Config, *, resources: Path) -> Co "--distribution", str(config.tools_tree_distribution), *(["--release", config.tools_tree_release] if config.tools_tree_release else []), *(["--mirror", config.tools_tree_mirror] if config.tools_tree_mirror else []), + "--repositories", ",".join(config.tools_tree_repositories), + "--package-manager-tree", ",".join(str(t) for t in config.tools_tree_package_manager_trees), "--repository-key-check", str(config.repository_key_check), "--cache-only", str(config.cacheonly), *(["--output-dir", str(config.output_dir)] if config.output_dir else []), diff --git a/mkosi/config.py b/mkosi/config.py index d5fc961b8..ec8bebce3 100644 --- a/mkosi/config.py +++ b/mkosi/config.py @@ -1305,6 +1305,8 @@ class Config: tools_tree_distribution: Optional[Distribution] tools_tree_release: Optional[str] tools_tree_mirror: Optional[str] + tools_tree_repositories: list[str] + tools_tree_package_manager_trees: list[ConfigTree] tools_tree_packages: list[str] runtime_trees: list[ConfigTree] runtime_size: Optional[int] @@ -2469,6 +2471,22 @@ SETTINGS = ( default_factory=lambda ns: ns.mirror if ns.mirror and ns.distribution == ns.tools_tree_distribution else None, help="Set the mirror to use for the default tools tree", ), + ConfigSetting( + dest="tools_tree_repositories", + long="--tools-tree-repository", + metavar="REPOS", + section="Host", + parse=config_make_list_parser(delimiter=","), + help="Repositories to use for the default tools tree", + ), + ConfigSetting( + dest="tools_tree_package_manager_trees", + long="--tools-tree-package-manager-tree", + metavar="PATH", + section="Host", + parse=config_make_list_parser(delimiter=",", parse=make_tree_parser()), + help="Package manager trees for the default tools tree", + ), ConfigSetting( dest="tools_tree_packages", long="--tools-tree-package", @@ -3595,6 +3613,8 @@ def summary(config: Config) -> str: Tools Tree Distribution: {none_to_none(config.tools_tree_distribution)} Tools Tree Release: {none_to_none(config.tools_tree_release)} Tools Tree Mirror: {none_to_default(config.tools_tree_mirror)} + Tools Tree Repositories: {line_join_list(config.tools_tree_repositories)} + Tools Tree Package Manager Trees: {line_join_list(config.tools_tree_package_manager_trees)} Tools Tree Packages: {line_join_list(config.tools_tree_packages)} Runtime Trees: {line_join_list(config.runtime_trees)} Runtime Size: {format_bytes_or_none(config.runtime_size)} diff --git a/mkosi/resources/mkosi.md b/mkosi/resources/mkosi.md index 475534e9a..dccc1526d 100644 --- a/mkosi/resources/mkosi.md +++ b/mkosi/resources/mkosi.md @@ -1654,6 +1654,14 @@ boolean argument: either `1`, `yes`, or `true` to enable, or `0`, `no`, : Set the mirror to use for the default tools tree. By default, the default mirror for the tools tree distribution is used. +`ToolsTreeRepositories=`, `--tools-tree-repository` + +: Same as `Repositories=` but for the default tools tree. + +`ToolsTreePackageManagerTrees=`, `--tools-tree-package-manager-tree=` + +: Same as `PackageManagerTrees=` but for the default tools tree. + `ToolsTreePackages=`, `--tools-tree-packages=` : Extra packages to install into the default tools tree. Takes a comma diff --git a/tests/test_json.py b/tests/test_json.py index 2d0f2b880..83f6bcade 100644 --- a/tests/test_json.py +++ b/tests/test_json.py @@ -285,8 +285,17 @@ def test_config() -> None: "ToolsTree": null, "ToolsTreeDistribution": null, "ToolsTreeMirror": null, + "ToolsTreePackageManagerTrees": [ + { + "source": "/a/b/c", + "target": "/" + } + ], "ToolsTreePackages": [], "ToolsTreeRelease": null, + "ToolsTreeRepositories": [ + "abc" + ], "UseSubvolumes": "auto", "VerityCertificate": "/path/to/cert", "VerityKey": null, @@ -416,8 +425,10 @@ def test_config() -> None: tools_tree = None, tools_tree_distribution = None, tools_tree_mirror = None, + tools_tree_package_manager_trees = [ConfigTree(Path("/a/b/c"), Path("/"))], tools_tree_packages = [], tools_tree_release = None, + tools_tree_repositories = ["abc"], use_subvolumes = ConfigFeature.auto, verity_certificate = Path("/path/to/cert"), verity_key = None,