]> granicus.if.org Git - python/commitdiff
bpo-23404: make touch becomes make regen-all (#1405)
authorVictor Stinner <victor.stinner@gmail.com>
Wed, 3 May 2017 16:21:48 +0000 (18:21 +0200)
committerGitHub <noreply@github.com>
Wed, 3 May 2017 16:21:48 +0000 (18:21 +0200)
Don't rebuild generated files based on file modification time
anymore, the action is now explicit. Replace "make touch"
with "make regen-all".

Changes:

* Remove "make touch", Tools/hg/hgtouch.py and .hgtouch
* Add a new "make regen-all" command to rebuild all generated files
* Add subcommands to only generate specific files:

  - regen-ast: Include/Python-ast.h and Python/Python-ast.c
  - regen-grammar: Include/graminit.h and Python/graminit.c
  - regen-importlib: Python/importlib_external.h and Python/importlib.h
  - regen-opcode: Include/opcode.h
  - regen-opcode-targets: Python/opcode_targets.h
  - regen-typeslots: Objects/typeslots.inc

* Rename PYTHON_FOR_GEN to PYTHON_FOR_REGEN
* pgen is now only built by by "make regen-grammar"
* Add $(srcdir)/ prefix to paths to source files to handle correctly
  compilation outside the source directory

Note: $(PYTHON_FOR_REGEN) is no more used nor needed by "make"
default target building Python.

.hgtouch [deleted file]
Mac/BuildScript/build-installer.py
Makefile.pre.in
Misc/NEWS
Tools/hg/hgtouch.py [deleted file]
configure
configure.ac

diff --git a/.hgtouch b/.hgtouch
deleted file mode 100644 (file)
index b9be0f1..0000000
--- a/.hgtouch
+++ /dev/null
@@ -1,17 +0,0 @@
-# -*- Makefile -*-
-# Define dependencies of generated files that are checked into hg.
-# The syntax of this file uses make rule dependencies, without actions
-
-Python/importlib.h: Lib/importlib/_bootstrap.py Programs/_freeze_importlib.c
-
-Include/opcode.h:  Lib/opcode.py Tools/scripts/generate_opcode_h.py
-
-Include/Python-ast.h: Parser/Python.asdl Parser/asdl.py Parser/asdl_c.py
-Python/Python-ast.c: Include/Python-ast.h
-
-Python/opcode_targets.h: Python/makeopcodetargets.py Lib/opcode.py
-
-Objects/typeslots.inc: Include/typeslots.h Objects/typeslots.py
-
-Include/graminit.h: Grammar/Grammar Parser/acceler.c Parser/grammar1.c Parser/listnode.c Parser/node.c Parser/parser.c Parser/bitset.c Parser/metagrammar.c Parser/firstsets.c Parser/grammar.c Parser/pgen.c Objects/obmalloc.c Python/dynamic_annotations.c Python/mysnprintf.c Python/pyctype.c Parser/tokenizer_pgen.c Parser/printgrammar.c Parser/parsetok_pgen.c Parser/pgenmain.c
-Python/graminit.c: Include/graminit.h Grammar/Grammar Parser/acceler.c Parser/grammar1.c Parser/listnode.c Parser/node.c Parser/parser.c Parser/bitset.c Parser/metagrammar.c Parser/firstsets.c Parser/grammar.c Parser/pgen.c Objects/obmalloc.c Python/dynamic_annotations.c Python/mysnprintf.c Python/pyctype.c Parser/tokenizer_pgen.c Parser/printgrammar.c Parser/parsetok_pgen.c Parser/pgenmain.c
index f59ae34df2549a5bb6d57419c769e52dfbeea23b..7b4376f42b88f3b0b7a88b05e99b2a1b24673f77 100755 (executable)
@@ -1142,10 +1142,6 @@ def buildPython():
         shellQuote(WORKDIR)[1:-1],
         shellQuote(WORKDIR)[1:-1]))
 
