From: Rob Browning Date: Fri, 18 Dec 2015 20:59:54 +0000 (-0600) Subject: Generate bup-python from Makefile not configure X-Git-Tag: 0.28-rc1~55 X-Git-Url: https://arthur.barton.de/gitweb/?p=bup.git;a=commitdiff_plain;h=8fd784770c3a83bc9dbda32c3317c496728b7195 Generate bup-python from Makefile not configure Don't generate cmd/bup-python in configure. Instead, just define a bup_python config variable (via config/config.vars.in), and use it to generate bup-python from ./Makefile. In support of that, include config/config.vars in ./Makefile, and add a rule to generate it. This simplifies some of the dependencies, and removes a level of indirection when determining the correct python to use (i.e. PYTHON via $(shell)). This does mean that a "make clean" on a clean tree will run configure. Signed-off-by: Rob Browning Tested-by: Rob Browning --- diff --git a/.gitignore b/.gitignore index b5a261e..5cb0be8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /bup /cmd/bup-* +/cmd/python-cmd.sh /lib/bup/_version.py randomgen memtest diff --git a/Makefile b/Makefile index dff3647..d767ced 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,10 @@ SHELL := bash +.DEFAULT_GOAL := all + +# See config/config.vars.in (sets bup_python, among other things) +include config/config.vars + pf := set -o pipefail define isok @@ -37,7 +42,15 @@ endif initial_setup := $(shell ./configure-version --update $(isok)) initial_setup := $(call shout,$(initial_setup),Version configuration failed)) -bup_deps := bup lib/bup/_version.py lib/bup/_helpers$(SOEXT) cmds +config/config.vars: configure config/configure config/configure.inc \ + $(wildcard config/*.in) + ./configure + +bup_cmds := cmd/bup-python\ + $(patsubst cmd/%-cmd.py,cmd/bup-%,$(wildcard cmd/*-cmd.py)) \ + $(patsubst cmd/%-cmd.sh,cmd/bup-%,$(wildcard cmd/*-cmd.sh)) + +bup_deps := bup lib/bup/_version.py lib/bup/_helpers$(SOEXT) $(bup_cmds) all: $(bup_deps) Documentation/all $(current_sampledata) @@ -49,12 +62,9 @@ Documentation/all: $(bup_deps) $(current_sampledata): t/configure-sampledata --setup -# This needs to be a delayed assignment -PYTHON = $(shell cmd/bup-python -c 'import sys; print sys.executable') - define install-python-bin set -e; \ - sed -e '1 s|.*|#!$(PYTHON)|; 2,/^# end of bup preamble$$/d' $1 > $2; \ + sed -e '1 s|.*|#!$(bup_python)|; 2,/^# end of bup preamble$$/d' $1 > $2; \ chmod 0755 $2; endef @@ -99,16 +109,14 @@ install: all %/clean: $(MAKE) -C $* clean -config/config.h: config/Makefile config/configure config/configure.inc \ - $(wildcard config/*.in) - cd config && $(MAKE) config.h +config/config.h: config/config.vars lib/bup/_helpers$(SOEXT): \ config/config.h \ lib/bup/bupsplit.c lib/bup/_helpers.c lib/bup/csetup.py @rm -f $@ cd lib/bup && \ - LDFLAGS="$(LDFLAGS)" CFLAGS="$(CFLAGS)" $(PYTHON) csetup.py build + LDFLAGS="$(LDFLAGS)" CFLAGS="$(CFLAGS)" "$(bup_python)" csetup.py build cp lib/bup/build/*/_helpers$(SOEXT) lib/bup/ lib/bup/_version.py: @@ -126,7 +134,7 @@ runtests: runtests-python runtests-cmdline # https://groups.google.com/forum/#!topic/bup-list/9ke-Mbp10Q0 runtests-python: all t/tmp $(pf); cd $$(pwd -P); TMPDIR="$(test_tmp)" \ - $(PYTHON) wvtest.py t/t*.py lib/*/t/t*.py 2>&1 \ + "$(bup_python)" wvtest.py t/t*.py lib/*/t/t*.py 2>&1 \ | tee -a t/tmp/test-log/$$$$.log cmdline_tests := \ @@ -173,18 +181,16 @@ stupid: test: all if test -e t/tmp/test-log; then rm -r t/tmp/test-log; fi mkdir -p t/tmp/test-log - ./wvtest watch --no-counts \ - $(MAKE) PYTHON=$(PYTHON) runtests-python runtests-cmdline + ./wvtest watch --no-counts $(MAKE) runtests-python runtests-cmdline ./wvtest report t/tmp/test-log/*.log check: test -cmd/python-cmd.sh: config/configure config/configure.inc - ./configure - -cmds: \ - $(patsubst cmd/%-cmd.py,cmd/bup-%,$(wildcard cmd/*-cmd.py)) \ - $(patsubst cmd/%-cmd.sh,cmd/bup-%,$(wildcard cmd/*-cmd.sh)) +cmd/python-cmd.sh: config/config.vars Makefile + printf "#!/bin/sh\nexec %q \"\$$@\"" "$(bup_python)" \ + >> cmd/python-cmd.sh.$$PPID.tmp + chmod u+x cmd/python-cmd.sh.$$PPID.tmp + mv cmd/python-cmd.sh.$$PPID.tmp cmd/python-cmd.sh cmd/bup-%: cmd/%-cmd.py rm -f $@ diff --git a/config/config.vars.in b/config/config.vars.in index 7bc32ee..d8481fb 100644 --- a/config/config.vars.in +++ b/config/config.vars.in @@ -1,2 +1,3 @@ CONFIGURE_FILES=@CONFIGURE_FILES@ GENERATED_FILES=@GENERATED_FILES@ +bup_python=@bup_python@ diff --git a/config/configure b/config/configure index a2afb83..e630bed 100755 --- a/config/configure +++ b/config/configure @@ -64,10 +64,7 @@ test -z "$bup_python" && bup_python="$(bup_find_prog python '')" if test -z "$bup_python"; then AC_FAIL "ERROR: unable to find python" else - echo "#!/bin/sh" > ../cmd/python-cmd.sh - printf "exec %q \"\$@\"" "$bup_python" >> ../cmd/python-cmd.sh - chmod u+x ../cmd/python-cmd.sh - cd ../cmd && ln -sf python-cmd.sh bup-python + AC_SUB bup_python "$bup_python" fi if test -z "$(bup_find_prog git '')"; then