diff options
-rw-r--r-- | include/package-ipkg.mk | 1 | ||||
-rw-r--r-- | package/Makefile | 6 | ||||
-rwxr-xr-x | package/base-files/files/lib/functions.sh | 9 | ||||
-rw-r--r-- | target/imagebuilder/files/Makefile | 9 |
4 files changed, 15 insertions, 10 deletions
diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk index 4944446..7cea44a 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 a42b4b0..a6b34be 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 67f4a04..fafb7a3 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 72a91e0..8136111 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) |