-    # bpo-29550: avoid using make touch until it is fixed for git
-    # print("Running make touch")
-    # runCommand("make touch")
-
     print("Running make")
     runCommand("make")
 
index e5141f11dade2db62c6d5dfb2fe79528f948b6ab..12593a2b63ac937f37f78f6046d5d84fc78af171 100644 (file)
@@ -229,7 +229,7 @@ LIBOBJS=    @LIBOBJS@
 PYTHON=                python$(EXE)
 BUILDPYTHON=   python$(BUILDEXE)
 
-PYTHON_FOR_GEN=@PYTHON_FOR_GEN@
+PYTHON_FOR_REGEN=@PYTHON_FOR_REGEN@
 PYTHON_FOR_BUILD=@PYTHON_FOR_BUILD@
 _PYTHON_HOST_PLATFORM=@_PYTHON_HOST_PLATFORM@
 BUILD_GNU_TYPE=        @build@
@@ -273,11 +273,6 @@ IO_OBJS=   \
                Modules/_io/stringio.o
 
 ##########################################################################
-# Grammar
-GRAMMAR_H=     Include/graminit.h
-GRAMMAR_C=     Python/graminit.c
-GRAMMAR_INPUT= $(srcdir)/Grammar/Grammar
-
 
 LIBFFI_INCLUDEDIR=     @LIBFFI_INCLUDEDIR@
 
@@ -316,38 +311,9 @@ PARSER_HEADERS= \
 
 PGENOBJS=      $(POBJS) $(PGOBJS)
 
-##########################################################################
-# opcode.h generation
-OPCODE_H_DIR=  $(srcdir)/Include
-OPCODE_H_SCRIPT= $(srcdir)/Tools/scripts/generate_opcode_h.py
-OPCODE_H=      $(OPCODE_H_DIR)/opcode.h
-OPCODE_H_GEN=  $(PYTHON_FOR_GEN) $(OPCODE_H_SCRIPT) $(srcdir)/Lib/opcode.py $(OPCODE_H)
-
-##########################################################################
-# AST
-AST_H_DIR=     Include
-AST_H=         $(AST_H_DIR)/Python-ast.h
-AST_C_DIR=     Python
-AST_C=         $(AST_C_DIR)/Python-ast.c
-AST_ASDL=      $(srcdir)/Parser/Python.asdl
-
-ASDLGEN_FILES= $(srcdir)/Parser/asdl.py $(srcdir)/Parser/asdl_c.py
-# Note that a build now requires Python to exist before the build starts.
-# Use "hg touch" to fix up screwed up file mtimes in a checkout.
-ASDLGEN=       $(PYTHON_FOR_GEN) $(srcdir)/Parser/asdl_c.py
-
 ##########################################################################
 # Python
 
-OPCODETARGETS_H= \
-               Python/opcode_targets.h
-
-OPCODETARGETGEN= \
-               $(srcdir)/Python/makeopcodetargets.py
-
-OPCODETARGETGEN_FILES= \
-               $(OPCODETARGETGEN) $(srcdir)/Lib/opcode.py
-
 PYTHON_OBJS=   \
                Python/_warnings.o \
                Python/Python-ast.o \
@@ -548,11 +514,8 @@ coverage-lcov:
        @echo "lcov report at $(COVERAGE_REPORT)/index.html"
        @echo
 
-coverage-report:
-       @ # force rebuilding of parser and importlib
-       @touch $(GRAMMAR_INPUT)
-       @touch $(srcdir)/Lib/importlib/_bootstrap.py
-       @touch $(srcdir)/Lib/importlib/_bootstrap_external.py
+# Force regeneration of parser and importlib
+coverage-report: regen-grammar regen-importlib
        @ # build with coverage info
        $(MAKE) coverage
        @ # run tests, ignore failures
@@ -724,14 +687,24 @@ Programs/_freeze_importlib.o: Programs/_freeze_importlib.c Makefile
 Programs/_freeze_importlib: Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN)
        $(LINKCC) $(PY_LDFLAGS) -o $@ Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
 
