lib/{clean,profile}.mk: robustness improvements
First, let's not do rsync --delete on an unverified target dir again: the lesson was learned during a subway hacking session and I must say that SSDs are frightening fast (even if it was more than a second to realize what happens and terminate the extermination before it got /home, thanks xterm). Second, let's use a variable for common name and make's own realpath function instead of external binary.
This commit is contained in:
parent
abfd88e262
commit
3d2f69f112
28
lib/clean.mk
28
lib/clean.mk
@ -3,6 +3,8 @@
|
||||
# drop stock predefined rules
|
||||
.DEFAULT:
|
||||
|
||||
SYMLINK = build
|
||||
|
||||
# tmpfs-sparing extra rule: cleanup workdir after completing each stage
|
||||
# (as packed results are saved this only lowers RAM pressure)
|
||||
# NB: it's useful enough to be enabled by default in DEBUG abscence
|
||||
@ -18,22 +20,26 @@ endif
|
||||
|
||||
# ordinary clean: destroys workdirs but not the corresponding results
|
||||
clean:
|
||||
@echo "$(TIME) cleaning up $(WARNING)"
|
||||
@find -name '*~' -delete >&/dev/null ||:
|
||||
@if [ -L build -a -d build/ ]; then \
|
||||
$(MAKE) -C build $@ \
|
||||
GLOBAL_BUILDDIR=$(shell readlink build) $(LOG) ||:; \
|
||||
@if [ -L "$(SYMLINK)" -a -d "$(SYMLINK)"/ ]; then \
|
||||
echo "$(TIME) cleaning up $(WARNING)"; \
|
||||
$(MAKE) -C "$(SYMLINK)" $@ \
|
||||
GLOBAL_BUILDDIR="$(realpath $(SYMLINK))" $(LOG) ||:; \
|
||||
fi
|
||||
|
||||
# there can be some sense in writing log here even if normally
|
||||
# $(BUILDDIR)/ gets purged: make might have failed,
|
||||
# and BUILDLOG can be specified by hand either
|
||||
distclean: clean
|
||||
@if [ -L build -a -d build/ ]; then \
|
||||
rm -rf build/.git; \
|
||||
$(MAKE) -C build $@ \
|
||||
GLOBAL_BUILDDIR=$(shell readlink build) $(LOG) || \
|
||||
rm -rf build/; \
|
||||
rm -rf $(shell readlink build); \
|
||||
@if [ -L "$(SYMLINK)" -a -d "$(SYMLINK)"/ ]; then \
|
||||
build="$(realpath $(SYMLINK)/)"; \
|
||||
if [ "$$build" = / ]; then \
|
||||
echo "** ERROR: invalid \`"$(SYMLINK)"' symlink" >&2; \
|
||||
exit 128; \
|
||||
else \
|
||||
$(MAKE) -C "$(SYMLINK)" $@ \
|
||||
GLOBAL_BUILDDIR="$$build" $(LOG) ||: \
|
||||
rm -rf "$$build"; \
|
||||
fi; \
|
||||
fi
|
||||
@rm -f build ||:
|
||||
@rm -f "$(SYMLINK)"
|
||||
|
@ -35,8 +35,12 @@ SHORTEN = $(shell \
|
||||
|
||||
# step 1: initialize the off-tree mkimage profile (BUILDDIR)
|
||||
profile/init: distclean
|
||||
@if [ "`realpath "$(BUILDDIR)/"`" = / ]; then \
|
||||
echo "$(TIME) ERROR: invalid BUILDDIR: \`$(BUILDDIR)'"; \
|
||||
exit 128; \
|
||||
fi;
|
||||
@echo -n "$(TIME) initializing BUILDDIR: "
|
||||
@rsync -qaH --delete image.in/ "$(BUILDDIR)"/
|
||||
@rsync -qaxH --delete-after image.in/ "$(BUILDDIR)"/
|
||||
@mkdir "$(BUILDDIR)"/.mki # mkimage toplevel marker
|
||||
@$(call put,ifndef DISTCFG_MK)
|
||||
@$(call put,DISTCFG_MK = 1)
|
||||
|
Loading…
Reference in New Issue
Block a user