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
master
Jo-Philipp Wich 10 years ago
parent 64e7b41b2e
commit 4685e4f273
  1. 2
      include/toplevel.mk
  2. 19
      target/sdk/files/Makefile

@ -135,7 +135,7 @@ kernel_menuconfig: prepare_kernel_conf
kernel_nconfig: prepare_kernel_conf kernel_nconfig: prepare_kernel_conf
$(_SINGLE)$(NO_TRACE_MAKE) -C target/linux nconfig $(_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 mkdir -p tmp
rm -f tmp/.host.mk rm -f tmp/.host.mk
@$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f $(TOPDIR)/include/prereq-build.mk prereq 2>/dev/null || { \ @$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f $(TOPDIR)/include/prereq-build.mk prereq 2>/dev/null || { \

@ -14,6 +14,16 @@ export TOPDIR LC_ALL LANG SDK
world: 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 include $(TOPDIR)/include/host.mk
ifneq ($(OPENWRT_BUILD),1) ifneq ($(OPENWRT_BUILD),1)
@ -36,14 +46,17 @@ else
$(package/stamp-compile): $(BUILD_DIR)/.prepared $(package/stamp-compile): $(BUILD_DIR)/.prepared
$(BUILD_DIR)/.prepared: Makefile $(BUILD_DIR)/.prepared: Makefile
@mkdir -p $$(dirname $@) @mkdir -p $$(dirname $@)
@mkdir -p bin/packages
@touch $@ @touch $@
clean: FORCE 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 dirclean: clean
rm -rf $(TMP_DIR) git reset --hard HEAD
git clean -f -d
rm -rf feeds/
# check prerequisites before starting to build # check prerequisites before starting to build
prereq: $(package/stamp-prereq) ; prereq: $(package/stamp-prereq) ;

Loading…
Cancel
Save