From: John Crispin Date: Tue, 16 Sep 2014 11:56:19 +0000 (+0000) Subject: postinst trigger: the new postinst trigger broke IB X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fsvn-archive%2Farchive.git;a=commitdiff_plain;h=5ab4b26d0430516b184d23705193c33e8869b3d6 postinst trigger: the new postinst trigger broke IB Signed-off-by: John Crispin SVN-Revision: 42571 --- diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk index 494444613a..7cea44af65 100644 --- a/include/package-ipkg.mk +++ b/include/package-ipkg.mk @@ -176,6 +176,7 @@ ifeq ($(DUMP),) chmod 644 $$(IDIR_$(1))/CONTROL/control ( \ echo "#!/bin/sh"; \ + echo "[ \"\$$$${IPKG_NO_SCRIPT}\" = \"1\" ] && exit 0"; \ echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \ echo "default_postinst \$$$$0 \$$$$@"; \ ) > $$(IDIR_$(1))/CONTROL/postinst diff --git a/package/Makefile b/package/Makefile index a42b4b0dd0..a6b34be0f4 100644 --- a/package/Makefile +++ b/package/Makefile @@ -59,6 +59,7 @@ endif # where to build (and put) .ipk packages OPKG:= \ + IPKG_NO_SCRIPT=1 \ IPKG_TMP=$(TMP_DIR)/ipkg \ IPKG_INSTROOT=$(TARGET_DIR) \ IPKG_CONF_DIR=$(STAGING_DIR)/etc \ @@ -108,9 +109,8 @@ $(curdir)/install: $(TMP_DIR)/.build @mkdir -p $(TARGET_DIR)/etc/rc.d @( \ cd $(TARGET_DIR); \ - for script in ./etc/init.d/*; do \ - grep '#!/bin/sh /etc/rc.common' $$script >/dev/null || continue; \ - IPKG_INSTROOT=$(TARGET_DIR) $$(which bash) ./etc/rc.common $$script enable; \ + for script in ./usr/lib/opkg/info/*.postinst; do \ + IPKG_INSTROOT=$(TARGET_DIR) $$(which bash) $$script; \ done || true \ ) @-find $(TARGET_DIR) -name CVS | $(XARGS) rm -rf diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index 67f4a046e5..fafb7a340f 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -197,9 +197,12 @@ default_postinst() { done done } - [ -n "${IPKG_INSTROOT}" -o "$PKG_UPGRADE" = "1" ] || for i in `cat /usr/lib/opkg/info/${name}.list | grep "^/etc/init.d/"`; do - $i enable - $i start + [ "$PKG_UPGRADE" = "1" ] || for i in `cat ${IPKG_INSTROOT}/usr/lib/opkg/info/${name}.list | grep "^/etc/init.d/"`; do + [ -n "${IPKG_INSTROOT}" ] && $(which bash) ${IPKG_INSTROOT}/etc/rc.common ${IPKG_INSTROOT}$i enable; \ + [ -n "${IPKG_INSTROOT}" ] || { + $i enable + $i start + } done return 0 } diff --git a/target/imagebuilder/files/Makefile b/target/imagebuilder/files/Makefile index 72a91e0740..8136111b67 100644 --- a/target/imagebuilder/files/Makefile +++ b/target/imagebuilder/files/Makefile @@ -54,6 +54,7 @@ help: FORCE # override variables from rules.mk PACKAGE_DIR:=$(TOPDIR)/packages OPKG:= \ + IPKG_NO_SCRIPT=1 \ IPKG_TMP="$(TOPDIR)/tmp/ipkgtmp" \ IPKG_INSTROOT="$(TARGET_DIR)" \ IPKG_CONF_DIR="$(TOPDIR)/tmp" \ @@ -142,12 +143,12 @@ package_postinst: FORCE @rm -f $(TARGET_DIR)/tmp/opkg.lock @echo @echo Activating init scripts + @mkdir -p $(TARGET_DIR)/etc/rc.d @( \ cd $(TARGET_DIR); \ - for script in ./etc/init.d/*; do \ - grep '#!/bin/sh /etc/rc.common' $$script >/dev/null || continue; \ - IPKG_INSTROOT=$(TARGET_DIR) $(which bash) ./etc/rc.common $$script enable; \ - done || true; \ + for script in ./usr/lib/opkg/info/*.postinst; do \ + IPKG_INSTROOT=$(TARGET_DIR) $$(which bash) $$script; \ + done || true \ ) rm -f $(TARGET_DIR)/usr/lib/opkg/info/*.postinst $(if $(CONFIG_CLEAN_IPKG),rm -rf $(TARGET_DIR)/usr/lib/opkg)