From: DaanDeMeyer Date: Sat, 5 Jul 2025 21:47:51 +0000 (+0200) Subject: Make package_subdirs() return relative paths X-Git-Tag: v26~142^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eb920219f946bd14a94e5e2a7781fa2682d0f3a0;p=thirdparty%2Fmkosi.git Make package_subdirs() return relative paths --- diff --git a/mkosi/__init__.py b/mkosi/__init__.py index caf661510..9d654a13f 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -3922,7 +3922,7 @@ def copy_repository_metadata(config: Config, dst: Path) -> None: # cp doesn't support excluding directories but we can imitate it by bind mounting # an empty directory over the directories we want to exclude. exclude = flatten( - ("--ro-bind", tmp, workdir(p)) + ("--ro-bind", tmp, workdir(cachedir / p)) for p in config.distribution.package_manager(config).package_subdirs(cachedir) ) @@ -4896,7 +4896,7 @@ def sync_repository_metadata( src = last.package_cache_dir_or_default() / "cache" / subdir for p in last.distribution.package_manager(last).package_subdirs(src): - p.mkdir(parents=True, exist_ok=True) + (src / p).mkdir(parents=True, exist_ok=True) # If we're in incremental mode and caching metadata is not explicitly disabled, cache the keyring and the # synced repository metadata so we can reuse them later. diff --git a/mkosi/installer/__init__.py b/mkosi/installer/__init__.py index fa7418ae0..92d5a49b8 100644 --- a/mkosi/installer/__init__.py +++ b/mkosi/installer/__init__.py @@ -89,12 +89,12 @@ class PackageManager: mounts += flatten( ( "--bind", - context.config.package_cache_dir_or_default() / d / subdir / p.relative_to(src), - Path("/var") / d / subdir / p.relative_to(src), + context.config.package_cache_dir_or_default() / d / subdir / p, + Path("/var") / d / subdir / p, ) for p in caches if ( - context.config.package_cache_dir_or_default() / d / subdir / p.relative_to(src) + context.config.package_cache_dir_or_default() / d / subdir / p ).exists() ) diff --git a/mkosi/installer/apt.py b/mkosi/installer/apt.py index 6b6842ebc..16816ac33 100644 --- a/mkosi/installer/apt.py +++ b/mkosi/installer/apt.py @@ -55,7 +55,7 @@ class Apt(PackageManager): @classmethod def package_subdirs(cls, cache: Path) -> list[Path]: - return [cache / "archives"] + return [Path("archives")] @classmethod def state_subdirs(cls, state: Path) -> list[Path]: diff --git a/mkosi/installer/dnf.py b/mkosi/installer/dnf.py index ec69a145a..9e65cff2e 100644 --- a/mkosi/installer/dnf.py +++ b/mkosi/installer/dnf.py @@ -27,7 +27,7 @@ class Dnf(PackageManager): @classmethod def package_subdirs(cls, cache: Path) -> list[Path]: return [ - p / "packages" for p in cache.iterdir() if p.is_dir() and "-" in p.name and "mkosi" not in p.name + (p / "packages").relative_to(cache) for p in cache.iterdir() if p.is_dir() and "-" in p.name and "mkosi" not in p.name ] @classmethod diff --git a/mkosi/installer/pacman.py b/mkosi/installer/pacman.py index 9d6343b1c..0d85fdcc7 100644 --- a/mkosi/installer/pacman.py +++ b/mkosi/installer/pacman.py @@ -36,7 +36,7 @@ class Pacman(PackageManager): @classmethod def package_subdirs(cls, cache: Path) -> list[Path]: - return [cache / "pkg"] + return [Path("pkg")] @classmethod def state_subdirs(cls, state: Path) -> list[Path]: diff --git a/mkosi/installer/zypper.py b/mkosi/installer/zypper.py index 0f6c689be..d513f23bf 100644 --- a/mkosi/installer/zypper.py +++ b/mkosi/installer/zypper.py @@ -24,7 +24,7 @@ class Zypper(PackageManager): @classmethod def package_subdirs(cls, cache: Path) -> list[Path]: - return [cache / "packages"] + return [Path("packages")] @classmethod def scripts(cls, context: Context) -> dict[str, list[PathString]]: