From c3241962560c5e114f3bbc3e7f1a52917730993e Mon Sep 17 00:00:00 2001
From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Fri, 23 Mar 2007 19:13:08 +0000
Subject: [PATCH] make busybox autorebuild on relevant config changes

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6651 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 include/package.mk       | 23 +++++++++++++----------
 include/shell.sh         |  4 ++++
 package/busybox/Makefile |  5 +++++
 3 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/include/package.mk b/include/package.mk
index 44fe33ae1..c7b2a43d2 100644
--- a/include/package.mk
+++ b/include/package.mk
@@ -17,6 +17,9 @@ include $(INCLUDE_DIR)/package-defaults.mk
 include $(INCLUDE_DIR)/package-dumpinfo.mk
 include $(INCLUDE_DIR)/package-ipkg.mk
 
+STAMP_PREPARED:=$(PKG_BUILD_DIR)/.prepared
+STAMP_CONFIGURED:=$(PKG_BUILD_DIR)/.configured
+STAMP_BUILT:=$(PKG_BUILD_DIR)/.built
 export CONFIG_SITE:=$(INCLUDE_DIR)/site/$(REAL_GNU_TARGET_NAME)
 
 define Build/DefaultTargets
@@ -27,46 +30,46 @@ define Build/DefaultTargets
 	mkdir -p $(DL_DIR)
 	$(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(PKG_SOURCE)" "$(PKG_MD5SUM)" $(PKG_SOURCE_URL)
 
-    $(PKG_BUILD_DIR)/.prepared: $(DL_DIR)/$(PKG_SOURCE)
+    $(STAMP_PREPARED): $(DL_DIR)/$(PKG_SOURCE)
   endif
 
   ifeq ($(DUMP),)
     ifeq ($(CONFIG_AUTOREBUILD),y)
       ifneq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p $(PKG_BUILD_DIR) . $(PKG_FILE_DEPEND)),$(PKG_BUILD_DIR))
         $$(info Forcing package rebuild)
-        $(PKG_BUILD_DIR)/.prepared: clean
+        $(STAMP_PREPARED): clean
       endif
     endif
   endif
 
-  $(PKG_BUILD_DIR)/.prepared:
+  $(STAMP_PREPARED):
 	@-rm -rf $(PKG_BUILD_DIR)
 	@mkdir -p $(PKG_BUILD_DIR)
 	$(Build/Prepare)
 	touch $$@
 
-  $(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
+  $(STAMP_CONFIGURED): $(STAMP_PREPARED)
 	$(Build/Configure)
 	touch $$@
 
-  $(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
+  $(STAMP_BUILT): $(STAMP_CONFIGURED)
 	$(Build/Compile)
 	touch $$@
 
   ifdef Build/InstallDev
     ifneq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p -x ipkg -x ipkg-install $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed $(PKG_BUILD_DIR)),$(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed)
-      $(PKG_BUILD_DIR)/.built: package-rebuild
+      $(STAMP_BUILT): package-rebuild
     endif
 
     compile: $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed
-    $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed: $(PKG_BUILD_DIR)/.built
+    $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed: $(STAMP_BUILT)
 	mkdir -p $(STAGING_DIR)/stampfiles
 	$(Build/InstallDev)
 	touch $$@
   endif
 
   package-rebuild: FORCE
-	@-rm -f $(PKG_BUILD_DIR)/.built
+	@-rm -f $(STAMP_BUILT)
 
   define Build/DefaultTargets
   endef
@@ -115,8 +118,8 @@ $(PACKAGE_DIR):
 		
 dumpinfo:
 download:
-prepare: $(PKG_BUILD_DIR)/.prepared
-configure: $(PKG_BUILD_DIR)/.configured
+prepare: $(STAMP_PREPARED)
+configure: $(STAMP_CONFIGURED)
 compile:
 install:
 clean: FORCE
diff --git a/include/shell.sh b/include/shell.sh
index 1e60692b9..db4100326 100644
--- a/include/shell.sh
+++ b/include/shell.sh
@@ -28,3 +28,7 @@ trapret() {(
 		}
 	}
 )}
+
+md5s() {
+	which md5sum 2>&- >&- && md5sum "$@" | awk '{print $1}' || md5 "$@"
+}
diff --git a/package/busybox/Makefile b/package/busybox/Makefile
index 304960152..90e3af060 100644
--- a/package/busybox/Makefile
+++ b/package/busybox/Makefile
@@ -19,6 +19,10 @@ PKG_MD5SUM:=5728403bce309cdabcffa414e2e64052
 
 include $(INCLUDE_DIR)/package.mk
 
+ifeq ($(DUMP),)
+  STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell grep '^CONFIG_BUSYBOX_' $(TOPDIR)/.config | md5s)
+endif
+
 init-y :=
 init-$(CONFIG_BUSYBOX_CONFIG_HTTPD) += httpd
 init-$(CONFIG_BUSYBOX_CONFIG_CROND) += cron
@@ -46,6 +50,7 @@ define Package/busybox/config
 endef
 
 define Build/Configure
+	rm -f $(PKG_BUILD_DIR)/.configured*
 	$(SCRIPT_DIR)/gen_busybox_config.pl $(TOPDIR)/.config > $(PKG_BUILD_DIR)/.config
 	yes '' | $(MAKE) -C $(PKG_BUILD_DIR) \
 		CC="$(TARGET_CC)" \
-- 
2.20.1