[boost] Initial packaging of boost 1.50

Petr Machata pmachata at fedoraproject.org
Thu Jul 26 11:39:39 UTC 2012


commit a2450339dffbaadf0e31879429cc026862ec2439
Author: Petr Machata <pmachata at redhat.com>
Date:   Thu Jul 26 13:09:54 2012 +0200

    Initial packaging of boost 1.50
    
    This is sans Python 3, the rest should be fine.
    Rebase many patches, port others, courtesy of Denis Arnaud.

 boost-1.48.0-attribute.patch                       |  208 -
 boost-1.48.0-cmakeify-full.patch                   |39187 --------------------
 boost-1.48.0-exceptions.patch                      |   25 -
 boost-1.48.0-gcc47-pthreads.patch                  |   14 -
 boost-1.48.0-lexical_cast-incomplete.patch         |   37 -
 boost-1.48.0-locale.patch                          |   61 -
 boost-1.48.0-long-double.patch                     |   14 -
 boost-1.48.0-xtime.patch                           |   69 -
 boost-1.50.0-attribute.patch                       |   90 +
 ....patch => boost-1.50.0-fix-non-utf8-files.patch |    0
 ...8.0-foreach.patch => boost-1.50.0-foreach.patch |  120 +-
 ...ble-1.patch => boost-1.50.0-long-double-1.patch |    0
 ...8.0-polygon.patch => boost-1.50.0-polygon.patch |    0
 boost-1.48.0-pool.patch => boost-1.50.0-pool.patch |    0
 ...erase.patch => boost-1.50.0-signals-erase.patch |    0
 boost.spec                                         |  271 +-
 sources                                            |    2 +-
 17 files changed, 254 insertions(+), 39844 deletions(-)
