[Mageia-sysadm] [425] merge under/overlinking scripts from rpm-manbo-setup

root at mageia.org root at mageia.org
Sat Feb 5 20:36:24 CET 2011


Revision: 425
Author:   tmb
Date:     2011-02-05 20:36:23 +0100 (Sat, 05 Feb 2011)
Log Message:
-----------
merge under/overlinking scripts from rpm-manbo-setup

Modified Paths:
--------------
    rpm/rpm-setup/trunk/Makefile.am
    rpm/rpm-setup/trunk/NEWS

Added Paths:
-----------
    rpm/rpm-setup/trunk/drop-ld-no-undefined-for-shared-lib-modules-in-libtool
    rpm/rpm-setup/trunk/fix-dlsearch-path-in-libtool-for-multilib
    rpm/rpm-setup/trunk/fix-libtool-from-moving-options-after-libs
    rpm/rpm-setup/trunk/fix-libtool-ltmain-from-overlinking
    rpm/rpm-setup/trunk/force-as-needed-for-shared-lib-in-libtool

Modified: rpm/rpm-setup/trunk/Makefile.am
===================================================================
--- rpm/rpm-setup/trunk/Makefile.am	2011-02-05 18:59:31 UTC (rev 424)
+++ rpm/rpm-setup/trunk/Makefile.am	2011-02-05 19:36:23 UTC (rev 425)
@@ -22,15 +22,20 @@
 
 pkg_scripts = \
 		   brp-compress \
-	       brp-strip \
-	       brp-strip-comment-note \
+		   brp-strip \
+		   brp-strip-comment-note \
 		   brp-strip-static-archive \
-           filter.sh \
-	       find-lang.pl \
-	       find-debuginfo.sh \
-	       gem_helper.rb \
-	        git-repository--after-tarball \
-	        git-repository--apply-patch \
+		   drop-ld-no-undefined-for-shared-lib-modules-in-libtool \
+		   filter.sh \
+		   find-lang.pl \
+		   find-debuginfo.sh \
+		   fix-dlsearch-path-in-libtool-for-multilib \
+		   fix-libtool-from-moving-options-after-libs \
+		   fix-libtool-ltmain-from-overlinking \
+		   force-as-needed-for-shared-lib-in-libtool \
+		   gem_helper.rb \
+	           git-repository--after-tarball \
+	           git-repository--apply-patch \
 		   http.req \
 		   magic.prov \
 		   magic.req \

Modified: rpm/rpm-setup/trunk/NEWS
===================================================================
--- rpm/rpm-setup/trunk/NEWS	2011-02-05 18:59:31 UTC (rev 424)
+++ rpm/rpm-setup/trunk/NEWS	2011-02-05 19:36:23 UTC (rev 425)
@@ -2,6 +2,7 @@
 - merge rpmrc from rpm-manbo-setup
 - merge manbo.macros from rpm-manbo-setup
 - merge manbo-build.macros from rpm-manbo-setup
+- merge under/overlinking scripts from rpm-manbo-setup
 
 Version 1.115 - 9 January 2011, by Oliver Blin
 - initial Mageia import

Added: rpm/rpm-setup/trunk/drop-ld-no-undefined-for-shared-lib-modules-in-libtool
===================================================================
--- rpm/rpm-setup/trunk/drop-ld-no-undefined-for-shared-lib-modules-in-libtool	                        (rev 0)
+++ rpm/rpm-setup/trunk/drop-ld-no-undefined-for-shared-lib-modules-in-libtool	2011-02-05 19:36:23 UTC (rev 425)
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+
+# applies patch:
+# --- ltmain.sh.pix       2008-05-23 13:51:52.000000000 +0200
+# +++ ltmain.sh   2008-05-23 13:52:16.000000000 +0200
+# @@ -1948,6 +1948,11 @@
+#        fi
+#      done # argument parsing loop
+#  
+# +    if test "$module" = yes ; then
+# +       # [Manbo-labs] dropping ld option "--no-undefined" which is wrong for plugins
+# +       linker_flags=`echo "X $linker_flags" | $Xsed -e 's/ --no-undefined//'`
+# +       compiler_flags=`echo "X $compiler_flags" | $Xsed -e 's/ -Wl,--no-undefined//'`
+# +    fi
+# +
+#      if test -n "$prev"; then
+#        $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+#        $echo "$help" 1>&2
+
+# a similar patch has been applied in ltmain.sh in libtool package
+# but this works even if autoreconf is not called
+
+foreach my $ltmain ('ltmain.sh', glob("*/ltmain.sh")) {
+    open(my $F, '<', $ltmain) or next;
+
+    print "Modifying $ltmain underlinking for plugins (cf http://wiki.mandriva.com/en/Underlinking)\n";
+
+    open(my $G, '>', "$ltmain.new") or exit;
+    while (<$F>) {
+	print $G $_;
+
+	if ($_ eq "    done # argument parsing loop\n") {
+	    $modified = 1;
+	    print $G <<'EOF';
+
+    if test "$module" = yes ; then
+    	linker_flags=`echo "X $linker_flags" | $Xsed -e 's/ --no-undefined//'`
+    	compiler_flags=`echo "X $compiler_flags" | $Xsed -e 's/ -Wl,--no-undefined//'`
+    fi
+EOF
+	}
+    }
+
+    rename $ltmain, "$ltmain.drop" 
+      and rename "$ltmain.new", $ltmain or print STDERR "modifying $ltmain failed: $!\n";
+}
+


Property changes on: rpm/rpm-setup/trunk/drop-ld-no-undefined-for-shared-lib-modules-in-libtool
___________________________________________________________________
Added: svn:executable
   + *

Added: rpm/rpm-setup/trunk/fix-dlsearch-path-in-libtool-for-multilib
===================================================================
--- rpm/rpm-setup/trunk/fix-dlsearch-path-in-libtool-for-multilib	                        (rev 0)
+++ rpm/rpm-setup/trunk/fix-dlsearch-path-in-libtool-for-multilib	2011-02-05 19:36:23 UTC (rev 425)
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# If configure was generated with libtool that did not have support for
+# run-time library search path (sys_lib_dlsearch_path_spec) autodetection,
+# we replace the hardcoded search path with "/usr/%{_lib} /%{_lib}".
+
+# Our libtool has autodetection in form of lib64.patch, though it does not
+# handle cases (e.g. Debian) where /usr/lib is valid for multilib archs.
+
+# Without the correct search path defined, binaries would wrongly get rpath even
+# when the libraries are located in a standard directory.
+
+CONFIGURE_TOP="${1:-.}"
+LIB="${2:-lib}"
+if [ -e $CONFIGURE_TOP/configure ] && grep -q 'sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"' $CONFIGURE_TOP/configure; then
+  echo "Forcing run-time library search path definition in configure to prevent libtool from adding rpath for standard directories (configure was generated with libtool without support for autodetection)"
+
+  sed -i \
+   -e "s,^[ \t]*# Append ld.so.conf contents to the search path,  sys_lib_dlsearch_path_spec=\"/usr/${LIB} /${LIB}\"\n\0," \
+   -e 's,sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra",sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra",' \
+   $CONFIGURE_TOP/configure
+fi
+

Added: rpm/rpm-setup/trunk/fix-libtool-from-moving-options-after-libs
===================================================================
--- rpm/rpm-setup/trunk/fix-libtool-from-moving-options-after-libs	                        (rev 0)
+++ rpm/rpm-setup/trunk/fix-libtool-from-moving-options-after-libs	2011-02-05 19:36:23 UTC (rev 425)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+CONFIGURE_TOP="${1:-.}"
+if [ -e $CONFIGURE_TOP/configure ] && grep -q -F '$deplibs $compiler_flags' $CONFIGURE_TOP/configure; then
+  echo "Fixing libtool inside configure to pass -Wl,xxx options before libraries"
+
+  # a similar patch has been applied in libtool in libtool package (#47273)
+  # but this works even if autoreconf is not called
+
+  sed -i \
+   -e 's,$deplibs $compiler_flags,$compiler_flags $deplibs,' \
+   -e 's,$deplibs $postdep_objects $compiler_flags,$compiler_flags $deplibs $postdep_objects,' \
+   $CONFIGURE_TOP/configure
+fi
+


Property changes on: rpm/rpm-setup/trunk/fix-libtool-from-moving-options-after-libs
___________________________________________________________________
Added: svn:executable
   + *

Added: rpm/rpm-setup/trunk/fix-libtool-ltmain-from-overlinking
===================================================================
--- rpm/rpm-setup/trunk/fix-libtool-ltmain-from-overlinking	                        (rev 0)
+++ rpm/rpm-setup/trunk/fix-libtool-ltmain-from-overlinking	2011-02-05 19:36:23 UTC (rev 425)
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -e ltmain.sh ]; then
+   echo "Fixing libtool's ltmain.sh to prevent overlinking (cf http://wiki.mandriva.com/en/Overlinking)"
+
+   # a similar patch has been applied in ltmain.sh in libtool package
+   # but this works even if autoreconf is not called
+
+   mv ltmain.sh ltmain.sh.orig
+   echo link_all_deplibs=no > ltmain.sh
+   cat ltmain.sh.orig >> ltmain.sh
+   
+   sed -i -s 's/link) libs="$deplibs %DEPLIBS% $dependency_libs"/link) libs="$deplibs %DEPLIBS%"/' ltmain.sh
+fi

Added: rpm/rpm-setup/trunk/force-as-needed-for-shared-lib-in-libtool
===================================================================
--- rpm/rpm-setup/trunk/force-as-needed-for-shared-lib-in-libtool	                        (rev 0)
+++ rpm/rpm-setup/trunk/force-as-needed-for-shared-lib-in-libtool	2011-02-05 19:36:23 UTC (rev 425)
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# replaces
+#	  tmp_sharedflag='-shared' ;;
+# with
+# 	  tmp_sharedflag='-shared -Wl,--as-needed' ;;
+#
+# since passing -Wl,--as-needed is not enough because libtool moves it
+# after *.o and libs
+
+if [ -e configure ]; then
+   echo "Forcing -Wl,--as-needed in configure/libtool to workaround libtool bug (cf http://lists.gnu.org/archive/html/libtool-patches/2004-06/msg00002.html)"
+   sed -i "s/^\([ \t]*tmp_sharedflag\)='-shared'/\1='-shared -Wl,--as-needed'/" configure
+fi


Property changes on: rpm/rpm-setup/trunk/force-as-needed-for-shared-lib-in-libtool
___________________________________________________________________
Added: svn:executable
   + *
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/mageia-sysadm/attachments/20110205/19174269/attachment.html>


More information about the Mageia-sysadm mailing list