Author: jow
Date: 2015-01-10 12:17:02 +0100 (Sat, 10 Jan 2015)
New Revision: 43904

Modified:
   trunk/include/toplevel.mk
   trunk/target/sdk/files/Makefile
Log:
sdk: track files with git and use it to implement proper clean targets

Initialize a Git repository in the SDK and use git reset / git clean
to rollback any SDK changes with "make clean" or "make dirclean".

This approach is more robust than nuking entire directory trees because
some parts of them might have been shipped with the original archive.

Signed-off-by: Jo-Philipp Wich <[email protected]>

Modified: trunk/include/toplevel.mk
===================================================================
--- trunk/include/toplevel.mk   2015-01-09 20:15:03 UTC (rev 43903)
+++ trunk/include/toplevel.mk   2015-01-10 11:17:02 UTC (rev 43904)
@@ -135,7 +135,7 @@
 kernel_nconfig: prepare_kernel_conf
        $(_SINGLE)$(NO_TRACE_MAKE) -C target/linux nconfig
 
-tmp/.prereq-build: include/prereq-build.mk
+tmp/.prereq-build: $(if $(SDK),.git/config) include/prereq-build.mk
        mkdir -p tmp
        rm -f tmp/.host.mk
        @$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f 
$(TOPDIR)/include/prereq-build.mk prereq 2>/dev/null || { \

Modified: trunk/target/sdk/files/Makefile
===================================================================
--- trunk/target/sdk/files/Makefile     2015-01-09 20:15:03 UTC (rev 43903)
+++ trunk/target/sdk/files/Makefile     2015-01-10 11:17:02 UTC (rev 43904)
@@ -14,6 +14,16 @@
 
 world:
 
+# Initialize SDK snapshot
+.git/config:
+       @( \
+               echo -n "Initializing SDK ... "; \
+               git init -q .; \
+               find . -mindepth 1 -maxdepth 1 -not -name feeds | xargs git 
add; \
+               git commit -q -m "Initial state"; \
+               echo "ok."; \
+       )
+
 include $(TOPDIR)/include/host.mk
 
 ifneq ($(OPENWRT_BUILD),1)
@@ -36,14 +46,17 @@
 $(package/stamp-compile): $(BUILD_DIR)/.prepared
 $(BUILD_DIR)/.prepared: Makefile
        @mkdir -p $$(dirname $@)
-       @mkdir -p bin/packages
        @touch $@
 
 clean: FORCE
-       rm -rf $(BUILD_DIR) $(BIN_DIR)
+       git clean -f -d $(STAGING_DIR); true
+       git clean -f -d $(BUILD_DIR); true
+       git clean -f -d $(BIN_DIR); true
 
 dirclean: clean
-       rm -rf $(TMP_DIR)
+       git reset --hard HEAD
+       git clean -f -d
+       rm -rf feeds/
 
 # check prerequisites before starting to build
 prereq: $(package/stamp-prereq) ;
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to