From 97d637b11f6c3f3ae769590394768f48bbb8b76a Mon Sep 17 00:00:00 2001
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Tue, 19 Feb 2013 01:38:49 +0100
Subject: [PATCH] Only enable initscripts of non-base packages when they are
 explicitly installed

---
 builder/Makefile | 26 ++++++++++++++++++--------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/builder/Makefile b/builder/Makefile
index bac0eb449..6e3757298 100644
--- a/builder/Makefile
+++ b/builder/Makefile
@@ -79,22 +79,37 @@ assemble_image: FORCE
 	mkdir -p $(TARGET_DIR) $(BIN_DIR) $(TMP_DIR) $(TARGET_DIR)/tmp
 	$(OPKG) update
 	$(MAKE) package_install
-	$(MAKE) package_postinst
 	$(MAKE) build_image
 
 define EnableInitscript
-	cd $(TARGET_DIR) && ( \
+	( \
 		grep '#!/bin/sh /etc/rc.common' $(1) >/dev/null && \
-		IPKG_INSTROOT=$(TARGET_DIR) $(which bash) ./etc/rc.common $$script enable || \
+		IPKG_INSTROOT=$(TARGET_DIR) $(which bash) ./etc/rc.common $(1) enable || \
 		true \
 	)
 endef
 
+define FileOrigin
+	$(firstword $(shell $(OPKG) search $(1)))
+endef
+
+enable_initscripts: FORCE
+	cd $(TARGET_DIR) && ( \
+		$(foreach script,$(wildcard $(TARGET_DIR)/etc/init.d/*), \
+			$(if $(filter $(ENABLE_INITSCRIPTS_FROM),$(call FileOrigin,$(script))),$(call EnableInitscript,$(script));) \
+		) : \
+	)
+
 package_install: FORCE
 	$(OPKG) install $(PACKAGE_DIR)/libc_*.ipk
 	$(OPKG) install $(PACKAGE_DIR)/kernel_*.ipk
+
 	$(OPKG) install $(DEFAULT_PACKAGES) $($(PROFILE)_PACKAGES)
+	$(NO_TRACE_MAKE) enable_initscripts ENABLE_INITSCRIPTS_FROM=%
+
 	$(OPKG) install $(GLUON_PACKAGES)
+	$(NO_TRACE_MAKE) enable_initscripts ENABLE_INITSCRIPTS_FROM="$(GLUON_PACKAGES)"
+
 	rm -f $(TARGET_DIR)/usr/lib/opkg/lists/* $(TARGET_DIR)/tmp/opkg.lock
 
 copy_files: FORCE
@@ -109,11 +124,6 @@ copy_files: FORCE
 		done; )
 	$(CP) $(USER_FILES)/* $(TARGET_DIR)/
 
-package_postinst: FORCE
-	for script in $(TARGET_DIR)/etc/init.d/*; do \
-		$(call EnableInitscript,$$script); \
-	done || true
-
 include $(INCLUDE_DIR)/image.mk
 
 build_image: FORCE
-- 
GitLab