diff --git a/ChangeLog b/ChangeLog index c17caff776..a8b15be55f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2018-07-04 Florian Weimer + + testrun.sh: Implement --tool=strace, --tool=valgrind + * Makefile (testrun-script): Define variable. + (testrun.sh): Use variable. + * manual/install.texi (Tools for Compilation): make 4.0 or later + is required. + * configure.ac: Check for make 4.0 or later. + * INSTALL: Regenerate. + * configure: Likewise. + 2018-07-04 Adhemerval Zanella [BZ #23233] diff --git a/INSTALL b/INSTALL index 0a22aa7d01..3c656fb7a6 100644 --- a/INSTALL +++ b/INSTALL @@ -426,13 +426,7 @@ Recommended Tools for Compilation We recommend installing the following GNU tools before attempting to build the GNU C Library: - * GNU 'make' 3.79 or newer - - You need the latest version of GNU 'make'. Modifying the GNU C - Library to work with other 'make' programs would be so difficult - that we recommend you port GNU 'make' instead. *Really.* We - recommend GNU 'make' version 3.79. All earlier versions have - severe bugs or lack features. + * GNU 'make' 4.0 or newer * GCC 4.9 or newer diff --git a/Makefile b/Makefile index bea4e27f8d..d3f25a525a 100644 --- a/Makefile +++ b/Makefile @@ -128,17 +128,60 @@ ifeq (yes,$(build-shared)) lib: $(common-objpfx)libc.so $(common-objpfx)linkobj/libc.so endif # $(build-shared) +# Used to build testrun.sh. +define testrun-script +#!/bin/bash +builddir=`dirname "$$0"` +GCONV_PATH="$${builddir}/iconvdata" + +usage () { + echo "usage: $$0 [--tool=strace] PROGRAM [ARGUMENTS...]" 2>&1 + echo " $$0 --tool=valgrind PROGRAM [ARGUMENTS...]" 2>&1 +} + +toolname=default +while test $$# -gt 0 ; do + case "$$1" in + --tool=*) + toolname="$${1:7}" + shift + ;; + --*) + usage + ;; + *) + break + ;; + esac +done + +if test $$# -eq 0 ; then + usage +fi + +case "$$toolname" in + default) + exec $(subst $(common-objdir),"$${builddir}", $(test-program-prefix)) \ + $${1+"$$@"} + ;; + strace) + exec strace $(patsubst %, -E%, $(run-program-env)) \ + $(test-via-rtld-prefix) $${1+"$$@"} + ;; + valgrind) + exec env $(run-program-env) valgrind $(test-via-rtld-prefix) $${1+"$$@"} + ;; + *) + usage + ;; +esac +endef # This is a handy script for running any dynamically linked program against # the current libc build for testing. $(common-objpfx)testrun.sh: $(common-objpfx)config.make \ $(..)Makeconfig $(..)Makefile - (echo '#!/bin/sh'; \ - echo 'builddir=`dirname "$$0"`'; \ - echo 'GCONV_PATH="$${builddir}/iconvdata" \'; \ - echo 'exec $(subst $(common-objdir),"$${builddir}",\ - $(test-program-prefix)) $${1+"$$@"}'; \ - ) > $@T + $(file >$@T, $(testrun-script)) chmod a+x $@T mv -f $@T $@ postclean-generated += testrun.sh diff --git a/NEWS b/NEWS index 21b457a050..b1ce067d27 100644 --- a/NEWS +++ b/NEWS @@ -154,7 +154,7 @@ Deprecated and removed features, and other changes affecting compatibility: Changes to build and runtime requirements: - [Add changes to build and runtime requirements here] + GNU make 4.0 or later is now required to build glibc. Security related changes: diff --git a/configure b/configure index ef18302215..eac7f292b4 100755 --- a/configure +++ b/configure @@ -4705,7 +4705,7 @@ $as_echo_n "checking version of $MAKE... " >&6; } ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 3.79* | 3.[89]* | [4-9].* | [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;; diff --git a/configure.ac b/configure.ac index dc517017f5..f41ed6decb 100644 --- a/configure.ac +++ b/configure.ac @@ -945,7 +945,7 @@ fi AC_CHECK_TOOL_PREFIX AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version, [GNU Make[^0-9]*\([0-9][0-9.]*\)], - [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make") + [[4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make") AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version, [GNU gettext.* \([0-9]*\.[0-9.]*\)], diff --git a/manual/install.texi b/manual/install.texi index 422da1447e..42e9954199 100644 --- a/manual/install.texi +++ b/manual/install.texi @@ -473,13 +473,7 @@ build @theglibc{}: @itemize @bullet @item -GNU @code{make} 3.79 or newer - -You need the latest version of GNU @code{make}. Modifying @theglibc{} -to work with other @code{make} programs would be so difficult that -we recommend you port GNU @code{make} instead. @strong{Really.} We -recommend GNU @code{make} version 3.79. All earlier versions have severe -bugs or lack features. +GNU @code{make} 4.0 or newer @item GCC 4.9 or newer