[boost/f18] Override boost_thread-mt.so with a linker script
Petr Machata
pmachata at fedoraproject.org
Thu Aug 16 01:55:27 UTC 2012
commit 44a7aadaed87aa6d89c2d640f3aec0e3e557058f
Author: Petr Machata <pmachata at redhat.com>
Date: Thu Aug 16 03:14:29 2012 +0200
Override boost_thread-mt.so with a linker script
boost.spec | 15 +++++++++++++--
libboost_thread-mt.so | 12 ++++++++++++
2 files changed, 25 insertions(+), 2 deletions(-)
---
diff --git a/boost.spec b/boost.spec
index c2a8b70..3862d4b 100644
--- a/boost.spec
+++ b/boost.spec
@@ -25,7 +25,7 @@ Name: boost
Summary: The free peer-reviewed portable C++ source libraries
Version: 1.50.0
%define version_enc 1_50_0
-Release: 3%{?dist}
+Release: 4%{?dist}
License: Boost and MIT and Python
%define toplev_dirname %{name}_%{version_enc}
@@ -33,6 +33,7 @@ URL: http://www.boost.org
Group: System Environment/Libraries
Source0: http://downloads.sourceforge.net/%{name}/%{toplev_dirname}.tar.bz2
Source1: ver.py
+Source2: libboost_thread-mt.so
# From the version 13 of Fedora, the Boost libraries are delivered
# with sonames equal to the Boost version (e.g., 1.41.0).
@@ -517,7 +518,7 @@ EOF
#
# The "python=2.*" bit tells jam that we want to _also_ build 2.*, not
# just 3.*. When omitted, it just builds for python 3 twice, once
-# calling the library libbost_python and once libboost_python3. I
+# calling the library libboost_python and once libboost_python3. I
# assume this is for backward compatibility for apps that are used to
# linking against -lboost_python, for when 2->3 transition is
# eventually done.
@@ -610,6 +611,12 @@ echo ============================= install serial ==================
variant=release threading=single,multi debug-symbols=on pch=off \
python=%{python2_version} install
+# Override DSO symlink with a linker script. See the linker script
+# itself for details of why we need to do this.
+[ -f $RPM_BUILD_ROOT%{_libdir}/libboost_thread-mt.so ] # Must be present
+rm -f $RPM_BUILD_ROOT%{_libdir}/libboost_thread-mt.so
+install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/
+
echo ============================= install Boost.Build ==================
(cd tools/build/v2
./b2 --prefix=$RPM_BUILD_ROOT%{_prefix} install
@@ -961,6 +968,10 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man1/bjam.1*
%changelog
+* Wed Aug 15 2012 Petr Machata <pmachata at redhat.com> - 1.50.0-4
+- Override boost_thread-mt.so with a linker script that brings in
+ Boost.System DSO as well.
+
* Wed Aug 8 2012 Petr Machata <pmachata at redhat.com> - 1.50.0-3
- boost-python3 shouldn't be under the overall boost umbrella
diff --git a/libboost_thread-mt.so b/libboost_thread-mt.so
new file mode 100644
index 0000000..d3a44e4
--- /dev/null
+++ b/libboost_thread-mt.so
@@ -0,0 +1,12 @@
+/* GNU ld script
+
+ Boost.Thread header files pull in enough of Boost.System that
+ symbols from the latter library are referenced by a compiled object
+ that includes Boost.Thread headers. libbost_system-mt.so is among
+ libbost_thread-mt.so's DT_NEEDED, but program linker requires that
+ missing symbols are satisfied by direct dependency, not a
+ transitive one. Hence this linker script, which brings in the
+ Boost.System DSO. */
+
+INPUT(libboost_thread-mt.so.1.50.0)
+INPUT(libboost_system-mt.so.1.50.0)
More information about the scm-commits
mailing list