From f26e37c7b6605ee4e7839389c0e595a80cd2ca94 Mon Sep 17 00:00:00 2001 From: eschnett Date: Sat, 1 Mar 2014 04:26:44 +0000 Subject: Use order-only prerequisites to avoid spuriously recreating tarballs Use order-only prerequisites to avoid recreating tarballs and git repositories when thorn Formaline's library changes. git-svn-id: http://svn.cactuscode.org/arrangements/CactusUtils/Formaline/trunk@244 83718e91-0e4f-0410-abf4-91180603181f --- src/make.configuration.deps | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/make.configuration.deps b/src/make.configuration.deps index cfbeae4..313fc24 100644 --- a/src/make.configuration.deps +++ b/src/make.configuration.deps @@ -36,6 +36,8 @@ CACTUS_CONFIGS_DIR ?= $(CCTK_HOME)/configs #install-Formaline-utils: $(CCTK_LIBDIR)/$(LIBNAME_PREFIX)$(CCTK_LIBNAME_PREFIX)Formaline$(LIBNAME_SUFFIX) #.PHONY: install-Formaline-utils FORMALINE-UTILS = $(CCTK_LIBDIR)/$(LIBNAME_PREFIX)$(CCTK_LIBNAME_PREFIX)Formaline$(LIBNAME_SUFFIX) +# NOTE: This dependency means that all tarballs and the git repo are +# recreated from scratch when lib_thornFormaline.a changes! @@ -70,7 +72,7 @@ $(FRM-LIB): $(FRM-OBJS) # (generates also $(TOP)/CONFIG-ID) .PRECIOUS: $(TOP)/BUILD-ID .PHONY: $(TOP)/BUILD-ID -$(TOP)/BUILD-ID: $(CCTK_LIBDIR)/$(LIBNAME_PREFIX)$(CCTK_LIBNAME_PREFIX)Formaline$(LIBNAME_SUFFIX) $(FORMALINE-UTILS) +$(TOP)/BUILD-ID: $(CCTK_LIBDIR)/$(LIBNAME_PREFIX)$(CCTK_LIBNAME_PREFIX)Formaline$(LIBNAME_SUFFIX) | $(FORMALINE-UTILS) config=`echo "$(EXE:cactus_%=%)" | $(TR_C) -d '[:alnum:]+-._]'` && \ hostname=`$(FORMALINE_BIN_DIR)/gethostname.pl` && \ user="$$USER" && \ @@ -104,7 +106,7 @@ $(TARBALL_DIR)/build-id.c: $(TOP)/BUILD-ID $(TARBALL_DIR)/cactus-meta.o: $(TARBALL_DIR)/cactus-meta.c cd $(TARBALL_DIR) && $(CC) $(CFLAGS) -c -o $@ $^ -$(TARBALL_DIR)/cactus-meta.c: $(TARBALL_DIR)/config-Cactus.c $(TARBALL_DIR)/flesh-Cactus.c $(patsubst %,$(TARBALL_DIR)/thorn-%.c,$(notdir $(THORNS))) $(FORMALINE-UTILS) +$(TARBALL_DIR)/cactus-meta.c: $(TARBALL_DIR)/config-Cactus.c $(TARBALL_DIR)/flesh-Cactus.c $(patsubst %,$(TARBALL_DIR)/thorn-%.c,$(notdir $(THORNS))) | $(FORMALINE-UTILS) $(FORMALINE_BIN_DIR)/makemetablob.pl CactusConfig Cactus $(notdir $(THORNS)) > $@ .PRECIOUS: $(TARBALL_DIR)/cactus-meta.c $(TARBALL_DIR)/cactus-meta.o @@ -123,7 +125,7 @@ $(TARBALL_DIR)/config-Cactus.o: $(TARBALL_DIR)/config-Cactus.c $(CC) $(CFLAGS) -c $(^:%.c=%-????.c) && \ $(CC) $(CFLAGS) -c $^ -$(TARBALL_DIR)/config-Cactus.c: $(TARBALL_DIR)/config-Cactus.tar.gz $(CCTK_HOME)/arrangements/CactusUtils/Formaline/src/util/VERSION $(FORMALINE-UTILS) +$(TARBALL_DIR)/config-Cactus.c: $(TARBALL_DIR)/config-Cactus.tar.gz $(CCTK_HOME)/arrangements/CactusUtils/Formaline/src/util/VERSION | $(FORMALINE-UTILS) $(RM) -f $(@:%.c=%-????.c) $(FORMALINE_BIN_DIR)/makeblob.pl $(@:%.c=%) '' CactusConfig < $< @@ -186,7 +188,7 @@ $(TARBALL_DIR)/flesh-Cactus.o: $(TARBALL_DIR)/flesh-Cactus.c $(CC) $(CFLAGS) -c $(^:%.c=%-????.c) && \ $(CC) $(CFLAGS) -c $^ -$(TARBALL_DIR)/flesh-Cactus.c: $(TARBALL_DIR)/flesh-Cactus.tar.gz $(CCTK_HOME)/arrangements/CactusUtils/Formaline/src/util/VERSION $(FORMALINE-UTILS) +$(TARBALL_DIR)/flesh-Cactus.c: $(TARBALL_DIR)/flesh-Cactus.tar.gz $(CCTK_HOME)/arrangements/CactusUtils/Formaline/src/util/VERSION | $(FORMALINE-UTILS) $(RM) -f $(@:%.c=%-????.c) $(FORMALINE_BIN_DIR)/makeblob.pl $(@:%.c=%) '' Cactus < $< @@ -197,7 +199,7 @@ $(TARBALL_DIR)/flesh-Cactus.tar.gz: $(TARBALL_DIR)/flesh-Cactus.files # This dependency means that the tarball for the flesh is only updated # if the flesh is actually recompiled. This does not catch changes to # files that do not influence the executable. -$(TARBALL_DIR)/flesh-Cactus.files: $(CCTK_LIBDIR)/$(LIBNAME_PREFIX)$(CCTK_LIBNAME_PREFIX)$(FLESHLIB)$(LIBNAME_SUFFIX) $(TARBALL_DIR)/flesh-Cactus.ccldeps $(CONFIG)/make.thornlist +$(TARBALL_DIR)/flesh-Cactus.files: $(CCTK_LIBDIR)/$(LIBNAME_PREFIX)$(CCTK_LIBNAME_PREFIX)$(FLESHLIB)$(LIBNAME_SUFFIX) $(TARBALL_DIR)/flesh-Cactus.ccldeps #$(CONFIG)/make.thornlist cd $(CCTK_HOME) && \ find CONTRIBUTORS COPYRIGHT Makefile lib/ src/ \ -name 'CVS' -prune -o \ @@ -243,7 +245,7 @@ $(TARBALL_DIR)/thorn-%.o: $(TARBALL_DIR)/thorn-%.c $(CC) $(CFLAGS) -c $(patsubst $(TARBALL_DIR)/%, %, $(^:%.c=%-????.c)) && \ $(CC) $(CFLAGS) -c $(patsubst $(TARBALL_DIR)/%, %, $^) -$(TARBALL_DIR)/thorn-%.c: $(TARBALL_DIR)/thorn-%.tar.gz $(CCTK_HOME)/arrangements/CactusUtils/Formaline/src/util/VERSION $(FORMALINE-UTILS) +$(TARBALL_DIR)/thorn-%.c: $(TARBALL_DIR)/thorn-%.tar.gz $(CCTK_HOME)/arrangements/CactusUtils/Formaline/src/util/VERSION | $(FORMALINE-UTILS) cd $(TARBALL_DIR) && $(RM) -f $(@:$(TARBALL_DIR)/%.c=%-????.c) $(FORMALINE_BIN_DIR)/makeblob.pl $(@:%.c=%) $(patsubst %/,%,$(dir $(filter %/$(@:$(TARBALL_DIR)/thorn-%.c=%),$(THORNS)))) $(@:$(TARBALL_DIR)/thorn-%.c=%) < $< @@ -377,19 +379,20 @@ BUILD-ID-FILE = $(TOP)/BUILD-ID CONFIG-ID-FILE = $(TOP)/CONFIG-ID .PHONY: git-push-everything -git-push-everything: git-commit-everything $(BUILD-ID-FILE) $(FORMALINE-UTILS) +git-push-everything: git-commit-everything $(BUILD-ID-FILE) | $(FORMALINE-UTILS) { \ '$(GIT-BIN)/git-init-master-repo.pl' '$(GIT)' '$(GIT-MASTER-REPO)' && \ eval "$$('$(GIT-BIN)/git-get-localdir.pl' '$(GIT)')" && \ if [ -e "$(CCTK_HOME)/cactus.config" ]; then \ - . "$(CCTK_HOME)/cactus.config"; \ + export 'CCTK_HOME=$(CCTK_HOME)' && \ + . '$(CCTK_HOME)/cactus.config'; \ fi && \ - export CACTUS_LOCAL_GIT_REPO CACTUS_CENTRAL_GIT_REPO && \ + export CACTUS_LOCAL_GIT_REPO CACTUS_CENTRAL_GIT_REPO CACTUS_CENTRAL_SSH_ID && \ '$(GIT-BIN)/git-push-everything.pl' '$(GIT)' '$(GIT-REPO)' '$(GIT-MASTER-REPO)'; \ } || echo "Formaline: WARNING: Error while pushing to master repository" .PHONY: git-commit-everything -git-commit-everything: $(GIT-TAG-DIR)/flesh-Cactus.git-tag $(GIT-THORNS:%=$(GIT-TAG-DIR)/thorn-%.git-tag) $(BUILD-ID-FILE) git-rm-unused-thorns $(FORMALINE-UTILS) +git-commit-everything: $(GIT-TAG-DIR)/flesh-Cactus.git-tag $(GIT-THORNS:%=$(GIT-TAG-DIR)/thorn-%.git-tag) $(BUILD-ID-FILE) git-rm-unused-thorns | $(FORMALINE-UTILS) { \ '$(GIT-BIN)/git-commit-everything.pl' '$(GIT)' '$(GIT-REPO)' '$(GIT-ROOT)' "$$(cat $(BUILD-ID-FILE))" "$$(cat $(CONFIG-ID-FILE))"; \ } || echo "Formaline: WARNING: Error while committing to repository" @@ -397,13 +400,13 @@ git-commit-everything: $(GIT-TAG-DIR)/flesh-Cactus.git-tag $(GIT-THORNS:%=$(GIT- # Wait until after thorn Formaline has been built, so that its # utilities are available .PHONY: git-rm-unused-thorns -git-rm-unused-thorns: $(CCTK_LIBDIR)/$(LIBNAME_PREFIX)$(CCTK_LIBNAME_PREFIX)Formaline$(LIBNAME_SUFFIX) $(FORMALINE-UTILS) +git-rm-unused-thorns: $(CCTK_LIBDIR)/$(LIBNAME_PREFIX)$(CCTK_LIBNAME_PREFIX)Formaline$(LIBNAME_SUFFIX) | $(FORMALINE-UTILS) { \ '$(GIT-BIN)/git-rm-unused-thorns.pl' '$(GIT)' '$(GIT-REPO)' '$(GIT-ROOT)' $(THORNS); \ } || echo "Formaline: WARNING: Error while removing unused thorns" .PRECIOUS: $(GIT-TAG-DIR)/flesh-Cactus.git-tag -$(GIT-TAG-DIR)/flesh-Cactus.git-tag: $(TARBALL_DIR)/flesh-Cactus.files $(FORMALINE-UTILS) +$(GIT-TAG-DIR)/flesh-Cactus.git-tag: $(TARBALL_DIR)/flesh-Cactus.files | $(FORMALINE-UTILS) mkdir -p $(GIT-TAG-DIR) { \ '$(GIT-BIN)/git-init-repo.pl' '$(GIT)' '$(GIT-REPO)' && \ @@ -414,7 +417,7 @@ $(GIT-TAG-DIR)/flesh-Cactus.git-tag: $(TARBALL_DIR)/flesh-Cactus.files $(FORMALI } || echo "Formaline: WARNING: Error while adding flesh to git repository" .PRECIOUS: $(GIT-TAG-DIR)/thorn-%.git-tag -$(GIT-TAG-DIR)/thorn-%.git-tag: $(TARBALL_DIR)/thorn-%.files $(FORMALINE-UTILS) +$(GIT-TAG-DIR)/thorn-%.git-tag: $(TARBALL_DIR)/thorn-%.files | $(FORMALINE-UTILS) mkdir -p $(GIT-TAG-DIR) { \ '$(GIT-BIN)/git-init-repo.pl' '$(GIT)' '$(GIT-REPO)' && \ -- cgit v1.2.3