postinst trigger: the new postinst trigger broke IB
authorJohn Crispin <john@openwrt.org>
Tue, 16 Sep 2014 11:56:19 +0000 (11:56 +0000)
committerJohn Crispin <john@openwrt.org>
Tue, 16 Sep 2014 11:56:19 +0000 (11:56 +0000)
Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 42571

include/package-ipkg.mk
package/Makefile
package/base-files/files/lib/functions.sh
target/imagebuilder/files/Makefile

index 4944446..7cea44a 100644 (file)
@@ -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
index a42b4b0..a6b34be 100644 (file)
@@ -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
index 67f4a04..fafb7a3 100755 (executable)
@@ -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
 }
index 72a91e0..8136111 100644 (file)
@@ -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)