Berny, thanks for the review and sorry for the delay.
On Thursday 16 of July 2015 16:53:42 Bernhard Voelker wrote:
> On 07/16/2015 04:19 PM, Jim Meyering wrote:
> > echo "$final_modules" | LC_ALL=C grep '^extensions$' >/dev/null \
>
> why would we need LC_ALL here at all? IMO this is sufficient:
>
> echo "$final_modules" | grep '^extensions$' >/dev/null \
I believed the LC_ALL=C should be faster.. But yes ..
> btw: one could even completely avoid the "| grep" by letting
> the shell do the matching:
>
> nl='
> '
> case "${nl}${final_modules}${nl}" in
> *"${nl}extensions${nl}"*) ...
> esac
.. this seems to work and without pipes.
Adjusted patch re-attached.
Pavel
>From b8239cff1daec7485f1692719ba7f0a2997330d2 Mon Sep 17 00:00:00 2001
From: Pavel Raiskup <[email protected]>
Date: Fri, 25 Sep 2015 16:58:45 +0200
Subject: [PATCH] gnulib-common.m4: fix gl_PROG_AR_RANLIB/AM_PROG_AR clash
The gl_PROG_AR_RANLIB (it is always called by gl_EARLY) sets AR
and ARFLAGS variables. Doing this unconditionally could break
later Automake's AM_PROG_AR invocation (at least it's
AC_CHECK_TOOLS call to detect correct 'ar' binary).
Original purpose of the gl_PROG_AR_RANLIB was only to handle the
Amsterdam Compiler Kit, so make the previous code to have effects
only on ACK, and rather automatically call the Automake's
AM_PROG_AR as soon as possible to decide other cases.
References:
http://lists.gnu.org/archive/html/bug-gnulib/2015-07/msg00001.html
* m4/gnulib-common.m4 (gl_PROG_AR_RANLIB): AC_BEFORE AM_PROG_AR.
Set the AR/ARFLAGS to ACK defaults OR call AM_PROG_AR. If neither
is possible, keep setting AR/ARFLAGS to reasonable defaults.
* gnulib-tool (func_import): Put the gl_USE_SYSTEM_EXTENSIONS
right before gl_PROG_AR_RANLIB into gnulib-comp.m4 (if the
'extensions' module is used.
* modules/extensions (configure.ac-early): Remove as this snippet
is added to gnulib-comp.m4 earlier anyway.
---
ChangeLog | 26 ++++++++++++++++++++++++++
gnulib-tool | 9 +++++++++
m4/gnulib-common.m4 | 43 ++++++++++++++++++++++++++++---------------
modules/extensions | 3 ---
4 files changed, 63 insertions(+), 18 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index b42d31a..32b94c0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,29 @@
+2015-09-25 Pavel Raiskup <[email protected]>
+
+ gnulib-common.m4: fix gl_PROG_AR_RANLIB/AM_PROG_AR clash
+
+ The gl_PROG_AR_RANLIB (it is always called by gl_EARLY) sets AR
+ and ARFLAGS variables. Doing this unconditionally could break
+ later Automake's AM_PROG_AR invocation (at least it's
+ AC_CHECK_TOOLS call to detect correct 'ar' binary).
+
+ Original purpose of the gl_PROG_AR_RANLIB was only to handle the
+ Amsterdam Compiler Kit, so make the previous code to have effects
+ only on ACK, and rather automatically call the Automake's
+ AM_PROG_AR as soon as possible to decide other cases.
+
+ References:
+ http://lists.gnu.org/archive/html/bug-gnulib/2015-07/msg00001.html
+
+ * m4/gnulib-common.m4 (gl_PROG_AR_RANLIB): AC_BEFORE AM_PROG_AR.
+ Set the AR/ARFLAGS to ACK defaults OR call AM_PROG_AR. If neither
+ is possible, keep setting AR/ARFLAGS to reasonable defaults.
+ * gnulib-tool (func_import): Put the gl_USE_SYSTEM_EXTENSIONS
+ right before gl_PROG_AR_RANLIB into gnulib-comp.m4 (if the
+ 'extensions' module is used.
+ * modules/extensions (configure.ac-early): Remove as this snippet
+ is added to gnulib-comp.m4 earlier anyway.
+
2015-09-25 Mats Erik Andersson <[email protected]>
gc: fix detection of installed libgcrypt version
diff --git a/gnulib-tool b/gnulib-tool
index c5c9ea6..47722c8 100755
--- a/gnulib-tool
+++ b/gnulib-tool
@@ -5195,6 +5195,15 @@ s,//*$,/,'
echo " m4_pattern_allow([^gl_ES\$])dnl a valid locale name"
echo " m4_pattern_allow([^gl_LIBOBJS\$])dnl a variable"
echo " m4_pattern_allow([^gl_LTLIBOBJS\$])dnl a variable"
+
+ # We need to call gl_USE_SYSTEM_EXTENSIONS before gl_PROG_AR_RANLIB. Doing
+ # AC_REQUIRE in configure-ac.early is not early enough.
+ case "${nl}${final_modules}${nl}" in
+ *${nl}extensions${nl}*)
+ echo " AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])"
+ ;;
+ esac
+
echo " AC_REQUIRE([gl_PROG_AR_RANLIB])"
if test -n "$uses_subdirs"; then
echo " AC_REQUIRE([AM_PROG_CC_C_O])"
diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4
index 40e82f6..50ef974 100644
--- a/m4/gnulib-common.m4
+++ b/m4/gnulib-common.m4
@@ -253,9 +253,10 @@ AC_DEFUN([gl_PROG_AR_RANLIB],
[
dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler
dnl as "cc", and GCC as "gcc". They have different object file formats and
- dnl library formats. In particular, the GNU binutils programs ar, ranlib
+ dnl library formats. In particular, the GNU binutils programs ar and ranlib
dnl produce libraries that work only with gcc, not with cc.
AC_REQUIRE([AC_PROG_CC])
+ AC_BEFORE([$0], [AM_PROG_AR])
AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler],
[
AC_EGREP_CPP([Amsterdam],
@@ -267,25 +268,37 @@ Amsterdam
[gl_cv_c_amsterdam_compiler=yes],
[gl_cv_c_amsterdam_compiler=no])
])
- if test -z "$AR"; then
- if test $gl_cv_c_amsterdam_compiler = yes; then
+
+ dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not
+ dnl building with __ACK__.
+ if test $gl_cv_c_amsterdam_compiler = yes; then
+ if test -z "$AR"; then
AR='cc -c.a'
- if test -z "$ARFLAGS"; then
- ARFLAGS='-o'
- fi
- else
- dnl Use the Automake-documented default values for AR and ARFLAGS,
- dnl but prefer ${host}-ar over ar (useful for cross-compiling).
- AC_CHECK_TOOL([AR], [ar], [ar])
- if test -z "$ARFLAGS"; then
- ARFLAGS='cr'
- fi
fi
- else
if test -z "$ARFLAGS"; then
- ARFLAGS='cr'
+ ARFLAGS='-o'
fi
+ else
+ dnl AM_PROG_AR was added in automake v1.11.2. AM_PROG_AR does not AC_SUBST
+ dnl ARFLAGS variable (it is filed into Makefile.in directly by automake
+ dnl script on-demand, if not specified by ./configure of course).
+ dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above
+ dnl will be ignored. Also, pay attention to call AM_PROG_AR in else block
+ dnl because AM_PROG_AR is written so it could re-set AR variable even for
+ dnl __ACK__. It may seem like its easier to avoid calling the macro here,
+ dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good
+ dnl default value and automake should usually know them).
+ m4_ifdef([AM_PROG_AR], [AM_PROG_AR], [:])
fi
+
+ dnl In case the code above has not helped with setting AR/ARFLAGS, use
+ dnl Automake-documented default values for AR and ARFLAGS, but prefer
+ dnl ${host}-ar over ar (useful for cross-compiling).
+ AC_CHECK_TOOL([AR], [ar], [ar])
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='cr'
+ fi
+
AC_SUBST([AR])
AC_SUBST([ARFLAGS])
if test -z "$RANLIB"; then
diff --git a/modules/extensions b/modules/extensions
index 76e5a96..b7e37bb 100644
--- a/modules/extensions
+++ b/modules/extensions
@@ -6,9 +6,6 @@ m4/extensions.m4
Depends-on:
-configure.ac-early:
-AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
-
configure.ac:
Makefile.am:
--
2.5.0