diff options
Diffstat (limited to 'patches/libtool-2.4.6/0002-ARFLAGS-use-cr-instead-of-cru-by-default.patch')
-rw-r--r-- | patches/libtool-2.4.6/0002-ARFLAGS-use-cr-instead-of-cru-by-default.patch | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/patches/libtool-2.4.6/0002-ARFLAGS-use-cr-instead-of-cru-by-default.patch b/patches/libtool-2.4.6/0002-ARFLAGS-use-cr-instead-of-cru-by-default.patch new file mode 100644 index 000000000..a137845e8 --- /dev/null +++ b/patches/libtool-2.4.6/0002-ARFLAGS-use-cr-instead-of-cru-by-default.patch @@ -0,0 +1,124 @@ +From: Pavel Raiskup <praiskup@redhat.com> +Date: Fri, 17 Apr 2015 16:54:58 +0200 +Subject: [PATCH] ARFLAGS: use 'cr' instead of 'cru' by default + +In some GNU/Linux distributions people started to compile 'ar' +binary with --enable-deterministic-archives (binutils project). +That, however, in combination with our previous long time working +default AR_FLAGS=cru causes warnings on such installations: +ar: `u' modifier ignored since `D' is the default (see `U') + +The 'u' option (at least with GNU binutils) did small optimization +during repeated builds because it instructed 'ar' to not +open/close unchanged *.o files and to rather read their contents +from old archive file. However, its removal should not cause a +big performance hit for usual workflows. + +Distributions started using --enable-deterministic-archives +knowing that it would disable the 'u', just to rather have a bit +more deterministic builds. + +Also, to justify this change a bit more, keeping 'u' in ARFLAGS +could only result in many per-project changes to override +Libtool's ARFLAGS default, just to silent such warnings. + +Fixes bug#19967. Reported by Eric Blake. + +* m4/libtool.m4 (_LT_PROG_AR): Default AR_FLAGS to 'cr'. +(_LT_REQUIRED_DARWIN_CHECKS): Use $AR_FLAGS instead 'cru' string. +* doc/libtool.texi: Do 's/ar cru/ar cr/' in whole documentation. +* NEWS: Document. +--- + NEWS | 4 ++++ + doc/libtool.texi | 10 +++++----- + m4/libtool.m4 | 6 +++--- + 3 files changed, 12 insertions(+), 8 deletions(-) + +diff --git a/NEWS b/NEWS +index 590ce15ed5cd..2afc01ef38a9 100644 +--- a/NEWS ++++ b/NEWS +@@ -146,6 +146,10 @@ NEWS - list of user-visible changes between releases of GNU Libtool + variable, which obsoletes AR_FLAGS. This is due to naming conventions + among other *FLAGS and to be consistent with Automake's ARFLAGS. + ++** Important incompatible changes: ++ ++ - Libtool changed ARFLAGS/AR_FLAGS default from 'cru' to 'cr'. ++ + ** Bug fixes: + + - Fix a long-standing latent bug in autom4te include path for autotests +diff --git a/doc/libtool.texi b/doc/libtool.texi +index 0298627c2464..4c664bb2ab05 100644 +--- a/doc/libtool.texi ++++ b/doc/libtool.texi +@@ -602,7 +602,7 @@ Without libtool, the programmer would invoke the @command{ar} command to + create a static library: + + @example +-burger$ @kbd{ar cru libhello.a hello.o foo.o} ++burger$ @kbd{ar cr libhello.a hello.o foo.o} + burger$ + @end example + +@@ -632,7 +632,7 @@ libtool are the same ones you would use to produce an executable named + a23$ @kbd{libtool --mode=link gcc -g -O -o libhello.la foo.o hello.o} + *** Warning: Linking the shared library libhello.la against the + *** non-libtool objects foo.o hello.o is not portable! +-ar cru .libs/libhello.a ++ar cr .libs/libhello.a + ranlib .libs/libhello.a + creating libhello.la + (cd .libs && rm -f libhello.la && ln -s ../libhello.la libhello.la) +@@ -662,7 +662,7 @@ archive, not a shared library (@pxref{Static libraries}).}: + @example + a23$ @kbd{libtool --mode=link gcc -g -O -o libhello.la foo.lo hello.lo \ + -rpath /usr/local/lib -lm} +-ar cru @value{objdir}/libhello.a foo.o hello.o ++ar cr @value{objdir}/libhello.a foo.o hello.o + ranlib @value{objdir}/libhello.a + creating libhello.la + (cd @value{objdir} && rm -f libhello.la && ln -s ../libhello.la libhello.la) +@@ -676,7 +676,7 @@ burger$ @kbd{libtool --mode=link gcc -g -O -o libhello.la foo.lo hello.lo \ + -rpath /usr/local/lib -lm} + rm -fr @value{objdir}/libhello.a @value{objdir}/libhello.la + ld -Bshareable -o @value{objdir}/libhello.so.0.0 @value{objdir}/foo.o @value{objdir}/hello.o -lm +-ar cru @value{objdir}/libhello.a foo.o hello.o ++ar cr @value{objdir}/libhello.a foo.o hello.o + ranlib @value{objdir}/libhello.a + creating libhello.la + (cd @value{objdir} && rm -f libhello.la && ln -s ../libhello.la libhello.la) +@@ -6001,7 +6001,7 @@ in cases where it is necessary. + @subsection Archivers + + On all known systems, building a static library can be accomplished by +-running @kbd{ar cru lib@var{name}.a @var{obj1}.o @var{obj2}.o @dots{}}, ++running @kbd{ar cr lib@var{name}.a @var{obj1}.o @var{obj2}.o @dots{}}, + where the @file{.a} file is the output library, and each @file{.o} file is an + object file. + +diff --git a/m4/libtool.m4 b/m4/libtool.m4 +index 2d6bda98fc92..3335def6d847 100644 +--- a/m4/libtool.m4 ++++ b/m4/libtool.m4 +@@ -1042,8 +1042,8 @@ int forced_loaded() { return 2;} + _LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD +- echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD +- $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD ++ echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD ++ $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +@@ -1501,7 +1501,7 @@ _LT_DECL([], [AR], [1], [The archiver]) + # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS + # variable obsoleted/removed. + +-test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cru} ++test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} + lt_ar_flags=$AR_FLAGS + _LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) + |