You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
4.5 KiB
78 lines
4.5 KiB
Patch by Robert Scheck <robert@fedoraproject.org> for libidn2 >= 2.0.0, which works |
|
around the broken libtool of Debian. Multilib/multiarch systems like Fedora or Red |
|
Hat Enterprise Linux are using /usr/lib64 for 64 bit libraries and /usr/lib is used |
|
for 32 bit libraries. That allows to run 32 bit software on 64 bit systems. Debian |
|
systems only use /usr/lib which contains only 32 or 64 bit systems depending on the |
|
architecture. |
|
|
|
Libtool hardcodes the runtime search path in a library (rpath), if the library that |
|
is used for linking is not within the default system library path. The result is, |
|
that if libtool.m4/configure files are generated by a Debian system, but used on a |
|
Fedora or Red Hat Enterprise Linux 64 bit system for compiling, "-rpath /usr/lib64" |
|
makes it into the binary. |
|
|
|
Fedora and EPEL (for Red Hat Enterprise Linux) do not allow binaries with rpath, as |
|
the Linux dynamic linker is usually smarter than the hardcoded path. |
|
|
|
The fix for this issue is to add the optional /lib64 and /usr/lib64 directories at/ |
|
within libtool in front of the regular /lib and /usr/lib directories at the system |
|
library path. These libtool information are hold in libtool.m4, which is generated |
|
by running aclocal. As the content of libtool.m4 is included into configure during |
|
a run of autoconf, libtool.m4 needs to be modified within the upstream build system |
|
each time after a aclocal run - until Debian's libtool is fixed at Debian upstream. |
|
|
|
Applying the fix is either possible by using the last hunk of the patch (the other |
|
hunks are runtime-only if configure file has been already generated) or by running |
|
the following sed command after each aclocal run within the upstream build system: |
|
|
|
sed -e 's@\(# Ideally, we could use ldconfig to report\)@# Add ABI-specific directories to the system library path.\n sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"\n\n \1@' \ |
|
-e 's@/lib /usr/lib $lt_ld_extra@$sys_lib_dlsearch_path_spec $lt_ld_extra@' -i libidn2-2.0.0/m4/libtool.m4 |
|
|
|
More information regarding this topic can be found for example at: |
|
|
|
- http://osdir.com/ml/bug-libtool-gnu/2009-12/msg00034.html |
|
- http://lists.gnu.org/archive/html/libtool/2009-01/msg00039.html |
|
- http://thread.gmane.org/gmane.comp.gnu.libtool.general/8339/focus=8345 |
|
|
|
--- libidn2-2.0.0/configure 2017-03-29 17:26:58.000000000 +0200 |
|
+++ libidn2-2.0.0/configure.rpath 2017-04-07 00:59:43.000000000 +0200 |
|
@@ -14266,6 +14266,9 @@ |
|
# before this can be enabled. |
|
hardcode_into_libs=yes |
|
|
|
+ # Add ABI-specific directories to the system library path. |
|
+ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" |
|
+ |
|
# Ideally, we could use ldconfig to report *all* directores which are |
|
# searched for libraries, however this is still not possible. Aside from not |
|
# being certain /sbin/ldconfig is available, command |
|
@@ -14274,7 +14277,7 @@ |
|
# appending ld.so.conf contents (and includes) to the search path. |
|
if test -f /etc/ld.so.conf; then |
|
lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` |
|
- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" |
|
+ sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" |
|
fi |
|
|
|
# We used to test for /lib/ld.so.1 and disable shared libraries on |
|
--- libidn2-2.0.0/m4/libtool.m4 2017-02-15 10:54:29.000000000 +0100 |
|
+++ libidn2-2.0.0/m4/libtool.m4.rpath 2017-04-07 00:58:52.000000000 +0200 |
|
@@ -2866,6 +2866,9 @@ |
|
# before this can be enabled. |
|
hardcode_into_libs=yes |
|
|
|
+ # Add ABI-specific directories to the system library path. |
|
+ sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" |
|
+ |
|
# Ideally, we could use ldconfig to report *all* directores which are |
|
# searched for libraries, however this is still not possible. Aside from not |
|
# being certain /sbin/ldconfig is available, command |
|
@@ -2874,7 +2877,7 @@ |
|
# appending ld.so.conf contents (and includes) to the search path. |
|
if test -f /etc/ld.so.conf; then |
|
lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` |
|
- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" |
|
+ sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" |
|
fi |
|
|
|
# We used to test for /lib/ld.so.1 and disable shared libraries on
|
|
|