aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2018-07-04 15:27:24 +0200
committerFlorian Weimer <fweimer@redhat.com>2018-07-04 15:30:45 +0200
commitf2873d2da0ac9802e0b570e8e0b9e7e04a82bf55 (patch)
tree5228718da2051a29c5d92d49d014114568f3cbce
parenteb04c21373e2a2885f3d52ff192b0499afe3c672 (diff)
downloadglibc-f2873d2da0ac9802e0b570e8e0b9e7e04a82bf55.zip
glibc-f2873d2da0ac9802e0b570e8e0b9e7e04a82bf55.tar.gz
glibc-f2873d2da0ac9802e0b570e8e0b9e7e04a82bf55.tar.bz2
testrun.sh: Implement --tool=strace, --tool=valgrind
$(file …) appears to be the only convenient way to create files with newlines and make substitution variables. This needs make 4.0 (released in 2013), so update the requirement to match. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
-rw-r--r--ChangeLog11
-rw-r--r--INSTALL8
-rw-r--r--Makefile55
-rw-r--r--NEWS2
-rwxr-xr-xconfigure2
-rw-r--r--configure.ac2
-rw-r--r--manual/install.texi8
7 files changed, 65 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index c17caff..a8b15be 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2018-07-04 Florian Weimer <fweimer@redhat.com>
+
+ 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 <adhemerval.zanella@linaro.org>
[BZ #23233]
diff --git a/INSTALL b/INSTALL
index 0a22aa7..3c656fb 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 bea4e27f..d3f25a5 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 21b457a..b1ce067 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 ef18302..eac7f29 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 dc51701..f41ed6d 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 422da14..42e9954 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