summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Marangi2024-05-22 17:29:32 +0000
committerChristian Marangi2024-06-11 21:58:11 +0000
commitb92e62d46451fc06cd2bc1ec105a259a5fa41f51 (patch)
treeeb5e4082230763ab75b5884f56cd4318c96c4d07
parentb47fbca97f70456db9c7222d9d1b7fb2114ae7ac (diff)
downloadopenwrt-b92e62d46451fc06cd2bc1ec105a259a5fa41f51.tar.gz
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@gmail.com>
-rw-r--r--include/rootfs.mk12
1 files 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