]> arthur.barton.de Git - bup.git/commitdiff
Generate bup-python from Makefile not configure
authorRob Browning <rlb@defaultvalue.org>
Fri, 18 Dec 2015 20:59:54 +0000 (14:59 -0600)
committerRob Browning <rlb@defaultvalue.org>
Sat, 19 Dec 2015 16:40:51 +0000 (10:40 -0600)
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 <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
.gitignore
Makefile
config/config.vars.in
config/configure

index b5a261e84bb975740fd1b0b99e02a544bfed6475..5cb0be8aae1ae7a55f49b6a1e224b6c5a850cbfb 100644 (file)
@@ -1,5 +1,6 @@
 /bup
 /cmd/bup-*
+/cmd/python-cmd.sh
 /lib/bup/_version.py
 randomgen
 memtest
index dff3647b1462c7eddfc13b4815c19a07e211f34f..d767ced20be043f2ba404e4774d186f727fcc6d3 100644 (file)
--- 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 $@
index 7bc32eedda14b0c9778990cb461907a4e1cd7694..d8481fb4b20084d851adb1d75b51942a90af94b9 100644 (file)
@@ -1,2 +1,3 @@
 CONFIGURE_FILES=@CONFIGURE_FILES@
 GENERATED_FILES=@GENERATED_FILES@
+bup_python=@bup_python@
index a2afb83778825e55eb42e7ce53dabc054f77b16a..e630bedfcdce0bb8c6432d755428cccdda9e40c9 100755 (executable)
@@ -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