-Python/importlib_external.h: @GENERATED_COMMENT@ $(srcdir)/Lib/importlib/_bootstrap_external.py Programs/_freeze_importlib Python/marshal.c
+.PHONY: regen-importlib
+regen-importlib: Programs/_freeze_importlib
+       # Regenerate Python/importlib_external.h
+       # from Lib/importlib/_bootstrap_external.py using _freeze_importlib
        ./Programs/_freeze_importlib \
-           $(srcdir)/Lib/importlib/_bootstrap_external.py Python/importlib_external.h
-
-Python/importlib.h: @GENERATED_COMMENT@ $(srcdir)/Lib/importlib/_bootstrap.py Programs/_freeze_importlib Python/marshal.c
+           $(srcdir)/Lib/importlib/_bootstrap_external.py \
+           $(srcdir)/Python/importlib_external.h
+       # Regenerate Python/importlib.h from Lib/importlib/_bootstrap.py
+       # using _freeze_importlib
        ./Programs/_freeze_importlib \
-           $(srcdir)/Lib/importlib/_bootstrap.py Python/importlib.h
+           $(srcdir)/Lib/importlib/_bootstrap.py \
+           $(srcdir)/Python/importlib.h
+
+
+############################################################################
+# Regenerate all generated files
 
+regen-all: regen-opcode regen-opcode-targets regen-typeslots regen-grammar regen-ast regen-importlib
 
 ############################################################################
 # Special rules for object files
@@ -790,15 +763,18 @@ Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile
 
 $(IO_OBJS): $(IO_H)
 