---
diff --git a/boost-1.50.0-attribute.patch b/boost-1.50.0-attribute.patch
new file mode 100644
index 0000000..18a2bf1
--- /dev/null
+++ b/boost-1.50.0-attribute.patch
@@ -0,0 +1,90 @@
+diff -urp boost_1_48_0~/boost/asio/buffers_iterator.hpp boost_1_48_0/boost/asio/buffers_iterator.hpp
+--- boost_1_48_0~/boost/asio/buffers_iterator.hpp	2012-01-16 16:15:26.550239797 +0100
++++ boost_1_48_0/boost/asio/buffers_iterator.hpp	2012-01-16 16:17:45.880243120 +0100
+@@ -128,7 +128,7 @@ public:
+   /// Construct an iterator representing the beginning of the buffers' data.
+   static buffers_iterator begin(const BufferSequence& buffers)
+ #if BOOST_WORKAROUND(__GNUC__, == 4) && BOOST_WORKAROUND(__GNUC_MINOR__, == 3)
+-    __attribute__ ((noinline))
++    __attribute__ ((__noinline__))
+ #endif
+   {
+     buffers_iterator new_iter;
+@@ -148,7 +148,7 @@ public:
+   /// Construct an iterator representing the end of the buffers' data.
+   static buffers_iterator end(const BufferSequence& buffers)
+ #if BOOST_WORKAROUND(__GNUC__, == 4) && BOOST_WORKAROUND(__GNUC_MINOR__, == 3)
+-    __attribute__ ((noinline))
++    __attribute__ ((__noinline__))
+ #endif
+   {
+     buffers_iterator new_iter;
+diff -urp boost_1_48_0~/boost/config/compiler/gcc.hpp boost_1_48_0/boost/config/compiler/gcc.hpp
+--- boost_1_48_0~/boost/config/compiler/gcc.hpp	2012-01-16 16:15:14.643239525 +0100
++++ boost_1_48_0/boost/config/compiler/gcc.hpp	2012-01-16 16:21:24.072247987 +0100
+@@ -120,13 +120,13 @@
+      // _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment,
+      // so does not define _WIN32 or its variants.
+ #    define BOOST_HAS_DECLSPEC
+-#    define BOOST_SYMBOL_EXPORT __attribute__((dllexport))
+-#    define BOOST_SYMBOL_IMPORT __attribute__((dllimport))
++#    define BOOST_SYMBOL_EXPORT __attribute__((__dllexport__))
++#    define BOOST_SYMBOL_IMPORT __attribute__((__dllimport__))
+ #  else
+-#    define BOOST_SYMBOL_EXPORT __attribute__((visibility("default")))
++#    define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
+ #    define BOOST_SYMBOL_IMPORT
+ #  endif
+-#  define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
++#  define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
+ #else
+ // config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined  
+ #  define BOOST_SYMBOL_EXPORT
+diff -urp boost_1_48_0~/boost/gil/gil_config.hpp boost_1_48_0/boost/gil/gil_config.hpp
+--- boost_1_48_0~/boost/gil/gil_config.hpp	2012-01-16 16:15:29.883239865 +0100
++++ boost_1_48_0/boost/gil/gil_config.hpp	2012-01-16 16:17:49.096243036 +0100
+@@ -32,7 +32,7 @@
+ #if   defined(_MSC_VER)
+ #    define GIL_FORCEINLINE __forceinline
+ #elif defined(__GNUC__) && __GNUC__ > 3
+-#    define GIL_FORCEINLINE inline __attribute__ ((always_inline))
++#    define GIL_FORCEINLINE inline __attribute__ ((__always_inline__))
+ #else
+ #    define GIL_FORCEINLINE inline
+ #endif
+diff -urp boost_1_48_0~/boost/optional/optional.hpp boost_1_48_0/boost/optional/optional.hpp
+--- boost_1_48_0~/boost/optional/optional.hpp	2012-01-16 16:15:29.743239804 +0100
++++ boost_1_48_0/boost/optional/optional.hpp	2012-01-16 16:17:47.488242994 +0100
+@@ -127,7 +127,7 @@ class aligned_storage
+     union
+     // This works around GCC warnings about breaking strict aliasing rules when casting storage address to T*
+ #if defined(BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS)
+-    __attribute__((may_alias))
++    __attribute__((__may_alias__))
+ #endif
+     dummy_u
+     {
+diff -urp boost_1_48_0~/boost/random/detail/integer_log2.hpp boost_1_48_0/boost/random/detail/integer_log2.hpp
+--- boost_1_48_0~/boost/random/detail/integer_log2.hpp	2012-01-16 16:15:24.962239810 +0100
++++ boost_1_48_0/boost/random/detail/integer_log2.hpp	2012-01-16 16:17:44.104242884 +0100
+@@ -27,7 +27,7 @@ namespace detail {
+ #elif defined(BOOST_MSVC)
+ #define BOOST_RANDOM_DETAIL_CONSTEXPR __forceinline
+ #elif defined(__GNUC__) && __GNUC__ >= 4
+-#define BOOST_RANDOM_DETAIL_CONSTEXPR __attribute__((const)) __attribute__((always_inline))
++#define BOOST_RANDOM_DETAIL_CONSTEXPR __attribute__((__const__)) __attribute__((__always_inline__))
+ #else
+ #define BOOST_RANDOM_DETAIL_CONSTEXPR inline
+ #endif
+diff -urp boost_1_48_0~/boost/xpressive/detail/core/adaptor.hpp boost_1_48_0/boost/xpressive/detail/core/adaptor.hpp
+--- boost_1_48_0~/boost/xpressive/detail/core/adaptor.hpp	2012-01-16 16:15:32.315239932 +0100
++++ boost_1_48_0/boost/xpressive/detail/core/adaptor.hpp	2012-01-16 16:17:54.024243179 +0100
+@@ -41,7 +41,7 @@ struct xpression_adaptor
+       && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
+         // Ugh, gcc has an optimizer bug which elides this c'tor call
+         // resulting in pure virtual function calls.
+-        __attribute__((noinline))
++        __attribute__((__noinline__))
+     #endif
+       : xpr_(xpr)
+     {
diff --git a/boost-1.48.0-fix-non-utf8-files.patch b/boost-1.50.0-fix-non-utf8-files.patch
similarity index 100%
rename from boost-1.48.0-fix-non-utf8-files.patch
rename to boost-1.50.0-fix-non-utf8-files.patch
diff --git a/boost-1.48.0-foreach.patch b/boost-1.50.0-foreach.patch
similarity index 96%
rename from boost-1.48.0-foreach.patch
rename to boost-1.50.0-foreach.patch
index 12cf088..dc8cd71 100644
--- a/boost-1.48.0-foreach.patch
+++ b/boost-1.50.0-foreach.patch
@@ -1,60 +1,60 @@
-Index: /trunk/boost/foreach_fwd.hpp
-===================================================================
---- /trunk/boost/foreach_fwd.hpp	(revision 62661)
-+++ /trunk/boost/foreach_fwd.hpp	(revision 75540)
-@@ -15,4 +15,6 @@
- #define BOOST_FOREACH_FWD_HPP
- 
-+#include <utility> // for std::pair
-+
- // This must be at global scope, hence the uglified name
- enum boost_foreach_argument_dependent_lookup_hack
-@@ -26,4 +28,7 @@
- namespace foreach
- {
-+    template<typename T>
-+    std::pair<T, T> in_range(T begin, T end);
-+
-     ///////////////////////////////////////////////////////////////////////////////
-     // boost::foreach::tag
-@@ -47,4 +52,22 @@
- } // namespace foreach
- 
-+// Workaround for unfortunate https://svn.boost.org/trac/boost/ticket/6131
-+namespace BOOST_FOREACH
-+{
-+    using foreach::in_range;
-+    using foreach::tag;
-+
-+    template<typename T>
-+    struct is_lightweight_proxy
-+      : foreach::is_lightweight_proxy<T>
-+    {};
-+
-+    template<typename T>
-+    struct is_noncopyable
-+      : foreach::is_noncopyable<T>
-+    {};
-+
-+} // namespace BOOST_FOREACH
-+
- } // namespace boost
- 
-Index: /trunk/boost/foreach.hpp
-===================================================================
---- /trunk/boost/foreach.hpp	(revision 75077)
-+++ /trunk/boost/foreach.hpp	(revision 75540)
-@@ -166,5 +166,5 @@
- //   at the global namespace for your type.
- template<typename T>
--inline boost::foreach::is_lightweight_proxy<T> *
-+inline boost::BOOST_FOREACH::is_lightweight_proxy<T> *
- boost_foreach_is_lightweight_proxy(T *&, BOOST_FOREACH_TAG_DEFAULT) { return 0; }
- 
-@@ -191,5 +191,5 @@
- //   at the global namespace for your type.
- template<typename T>
--inline boost::foreach::is_noncopyable<T> *
-+inline boost::BOOST_FOREACH::is_noncopyable<T> *
- boost_foreach_is_noncopyable(T *&, BOOST_FOREACH_TAG_DEFAULT) { return 0; }
- 
+Index: /trunk/boost/foreach_fwd.hpp
+===================================================================
+--- /trunk/boost/foreach_fwd.hpp	(revision 62661)
++++ /trunk/boost/foreach_fwd.hpp	(revision 75540)
+@@ -15,4 +15,6 @@
+ #define BOOST_FOREACH_FWD_HPP
+ 
++#include <utility> // for std::pair
++
+ // This must be at global scope, hence the uglified name
+ enum boost_foreach_argument_dependent_lookup_hack
+@@ -26,4 +28,7 @@
+ namespace foreach
+ {
++    template<typename T>
++    std::pair<T, T> in_range(T begin, T end);
++
+     ///////////////////////////////////////////////////////////////////////////////
+     // boost::foreach::tag
+@@ -47,4 +52,22 @@
+ } // namespace foreach
+ 
++// Workaround for unfortunate https://svn.boost.org/trac/boost/ticket/6131
++namespace BOOST_FOREACH
++{
++    using foreach::in_range;
++    using foreach::tag;
++
++    template<typename T>
++    struct is_lightweight_proxy
++      : foreach::is_lightweight_proxy<T>
++    {};
++
++    template<typename T>
++    struct is_noncopyable
++      : foreach::is_noncopyable<T>
++    {};
++
++} // namespace BOOST_FOREACH
++
+ } // namespace boost
+ 
+Index: /trunk/boost/foreach.hpp
+===================================================================
+--- /trunk/boost/foreach.hpp	(revision 75077)
++++ /trunk/boost/foreach.hpp	(revision 75540)
+@@ -166,5 +166,5 @@
+ //   at the global namespace for your type.
+ template<typename T>
+-inline boost::foreach::is_lightweight_proxy<T> *
++inline boost::BOOST_FOREACH::is_lightweight_proxy<T> *
+ boost_foreach_is_lightweight_proxy(T *&, BOOST_FOREACH_TAG_DEFAULT) { return 0; }
+ 
+@@ -191,5 +191,5 @@
+ //   at the global namespace for your type.
+ template<typename T>
+-inline boost::foreach::is_noncopyable<T> *
++inline boost::BOOST_FOREACH::is_noncopyable<T> *
+ boost_foreach_is_noncopyable(T *&, BOOST_FOREACH_TAG_DEFAULT) { return 0; }
+ 
diff --git a/boost-1.48.0-long-double-1.patch b/boost-1.50.0-long-double-1.patch
similarity index 100%
rename from boost-1.48.0-long-double-1.patch
rename to boost-1.50.0-long-double-1.patch
diff --git a/boost-1.48.0-polygon.patch b/boost-1.50.0-polygon.patch
similarity index 100%
rename from boost-1.48.0-polygon.patch
rename to boost-1.50.0-polygon.patch
diff --git a/boost-1.48.0-pool.patch b/boost-1.50.0-pool.patch
similarity index 100%
rename from boost-1.48.0-pool.patch
rename to boost-1.50.0-pool.patch
diff --git a/boost-1.48.0-signals-erase.patch b/boost-1.50.0-signals-erase.patch
similarity index 100%
rename from boost-1.48.0-signals-erase.patch
rename to boost-1.50.0-signals-erase.patch
diff --git a/boost.spec b/boost.spec
index f73d258..48c747b 100644
--- a/boost.spec
+++ b/boost.spec
@@ -19,14 +19,15 @@
 %endif
 
 # Configuration of Python 3
-%bcond_without python3
+# xxx note this is not supported with jam-based builds yet
+%bcond_with python3
 %define python3_version 3.2mu
 
 Name: boost
 Summary: The free peer-reviewed portable C++ source libraries
-Version: 1.48.0
-%define version_enc 1_48_0
-Release: 17%{?dist}
+Version: 1.50.0
+%define version_enc 1_50_0
+Release: 1%{?dist}
 License: Boost and MIT and Python
 
 # The CMake build framework (set of CMakeLists.txt and module.cmake files) is
@@ -87,73 +88,44 @@ BuildRequires: python3-devel%{?_isa}
 BuildRequires: libicu-devel%{?_isa}
 BuildRequires: chrpath
 
-# CMake-related files (CMakeLists.txt and module.cmake files).
-# That patch also contains Web-related documentation for the Trac Wiki
-# devoted to "old" Boost-CMake (up-to-date until Boost-1.41.0).
-Patch0: boost-1.48.0-cmakeify-full.patch
-Patch1: boost-cmake-soname.patch
-
 # The patch may break c++03, and there is therefore no plan yet to include
 # it upstream: https://svn.boost.org/trac/boost/ticket/4999
-Patch2: boost-1.48.0-signals-erase.patch
-
-# https://svn.boost.org/trac/boost/ticket/5731
-Patch3: boost-1.48.0-exceptions.patch
+Patch2: boost-1.50.0-signals-erase.patch
 
 # https://svn.boost.org/trac/boost/ticket/6150
-Patch4: boost-1.48.0-fix-non-utf8-files.patch
+Patch4: boost-1.50.0-fix-non-utf8-files.patch
 
 # Add a manual page for the sole executable, namely bjam, based on the
 # on-line documentation:
 # http://www.boost.org/boost-build2/doc/html/bbv2/overview.html
 Patch5: boost-1.48.0-add-bjam-man-page.patch
 
-# https://bugzilla.redhat.com/show_bug.cgi?id=757385
-# https://svn.boost.org/trac/boost/ticket/6182
-Patch6: boost-1.48.0-lexical_cast-incomplete.patch
-
 # https://bugzilla.redhat.com/show_bug.cgi?id=756005
 # https://svn.boost.org/trac/boost/ticket/6131
-Patch7: boost-1.48.0-foreach.patch
-
-# https://svn.boost.org/trac/boost/ticket/6165
-Patch8: boost-1.48.0-gcc47-pthreads.patch
+Patch7: boost-1.50.0-foreach.patch
 
 # https://bugzilla.redhat.com/show_bug.cgi?id=781859
-# https://svn.boost.org/trac/boost/ticket/6406 fixed
-# https://svn.boost.org/trac/boost/ticket/6407 fixed
+# The following tickets have still to be fixed by upstream.
+# https://svn.boost.org/trac/boost/ticket/6406 fixed, but only in Boost-1.51.0
 # https://svn.boost.org/trac/boost/ticket/6408
-# https://svn.boost.org/trac/boost/ticket/6409 fixed
 # https://svn.boost.org/trac/boost/ticket/6410
-# https://svn.boost.org/trac/boost/ticket/6411 fixed
-# https://svn.boost.org/trac/boost/ticket/6412 fixed
 # https://svn.boost.org/trac/boost/ticket/6413
-# https://svn.boost.org/trac/boost/ticket/6414 fixed
 # https://svn.boost.org/trac/boost/ticket/6415
-# https://svn.boost.org/trac/boost/ticket/6416 fixed
-Patch9: boost-1.48.0-attribute.patch
+Patch9: boost-1.50.0-attribute.patch
 
 # https://bugzilla.redhat.com/show_bug.cgi?id=783660
 # https://svn.boost.org/trac/boost/ticket/6459 fixed
-Patch10: boost-1.48.0-long-double-1.patch
-Patch11: boost-1.48.0-long-double.patch
+Patch10: boost-1.50.0-long-double-1.patch
 
 # https://bugzilla.redhat.com/show_bug.cgi?id=784654
-Patch12: boost-1.48.0-polygon.patch
+Patch12: boost-1.50.0-polygon.patch
 
 # https://bugzilla.redhat.com/show_bug.cgi?id=807780
-Patch13: boost-1.48.0-python3.patch
-
-# https://bugzilla.redhat.com/show_bug.cgi?id=824810
-# https://svn.boost.org/trac/boost/ticket/6940
-Patch14: boost-1.48.0-xtime.patch
+#Patch13: boost-1.48.0-python3.patch
 
 # https://bugzilla.redhat.com/show_bug.cgi?id=828856
 # https://bugzilla.redhat.com/show_bug.cgi?id=828857
-Patch15: boost-1.48.0-pool.patch
-
-# https://bugzilla.redhat.com/show_bug.cgi?id=832265
-Patch16: boost-1.48.0-locale.patch
+Patch15: boost-1.50.0-pool.patch
 
 %bcond_with tests
 %bcond_with docs_generated
@@ -525,44 +497,33 @@ a number of significant features and is now developed independently
 %prep
 %setup -q -n %{toplev_dirname}
 
-# CMake framework (CMakeLists.txt, *.cmake and documentation files)
-%patch0 -p1
-sed 's/_FEDORA_SONAME/%{sonamever}/' %{PATCH1} | %{__patch} -p0 --fuzz=0
-
 # Fixes
 %patch2 -p1
-%patch3 -p0
 %patch4 -p1
 %patch5 -p1
-%patch6 -p1
 %patch7 -p2
-%patch8 -p0
 %patch9 -p1
 %patch10 -p1
-%patch11 -p1
 %patch12 -p3
-%patch13 -p1
-%patch14 -p1
+#%patch13 -p1
 %patch15 -p0
-%patch16 -p1
 
 %build
-# Support for building tests.
-%define boost_testflags -DBUILD_TESTS="NONE"
-%if %{with tests}
-  %define boost_testflags -DBUILD_TESTS="ALL"
-%endif
+cat >> ./tools/build/v2/user-config.jam << EOF
+using mpi ;
+EOF
 
-( echo ============================= build serial ==================
-  mkdir serial
-  cd serial
-  export CXXFLAGS="-DBOOST_IOSTREAMS_USE_DEPRECATED %{optflags}"
-  %cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo %{boost_testflags} \
-         -DENABLE_SINGLE_THREADED=YES -DINSTALL_VERSIONED=OFF \
-         -DWITH_MPI=OFF \
-         ..
-  make VERBOSE=1 %{?_smp_mflags}
-)
+./bootstrap.sh --with-toolset=gcc --with-icu
+
+# N.B. When we build the following with PCH, parts of boost (math
+# library in particular) end up being built second time during
+# installation.  Unsure why that is, but all sub-builds need to be
+# built with pch=off to avoid this.
+
+echo ============================= build serial ==================
+./b2 -d+2 -q %{?_smp_mflags} --layout=tagged \
+  --without-mpi --without-graph_parallel --build-dir=serial \
+  variant=release threading=single,multi debug-symbols=on pch=off stage
 
 %if %{with python3}
 
@@ -585,18 +546,11 @@ sed 's/_FEDORA_SONAME/%{sonamever}/' %{PATCH1} | %{__patch} -p0 --fuzz=0
 # Build MPI parts of Boost with OpenMPI support
 %if %{with openmpi}
 %{_openmpi_load}
-# Work around the bug: https://bugzilla.redhat.com/show_bug.cgi?id=560224
-MPI_COMPILER=openmpi-%{_arch}
-export MPI_COMPILER
-( echo ============================= build $MPI_COMPILER ==================
-  mkdir $MPI_COMPILER
-  cd $MPI_COMPILER
-  %cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo %{boost_testflags} \
-         -DENABLE_SINGLE_THREADED=YES -DINSTALL_VERSIONED=OFF \
-         -DBUILD_PROJECTS="serialization;python;mpi;graph_parallel" \
-         -DBOOST_LIB_INSTALL_DIR=$MPI_LIB ..
-  make VERBOSE=1 %{?_smp_mflags}
-)
+echo ============================= build $MPI_COMPILER ==================
+# This doesn't seem to allow single-threaded builds anymore.
+./b2 -d+2 -q %{?_smp_mflags} --layout=tagged \
+	--with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
+	variant=release threading=multi debug-symbols=on pch=off stage
 %{_openmpi_unload}
 export PATH=/bin${PATH:+:}$PATH
 %endif
@@ -604,25 +558,17 @@ export PATH=/bin${PATH:+:}$PATH
 # Build MPI parts of Boost with MPICH2 support
 %if %{with mpich2}
 %{_mpich2_load}
-( echo ============================= build $MPI_COMPILER ==================
-  mkdir $MPI_COMPILER
-  cd $MPI_COMPILER
-  %cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo %{boost_testflags} \
-         -DENABLE_SINGLE_THREADED=YES -DINSTALL_VERSIONED=OFF \
-         -DBUILD_PROJECTS="serialization;python;mpi;graph_parallel" \
-         -DBOOST_LIB_INSTALL_DIR=$MPI_LIB ..
-  make VERBOSE=1 %{?_smp_mflags}
-)
+echo ============================= build $MPI_COMPILER ==================
+./b2 -d+2 -q %{?_smp_mflags} --layout=tagged \
+	--with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
+	variant=release threading=multi debug-symbols=on pch=off stage
 %{_mpich2_unload}
 export PATH=/bin${PATH:+:}$PATH
 %endif
 
-# Build Boost Jam
-echo ============================= build Jam ==================
-pushd tools/build/v2/engine/
-export CFLAGS="%{optflags}"
-./build.sh
-popd
+echo ============================= build Boost.Build ==================
+(cd tools/build/v2
+ ./bootstrap.sh --with-toolset=gcc)
 
 %check
 %if %{with tests}
@@ -659,23 +605,15 @@ cd %{_builddir}/%{toplev_dirname}
 
 %if %{with openmpi}
 %{_openmpi_load}
-# Work around the bug: https://bugzilla.redhat.com/show_bug.cgi?id=560224
-MPI_COMPILER=openmpi-%{_arch}
-export MPI_COMPILER
 echo ============================= install $MPI_COMPILER ==================
-DESTDIR=$RPM_BUILD_ROOT make -C $MPI_COMPILER VERBOSE=1 install
-# Remove parts of boost that we don't want installed in MPI directory.
-rm -f $RPM_BUILD_ROOT/$MPI_LIB/libboost_{python,{w,}serialization}*
-# Suppress the mpi.so python module, as it not currently properly
-# generated (some dependencies are missing. It is temporary until
-# upstream Boost-CMake fixes that (see
-# http://lists.boost.org/boost-cmake/2009/12/0859.php for more
-# details)
-rm -f $RPM_BUILD_ROOT/$MPI_LIB/mpi.so
-# Kill any debug library versions that may show up un-invited.
-rm -f $RPM_BUILD_ROOT/$MPI_LIB/*-d.*
-# Remove cmake configuration files used to build the Boost libraries
-find $RPM_BUILD_ROOT/$MPI_LIB -name '*.cmake' -exec rm -f {} \;
+./b2 -q %{?_smp_mflags} --layout=tagged \
+    --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
+    --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \
+    variant=release threading=multi debug-symbols=on pch=off stage
+
+# Remove generic parts of boost that were built for dependencies.
+rm -f ${RPM_BUILD_ROOT}${MPI_HOME}/%{_lib}/libboost_{python,{w,}serialization}*
+
 %{_openmpi_unload}
 export PATH=/bin${PATH:+:}$PATH
 %endif
@@ -683,60 +621,50 @@ export PATH=/bin${PATH:+:}$PATH
 %if %{with mpich2}
 %{_mpich2_load}
 echo ============================= install $MPI_COMPILER ==================
-DESTDIR=$RPM_BUILD_ROOT make -C $MPI_COMPILER VERBOSE=1 install
-# Remove parts of boost that we don't want installed in MPI directory.
-rm -f $RPM_BUILD_ROOT/$MPI_LIB/libboost_{python,{w,}serialization}*
-# Suppress the mpi.so python module, as it not currently properly
-# generated (some dependencies are missing. It is temporary until
-# upstream Boost-CMake fixes that (see
-# http://lists.boost.org/boost-cmake/2009/12/0859.php for more
-# details)
-rm -f $RPM_BUILD_ROOT/$MPI_LIB/mpi.so
-# Kill any debug library versions that may show up un-invited.
-rm -f $RPM_BUILD_ROOT/$MPI_LIB/*-d.*
-# Remove cmake configuration files used to build the Boost libraries
-find $RPM_BUILD_ROOT/$MPI_LIB -name '*.cmake' -exec rm -f {} \;
+./b2 -q %{?_smp_mflags} --layout=tagged \
+    --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
+    --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \
+    variant=release threading=multi debug-symbols=on pch=off stage
+
+# Remove generic parts of boost that were built for dependencies.
+rm -f ${RPM_BUILD_ROOT}${MPI_HOME}/%{_lib}/libboost_{python,{w,}serialization}*
+
 %{_mpich2_unload}
 export PATH=/bin${PATH:+:}$PATH
 %endif
 
+if false; then :
 %if %{with python3}
 echo ============================= install Python 3 ==================
 DESTDIR=$RPM_BUILD_ROOT make -C serial-python3 VERBOSE=1 install
 %endif
 
+fi
+
 echo ============================= install serial ==================
-DESTDIR=$RPM_BUILD_ROOT make -C serial VERBOSE=1 install
-# Kill any debug library versions that may show up un-invited.
-rm -f $RPM_BUILD_ROOT/%{_libdir}/*-d.*
-# Remove cmake configuration files used to build the Boost libraries
-find $RPM_BUILD_ROOT/%{_libdir} -name '*.cmake' -exec rm -f {} \;
-
-echo ============================= install jam ==================
-mkdir -p $RPM_BUILD_ROOT%{_bindir}
-pushd tools/build/v2/engine/
-%{__install} -m 755 bin.linux*/bjam $RPM_BUILD_ROOT%{_bindir}
-popd
-# Install the manual page
-%{__install} -p -m 644 tools/build/v2/doc/bjam.1 -D $RPM_BUILD_ROOT%{_mandir}/man1/bjam.1
-
-echo ============================= install build ==================
-mkdir -p $RPM_BUILD_ROOT%{_datadir}/boost-build
-pushd tools/build/v2
-# Fix some permissions
-chmod -x build/alias.py
-chmod +x tools/doxproc.py
-# Empty file
-rm -f tools/doxygen/windows-paths-check.hpp
-# Not a real file
-rm -f build/project.ann.py
-# Move into a dedicated location
-cp -a boost-build.jam bootstrap.jam build-system.jam build/ kernel/ options/ tools/ util/ user-config.jam $RPM_BUILD_ROOT%{_datadir}/boost-build/
-popd
+./b2 -d+2 -q %{?_smp_mflags} --layout=tagged \
+    --without-mpi --without-graph_parallel --build-dir=serial \
+    --prefix=$RPM_BUILD_ROOT%{_prefix} \
+    variant=release threading=single,multi debug-symbols=on pch=off install
+
+echo ============================= install Boost.Build ==================
+(cd tools/build/v2
+ ./b2 --prefix=$RPM_BUILD_ROOT%{_prefix} install
+ # Fix some permissions
+ chmod -x $RPM_BUILD_ROOT%{_datadir}/boost-build/build/alias.py
+ chmod +x $RPM_BUILD_ROOT%{_datadir}/boost-build/tools/doxproc.py
+ # We don't want to distribute this
+ rm -f $RPM_BUILD_ROOT%{_bindir}/b2
+ # Not a real file
+ rm -f $RPM_BUILD_ROOT%{_datadir}/boost-build/build/project.ann.py
+ # Empty file
+ rm -f $RPM_BUILD_ROOT%{_datadir}/boost-build/tools/doxygen/windows-paths-check.hpp
+ # Install the manual page
+ %{__install} -p -m 644 doc/bjam.1 -D $RPM_BUILD_ROOT%{_mandir}/man1/bjam.1
+)
 
 # Install documentation files (HTML pages) within the temporary place
 echo ============================= install documentation ==================
-cd %{_builddir}/%{toplev_dirname}
 # Prepare the place to temporary store the generated documentation
 rm -rf %{boost_docdir} && %{__mkdir_p} %{boost_docdir}/html
 DOCPATH=%{boost_docdir}
@@ -793,17 +721,6 @@ rm -f tmp-doc-files-to-be-installed
 rm -f tmp-doc-directories
 %{__install} -p -m 644 -t $EXAMPLESPATH LICENSE_1_0.txt
 
-# Remove scripts used to generate include files
-find $RPM_BUILD_ROOT%{_includedir}/ \( -name '*.pl' -o -name '*.sh' \) -exec rm -f {} \;
-
-# boost support of cmake needs some tuning.  For the time being, leave
-# the files out, and rely on cmake's FindBoost to DTRT, as it had been
-# doing in pre-cmake-boost times.  For further info, see:
-#   https://bugzilla.redhat.com/show_bug.cgi?id=597020
-rm -Rfv $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}
-rm -Rfv $RPM_BUILD_ROOT%{_datadir}/cmake/%{name}
-
-
 %clean
 rm -rf $RPM_BUILD_ROOT
 
@@ -1023,7 +940,6 @@ rm -rf $RPM_BUILD_ROOT
 %files openmpi
 %defattr(-, root, root, -)
 %doc LICENSE_1_0.txt
-%{_libdir}/openmpi/lib/libboost_mpi.so.%{sonamever}
 %{_libdir}/openmpi/lib/libboost_mpi-mt.so.%{sonamever}
 
 %files openmpi-devel
@@ -1035,11 +951,11 @@ rm -rf $RPM_BUILD_ROOT
 %defattr(-, root, root, -)
 %doc LICENSE_1_0.txt
 %{_libdir}/openmpi/lib/libboost_mpi_python*.so.%{sonamever}
+%{_libdir}/openmpi/lib/mpi.so
 
 %files graph-openmpi
 %defattr(-, root, root, -)
 %doc LICENSE_1_0.txt
-%{_libdir}/openmpi/lib/libboost_graph_parallel.so.%{sonamever}
 %{_libdir}/openmpi/lib/libboost_graph_parallel-mt.so.%{sonamever}
 
 %endif
@@ -1050,7 +966,6 @@ rm -rf $RPM_BUILD_ROOT
 %files mpich2
 %defattr(-, root, root, -)
 %doc LICENSE_1_0.txt
-%{_libdir}/mpich2/lib/libboost_mpi.so.%{sonamever}
 %{_libdir}/mpich2/lib/libboost_mpi-mt.so.%{sonamever}
 
 %files mpich2-devel
@@ -1062,11 +977,11 @@ rm -rf $RPM_BUILD_ROOT
 %defattr(-, root, root, -)
 %doc LICENSE_1_0.txt
 %{_libdir}/mpich2/lib/libboost_mpi_python*.so.%{sonamever}
+%{_libdir}/mpich2/lib/mpi.so
 
 %files graph-mpich2
 %defattr(-, root, root, -)
 %doc LICENSE_1_0.txt
-%{_libdir}/mpich2/lib/libboost_graph_parallel.so.%{sonamever}
 %{_libdir}/mpich2/lib/libboost_graph_parallel-mt.so.%{sonamever}
 
 %endif
@@ -1083,6 +998,26 @@ rm -rf $RPM_BUILD_ROOT
 %{_mandir}/man1/bjam.1*
 
 %changelog
+* Thu Jul 26 2012 Petr Machata <pmachata at redhat.com> - 1.50.0-1
+- Upstream 1.50
+  - boost-cmake-soname.patch drop, upstream handles soname well, and
+    we haven't been doing manual numbering for several years now
+  - boost-1.48.0-cmakeify-full.patch drop, not necessary for bjam
+  - Rebase many patches, port others, courtesy of Denis Arnaud:
+    - boost-1.48.0-exceptions.patch drop
+    - boost-1.48.0-lexical_cast-incomplete.patch drop
+    - boost-1.48.0-gcc47-pthreads.patch drop
+    - boost-1.48.0-long-double.patch drop
+    - boost-1.48.0-xtime.patch drop
+    - boost-1.48.0-locale.patch drop
+    - boost-1.48.0-signals-erase.patch port
+    - boost-1.48.0-fix-non-utf8-files.patch port
+    - boost-1.48.0-foreach.patch port
+    - boost-1.48.0-attribute.patch port
+    - boost-1.48.0-long-double-1.patch port
+    - boost-1.48.0-polygon.patch port
+    - boost-1.48.0-pool.patch port
+
 * Wed Jul 18 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.48.0-17
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
 
diff --git a/sources b/sources
index 60b1baf..79b3b01 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-d1e9a7a7f532bb031a3c175d86688d95  boost_1_48_0.tar.bz2
+52dd00be775e689f55a987baebccc462  boost_1_50_0.tar.bz2


More information about the scm-commits mailing list