From: Daan De Meyer Date: Mon, 15 Jul 2024 12:56:04 +0000 (+0200) Subject: Make sure we always update the local repository metadata X-Git-Tag: v24~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7e975957a6af65c2e70428b6cda0c163ca7e1adc;p=thirdparty%2Fmkosi.git Make sure we always update the local repository metadata The latest release of dnf5 introduced a change in behavior causing us to not always sync the local repository metadata. To mitigate this, let's always specify --refresh or similar for all package managers when we sync the local repository to make sure its metadata is updated. --- diff --git a/mkosi/__init__.py b/mkosi/__init__.py index e3f0de0cb..81b9f26a4 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -4649,7 +4649,10 @@ def sync_repository_metadata(context: Context) -> None: complete_step(f"Syncing package manager metadata for {context.config.name()} image"), lock_repository_metadata(context.config), ): - context.config.distribution.package_manager(context.config).sync(context) + context.config.distribution.package_manager(context.config).sync( + context, + force=context.args.force > 1 or context.config.cacheonly == Cacheonly.never, + ) def run_sync(args: Args, config: Config, *, resources: Path) -> None: diff --git a/mkosi/installer/__init__.py b/mkosi/installer/__init__.py index bc535028b..74d05d1d7 100644 --- a/mkosi/installer/__init__.py +++ b/mkosi/installer/__init__.py @@ -84,7 +84,7 @@ class PackageManager: return mounts @classmethod - def sync(cls, context: Context) -> None: + def sync(cls, context: Context, force: bool) -> None: pass @classmethod diff --git a/mkosi/installer/apt.py b/mkosi/installer/apt.py index 789194d16..0e2e64830 100644 --- a/mkosi/installer/apt.py +++ b/mkosi/installer/apt.py @@ -234,7 +234,7 @@ class Apt(PackageManager): ) @classmethod - def sync(cls, context: Context) -> None: + def sync(cls, context: Context, force: bool) -> None: cls.invoke(context, "update") @classmethod diff --git a/mkosi/installer/dnf.py b/mkosi/installer/dnf.py index 39bc01073..12b77b889 100644 --- a/mkosi/installer/dnf.py +++ b/mkosi/installer/dnf.py @@ -222,14 +222,11 @@ class Dnf(PackageManager): p.unlink() @classmethod - def sync(cls, context: Context, options: Sequence[str] = ()) -> None: + def sync(cls, context: Context, force: bool, arguments: Sequence[str] = ()) -> None: cls.invoke( context, "makecache", - arguments=[ - *(["--refresh"] if context.args.force > 1 or context.config.cacheonly == Cacheonly.never else []), - *options, - ], + arguments=[*(["--refresh"] if force else []), *arguments], cached_metadata=False, ) @@ -251,4 +248,4 @@ class Dnf(PackageManager): ) ) - cls.sync(context, options=["--disablerepo=*", "--enablerepo=mkosi"]) + cls.sync(context, force=True, arguments=["--disablerepo=*", "--enablerepo=mkosi"]) diff --git a/mkosi/installer/pacman.py b/mkosi/installer/pacman.py index 300b289e3..cc17987c2 100644 --- a/mkosi/installer/pacman.py +++ b/mkosi/installer/pacman.py @@ -7,7 +7,7 @@ import textwrap from collections.abc import Iterable, Sequence from pathlib import Path -from mkosi.config import Cacheonly, Config +from mkosi.config import Config from mkosi.context import Context from mkosi.installer import PackageManager from mkosi.mounts import finalize_source_mounts @@ -183,14 +183,8 @@ class Pacman(PackageManager): ) @classmethod - def sync(cls, context: Context) -> None: - cls.invoke( - context, - "--sync", - ["--refresh"] + ( - ["--refresh"] if context.args.force > 1 or context.config.cacheonly == Cacheonly.never else [] - ) - ) + def sync(cls, context: Context, force: bool) -> None: + cls.invoke(context, "--sync", ["--refresh", *(["--refresh"] if force else [])]) @classmethod def createrepo(cls, context: Context) -> None: diff --git a/mkosi/installer/zypper.py b/mkosi/installer/zypper.py index 6c33ed2a8..b93c27096 100644 --- a/mkosi/installer/zypper.py +++ b/mkosi/installer/zypper.py @@ -5,7 +5,7 @@ import textwrap from collections.abc import Iterable, Sequence from pathlib import Path -from mkosi.config import Cacheonly, Config, yes_no +from mkosi.config import Config, yes_no from mkosi.context import Context from mkosi.installer import PackageManager from mkosi.installer.rpm import RpmRepository, rpm_cmd @@ -148,12 +148,8 @@ class Zypper(PackageManager): ) @classmethod - def sync(cls, context: Context) -> None: - cls.invoke( - context, - "refresh", - ["--force"] if context.args.force > 1 or context.config.cacheonly == Cacheonly.never else [] - ) + def sync(cls, context: Context, force: bool, arguments: Sequence[str] = ()) -> None: + cls.invoke(context, "refresh", [*(["--force"] if force else []), *arguments]) @classmethod def createrepo(cls, context: Context) -> None: @@ -174,4 +170,4 @@ class Zypper(PackageManager): ) ) - cls.invoke(context, "refresh", ["mkosi"]) + cls.sync(context, force=True, arguments=["mkosi"])