]> sourceware.org Git - glibc.git/commitdiff
Patch to require Python 3.4 or later to build glibc.
authorJoseph Myers <joseph@codesourcery.com>
Mon, 29 Oct 2018 15:28:05 +0000 (15:28 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Mon, 29 Oct 2018 15:28:05 +0000 (15:28 +0000)
This patch makes Python 3.4 or later a required tool for building
glibc, so allowing changes of awk, perl etc. code used in the build
and test to Python code without any such changes needing makefile
conditionals or to handle older Python versions.

This patch makes the configure test for Python check the version and
give an error if Python is missing or too old, and removes makefile
conditionals that are no longer needed.  It does not itself convert
any code from another language to Python, and does not remove any
compatibility with older Python versions from existing scripts.

Tested for x86_64.

* configure.ac (PYTHON_PROG): Use AC_CHECK_PROG_VER.  Set
critic_missing for versions before 3.4.
* configure: Regenerated.
* manual/install.texi (Tools for Compilation): Document
requirement for Python to build glibc.
* INSTALL: Regenerated.
* Rules [PYTHON]: Make code unconditional.
* benchtests/Makefile [PYTHON]: Likewise.
* conform/Makefile [PYTHON]: Likewise.
* manual/Makefile [PYTHON]: Likewise.
* math/Makefile [PYTHON]: Likewise.

ChangeLog
INSTALL
NEWS
Rules
benchtests/Makefile
configure
configure.ac
conform/Makefile
manual/Makefile
manual/install.texi
math/Makefile

index 5709c3cdbcee45ce85118549482a924d2b825fe4..dc267e2d4d317a6a6791f349f5e9448e0af7897a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2018-10-29  Joseph Myers  <joseph@codesourcery.com>
+
+       * configure.ac (PYTHON_PROG): Use AC_CHECK_PROG_VER.  Set
+       critic_missing for versions before 3.4.
+       * configure: Regenerated.
+       * manual/install.texi (Tools for Compilation): Document
+       requirement for Python to build glibc.
+       * INSTALL: Regenerated.
+       * Rules [PYTHON]: Make code unconditional.
+       * benchtests/Makefile [PYTHON]: Likewise.
+       * conform/Makefile [PYTHON]: Likewise.
+       * manual/Makefile [PYTHON]: Likewise.
+       * math/Makefile [PYTHON]: Likewise.
+
 2018-10-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
        * hurd/hurdsig.c (_hurd_interrupted_rpc_timeout): Set to 60000.
diff --git a/INSTALL b/INSTALL
index 50bd113d557e96c07ff318d8edff40a67c56e63e..3884ada8d8ae97144639200fc71a1b9a7c7c126a 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -531,11 +531,11 @@ build the GNU C Library:
      work with any version of 'sed'.  As of release time, 'sed' version
      4.5 is the newest verified to work to build the GNU C Library.
 
-   * Python 2.7/3.4 or later
+   * Python 3.4 or later
 
-     Python is required to build the GNU C Library manual and to run
-     some tests.  As of release time, Python 3.6 is the newest verified
-     to work for testing the GNU C Library.
+     Python is required to build the GNU C Library.  As of release time,
+     Python 3.6 is the newest verified to work for building and testing
+     the GNU C Library.
 
    * PExpect 4.0
 
diff --git a/NEWS b/NEWS
index 270abc190598d9f5c8d99507d9466fd9dfafc377..3d13b321a7f221b4141543eeab8b3762f1447c6d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -48,7 +48,7 @@ Deprecated and removed features, and other changes affecting compatibility:
 
 Changes to build and runtime requirements:
 
-* Python is required to build the GNU C Library manual.
+* Python 3.4 or later is required to build the GNU C Library.
 
 Security related changes:
 
diff --git a/Rules b/Rules
index 5abb7270aa8e24aac1889b5e11e33ac855c17c28..dd325cb3b7017ba1dd94aae549cd72d65223be1c 100644 (file)
--- a/Rules
+++ b/Rules
@@ -114,11 +114,6 @@ tests-printers-programs := $(addprefix $(objpfx),$(tests-printers))
 # .out files with the output of running the pretty printer tests.
 tests-printers-out := $(patsubst %,$(objpfx)%.out,$(tests-printers))
 
-ifndef PYTHON
-# Mark tests-printers tests as unsupported if we don't have PYTHON.
-tests-unsupported += $(tests-printers)
-endif
-
 ifeq ($(build-programs),yes)
 others: $(addprefix $(objpfx),$(others) $(sysdep-others) $(extra-objs))
 else
@@ -277,7 +272,6 @@ endif
 
 endif  # tests
 
-ifdef PYTHON
 ifneq "$(strip $(tests-printers))" ""
 
 # Static pattern rule for building the test programs for the pretty printers.
@@ -300,7 +294,6 @@ $(tests-printers-out): $(objpfx)%.out: $(objpfx)% %.py %.c $(pretty-printers) \
            $(PYTHON) $*.py $*.c $(objpfx)$* $(pretty-printers) > $@; \
        $(evaluate-test)
 endif
-endif
 
 \f
 .PHONY: distclean realclean subdir_distclean subdir_realclean \
index 45aeb5febe8f13ac598f5edbb6696364f3be1d32..d558db475c497f6fa3a343eb0fa8a81d83c35c3b 100644 (file)
@@ -180,14 +180,7 @@ $(error Invalid BENCHSET value)
 endif
 endif
 
-# Define the bench target only if the target has a usable python installation.
-ifdef PYTHON
 bench: bench-build bench-set bench-func bench-malloc
-else
-bench:
-       @echo "The bench target needs python to run."
-       @exit 1
-endif
 
 # Target to only build the benchmark without running it.  We generate locales
 # only if we're building natively.
index f30c31afdc04f5bed80b398aa6ba9c5bcf94ed36..535e2f62e08976bbf93d93b89c198b921a5ca63f 100755 (executable)
--- a/configure
+++ b/configure
@@ -5344,19 +5344,30 @@ fi
 
   test -n "$PYTHON_PROG" && break
 done
-test -n "$PYTHON_PROG" || PYTHON_PROG="no"
 
-case "x$PYTHON_PROG" in
-xno|x|x:) PYTHON_PROG=no ;;
-*) ;;
-esac
-
-if test "x$PYTHON_PROG" = xno; then
-  aux_missing="$aux_missing python"
+if test -z "$PYTHON_PROG"; then
+  ac_verc_fail=yes
 else
