forked from mirror/openwrt
apk: 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>
This commit is contained in:
parent
56bf67d474
commit
91cff1a6d3
2 changed files with 49 additions and 1 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=apk
|
PKG_NAME:=apk
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_SOURCE_URL=https://gitlab.alpinelinux.org/alpine/apk-tools.git
|
PKG_SOURCE_URL=https://gitlab.alpinelinux.org/alpine/apk-tools.git
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
Loading…
Add table
Reference in a new issue