]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
apk: add --force-reinstall option
authorFelix Fietkau <nbd@nbd.name>
Sun, 8 Mar 2026 15:32:00 +0000 (15:32 +0000)
committerFelix Fietkau <nbd@nbd.name>
Sun, 8 Mar 2026 15:35:04 +0000 (16:35 +0100)
Allow reinstalling already-installed packages without a version change.
Only the named packages are reinstalled, not their dependencies.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/system/apk/Makefile
package/system/apk/patches/0100-add-add-force-reinstall-option.patch [new file with mode: 0644]

index 945722c6c04a7695668b7957483ed042e1ba7229..2cea412dd519d00a2ac7aca08f1ec964e28ba726 100644 (file)
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=apk
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE_URL=https://gitlab.alpinelinux.org/alpine/apk-tools.git
 PKG_SOURCE_PROTO:=git
diff --git a/package/system/apk/patches/0100-add-add-force-reinstall-option.patch b/package/system/apk/patches/0100-add-add-force-reinstall-option.patch
new file mode 100644 (file)
index 0000000..9d8c4c6
--- /dev/null
@@ -0,0 +1,48 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Sun, 8 Mar 2026 13:41:16 +0000
+Subject: [PATCH] add: add --force-reinstall option
+
+Allow reinstalling already-installed packages without a version change.
+Only the named packages are reinstalled, not their dependencies.
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/src/app_add.c
++++ b/src/app_add.c
+@@ -24,6 +24,7 @@ struct add_ctx {
+       OPT(OPT_ADD_initdb,     "initdb") \
+       OPT(OPT_ADD_latest,     APK_OPT_SH("l") "latest") \
+       OPT(OPT_ADD_no_chown,   "no-chown") \
++      OPT(OPT_ADD_reinstall,  "force-reinstall") \
+       OPT(OPT_ADD_upgrade,    APK_OPT_SH("u") "upgrade") \
+       OPT(OPT_ADD_usermode,   "usermode") \
+       OPT(OPT_ADD_virtual,    APK_OPT_ARG APK_OPT_SH("t") "virtual")
+@@ -41,6 +42,9 @@ static int add_parse_option(void *ctx, s
+       case OPT_ADD_latest:
+               actx->solver_flags |= APK_SOLVERF_LATEST;
+               break;
++      case OPT_ADD_reinstall:
++              actx->solver_flags |= APK_SOLVERF_REINSTALL;
++              break;
+       case OPT_ADD_upgrade:
+               actx->solver_flags |= APK_SOLVERF_UPGRADE;
+               break;
+@@ -177,7 +181,7 @@ static int add_main(void *ctx, struct ap
+                       apk_deps_add(&world, &dep);
+                       apk_solver_set_name_flags(dep.name,
+                                                 actx->solver_flags,
+-                                                actx->solver_flags);
++                                                actx->solver_flags & ~APK_SOLVERF_REINSTALL);
+               }
+       }
+       if (actx->virtpkg) {
+@@ -185,7 +189,7 @@ static int add_main(void *ctx, struct ap
+               apk_deps_add(&world, &virtdep);
+               apk_solver_set_name_flags(virtdep.name,
+                                         actx->solver_flags,
+-                                        actx->solver_flags);
++                                        actx->solver_flags & ~APK_SOLVERF_REINSTALL);
+       }
+       r = apk_solver_commit(db, 0, world);