浏览代码

Fix to workaround non-default libtool on debian

Debian patches libtool so that the default value of
link_all_deplibs is set to 'no' rather than 'unknown',
causing transitive dependencies in shared objects to
be lost.
tags/v1.6.90
Brian P. Hinz 8 年前
父节点
当前提交
8b032e5ad2

+ 52
- 0
contrib/packages/deb/ubuntu-precise/debian/patches/debian_libtool.patch 查看文件

@@ -0,0 +1,52 @@
--- a/ltmain.sh 2016-05-11 23:23:25.796742323 -0400
+++ b/ltmain.sh 2016-05-11 23:24:47.173010324 -0400
@@ -6447,6 +6447,9 @@
# It is a libtool convenience library, so add in its objects.
func_append convenience " $ladir/$objdir/$old_library"
func_append old_convenience " $ladir/$objdir/$old_library"
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ func_fatal_error "\`$lib' is not a convenience library"
+ fi
tmp_libs=
for deplib in $dependency_libs; do
deplibs="$deplib $deplibs"
@@ -6457,9 +6460,6 @@
fi
func_append tmp_libs " $deplib"
done
- elif test "$linkmode" != prog && test "$linkmode" != lib; then
- func_fatal_error "\`$lib' is not a convenience library"
- fi
continue
fi # $pass = conv
--- a/m4/libtool.m4 2016-05-11 23:26:23.801328557 -0400
+++ b/m4/libtool.m4 2016-05-11 23:27:12.701489603 -0400
@@ -4589,9 +4589,6 @@
;;
esac
;;
- linux* | k*bsd*-gnu | gnu*)
- _LT_TAGVAR(link_all_deplibs, $1)=no
- ;;
*)
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
;;
@@ -4654,9 +4651,6 @@
openbsd*)
with_gnu_ld=no
;;
- linux* | k*bsd*-gnu | gnu*)
- _LT_TAGVAR(link_all_deplibs, $1)=no
- ;;
esac
_LT_TAGVAR(ld_shlibs, $1)=yes
@@ -5055,7 +5049,6 @@
if test "$aix_use_runtimelinking" = yes; then
shared_flag="$shared_flag "'${wl}-G'
fi
- _LT_TAGVAR(link_all_deplibs, $1)=no
else
# not using gcc
if test "$host_cpu" = ia64; then

+ 1
- 0
contrib/packages/deb/ubuntu-precise/debian/rules 查看文件

@@ -58,6 +58,7 @@ config-stamp:
(cd unix/xserver; \
export PIXMANINCDIR=/usr/include/pixman-1; \
autoreconf -fiv; \
patch -p1 -i ../../debian/patches/debian_libtool.patch; \
./configure --prefix=/usr \
--disable-silent-rules \
--disable-static \

+ 52
- 0
contrib/packages/deb/ubuntu-trusty/debian/patches/debian_libtool.patch 查看文件

@@ -0,0 +1,52 @@
--- a/ltmain.sh 2016-05-11 23:23:25.796742323 -0400
+++ b/ltmain.sh 2016-05-11 23:24:47.173010324 -0400
@@ -6447,6 +6447,9 @@
# It is a libtool convenience library, so add in its objects.
func_append convenience " $ladir/$objdir/$old_library"
func_append old_convenience " $ladir/$objdir/$old_library"
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ func_fatal_error "\`$lib' is not a convenience library"
+ fi
tmp_libs=
for deplib in $dependency_libs; do
deplibs="$deplib $deplibs"
@@ -6457,9 +6460,6 @@
fi
func_append tmp_libs " $deplib"
done
- elif test "$linkmode" != prog && test "$linkmode" != lib; then
- func_fatal_error "\`$lib' is not a convenience library"
- fi
continue
fi # $pass = conv
--- a/m4/libtool.m4 2016-05-11 23:26:23.801328557 -0400
+++ b/m4/libtool.m4 2016-05-11 23:27:12.701489603 -0400
@@ -4589,9 +4589,6 @@
;;
esac
;;
- linux* | k*bsd*-gnu | gnu*)
- _LT_TAGVAR(link_all_deplibs, $1)=no
- ;;
*)
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
;;
@@ -4654,9 +4651,6 @@
openbsd*)
with_gnu_ld=no
;;
- linux* | k*bsd*-gnu | gnu*)
- _LT_TAGVAR(link_all_deplibs, $1)=no
- ;;
esac
_LT_TAGVAR(ld_shlibs, $1)=yes
@@ -5055,7 +5049,6 @@
if test "$aix_use_runtimelinking" = yes; then
shared_flag="$shared_flag "'${wl}-G'
fi
- _LT_TAGVAR(link_all_deplibs, $1)=no
else
# not using gcc
if test "$host_cpu" = ia64; then

