summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/package-ipkg.mk1
-rw-r--r--package/Makefile6
-rwxr-xr-xpackage/base-files/files/lib/functions.sh9
-rw-r--r--target/imagebuilder/files/Makefile9
4 files changed, 15 insertions, 10 deletions
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)