-$(GRAMMAR_H): @GENERATED_COMMENT@ $(GRAMMAR_INPUT) $(PGEN)
-       @$(MKDIR_P) Include
-       $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
-$(GRAMMAR_C): @GENERATED_COMMENT@ $(GRAMMAR_H)
-       touch $(GRAMMAR_C)
-
 $(PGEN): $(PGENOBJS)
                $(CC) $(OPT) $(PY_LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
 
+.PHONY: regen-grammar
+regen-grammar: $(PGEN)
+       # Regenerate Include/graminit.h and Python/graminit.c
+       # from Grammar/Grammar using pgen
+       @$(MKDIR_P) Include
+       $(PGEN) $(srcdir)/Grammar/Grammar \
+               $(srcdir)/Include/graminit.h \
+               $(srcdir)/Python/graminit.c
+
 Parser/grammar.o:      $(srcdir)/Parser/grammar.c \
                                $(srcdir)/Include/token.h \
                                $(srcdir)/Include/grammar.h
@@ -810,18 +786,28 @@ Parser/printgrammar.o: $(srcdir)/Parser/printgrammar.c
 
 Parser/pgenmain.o:     $(srcdir)/Include/parsetok.h
 
-$(AST_H): $(AST_ASDL) $(ASDLGEN_FILES)
-       $(MKDIR_P) $(AST_H_DIR)
-       $(ASDLGEN) -h $(AST_H_DIR) $(AST_ASDL)
-
-$(AST_C): $(AST_H) $(AST_ASDL) $(ASDLGEN_FILES)
-       $(MKDIR_P) $(AST_C_DIR)
-       $(ASDLGEN) -c $(AST_C_DIR) $(AST_ASDL)
-
-$(OPCODE_H): $(srcdir)/Lib/opcode.py $(OPCODE_H_SCRIPT)
-       $(OPCODE_H_GEN)
-
-Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H)
+.PHONY=regen-ast
+regen-ast:
+       # Regenerate Include/Python-ast.h using Parser/asdl_c.py -h
+       $(MKDIR_P) $(srcdir)/Include
+       $(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py \
+               -h $(srcdir)/Include \
+               $(srcdir)/Parser/Python.asdl
+       # Regenerate Python/Python-ast.c using Parser/asdl_c.py -c
+       $(MKDIR_P) $(srcdir)/Python
+       $(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py \
+               -c $(srcdir)/Python \
+               $(srcdir)/Parser/Python.asdl
+
+.PHONY: regen-opcode
+regen-opcode:
+       # Regenerate Include/opcode.h from Lib/opcode.py
+       # using Tools/scripts/generate_opcode_h.py
+       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_opcode_h.py \
+               $(srcdir)/Lib/opcode.py \
+               $(srcdir)/Include/opcode.h
+
+Python/compile.o Python/symtable.o Python/ast.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h
 
 Python/getplatform.o: $(srcdir)/Python/getplatform.c
                $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
@@ -871,12 +857,16 @@ Objects/odictobject.o: $(srcdir)/Objects/dict-common.h
 Objects/dictobject.o: $(srcdir)/Objects/stringlib/eq.h $(srcdir)/Objects/dict-common.h
 Objects/setobject.o: $(srcdir)/Objects/stringlib/eq.h
 
-$(OPCODETARGETS_H): $(OPCODETARGETGEN_FILES)
-       $(PYTHON_FOR_GEN) $(OPCODETARGETGEN) $(OPCODETARGETS_H)
+.PHONY: regen-opcode-targets
+regen-opcode-targets:
+       # Regenerate Python/opcode_targets.h from Lib/opcode.py
+       # using Python/makeopcodetargets.py
+       $(PYTHON_FOR_REGEN) $(srcdir)/Python/makeopcodetargets.py \
+               $(srcdir)/Python/opcode_targets.h
 
-Python/ceval.o: $(OPCODETARGETS_H) $(srcdir)/Python/ceval_gil.h
+Python/ceval.o: $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/ceval_gil.h
 
-Python/frozen.o: Python/importlib.h Python/importlib_external.h
+Python/frozen.o: $(srcdir)/Python/importlib.h $(srcdir)/Python/importlib_external.h
 
 # Generate DTrace probe macros, then rename them (PYTHON_ -> PyDTrace_) to
 # follow our naming conventions. dtrace(1) uses the output filename to generate
@@ -891,8 +881,14 @@ Python/pydtrace.o: $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
        $(DTRACE) $(DFLAGS) -o $@ -G -s $< $(DTRACE_DEPS)
 
 Objects/typeobject.o: Objects/typeslots.inc
-Objects/typeslots.inc: $(srcdir)/Include/typeslots.h $(srcdir)/Objects/typeslots.py
-       $(PYTHON_FOR_GEN) $(srcdir)/Objects/typeslots.py < $(srcdir)/Include/typeslots.h Objects/typeslots.inc
+
+.PHONY: regen-typeslots
+regen-typeslots:
+       # Regenerate Objects/typeslots.inc from Include/typeslotsh
+       # using Objects/typeslots.py
+       $(PYTHON_FOR_REGEN) $(srcdir)/Objects/typeslots.py \
+               < $(srcdir)/Include/typeslots.h \
+               $(srcdir)/Objects/typeslots.inc
 
 ############################################################################
 # Header files
@@ -945,7 +941,7 @@ PYTHON_HEADERS= \
                $(srcdir)/Include/node.h \
                $(srcdir)/Include/object.h \
                $(srcdir)/Include/objimpl.h \
-               $(OPCODE_H) \
+               $(srcdir)/Include/opcode.h \
                $(srcdir)/Include/osdefs.h \
                $(srcdir)/Include/osmodule.h \
                $(srcdir)/Include/patchlevel.h \
@@ -988,7 +984,7 @@ PYTHON_HEADERS= \
                $(srcdir)/Include/weakrefobject.h \
                pyconfig.h \
                $(PARSER_HEADERS) \
-               $(AST_H) \
+               $(srcdir)/Include/Python-ast.h \
                $(DTRACE_HEADERS)
 
 $(LIBRARY_OBJS) $(MODOBJS) Programs/python.o: $(PYTHON_HEADERS)
@@ -1555,9 +1551,12 @@ recheck:
        $(SHELL) config.status --recheck
        $(SHELL) config.status
 
-# Rebuild the configure script from configure.ac; also rebuild pyconfig.h.in
+# Regenerate configure and pyconfig.h.in
+.PHONY: autoconf
 autoconf:
+       # Regenerate the configure script from configure.ac using autoconf
        (cd $(srcdir); autoconf -Wall)
+       # Regenerate pyconfig.h.in from configure.ac using autoheader
        (cd $(srcdir); autoheader -Wall)
 
 # Create a tags file for vi
@@ -1574,14 +1573,6 @@ TAGS::
        etags Include/*.h; \
        for i in $(SRCDIRS); do etags -a $$i/*.[ch]; done
 
-# This fixes up the mtimes of checked-in generated files, assuming that they
-# only *appear* to be outdated because of checkout order.
-# This is run while preparing a source release tarball, and can be run manually
-# to avoid bootstrap issues.
-touch:
-       cd $(srcdir); \
-       hg --config extensions.touch=Tools/hg/hgtouch.py touch -v
-
 # Sanitation targets -- clean leaves libraries, executables and tags
 # files, which clobber removes as well
 pycremoval:
@@ -1699,7 +1690,7 @@ Python/thread.o: @THREADHEADERS@
 .PHONY: maninstall libinstall inclinstall libainstall sharedinstall
 .PHONY: frameworkinstall frameworkinstallframework frameworkinstallstructure
 .PHONY: frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools
-.PHONY: frameworkaltinstallunixtools recheck autoconf clean clobber distclean
+.PHONY: frameworkaltinstallunixtools recheck clean clobber distclean
 .PHONY: smelly funny patchcheck touch altmaninstall commoninstall
 .PHONY: gdbhooks
 
index d458f118683d39947cdc5618a812e9eb17849c4d..4e85c0fbf2abb9b8652d87cfed2e1346c9e37148 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -1026,6 +1026,10 @@ Documentation
 Build
 -----
 
+- bpo-23404: Don't regenerate generated files based on file modification time
+  anymore: the action is now explicit. Replace ``make touch`` with
+  ``make regen-all``.
+
 - bpo-29643: Fix ``--enable-optimization`` didn't work.
 
 - bpo-27593: sys.version and the platform module python_build(),
diff --git a/Tools/hg/hgtouch.py b/Tools/hg/hgtouch.py
deleted file mode 100644 (file)
index fbca469..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-"""Bring time stamps of generated checked-in files into the right order
-
-A versioned configuration file .hgtouch specifies generated files, in the
-syntax of make rules.
-
-  output:    input1 input2
-
-In addition to the dependency syntax, #-comments are supported.
-"""
-import errno
-import os
-import time
-
-def parse_config(repo):
-    try:
-        fp = repo.wfile(".hgtouch")
-    except IOError, e:
-        if e.errno != errno.ENOENT:
-            raise
-        return {}
-    result = {}
-    with fp:
-        for line in fp:
-            # strip comments
-            line = line.split('#')[0].strip()
-            if ':' not in line:
-                continue
-            outputs, inputs = line.split(':', 1)
-            outputs = outputs.split()
-            inputs = inputs.split()
-            for o in outputs:
-                try:
-                    result[o].extend(inputs)
-                except KeyError:
-                    result[o] = inputs
-    return result
-
-def check_rule(ui, repo, modified, basedir, output, inputs):
-    """Verify that the output is newer than any of the inputs.
-    Return (status, stamp), where status is True if the update succeeded,
-    and stamp is the newest time stamp assigned  to any file (might be in
-    the future).
-
-    If basedir is nonempty, it gives a directory in which the tree is to
-    be checked.
-    """
-    f_output = repo.wjoin(os.path.join(basedir, output))
-    try:
-        o_time = os.stat(f_output).st_mtime
-    except OSError:
-        ui.warn("Generated file %s does not exist\n" % output)
-        return False, 0
-    youngest = 0   # youngest dependency
-    backdate = None
-    backdate_source = None
-    for i in inputs:
-        f_i = repo.wjoin(os.path.join(basedir, i))
-        try:
-            i_time = os.stat(f_i).st_mtime
-        except OSError:
-            ui.warn(".hgtouch input file %s does not exist\n" % i)
-            return False, 0
-        if i in modified:
-            # input is modified. Need to backdate at least to i_time
-            if backdate is None or backdate > i_time:
-                backdate = i_time
-                backdate_source = i
-            continue
-        youngest = max(i_time, youngest)
-    if backdate is not None:
-        ui.warn("Input %s for file %s locally modified\n" % (backdate_source, output))
-        # set to 1s before oldest modified input
-        backdate -= 1
-        os.utime(f_output, (backdate, backdate))
-        return False, 0
-    if youngest >= o_time:
-        ui.note("Touching %s\n" % output)
-        youngest += 1
-        os.utime(f_output, (youngest, youngest))
-        return True, youngest
-    else:
-        # Nothing to update
-        return True, 0
-
-def do_touch(ui, repo, basedir):
-    if basedir:
-        if not os.path.isdir(repo.wjoin(basedir)):
-            ui.warn("Abort: basedir %r does not exist\n" % basedir)
-            return
-        modified = []
-    else:
-        modified = repo.status()[0]
-    dependencies = parse_config(repo)
-    success = True
-    tstamp = 0       # newest time stamp assigned
-    # try processing all rules in topological order
-    hold_back = {}
-    while dependencies:
-        output, inputs = dependencies.popitem()
-        # check whether any of the inputs is generated
-        for i in inputs:
-            if i in dependencies:
-                hold_back[output] = inputs
-                continue
-        _success, _tstamp = check_rule(ui, repo, modified, basedir, output, inputs)
-        success = success and _success
-        tstamp = max(tstamp, _tstamp)
-        # put back held back rules
-        dependencies.update(hold_back)
-        hold_back = {}
-    now = time.time()
-    if tstamp > now:
-        # wait until real time has passed the newest time stamp, to
-        # avoid having files dated in the future
-        time.sleep(tstamp-now)
-    if hold_back:
-        ui.warn("Cyclic dependency involving %s\n" % (' '.join(hold_back.keys())))
-        return False
-    return success
-
-def touch(ui, repo, basedir):
-    "touch generated files that are older than their sources after an update."
-    do_touch(ui, repo, basedir)
-
-cmdtable = {
-    "touch": (touch,
-              [('b', 'basedir', '', 'base dir of the tree to apply touching')],
-              "hg touch [-b BASEDIR]")
-}
index d44372a4507d65c7b0522d9bc0cb55adbed5e929..c9340c68605483dd0dada2fb2c6ea315b7c74019 100755 (executable)
--- a/configure
+++ b/configure
@@ -749,9 +749,8 @@ UNIVERSALSDK
 CONFIG_ARGS
 SOVERSION
 VERSION
-GENERATED_COMMENT
 PYTHON_FOR_BUILD
-PYTHON_FOR_GEN
+PYTHON_FOR_REGEN
 host_os
 host_vendor
 host_cpu
@@ -2880,11 +2879,11 @@ do
 set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_PYTHON_FOR_GEN+:} false; then :
+if ${ac_cv_prog_PYTHON_FOR_REGEN+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$PYTHON_FOR_GEN"; then
-  ac_cv_prog_PYTHON_FOR_GEN="$PYTHON_FOR_GEN" # Let the user override the test.
+  if test -n "$PYTHON_FOR_REGEN"; then
+  ac_cv_prog_PYTHON_FOR_REGEN="$PYTHON_FOR_REGEN" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -2893,7 +2892,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_PYTHON_FOR_GEN="$ac_prog"
+    ac_cv_prog_PYTHON_FOR_REGEN="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -2903,25 +2902,20 @@ IFS=$as_save_IFS
 
 fi
 fi
-PYTHON_FOR_GEN=$ac_cv_prog_PYTHON_FOR_GEN
-if test -n "$PYTHON_FOR_GEN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_FOR_GEN" >&5
-$as_echo "$PYTHON_FOR_GEN" >&6; }
+PYTHON_FOR_REGEN=$ac_cv_prog_PYTHON_FOR_REGEN
+if test -n "$PYTHON_FOR_REGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_FOR_REGEN" >&5
+$as_echo "$PYTHON_FOR_REGEN" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-  test -n "$PYTHON_FOR_GEN" && break
+  test -n "$PYTHON_FOR_REGEN" && break
 done
-test -n "$PYTHON_FOR_GEN" || PYTHON_FOR_GEN="not-found"
+test -n "$PYTHON_FOR_REGEN" || PYTHON_FOR_REGEN="python3"
 
-if test "$PYTHON_FOR_GEN" = not-found; then
-    PYTHON_FOR_GEN='@echo "Cannot generate $@, python not found !" && \
-    echo "To skip re-generation of $@ run <make touch> or <make -t $@>." && \
-    echo "Otherwise, set python in PATH and run configure or run <make PYTHON_FOR_GEN=python>." && false &&'
-fi
 
 
 if test "$cross_compiling" = yes; then
@@ -2942,18 +2936,14 @@ $as_echo_n "checking for python interpreter for cross build... " >&6; }
 $as_echo "$interp" >&6; }
        PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp
     fi
-    # Used to comment out stuff for rebuilding generated files
-    GENERATED_COMMENT='#'
 elif test "$cross_compiling" = maybe; then
     as_fn_error $? "Cross compiling required --host=HOST-TUPLE and --build=ARCH" "$LINENO" 5
 else
     PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E'
-    GENERATED_COMMENT=''
 fi
 
 
 
-
 if test "$prefix" != "/"; then
     prefix=`echo "$prefix" | sed -e 's/\/$//g'`
 fi
index 69d2c135bb6a7a5c7e74d2f52bd27995db60f87b..e065ce554b4ec92b33fc8225aa45b0d3225bb98f 100644 (file)
@@ -56,13 +56,8 @@ AC_SUBST(host)
 # pybuilddir.txt will be created by --generate-posix-vars in the Makefile
 rm -f pybuilddir.txt
 
-AC_CHECK_PROGS(PYTHON_FOR_GEN, python$PACKAGE_VERSION python3 python, not-found)
-if test "$PYTHON_FOR_GEN" = not-found; then
-    PYTHON_FOR_GEN='@echo "Cannot generate $@, python not found !" && \
-    echo "To skip re-generation of $@ run <make touch> or <make -t $@>." && \
-    echo "Otherwise, set python in PATH and run configure or run <make PYTHON_FOR_GEN=python>." && false &&'
-fi
-AC_SUBST(PYTHON_FOR_GEN)
+AC_CHECK_PROGS(PYTHON_FOR_REGEN, python$PACKAGE_VERSION python3 python, python3)
+AC_SUBST(PYTHON_FOR_REGEN)
 
 if test "$cross_compiling" = yes; then
     AC_MSG_CHECKING([for python interpreter for cross build])
@@ -80,16 +75,12 @@ if test "$cross_compiling" = yes; then
         AC_MSG_RESULT($interp)
        PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp
     fi
-    # Used to comment out stuff for rebuilding generated files
-    GENERATED_COMMENT='#'
 elif test "$cross_compiling" = maybe; then
     AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
 else
     PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E'
-    GENERATED_COMMENT=''
 fi
 AC_SUBST(PYTHON_FOR_BUILD)
-AC_SUBST(GENERATED_COMMENT)
 
 dnl Ensure that if prefix is specified, it does not end in a slash. If
 dnl it does, we get path names containing '//' which is both ugly and