From 4685e4f27310d55c20c8062b2b4f782e4b709694 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sat, 10 Jan 2015 11:17:02 +0000 Subject: [PATCH] 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 SVN-Revision: 43904 --- include/toplevel.mk | 2 +- target/sdk/files/Makefile | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/include/toplevel.mk b/include/toplevel.mk index 8a21f7eef4b..f623e03118f 100644 --- a/include/toplevel.mk +++ b/include/toplevel.mk @@ -135,7 +135,7 @@ kernel_menuconfig: prepare_kernel_conf 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 || { \ diff --git a/target/sdk/files/Makefile b/target/sdk/files/Makefile index 0c27f1a4730..01c1e1c7883 100644 --- a/target/sdk/files/Makefile +++ b/target/sdk/files/Makefile @@ -14,6 +14,16 @@ export TOPDIR LC_ALL LANG SDK 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 @@ else $(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) ; -- 2.30.2