]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Make sure we always update the local repository metadata
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 15 Jul 2024 12:56:04 +0000 (14:56 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 15 Jul 2024 13:41:04 +0000 (15:41 +0200)
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.

mkosi/__init__.py
mkosi/installer/__init__.py
mkosi/installer/apt.py
mkosi/installer/dnf.py
mkosi/installer/pacman.py
mkosi/installer/zypper.py

index e3f0de0cb12fae16015b58ef986263a518e2aab1..81b9f26a40d256ebd79fbf91720bc859132aa15c 100644 (file)
@@ -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:
index bc535028b5f885003aa4dfd0d2c4cd0ed8300a81..74d05d1d70d775c13a5ec61cf0a9ab9d8902c1d8 100644 (file)
@@ -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
index 789194d168448ec297540eaa17505e95d78832cb..0e2e64830aab49402bb46d23ddac2fcb8049acc7 100644 (file)
@@ -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
index 39bc01073dde8878220c35d781fa26a14212b477..12b77b889d79b0257599339fa46a069f8f10d7ae 100644 (file)
@@ -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"])
index 300b289e3289137222c910772fa62a278b1685d8..cc17987c2a6854ec9a6a7c2da2b34d00227c043c 100644 (file)
@@ -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:
index 6c33ed2a82e697a49abb11fb8558ae8fd0634925..b93c27096f9dc8d35c4093fade1391f23abc5f22 100644 (file)
@@ -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"])