[openwrt/openwrt] include/package-pack: add missing apk package lifecycle events

LEDE Commits lede-commits at lists.infradead.org
Fri Jun 13 01:46:19 PDT 2025


robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/03880e2551cbc76778f30c389e93db235029e299

commit 03880e2551cbc76778f30c389e93db235029e299
Author: George Sapkin <george at sapk.in>
AuthorDate: Fri Apr 18 21:38:17 2025 +0300

    include/package-pack: add missing apk package lifecycle events
    
    - pre-install calls preinst
    - pre-upgrade calls preinst with PKG_UPGRADE=1
    - post-upgrade calls postinst with PKG_UPGRADE=1
    - prerm and postrm from the previous version of a package are NOT
      executed on upgrade, so packages are expected to handle their own
      migrations in the new versions
    
    Link: https://wiki.alpinelinux.org/wiki/Creating_an_Alpine_package
    Fixes: #18527
    Reported-by: Dobroslaw Kijowski <dobo90 at gmail.com>
    Suggested-by: Eric Fahlgren <ericfahlgren at gmail.com>
    Suggested-by: Jonas Gorski <jonas.gorski at gmail.com>
    Suggested-by: Thomas Richard <thomas.richard at bootlin.com>
    Signed-off-by: George Sapkin <george at sapk.in>
    Link: https://github.com/openwrt/openwrt/pull/18531
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 include/package-pack.mk | 32 ++++++++++++++++++++++++++++----
 1 file changed, 28 insertions(+), 4 deletions(-)

diff --git a/include/package-pack.mk b/include/package-pack.mk
index 411bae825a..d784d0ac3b 100644
--- a/include/package-pack.mk
+++ b/include/package-pack.mk
@@ -110,12 +110,22 @@ endif
     IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1)
     ADIR_$(1):=$(PKG_BUILD_DIR)/apk-$(PKGARCH)/$(1)
     KEEP_$(1):=$(strip $(call Package/$(1)/conffiles))
-    APK_SCRIPTS_$(1):=\
-    --script "post-install:$$(ADIR_$(1))/post-install" \
-    --script "pre-deinstall:$$(ADIR_$(1))/pre-deinstall"
 
+    APK_SCRIPTS_$(1):=
+
+    ifdef Package/$(1)/preinst
+      APK_SCRIPTS_$(1)+=--script "pre-install:$$(ADIR_$(1))/preinst"
+    endif
+    APK_SCRIPTS_$(1)+=--script "post-install:$$(ADIR_$(1))/post-install"
+
+    ifdef Package/$(1)/preinst
+      APK_SCRIPTS_$(1)+=--script "pre-upgrade:$$(ADIR_$(1))/pre-upgrade"
+    endif
+    APK_SCRIPTS_$(1)+=--script "post-upgrade:$$(ADIR_$(1))/post-upgrade"
+
+    APK_SCRIPTS_$(1)+=--script "pre-deinstall:$$(ADIR_$(1))/pre-deinstall"
     ifdef Package/$(1)/postrm
-        APK_SCRIPTS_$(1)+=--script "post-deinstall:$$(ADIR_$(1))/postrm"
+      APK_SCRIPTS_$(1)+=--script "post-deinstall:$$(ADIR_$(1))/postrm"
     endif
 
     TARGET_VARIANT:=$$(if $(ALL_VARIANTS),$$(if $$(VARIANT),$$(filter-out *,$$(VARIANT)),$(firstword $(ALL_VARIANTS))))
@@ -305,6 +315,20 @@ else
 		[ ! -f $$(ADIR_$(1))/postinst-pkg ] || sed -z 's/^\s*#!/#!/' "$$(ADIR_$(1))/postinst-pkg"; \
 	) > $$(ADIR_$(1))/post-install;
 
+    ifdef Package/$(1)/preinst
+	( \
+		echo "#!/bin/sh"; \
+		echo 'export PKG_UPGRADE=1'; \
+		[ ! -f $$(ADIR_$(1))/preinst ] || sed -z 's/^\s*#!/#!/' "$$(ADIR_$(1))/preinst"; \
+	) > $$(ADIR_$(1))/pre-upgrade;
+    endif
+
+	( \
+		echo "#!/bin/sh"; \
+		echo 'export PKG_UPGRADE=1'; \
+		[ ! -f $$(ADIR_$(1))/post-install ] || sed -z 's/^\s*#!/#!/' "$$(ADIR_$(1))/post-install"; \
+	) > $$(ADIR_$(1))/post-upgrade;
+
 	( \
 		echo "#!/bin/sh"; \
 		echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \




More information about the lede-commits mailing list