diff options
| author | Christian Marangi | 2024-05-22 17:29:32 +0000 |
|---|---|---|
| committer | Christian Marangi | 2024-06-11 21:58:11 +0000 |
| commit | b92e62d46451fc06cd2bc1ec105a259a5fa41f51 (patch) | |
| tree | eb5e4082230763ab75b5884f56cd4318c96c4d07 | |
| parent | b47fbca97f70456db9c7222d9d1b7fb2114ae7ac (diff) | |
| download | openwrt-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.mk | 12 |
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 |