+ 1
- 0
contrib/packages/deb/ubuntu-trusty/debian/rules 查看文件

@@ -65,6 +65,7 @@ config-stamp:
(cd unix/xserver; \
export PIXMANINCDIR=/usr/include/pixman-1; \
autoreconf -fiv; \
patch -p1 -i ../../debian/patches/debian_libtool.patch; \
./configure --prefix=/usr \
--disable-silent-rules \
--disable-static \

+ 1
- 0
contrib/packages/deb/ubuntu-xenial/debian/rules 查看文件

@@ -59,6 +59,7 @@ config-stamp: xorg-source-stamp
(cd unix/xserver; \
export PIXMANINCDIR=/usr/include/pixman-1; \
autoreconf -fiv; \
patch -p1 -i ../../debian/xorg-source-patches/debian_libtool.patch; \
./configure --prefix=/usr \
--disable-silent-rules \
--disable-static \

+ 87
- 0
contrib/packages/deb/ubuntu-xenial/debian/xorg-source-patches/debian_libtool.patch 查看文件

@@ -0,0 +1,87 @@
Index: a/ltmain.sh
===================================================================
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -7890,19 +7890,19 @@
# It is a libtool convenience library, so add in its objects.
func_append convenience " $ladir/$objdir/$old_library"
func_append old_convenience " $ladir/$objdir/$old_library"
- tmp_libs=
- for deplib in $dependency_libs; do
- deplibs="$deplib $deplibs"
- if $opt_preserve_dup_deps; then
- case "$tmp_libs " in
- *" $deplib "*) func_append specialdeplibs " $deplib" ;;
- esac
- fi
- func_append tmp_libs " $deplib"
- done
elif test prog != "$linkmode" && test lib != "$linkmode"; then
func_fatal_error "'$lib' is not a convenience library"
fi
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if $opt_preserve_dup_deps; then
+ case "$tmp_libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append tmp_libs " $deplib"
+ done
continue
fi # $pass = conv
## Do not link against deplibs. This is not needed for shared libs
## on atleast ELF systems since those already know which libs they
## need themself. This seems to break a few things and will be fixed
## in a better way in a future upstream version.

Index: a/ltmain.sh
===================================================================
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -7568,10 +7568,7 @@
case $pass in
dlopen) libs=$dlfiles ;;
dlpreopen) libs=$dlprefiles ;;
- link)
- libs="$deplibs %DEPLIBS%"
- test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
- ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
esac
fi
if test lib,dlpreopen = "$linkmode,$pass"; then
Index: a/m4/libtool.m4
===================================================================
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -4936,9 +4936,6 @@
;;
esac
;;
- linux* | k*bsd*-gnu | gnu*)
- _LT_TAGVAR(link_all_deplibs, $1)=no
- ;;
*)
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
;;
@@ -4998,9 +5001,6 @@
openbsd* | bitrig*)
with_gnu_ld=no
;;
- linux* | k*bsd*-gnu | gnu*)
- _LT_TAGVAR(link_all_deplibs, $1)=no
- ;;
esac
_LT_TAGVAR(ld_shlibs, $1)=yes
@@ -5773,7 +5779,6 @@
if test yes = "$lt_cv_irix_exported_symbol"; then
_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
fi
- _LT_TAGVAR(link_all_deplibs, $1)=no
else
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'

正在加载...
取消
保存