-  PYTHON="$PYTHON_PROG -B"
+  # Found it, now check the version.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $PYTHON_PROG" >&5
+$as_echo_n "checking version of $PYTHON_PROG... " >&6; }
+  ac_prog_version=`$PYTHON_PROG --version 2>&1 | sed -n 's/^.*Python \([0-9][0-9.]*\).*$/\1/p'`
+  case $ac_prog_version in
+    '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+    3.[4-9]*|3.[1-9][0-9]*|[4-9].*|[1-9][0-9]*)
+       ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+    *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
 
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
 fi
+if test $ac_verc_fail = yes; then
+  critic_missing="$critic_missing python"
+fi
+
+PYTHON="$PYTHON_PROG -B"
+
 
 test -n "$critic_missing" && as_fn_error $? "
 *** These critical programs are missing or too old:$critic_missing
index e983fd8faa452f9f196ce574be5d3b87d6730161..6cc10ede988ee5068e5f100a94beb95e48ee9edf 100644 (file)
@@ -1050,18 +1050,12 @@ else
 fi
 
 # Check for python3 if available, or else python.
-AC_CHECK_PROGS(PYTHON_PROG, python3 python,no)
-case "x$PYTHON_PROG" in
-xno|x|x:) PYTHON_PROG=no ;;
-*) ;;
-esac
-
-if test "x$PYTHON_PROG" = xno; then
-  aux_missing="$aux_missing python"
-else
-  PYTHON="$PYTHON_PROG -B"
-  AC_SUBST(PYTHON)
-fi
+AC_CHECK_PROG_VER(PYTHON_PROG, python3 python, --version,
+  [Python \([0-9][0-9.]*\)],
+  [3.[4-9]*|3.[1-9][0-9]*|[4-9].*|[1-9][0-9]*],
+  critic_missing="$critic_missing python")
+PYTHON="$PYTHON_PROG -B"
+AC_SUBST(PYTHON)
 
 test -n "$critic_missing" && AC_MSG_ERROR([
 *** These critical programs are missing or too old:$critic_missing
index 71e58a46c87ea192ff9b0542af071befab664d11..a2bbe0fb24c184daa1d759f667b9742202bc1f05 100644 (file)
@@ -120,9 +120,7 @@ linknamespace-symlists-base := $(foreach std,$(conformtest-standards),\
                                             symlist-$(std))
 linknamespace-symlists-tests := $(addprefix $(objpfx),\
                                            $(linknamespace-symlists-base))
-ifdef PYTHON
 tests-special += $(linknamespace-symlists-tests)
-endif
 
 linknamespace-symlist-stdlibs-base := $(foreach std,$(conformtest-standards),\
                                                    symlist-stdlibs-$(std))
@@ -130,9 +128,7 @@ linknamespace-symlist-stdlibs-tests := \
        $(addprefix $(objpfx),\
                    $(linknamespace-symlist-stdlibs-base))
 
-ifdef PYTHON
 tests-special += $(linknamespace-symlist-stdlibs-tests)
-endif
 
 linknamespace-header-base := $(foreach std,\
                                       $(conformtest-standards),\
@@ -141,9 +137,7 @@ linknamespace-header-base := $(foreach std,\
                                                 $(std)/$(h)/linknamespace.out))
 linknamespace-header-tests := $(addprefix $(objpfx),\
                                          $(linknamespace-header-base))
-ifdef PYTHON
 tests-special += $(linknamespace-header-tests)
-endif
 
 include ../Rules
 
index 9c35c9d45f59d8d1653a43d8e70637a9f803f90b..5f6006dc0903f6445d980593b4ebc95d8621758c 100644 (file)
@@ -172,7 +172,7 @@ include ../Rules
 install-data subdir_install: install
 # Generated files requiring python: libm-err.texi
 # Generated files requiring perl: summary.texi
-ifneq ($(if $(PYTHON),$(PERL),no),no)
+ifneq ($(PERL),no)
 ifneq ($(strip $(MAKEINFO)),:)
 install: $(inst_infodir)/libc.info
        @if $(SHELL) -c '$(INSTALL_INFO) --version' >/dev/null 2>&1; then \
index 08a39f57c9e6c157f249720fd199a82011420dc8..c19002340b35ec27081c02389e0ab6c19a9a8146 100644 (file)
@@ -575,11 +575,11 @@ with any version of @code{sed}.  As of release time, @code{sed} version
 4.5 is the newest verified to work to build @theglibc{}.
 
 @item
-Python 2.7/3.4 or later
+Python 3.4 or later
 
-Python is required to build the @glibcadj{} manual and to run some
-tests.  As of release time, Python 3.6 is the newest verified to work
-for testing @theglibc{}.
+Python is required to build @theglibc{}.  As of release time, Python
+3.6 is the newest verified to work for building and testing
+@theglibc{}.
 
 @item PExpect 4.0
 
index 750492b381077b9dc3f63c45e77a62043a38273e..34db0215efd87f704774513586a04067077c379f 100644 (file)
@@ -255,7 +255,6 @@ tests += test-math-isinff test-math-iszero test-math-issignaling \
         test-math-iscanonical test-math-cxx11 test-math-iseqsig
 endif
 
-ifdef PYTHON
 libm-vec-tests = $(addprefix test-,$(libmvec-tests))
 libm-test-support = $(foreach t,$(test-types),libm-test-support-$(t))
 test-extras += $(libm-test-support)
@@ -351,9 +350,7 @@ $(libm-test-c-narrow-obj): $(objpfx)libm-test%.c: libm-test%.inc \
                                                  auto-libm-test-out%
        $(make-target-directory)
        $(PYTHON) gen-libm-test.py -c $< -a auto-libm-test-out$* -C $@
-endif
 
-ifdef PYTHON
 tgmath3-macros = atan2 cbrt ceil copysign erf erfc exp2 expm1 fdim floor \
                 fma fmax fmin fmod frexp hypot ilogb ldexp lgamma llrint \
                 llround log10 log1p log2 logb lrint lround nearbyint \
@@ -380,7 +377,6 @@ tests-special += $(objpfx)test-tgmath3-macro-list.out
 $(objpfx)test-tgmath3-macro-list.out: gen-tgmath-tests.py
        $(PYTHON) $< check-list $(tgmath3-macros) > $@; \
        $(evaluate-test)
-endif
 
 libm-test-fast-math-cflags = -fno-builtin -D__FAST_MATH__ -DTEST_FAST_MATH
 libm-test-vec-cflags = $(libm-test-fast-math-cflags) -fno-inline \
@@ -476,7 +472,6 @@ $(objpfx)gen-libm-templates.stmp: Makefile
 $(foreach t, $(call type-foreach, $(gen-all-calls)), \
              $(objpfx)$(t).c): $(objpfx)gen-libm-templates.stmp
 
-ifdef PYTHON
 # This must come after the inclusion of sysdeps Makefiles via Rules.
 
 $(foreach t,$(libm-tests-normal),$(objpfx)$(t).c): $(objpfx)test-%.c:
@@ -637,11 +632,6 @@ regen-ulps: $(addprefix $(objpfx),$(libm-tests))
        echo "Difference between the current baseline and the new baseline is:";\
        diff -urN $(ulps-file) $(objpfx)NewUlps; \
        echo "Copy $(objpfx)NewUlps to $(ulps-file) (relative to source)."
-else
-regen-ulps:
-       @echo "Automatic regeneration of ULPs requires python."; \
-       exit 1;
-endif
 
 # The generated sysd-rules file defines rules like this for sources
 # coming from sysdeps/ directories.  These rules find the generic sources.
This page took 0.079406 seconds and 5 git commands to generate.