From: Daan De Meyer Date: Fri, 13 Jan 2023 13:58:29 +0000 (+0100) Subject: Streamline --repositories X-Git-Tag: v15~365^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b41762aeb92049f1213e33a65b4efaf587726f3f;p=thirdparty%2Fmkosi.git Streamline --repositories --- diff --git a/NEWS.md b/NEWS.md index a85459661..abe21c7a9 100644 --- a/NEWS.md +++ b/NEWS.md @@ -32,8 +32,8 @@ - Support for --use-host-repositories was dropped, use --repository-directory instead - `RepositoryDirectory` was renamed to `RepositoryDirectories` and now takes a comma-separated list of directories to look for extra repository files. -- The `_epel` distributions were removed. Use `--repositories=epel` instead to enable - the EPEL repository. +- `--repositories` is now only usable on Debian/RPM based distros and can only be used to enable additional + repositories. Specifically, it cannot be used on Arch Linux anymore to add new repositories. ## v14 diff --git a/mkosi/__init__.py b/mkosi/__init__.py index 397f82580..814453cdb 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -3019,6 +3019,9 @@ def load_args(args: argparse.Namespace) -> MkosiConfig: if args.qemu_kvm and not qemu_check_kvm_support(): die("Sorry, the host machine does not support KVM acceleration.") + if args.repositories and not is_rpm_distribution(args.distribution) and args.distribution not in (Distribution.debian, Distribution.ubuntu): + die("Sorry, the --repositories option is only supported on RPM/Debian based distributions") + return MkosiConfig(**vars(args)) diff --git a/mkosi/distributions/arch.py b/mkosi/distributions/arch.py index a9e952b3e..15e520564 100644 --- a/mkosi/distributions/arch.py +++ b/mkosi/distributions/arch.py @@ -111,23 +111,6 @@ def install_arch(state: MkosiState) -> None: for d in state.config.repo_dirs: f.write(f"Include = {d}/*\n") - if state.config.repositories: - for repository in state.config.repositories: - # repositories must be passed in the form :: - repository_name, repository_server = repository.split("::", 1) - - # note: for additional repositories, signature checking options are set to pacman's default values - f.write( - dedent( - f"""\ - - [{repository_name}] - SigLevel = Optional TrustedOnly - Server = {repository_server} - """ - ) - ) - packages: set[str] = set() add_packages(state.config, packages, "base") diff --git a/mkosi/distributions/debian.py b/mkosi/distributions/debian.py index f813f9326..03489523e 100644 --- a/mkosi/distributions/debian.py +++ b/mkosi/distributions/debian.py @@ -63,7 +63,7 @@ class DebianInstaller(DistributionInstaller): os.makedirs(dpkg_io_conf.parent, mode=0o755, exist_ok=True) dpkg_io_conf.write_text("force-unsafe-io\n") - repos = set(state.config.repositories) or {"main"} + repos = {"main", *state.config.repositories} # Ubuntu needs the 'universe' repo to install 'dracut' if state.config.bootable: repos |= cls.repositories_for_boot diff --git a/mkosi/distributions/fedora.py b/mkosi/distributions/fedora.py index 89897c3c1..c6ce5bd2a 100644 --- a/mkosi/distributions/fedora.py +++ b/mkosi/distributions/fedora.py @@ -215,7 +215,7 @@ def invoke_dnf(state: MkosiState, command: str, packages: Iterable[str]) -> None cmdline += ["--nogpgcheck"] if state.config.repositories: - cmdline += ["--disablerepo=*"] + [f"--enablerepo={repo}" for repo in state.config.repositories] + cmdline += [f"--enablerepo={repo}" for repo in state.config.repositories] # TODO: this breaks with a local, offline repository created with 'createrepo' if state.config.with_network == "never" and not state.config.local_mirror: