diff options
| author | George Sapkin | 2025-04-18 18:38:17 +0000 |
|---|---|---|
| committer | Robert Marko | 2025-06-13 08:46:16 +0000 |
| commit | 03880e2551cbc76778f30c389e93db235029e299 (patch) | |
| tree | 55a9113750cb42047f486075930ab8a129233839 | |
| parent | aefdbf0edc9ea046f55868ddee85442a591b2e4b (diff) | |
| download | openwrt-03880e2551cbc76778f30c389e93db235029e299.tar.gz | |
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@gmail.com>
Suggested-by: Eric Fahlgren <ericfahlgren@gmail.com>
Suggested-by: Jonas Gorski <jonas.gorski@gmail.com>
Suggested-by: Thomas Richard <thomas.richard@bootlin.com>
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/18531
Signed-off-by: Robert Marko <robimarko@gmail.com>
| -rw-r--r-- | include/package-pack.mk | 32 |
1 files 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"; \ |