aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software/make/basic.mk
diff options
context:
space:
mode:
authorMohammad Akhlaghi <mohammad@akhlaghi.org>2019-05-09 15:54:56 +0100
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2019-05-09 15:54:56 +0100
commit0dd3569305596284ab8c168874e3c25faad0ef05 (patch)
tree59b1b60677c780d778046b43a45b79383039cc62 /reproduce/software/make/basic.mk
parent1b3be9f63e735902d3eef24f5ecac5ae71012602 (diff)
Metastore Git hooks properly written after its installation
Until now, in the recipe to build Metastore, we would store the current directory in a `current_dir' Bash variable before running `gbuild' to build Metastore. However, in this Makefile, we aren't using `.ONESHELL'. As a result, each un-quoted new-line character creates a new shell and the `current_dir' variable that we used afterwards was empty! This happened because until recently, Metastore was being built in `high-level.mk' (where `.ONESHELL' is activated, because we are using GNU Make to call that Makefile). But in `basic.mk', we are using the host's Make, which may not be GNU Make, so we can't use any GNU-only features. Also, this error was hard to notice, because we weren't using `&&' before writing the final target of Metastore! With this commit, both this issues are addressed: all the lines in the recipe are now quoted in the end with a backslash, and the steps before making the target are separated by `&&', not `;' (which doesn't cause a crash if the command fails). This fixes bug #56295.
Diffstat (limited to 'reproduce/software/make/basic.mk')
-rw-r--r--reproduce/software/make/basic.mk69
1 files changed, 34 insertions, 35 deletions
diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk
index 5f9db43..8a56769 100644
--- a/reproduce/software/make/basic.mk
+++ b/reproduce/software/make/basic.mk
@@ -896,49 +896,48 @@ $(ibidir)/metastore: $(tdir)/metastore-$(metastore-version).tar.gz \
$(ibidir)/sed \
$(needlibbsd)
- # The build command below will change the current directory of this
- # build, so we'll fix its value here.
- current_dir=$$(pwd)
-
# Metastore doesn't have any `./configure' script. So we'll just
# call `pwd' as a place-holder for the `./configure' command.
#
# File attributes are also not available on some systems, since the
# main purpose here is modification dates (and not attributes),
# we'll also set the `NO_XATTR' flag.
- $(call gbuild, $<, metastore-$(metastore-version), static,, \
- NO_XATTR=1 V=1,,pwd,PREFIX=$(idir))
-
- # Write the relevant hooks into this system's Git hooks, so Git
- # calls metastore properly on every commit and every checkout.
#
- # Note that the -O and -G options used here are currently only in a
- # fork of `metastore' currently hosted at:
+ # After installing Metastore, write the relevant hooks into this
+ # system's Git hooks, while setting the system-specific
+ # directories/files.
+ #
+ # Note that the metastore -O and -G options used in this template
+ # are currently only available in a fork of `metastore' hosted at:
# https://github.com/mohammad-akhlaghi/metastore
- user=$$(whoami); \
- group=$$(groups | awk '{print $$1}'); \
- cd $$current_dir; \
- if [ -f $(ibdir)/metastore ]; then \
- for f in pre-commit post-checkout; do \
- sed -e's|@USER[@]|'$$user'|g' \
- -e's|@GROUP[@]|'$$group'|g' \
- -e's|@BINDIR[@]|$(ibdir)|g' \
- -e's|@TOP_PROJECT_DIR[@]|'$$current_dir'|g' \
- reproduce/software/bash/git-$$f > .git/hooks/$$f; \
- chmod +x .git/hooks/$$f; \
- echo "Metastore (forked) $(metastore-version)" > $@; \
- done; \
- else \
- echo; echo; echo; \
- echo "*****************"; \
- echo "metastore couldn't be installed!"; \
- echo; \
- echo "Its used for preserving timestamps on Git commits."; \
- echo "Its useful for development, not simple running of "; \
- echo "the project. So we won't stop the configuration "; \
- echo "because it wasn't built."; \
- echo "*****************"; \
- fi
+ current_dir=$$(pwd); \
+ $(call gbuild, $<, metastore-$(metastore-version), static,, \
+ NO_XATTR=1 V=1,,pwd,PREFIX=$(idir)); \
+ user=$$(whoami); \
+ group=$$(groups | awk '{print $$1}'); \
+ cd $$current_dir; \
+ if [ -f $(ibdir)/metastore ]; then \
+ for f in pre-commit post-checkout; do \
+ sed -e's|@USER[@]|'$$user'|g' \
+ -e's|@GROUP[@]|'$$group'|g' \
+ -e's|@BINDIR[@]|$(ibdir)|g' \
+ -e's|@TOP_PROJECT_DIR[@]|'$$current_dir'|g' \
+ reproduce/software/bash/git-$$f > .git/hooks/$$f \
+ && chmod +x .git/hooks/$$f \
+ && echo "Metastore (forked) $(metastore-version)" > $@; \
+ done; \
+ else \
+ echo; echo; echo; \
+ echo "*****************"; \
+ echo "metastore couldn't be installed!"; \
+ echo; \
+ echo "Its used for preserving timestamps on Git commits."; \
+ echo "Its useful for development, not simple running of "; \
+ echo "the project. So we won't stop the configuration "; \
+ echo "because it wasn't built."; \
+ echo "*****************"; \
+ fi
+
$(ibidir)/mpfr: $(tdir)/mpfr-$(mpfr-version).tar.xz \
$(ibidir)/gmp