]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Add mkosi-install, mkosi-upgrade and mkosi-remove scripts 2377/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Sun, 11 Feb 2024 22:05:36 +0000 (23:05 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 12 Feb 2024 10:12:37 +0000 (11:12 +0100)
These are primarily useful to provide a common way to install
packages from scripts for opensuse which might be built with either
zypper or dnf.

mkosi/installer/apt.py
mkosi/installer/dnf.py
mkosi/installer/pacman.py
mkosi/installer/zypper.py
mkosi/resources/mkosi.md

index 2a532d14f1f2f54ec9d4b1c7589cda34986b5d99..8990bda666f6fb10c15767e6a51a61def68c5024 100644 (file)
@@ -60,6 +60,10 @@ class Apt(PackageManager):
                 "apt-mark",
                 "apt-sortpkgs",
             )
+        } | {
+            "mkosi-install": apivfs_cmd(context.root) + cls.cmd(context, "get") + ["install"],
+            "mkosi-upgrade": apivfs_cmd(context.root) + cls.cmd(context, "get") + ["upgrade"],
+            "mkosi-remove" : apivfs_cmd(context.root) + cls.cmd(context, "get") + ["purge"],
         }
 
     @classmethod
index 6d4c6f2d822ec97411e61662639f409a8b7d91e1..910e480a0700512f0fc71f1bc336703dd1769833 100644 (file)
@@ -41,6 +41,9 @@ class Dnf(PackageManager):
         return {
             "dnf": apivfs_cmd(context.root) + cls.cmd(context),
             "rpm": apivfs_cmd(context.root) + rpm_cmd(context),
+            "mkosi-install": apivfs_cmd(context.root) + cls.cmd(context) + ["install"],
+            "mkosi-upgrade": apivfs_cmd(context.root) + cls.cmd(context) + ["upgrade"],
+            "mkosi-remove" : apivfs_cmd(context.root) + cls.cmd(context) + ["remove"],
         }
 
     @classmethod
index e73fb24dfcac0025064f4b333a60f2314a9fb9f5..7df0fbbf9a137b3279ca01a94235b1e797fbe001 100644 (file)
@@ -35,7 +35,12 @@ class Pacman(PackageManager):
 
     @classmethod
     def scripts(cls, context: Context) -> dict[str, list[PathString]]:
-        return {"pacman": apivfs_cmd(context.root) + cls.cmd(context)}
+        return {
+            "pacman": apivfs_cmd(context.root) + cls.cmd(context),
+            "mkosi-install": apivfs_cmd(context.root) + cls.cmd(context) + ["--sync", "--needed"],
+            "mkosi-upgrade": apivfs_cmd(context.root) + cls.cmd(context) + ["--sync", "--sysupgrade", "--needed"],
+            "mkosi-remove" : apivfs_cmd(context.root) + cls.cmd(context) + ["--remove", "--recursive", "--nosave"],
+        }
 
     @classmethod
     def mounts(cls, context: Context) -> list[PathString]:
index d419147e4a7802717ee76d4912b3e630f30e546c..7bd43a0223d1aced446c0da15f6c1d50390225d2 100644 (file)
@@ -30,9 +30,18 @@ class Zypper(PackageManager):
 
     @classmethod
     def scripts(cls, context: Context) -> dict[str, list[PathString]]:
+        install: list[PathString] = [
+            "install",
+            "--download", "in-advance",
+            "--recommends" if context.config.with_recommends else "--no-recommends",
+        ]
+
         return {
             "zypper": apivfs_cmd(context.root) + cls.cmd(context),
             "rpm"   : apivfs_cmd(context.root) + rpm_cmd(context),
+            "mkosi-install": apivfs_cmd(context.root) + cls.cmd(context) + install,
+            "mkosi-upgrade": apivfs_cmd(context.root) + cls.cmd(context) + ["update"],
+            "mkosi-remove" : apivfs_cmd(context.root) + cls.cmd(context) + ["remove", "--clean-deps"],
         }
 
     @classmethod
index 301ed45fcca405e741f65e910899102d168f3cd8..4197ba87c56cf3bb2e1c91c8632fc75b1940a9e1 100644 (file)
@@ -1988,6 +1988,10 @@ available via `$PATH` to simplify common usecases.
   the host system. This means that from a script, you can do e.g. `dnf
   install vim` to install vim into the image.
 
+  Additionally, `mkosi-install`, `mkosi-upgrade` and `mkosi-remove` will
+  invoke the corresponding operation of the package manager being used
+  to built the image.
+
 * `mkosi-as-caller`: This script uses `setpriv` to switch from
   the user `root` in the user namespace used for various build steps
   back to the original user that called mkosi. This is useful when