[openwrt/openwrt] include/rootfs: rework handling of post-install scripts for APK

LEDE Commits lede-commits at lists.infradead.org
Tue Jun 11 14:58:56 PDT 2024


ansuel pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/b92e62d46451fc06cd2bc1ec105a259a5fa41f51

commit b92e62d46451fc06cd2bc1ec105a259a5fa41f51
Author: Christian Marangi <ansuelsmth at gmail.com>
AuthorDate: Wed May 22 19:29:32 2024 +0200

    include/rootfs: rework handling of post-install scripts for APK
    
    Rework handling of post-install scripts for APK. As we do with OPKG,
    lets just iterate between each post-install package so we can actually
    check if something fail in applying them.
    
    To do this we first extract each .post-install script in APK
    scripts.tar.
    
    Also remove these files from final image as they are needed only for the
    first installation of the packages.
    
    Link: https://github.com/openwrt/openwrt/pull/15543
    Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
---
 include/rootfs.mk | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/include/rootfs.mk b/include/rootfs.mk
index 9fb7d8cfdf..23692a3a82 100644
--- a/include/rootfs.mk
+++ b/include/rootfs.mk
@@ -80,18 +80,21 @@ define prepare_rootfs
 	@( \
 		cd $(1); \
 		if [ -n "$(CONFIG_USE_APK)" ]; then \
-		$(STAGING_DIR_HOST)/bin/tar -xf ./lib/apk/db/scripts.tar --wildcards "*.post-install" -O > script.sh; \
-		chmod +x script.sh; \
-		IPKG_INSTROOT=$(1) $$(command -v bash) script.sh; \
+			IPKG_POSTINST_PATH=./lib/apk/db/*.post-install; \
+			$(STAGING_DIR_HOST)/bin/tar -C ./lib/apk/db/ -xf ./lib/apk/db/scripts.tar --wildcards "*.post-install"; \
 		else \
-		for script in ./usr/lib/opkg/info/*.postinst; do \
+			IPKG_POSTINST_PATH=./usr/lib/opkg/info/*.postinst; \
+		fi; \
+		for script in $$IPKG_POSTINST_PATH; do \
 			IPKG_INSTROOT=$(1) $$(command -v bash) $$script; \
 			ret=$$?; \
 			if [ $$ret -ne 0 ]; then \
 				echo "postinst script $$script has failed with exit code $$ret" >&2; \
 				exit 1; \
 			fi; \
+			[ -n "$(CONFIG_USE_APK)" ] && $(STAGING_DIR_HOST)/bin/tar --delete -f ./lib/apk/db/scripts.tar $$(basename $$script); \
 		done; \
+		if [ -z "$(CONFIG_USE_APK)" ]; then \
 		$(if $(IB),,awk -i inplace \
 			'/^Status:/ { \
 				if ($$3 == "user") { $$3 = "ok" } \
@@ -115,6 +118,7 @@ define prepare_rootfs
 	rm -rf \
 		$(1)/boot \
 		$(1)/tmp/* \
+		$(1)/lib/apk/db/*.post-install* \
 		$(1)/usr/lib/opkg/info/*.postinst* \
 		$(1)/usr/lib/opkg/lists/* \
 		$(1)/var/lock/*.lock




More information about the lede-commits mailing list