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 <jow@openwrt.org>

SVN-Revision: 43904
This commit is contained in:
Jo-Philipp Wich 2015-01-10 11:17:02 +00:00
parent 64e7b41b2e
commit 4685e4f273
2 changed files with 17 additions and 4 deletions

View file

@ -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 || { \

View file

@ -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) ;