[libtool] libtool: speedup execute mode

Pavel Raiskup praiskup at fedoraproject.org
Fri Apr 26 17:09:09 UTC 2013


commit b6164b7e355ea9a11948fe24e6196590ed3d0c2c
Author: Pavel Raiskup <praiskup at redhat.com>
Date:   Fri Apr 26 17:38:34 2013 +0200

    libtool: speedup execute mode
    
    Pre-filter sed's input by dd to avoid long delays and unlimited memory
    consumption.
    
    Version: 2.4.2-14
    Resolves: #636045

 libtool-2.4.2-dd-execute-mode.patch |   43 +++++++++++++++++++++++++++++++++++
 libtool.spec                        |   11 ++++++++-
 2 files changed, 53 insertions(+), 1 deletions(-)
---
diff --git a/libtool-2.4.2-dd-execute-mode.patch b/libtool-2.4.2-dd-execute-mode.patch
new file mode 100644
index 0000000..fad876a
--- /dev/null
+++ b/libtool-2.4.2-dd-execute-mode.patch
@@ -0,0 +1,43 @@
+diff --git a/libltdl/config/ltmain.sh b/libltdl/config/ltmain.sh
+index 63ae69d..36625c7 100644
+--- a/libltdl/config/ltmain.sh
++++ b/libltdl/config/ltmain.sh
+@@ -82,6 +82,7 @@ PROGRAM=libtool
+ PACKAGE=libtool
+ VERSION=2.4.2
+ TIMESTAMP=""
++: ${DD=dd}
+ package_revision=1.3337
+ 
+ # Be Bourne compatible
+@@ -1224,6 +1225,21 @@ func_enable_tag "$optarg"
+ ##    Main.    ##
+ ## ----------- ##
+ 
++# func_try_sizelim file n
++# try to write at most the first N bytes from FILE to the standard output when
++# possible, otherwise put whole file
++func_try_sizelim ()
++{
++  if test -n "$DD"; then
++    $DD if="$1" bs=$2 count=1 2>/dev/null
++    if test $? -eq 127; then
++      cat "$1" 2>/dev/null
++    fi
++  else
++    cat "$1" 2>/dev/null
++  fi
++}
++
+ # func_lalib_p file
+ # True iff FILE is a libtool `.la' library or `.lo' object file.
+ # This function is only a basic sanity check; it will hardly flush out
+@@ -1231,7 +1247,7 @@ func_enable_tag "$optarg"
+ func_lalib_p ()
+ {
+     test -f "$1" &&
+-      $SED -e 4q "$1" 2>/dev/null \
++      func_try_sizelim "$1" 4096 | $SED -e 4q 2>/dev/null \
+         | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+ }
+ 
diff --git a/libtool.spec b/libtool.spec
index ac086d3..e4af3ab 100644
--- a/libtool.spec
+++ b/libtool.spec
@@ -17,6 +17,13 @@ Patch1:  libtool-2.4.2-TEMPORARY-disable-gcj-tests.patch
 #    fixed in next release.
 Patch2:  libtool-2.4.2-tar-no-owner.patch
 
+# Do not hang too long on sed
+# ~> #636045
+# ~> Downstream (we don't care much about portability)
+# ~> upstream proposal:
+#    http://lists.gnu.org/archive/html/bug-libtool/2013-04/msg00005.html
+Patch3:  libtool-2.4.2-dd-execute-mode.patch
+
 Requires(post):  /sbin/install-info
 Requires(preun): /sbin/install-info
 
@@ -80,6 +87,7 @@ Static libraries and header files for development with ltdl.
 %patch0 -p1 -b .rpath
 %patch1 -p1 -b .temp-disable-gcj-test
 %patch2 -p1 -b .tar-no-same-owner
+%patch3 -p1 -b .dd-exec-mode
 
 %build
 
@@ -159,8 +167,9 @@ fi
 %{_libdir}/libltdl.so
 
 %changelog
-* Wed Apr 24 2013 Pavel Raiskup <praiskup at redhat.com> - 2.4.2-14
+* Fri Apr 26 2013 Pavel Raiskup <praiskup at redhat.com> - 2.4.2-14
 - allow root to copy files into NFS in libtoolize (#740079)
+- pre-filter sed's input by dd (#636045)
 
 * Thu Mar 14 2013 Pavel Raiskup <praiskup at redhat.com> - 2.4.2-13
 - do not BR gcc-java in RHEL (by dmach)


More information about the scm-commits mailing list