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 - 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 - 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)