diff --git a/fix-dlsearch-path-in-libtool b/fix-dlsearch-path-in-libtool new file mode 100755 index 0000000000000000000000000000000000000000..6872ee5e145395aab0163b97e8006c2bfcca7bfa --- /dev/null +++ b/fix-dlsearch-path-in-libtool @@ -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 + diff --git a/macros b/macros index 888d97eafb4adaf3da20c085273054f47673b2c4..f26b246a4c3a7cdaf2722ebe90be61efc1069f35 100644 --- a/macros +++ b/macros @@ -183,6 +183,8 @@ print(result) diff -u $file.backup $file && mv $file.backup $file \ done +%__fix_dlsearch_path_in_libtool /usr/lib/rpm/anolis/fix-dlsearch-path-in-libtool + %configure \ %{set_build_flags}; \ [ "%{_lto_cflags}"x != x ] && %{_fix_broken_configure_for_lto}; \ @@ -193,6 +195,7 @@ print(result) for i in $(find . -name ltmain.sh) ; do \ %{__sed} -i.backup -e 's~compiler_flags=$~compiler_flags="%{_hardened_ldflags}"~' $i \ done ; \ + %{__fix_dlsearch_path_in_libtool} . %{_lib} ; \ %{_configure} --build=%{_build} --host=%{_host} \\\ --program-prefix=%{?_program_prefix} \\\ --disable-dependency-tracking \\\ diff --git a/system-rpm-config.spec b/system-rpm-config.spec index e82bf8267826657a79fd544412d3a74edf5370e8..89b132cf7a78728bd8c4ea917d911fedd6e75738 100644 --- a/system-rpm-config.spec +++ b/system-rpm-config.spec @@ -1,4 +1,4 @@ -%define anolis_release 7 +%define anolis_release 8 Summary: Anolis OS specific rpm configuration files Name: system-rpm-config Version: 23 @@ -52,6 +52,7 @@ Source301: find-requires Source400: dist.sh Source401: gpgverify Source402: remove-info-dir +Source403: fix-dlsearch-path-in-libtool # 2022-05-25 Snapshots from http://git.savannah.gnu.org/gitweb/?p=config.git Source500: config.guess @@ -123,6 +124,7 @@ install -p -m 755 -t %{buildroot}%{rrcdir} dist.sh install -p -m 755 -t %{buildroot}%{rrcdir} gpgverify install -p -m 755 -t %{buildroot}%{rrcdir} brp-* install -p -m 755 -t %{buildroot}%{rrcdir} remove-info-dir +install -p -m 755 -t %{buildroot}%{rrcdir} fix-dlsearch-path-in-libtool install -p -m 755 -t %{buildroot}%{rrcdir} find-* mkdir -p %{buildroot}%{rrcdir}/find-provides.d @@ -155,6 +157,7 @@ install -p -m 644 -t %{buildroot}%{_rpmluadir}/anolis/srpm forge.lua %{rrcdir}/find-requires %{rrcdir}/brp-ldconfig %{rrcdir}/remove-info-dir +%{rrcdir}/fix-dlsearch-path-in-libtool %{_fileattrsdir}/*.attr %{_rpmconfigdir}/compatibiliy-deps.sh %{_rpmconfigdir}/macros.d/macros.*-srpm @@ -172,6 +175,10 @@ install -p -m 644 -t %{buildroot}%{_rpmluadir}/anolis/srpm forge.lua %license MulanPSL %changelog +* Tue Oct 11 2022 Funda Wang - 23.8 +- add fix-dlsearch-path-in-libtool from mageia for automatically fix sys_lib_dlsearch_path_spec + in configure script shipped in packages + * Sun Oct 09 2022 Funda Wang - 23.7 - add remove-info-dir script from mandriva/mageia for automatically removal of unwanted /usr/share/info/dir