diff --git a/Makefile b/Makefile index 1f6b48c..1cd1cf9 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ all: boost.spec boost.spec: boost.spec.in - @./mkspec.sh + @sh ./mkspec.sh diff --git a/README b/README deleted file mode 100644 index 58d8ade..0000000 --- a/README +++ /dev/null @@ -1,2 +0,0 @@ -This package is only needed for updating from an older version of -of the distribution. diff --git a/baselibs.conf b/baselibs.conf index a1ab9b3..224b826 100644 --- a/baselibs.conf +++ b/baselibs.conf @@ -1,17 +1,17 @@ -arch ppc64 package boost -arch ppc64 package boost-devel -arch ppc64 package libboost_date_time-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_filesystem-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_graph-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_iostreams-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_math-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_mpi-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_test-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_program_options-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_python-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_serialization-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_signals-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_system-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_thread-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_wave-gcc43-mt-1_36-1_36_0 -arch ppc64 package libboost_regex-gcc43-mt-1_36-1_36_0 +arch ppc package boost +arch ppc package boost-devel +arch ppc package libboost_date_time1_36_0 +arch ppc package libboost_filesystem1_36_0 +arch ppc package libboost_graph1_36_0 +arch ppc package libboost_iostreams1_36_0 +arch ppc package libboost_math1_36_0 +arch ppc package libboost_mpi1_36_0 +arch ppc package libboost_test1_36_0 +arch ppc package libboost_program_options1_36_0 +arch ppc package libboost_python1_36_0 +arch ppc package libboost_serialization1_36_0 +arch ppc package libboost_signals1_36_0 +arch ppc package libboost_system1_36_0 +arch ppc package libboost_thread1_36_0 +arch ppc package libboost_wave1_36_0 +arch ppc package libboost_regex1_36_0 diff --git a/boost-default_extension.patch b/boost-default_extension.patch new file mode 100644 index 0000000..0744dd2 --- /dev/null +++ b/boost-default_extension.patch @@ -0,0 +1,17 @@ +See https://svn.boost.org/trac/boost/ticket/2224 + +The default extension is wrong for string_type==std::wstring and causes a +compiler error. + + +--- boost/filesystem/path.hpp ++++ boost/filesystem/path.hpp +@@ -203,7 +203,7 @@ + } + + basic_path & remove_filename(); +- basic_path & replace_extension( const string_type & new_extension = "" ); ++ basic_path & replace_extension( const string_type & new_extension = string_type() ); + + # ifndef BOOST_FILESYSTEM_NO_DEPRECATED + basic_path & remove_leaf() { return remove_filename(); } diff --git a/boost-rpmlintrc b/boost-rpmlintrc index 65cd588..4cdd609 100644 --- a/boost-rpmlintrc +++ b/boost-rpmlintrc @@ -8,3 +8,4 @@ addFilter("boost.* rpm-buildroot-usage") addFilter("boost.* explicit-lib-dependency") addFilter("boost.* filename-too-long-for-joliet") addFilter("boost.* no-binary") +addFilter("boost.* static-library-without-debuginfo") diff --git a/boost-sane_versioning.patch b/boost-sane_versioning.patch new file mode 100644 index 0000000..7372770 --- /dev/null +++ b/boost-sane_versioning.patch @@ -0,0 +1,30 @@ +--- Jamroot ++++ Jamroot +@@ -311,9 +311,7 @@ + if $(layout) = versioned + { + local result = [ common.format-name +- -$(BOOST_VERSION_TAG) +- -$(BUILD_ID) +- : $(name) : $(type) : $(property-set) ] ; ++ : $(name) : $(type) : $(property-set) ] ; + + # Optionally add version suffix. + # On NT, library with version suffix won't be recognized +@@ -448,13 +446,9 @@ + return $(result) ; + } + +- generate stage-unversioned : stage-proper : +- @make-unversioned-links ; +- explicit stage-unversioned ; +- +- generate install-unversioned : install-proper : +- @make-unversioned-links ; +- explicit install-unversioned ; ++ # Create do-nothing aliases ++ alias stage-unversioned ; ++ alias install-unversioned ; + } + else + { diff --git a/boost-sigcld_handling.patch b/boost-sigcld_handling.patch new file mode 100644 index 0000000..e420fa5 --- /dev/null +++ b/boost-sigcld_handling.patch @@ -0,0 +1,72 @@ +--- boost/test/impl/execution_monitor.ipp ++++ boost/test/impl/execution_monitor.ipp 2008/10/29 12:36:46 +@@ -401,40 +401,43 @@ + } + break; + ++#if defined(BOOST_TEST_CATCH_SIGCHLD) ++ + case SIGCHLD: + switch( m_sig_info->si_code ) { + case CLD_EXITED: + report_error( execution_exception::system_error, + "child has exited; pid: %d; uid: %d; exit value: %d", +- (int)m_sig_info->si_uid, (int)m_sig_info->si_pid, (int)m_sig_info->si_status ); ++ (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status ); + break; + case CLD_KILLED: + report_error( execution_exception::system_error, + "child was killed; pid: %d; uid: %d; exit value: %d", +- (int)m_sig_info->si_uid, (int)m_sig_info->si_pid, (int)m_sig_info->si_status ); ++ (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status ); + break; + case CLD_DUMPED: + report_error( execution_exception::system_error, + "child terminated abnormally; pid: %d; uid: %d; exit value: %d", +- (int)m_sig_info->si_uid, (int)m_sig_info->si_pid, (int)m_sig_info->si_status ); ++ (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status ); + break; + case CLD_TRAPPED: + report_error( execution_exception::system_error, + "traced child has trapped; pid: %d; uid: %d; exit value: %d", +- (int)m_sig_info->si_uid, (int)m_sig_info->si_pid, (int)m_sig_info->si_status ); ++ (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status ); + break; + case CLD_STOPPED: + report_error( execution_exception::system_error, + "child has stopped; pid: %d; uid: %d; exit value: %d", +- (int)m_sig_info->si_uid, (int)m_sig_info->si_pid, (int)m_sig_info->si_status ); ++ (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status ); + break; + case CLD_CONTINUED: + report_error( execution_exception::system_error, + "stopped child had continued; pid: %d; uid: %d; exit value: %d", +- (int)m_sig_info->si_uid, (int)m_sig_info->si_pid, (int)m_sig_info->si_status ); ++ (int)m_sig_info->si_pid, (int)m_sig_info->si_uid, (int)m_sig_info->si_status ); + break; + } + break; ++#endif + + #if defined(BOOST_TEST_CATCH_SIGPOLL) + +@@ -595,7 +598,9 @@ + signal_action m_FPE_action; + signal_action m_SEGV_action; + signal_action m_BUS_action; ++#ifdef BOOST_TEST_CATCH_SIGCHLD + signal_action m_CHLD_action; ++#endif + #ifdef BOOST_TEST_CATCH_SIGPOLL + signal_action m_POLL_action; + #endif +@@ -621,7 +626,9 @@ + , m_FPE_action ( SIGFPE , catch_system_errors, attach_dbg, alt_stack ) + , m_SEGV_action( SIGSEGV, catch_system_errors, attach_dbg, alt_stack ) + , m_BUS_action ( SIGBUS , catch_system_errors, attach_dbg, alt_stack ) ++#ifdef BOOST_TEST_CATCH_SIGCHLD + , m_CHLD_action( SIGCHLD, catch_system_errors, attach_dbg, alt_stack ) ++#endif + #ifdef BOOST_TEST_CATCH_SIGPOLL + , m_POLL_action( SIGPOLL, catch_system_errors, attach_dbg, alt_stack ) + #endif diff --git a/boost-strict_aliasing.patch b/boost-strict_aliasing.patch new file mode 100644 index 0000000..af66849 --- /dev/null +++ b/boost-strict_aliasing.patch @@ -0,0 +1,12 @@ +--- libs/python/build/Jamfile.v2 ++++ libs/python/build/Jamfile.v2 +@@ -24,7 +24,8 @@ + + project boost/python + : source-location ../src +- ; ++ : requirements -fno-strict-aliasing ++ ; + + rule cond ( test ? : yes * : no * ) { if $(test) { return $(yes) ; } else { return $(no) ; } } + rule unless ( test ? : yes * : no * ) { if ! $(test) { return $(yes) ; } else { return $(no) ; } } diff --git a/boost.changes b/boost.changes index 82c38da..9b18bc3 100644 --- a/boost.changes +++ b/boost.changes @@ -1,3 +1,33 @@ +------------------------------------------------------------------- +Tue Nov 11 16:55:39 CET 2008 - ro@suse.de + +- SLE-11 uses PPC64 instead of PPC, adapt baselibs.conf + +------------------------------------------------------------------- +Fri Oct 31 12:40:57 CET 2008 - pth@suse.de + +- Fix the bug that made boost.monitor mix up uid and pib and + also make boost.monitor not special-case SIGCLD (bnc#439805) +- Fix generation of default extension in boost.filesystem. + +- Make boost recommend library subpackages instead of requiring + them to allow removal of unwanted libraries after update. +- Run mkspec explicitely in a shell so that mkspec.sh doesn't + need to be executable. +- Disable deletion of full-name symlinks in boost.spec.in. +- Make boost-devel directly require all library subpackages. +- boost.rpm isn't needed, even for updates, so don't build it and + remove the README file needeed only for this package. +- Make debug package require all library subpackages. +- Add pre_checkin.sh to ensure that boost.spec is regenerated + at check-in time. +- Make boost.build use sane library names. Only the multi-threaded + libraries are built and these have no -mt in their name. + Symlinks for convenience are spupplied. +- Use -fno-strict-aliasing only for boost.python, where it's needed. +- Don't use configure and make (only convenience wrappers) but + call bjam directly. + ------------------------------------------------------------------- Mon Oct 27 11:57:35 CET 2008 - ro@suse.de diff --git a/boost.spec b/boost.spec index 2d3a2ac..e373ac0 100644 --- a/boost.spec +++ b/boost.spec @@ -22,6 +22,13 @@ %else %define build_mpi 1 %endif +%define most_libs libboost_date_time1_36_0 libboost_filesystem1_36_0 libboost_graph1_36_0 libboost_iostreams1_36_0 libboost_math1_36_0 libboost_test1_36_0 libboost_program_options1_36_0 libboost_python1_36_0 libboost_serialization1_36_0 libboost_signals1_36_0 libboost_system1_36_0 libboost_thread1_36_0 libboost_wave1_36_0 libboost_regex1_36_0 +%if %build_mpi +%define all_libs %{most_libs} libboost_mpi1_36_0 +%else +%define all_libs %{most_libs} +%endif +%define debug_package_requires %{all_libs} Name: boost BuildRequires: boost-jam >= 3.1.16 dos2unix gcc-c++ libbz2-devel libicu-devel python-devel xorg-x11-devel @@ -38,15 +45,15 @@ Group: Development/Libraries/C and C++ Summary: Boost C++ Libraries BuildRoot: %{_tmppath}/%{name}-%{version}-build Version: 1.36.0 -Release: 6 +Release: 7 Source0: %{name}_1_36_0.tar.bz2 Source1: boost-rpmlintrc Source2: boost_1_33_1_man.tar.bz2 Source3: existing_extra_docs -Source4: README Source5: mkspec.sh Source6: boost.spec.in Source7: Makefile +Source8: pre_checkin.sh Patch0: boost-threading.patch Patch1: boost-thread.patch Patch2: boost-no_type_punning.patch @@ -54,26 +61,12 @@ Patch4: boost-visit_each.diff Patch5: boost-pass_BJAM_CONFIG.patch Patch6: boost-use_rpm_optflags.patch Patch8: boost-no_segfault_in_Regex_filter.patch -Patch17: boost-ppc-asm.patch -Requires: libboost_date_time-gcc43-mt-1_36-1_36_0 -Requires: libboost_filesystem-gcc43-mt-1_36-1_36_0 -Requires: libboost_graph-gcc43-mt-1_36-1_36_0 -Requires: libboost_iostreams-gcc43-mt-1_36-1_36_0 -Requires: libboost_math-gcc43-mt-1_36-1_36_0 -%if %build_mpi -Requires: libboost_mpi-gcc43-mt-1_36-1_36_0 -%endif -Requires: libboost_test-gcc43-mt-1_36-1_36_0 -Requires: libboost_program_options-gcc43-mt-1_36-1_36_0 -Requires: libboost_python-gcc43-mt-1_36-1_36_0 -Requires: libboost_serialization-gcc43-mt-1_36-1_36_0 -Requires: libboost_signals-gcc43-mt-1_36-1_36_0 -Requires: libboost_system-gcc43-mt-1_36-1_36_0 -Requires: libboost_thread-gcc43-mt-1_36-1_36_0 -Requires: libboost_wave-gcc43-mt-1_36-1_36_0 -Requires: libboost_regex-gcc43-mt-1_36-1_36_0 -Requires: boost-license -%define _prefix /usr +Patch9: boost-ppc-asm.patch +Patch18: boost-sigcld_handling.patch +Patch19: boost-sane_versioning.patch +Patch20: boost-strict_aliasing.patch +Patch21: boost-default_extension.patch +Recommends: %{all_libs} %description Boost provides free peer-reviewed portable C++ source libraries. The @@ -99,7 +92,8 @@ documentation, see the boost-doc package. License: BSD 3-Clause Summary: Development package for Boost C++ Group: Development/Libraries/C and C++ -Requires: %{name} = %{version} +Requires: %{all_libs} +Requires: %{name}-license = %{version} AutoReqProv: on %description devel @@ -132,193 +126,192 @@ This package contains documentation about the boost dynamic libraries. -%package -n libboost_date_time-gcc43-mt-1_36-1_36_0 +%package -n libboost_date_time1_36_0 License: BSD 3-Clause Summary: Boost::Date.Time Runtime libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_date_time-gcc43-mt-1_36-1_36_0 +%description -n libboost_date_time1_36_0 This package contains the Boost Date.Time runtime libraries. -%package -n libboost_filesystem-gcc43-mt-1_36-1_36_0 +%package -n libboost_filesystem1_36_0 License: BSD 3-Clause Summary: Boost::Filesystem Runtime Libraries Group: System/Localization Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_filesystem-gcc43-mt-1_36-1_36_0 +%description -n libboost_filesystem1_36_0 This package contains the Boost::Filesystem libraries. -%package -n libboost_graph-gcc43-mt-1_36-1_36_0 +%package -n libboost_graph1_36_0 License: BSD 3-Clause Summary: Boost::Graph Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_graph-gcc43-mt-1_36-1_36_0 +%description -n libboost_graph1_36_0 This package contains the Boost::Graph Runtime libraries. -%package -n libboost_iostreams-gcc43-mt-1_36-1_36_0 +%package -n libboost_iostreams1_36_0 License: BSD 3-Clause Summary: Boost::IOStreams Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_iostreams-gcc43-mt-1_36-1_36_0 +%description -n libboost_iostreams1_36_0 This package contains the Boost::IOStreams Runtime libraries. -%package -n libboost_math-gcc43-mt-1_36-1_36_0 +%package -n libboost_math1_36_0 License: BSD 3-Clause Summary: Boost::Math Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_math-gcc43-mt-1_36-1_36_0 +%description -n libboost_math1_36_0 This package contains the Boost::Math Runtime libraries. %if %build_mpi -%package -n libboost_mpi-gcc43-mt-1_36-1_36_0 +%package -n libboost_mpi1_36_0 License: BSD 3-Clause Summary: Boost::MPI Runtime libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_mpi-gcc43-mt-1_36-1_36_0 +%description -n libboost_mpi1_36_0 This package contains the Boost::MPI Runtime libraries. %endif -%package -n libboost_test-gcc43-mt-1_36-1_36_0 +%package -n libboost_test1_36_0 License: BSD 3-Clause Summary: Boost::Test Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_test-gcc43-mt-1_36-1_36_0 +%description -n libboost_test1_36_0 This package contains the Boost::Test runtime libraries. -%package -n libboost_program_options-gcc43-mt-1_36-1_36_0 +%package -n libboost_program_options1_36_0 License: BSD 3-Clause Summary: Boost::ProgramOptions Runtime libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_program_options-gcc43-mt-1_36-1_36_0 +%description -n libboost_program_options1_36_0 This package contains the Boost::ProgramOptions Runtime libraries. -%package -n libboost_python-gcc43-mt-1_36-1_36_0 +%package -n libboost_python1_36_0 License: BSD 3-Clause Summary: Boost::Python Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_python-gcc43-mt-1_36-1_36_0 +%description -n libboost_python1_36_0 This package contains the Boost::Python Runtime libraries. -%package -n libboost_serialization-gcc43-mt-1_36-1_36_0 +%package -n libboost_serialization1_36_0 License: BSD 3-Clause Summary: Boost::Serialization Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_serialization-gcc43-mt-1_36-1_36_0 +%description -n libboost_serialization1_36_0 This package contains the Boost::Serialization Runtime libraries. -%package -n libboost_signals-gcc43-mt-1_36-1_36_0 +%package -n libboost_signals1_36_0 License: BSD 3-Clause Summary: Boost::Signals Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_signals-gcc43-mt-1_36-1_36_0 +%description -n libboost_signals1_36_0 This package contains the Boost::Signals Runtime libraries. -%package -n libboost_system-gcc43-mt-1_36-1_36_0 +%package -n libboost_system1_36_0 License: BSD 3-Clause Summary: Boost::System Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_system-gcc43-mt-1_36-1_36_0 +%description -n libboost_system1_36_0 This package contains the Boost::System runtime libraries. -%package -n libboost_thread-gcc43-mt-1_36-1_36_0 +%package -n libboost_thread1_36_0 License: BSD 3-Clause Summary: Boost::Thread Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_thread-gcc43-mt-1_36-1_36_0 +%description -n libboost_thread1_36_0 This package contains the Boost::Thread runtime libraries. -%package -n libboost_wave-gcc43-mt-1_36-1_36_0 +%package -n libboost_wave1_36_0 License: BSD 3-Clause Summary: Boost::Wave Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_wave-gcc43-mt-1_36-1_36_0 +%description -n libboost_wave1_36_0 This package contains the Boost::Wave runtime libraries. -%package -n libboost_regex-gcc43-mt-1_36-1_36_0 +%package -n libboost_regex1_36_0 License: BSD 3-Clause Summary: The Boost::Regex runtime library Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_regex-gcc43-mt-1_36-1_36_0 +%description -n libboost_regex1_36_0 This package contains the Boost::Regex runtime library. %prep %setup -q -n %{name}_1_36_0 -a 2 -cp %{S:4} . find -name .cvsignore -exec rm -f {} + #everything in the tarball has the executable flag set ...... find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl \) -exec chmod -x {} + @@ -329,61 +322,114 @@ find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl \) -exec chmod -x {} %patch5 %patch6 %patch8 -%patch17 +%patch9 +%patch18 +%patch19 +%patch20 +%patch21 chmod +x configure #stupid build machinery copies .orig files find . -name \*.orig -exec rm {} + %build -# define bjam_config -d2 --layout=system %{?jobs:-j%jobs} -%define bjam_config -d2 %{?jobs:-j%jobs} find . -type f -exec chmod u+w {} + # Now build it -BUILD_FLAGS="--with-toolset=gcc --prefix=%{buildroot}/usr --libdir=%{buildroot}%{_libdir} --with-bjam=/usr/bin/bjam" +J_P=%{jobs} +J_G=$(getconf _NPROCESSORS_CONF) +if test -z "$JOBS"; then + JOBS=$J_G +else + test 1 -gt "$JOBS" && JOBS=1 +fi +if test "$JOBS" == "0"; then + JOBS=1 +fi +# In case you want more parallel jobs then autobuild grants you +#if [ $J_P -gt $J_I ]; then +# JOBS=$J_G +#fi +BJAM_CONFIG="-d2 -j$JOBS -sICU_PATH=%{_prefix}" PYTHON_VERSION=$(python -c 'import sys; print sys.version[:3]') PYTHON_FLAGS="--with-python-root=/usr --with-python-version=$PYTHON_VERSION" REGEX_FLAGS="--with-icu" -#BJAM_TARGET=rpm -export EXPAT_INCLUDE=/usr/include EXPAT_LIBPATH=%{_libdir} -BJAM_CONFIG="%bjam_config" BJAM_TARGET="$BJAM_TARGET" ./configure $BUILD_FLAGS $PYTHON_FLAGS $REGEX_FLAGS -%if %build_mpi -echo "using mpi ;" >> user-config.jam -%endif -export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-deprecated" -make all +export EXPAT_INCLUDE=/usr/include EXPAT_LIBPATH=%{_libdir} REGEX_FLAGS="--with-icu" +export PYTHON_FLAGS +cat << EOF >user-config.jam +# Boost.Build Configuration +# Compiler configuration +using gcc ; +# Python configuration +using python : ${PYTHON_VERSION} : %{_prefix} ; +using mpi ; +EOF +# Set PATH, MANPATH and LD_LIBRARY_PATH +source /var/mpi-selector/data/$(cat /etc/sysconfig/mpi-selector).sh +%{_bindir}/bjam ${BJAM_CONFIG} --user-config=user-config.jam cflags="%{optflags}" cxxflags="%{optflags}" stage || (echo "Not all Boost libraries built properly."; exit 1) %install -mkdir -p %{buildroot}%{_libdir} -mkdir -p %{buildroot}%{_includedir} +# Now build it +J_P=%{jobs} +J_G=$(getconf _NPROCESSORS_CONF) +if test -z "$JOBS"; then + JOBS=$J_G +else + test 1 -gt "$JOBS" && JOBS=1 +fi +if test "$JOBS" == "0"; then + JOBS=1 +fi +# In case you want more parallel jobs then autobuild grants you +if [ $J_P -gt $J_I ]; then + JOBS=$J_G +fi +BJAM_CONFIG="-d2 -j$JOBS -sICU_PATH=%{_prefix}" +PYTHON_VERSION=$(python -c 'import sys; print sys.version[:3]') +PYTHON_FLAGS="--with-python-root=/usr --with-python-version=$PYTHON_VERSION" +REGEX_FLAGS="--with-icu" +export EXPAT_INCLUDE=/usr/include EXPAT_LIBPATH=%{_libdir} REGEX_FLAGS="--with-icu" +export PYTHON_FLAGS +# Set PATH, MANPATH and LD_LIBRARY_PATH +source /var/mpi-selector/data/$(cat /etc/sysconfig/mpi-selector).sh +%{_bindir}/bjam ${BJAM_CONFIG} --user-config=user-config.jam \ + --prefix=%{buildroot}%{_prefix} \ + --exec-prefix=$%{buildroot}%{_prefix} \ + --libdir=%{buildroot}%{_libdir} \ + --includedir=%{buildroot}%{_includedir} \ + install || echo "Not all Boost libraries built properly." +mv %{buildroot}%{_includedir}/boost-1_36/boost %{buildroot}%{_includedir}/ mkdir -p %{buildroot}%{_docdir}/boost-%{version} -# install lib -for i in $(find stage -type f -name \*.a); do - NAME=$(basename $i); - install -p -m 0644 $i %{buildroot}%{_libdir}/$NAME; -done; -cd stage/lib -for lib in $(find . -follow -name \*-gcc??-mt-1_36.so); do - NAME=${lib}.%{version} - SONAME_MT=$(echo $lib | sed -e 's/-gcc..-mt-1_36/-mt/g') - SONAME=$(echo $lib | sed -e 's/-gcc..-mt-1_36//g') -# rm $lib - ln -sf $NAME $SONAME_MT - ln -sf $NAME $SONAME +## install lib +#for i in $(find stage -type f -name \*.a); do +# NAME=$(basename $i); +# install -p -m 0644 $i %{buildroot}%{_libdir}/$NAME; +#done; +#pushd stage/lib +#for lib in $(find . -name \*.so.%{version}); do +# BASE=$(basename ${lib} .so.%{version}) +# SONAME_MT="$BASE-mt.so" +# ln -sf $NAME $SONAME_MT +#done +#popd +pushd %{buildroot}%{_libdir} +for lib in $(find . -name \*.so.%{version}); do + BASE=$(basename ${lib} .so.%{version}) + SONAME_MT="$BASE-mt.so" + ln -sf ${lib} $SONAME_MT done -cd ../.. -mv stage/lib/*.so* %{buildroot}%{_libdir} +popd +# mv stage/lib/*.so* %{buildroot}%{_libdir} # install include files -for i in $(find boost -type d); do - mkdir -p %{buildroot}%{_includedir}/$i -done -for i in $(find boost -type f); do - install -p -m 644 $i %{buildroot}%{_includedir}/$i -done -chmod +x %{buildroot}%{_includedir}/boost/signals/detail/gen_signal_N.pl \ - %{buildroot}%{_includedir}/boost/pool/detail/pool_construct_simple.sh \ - %{buildroot}%{_includedir}/boost/pool/detail/pool_construct.sh \ - %{buildroot}%{_includedir}/boost/function/gen_function_N.pl \ - %{buildroot}%{_includedir}/boost/function/detail/gen_maybe_include.pl +#for i in $(find boost -type d); do +# mkdir -p %{buildroot}%{_includedir}/$i +#done +#for i in $(find boost -type f); do +# install -p -m 644 $i %{buildroot}%{_includedir}/$i +#done +#chmod +x %{buildroot}%{_includedir}/boost/signals/detail/gen_signal_N.pl \ +# %{buildroot}%{_includedir}/boost/pool/detail/pool_construct_simple.sh \ +# %{buildroot}%{_includedir}/boost/pool/detail/pool_construct.sh \ +# %{buildroot}%{_includedir}/boost/function/gen_function_N.pl \ +# %{buildroot}%{_includedir}/boost/function/detail/gen_maybe_include.pl #install the man pages install -d %buildroot/%{_mandir}/man3 install -d %buildroot/%{_mandir}/man7 @@ -411,141 +457,135 @@ find %{buildroot}%{_docdir}/boost-%{version} -name \*.py -exec chmod -x {} + %fdupes %buildroot %endif -%post -n libboost_date_time-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_date_time1_36_0 -p /sbin/ldconfig -%post -n libboost_filesystem-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_filesystem1_36_0 -p /sbin/ldconfig -%post -n libboost_iostreams-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_iostreams1_36_0 -p /sbin/ldconfig -%post -n libboost_test-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_test1_36_0 -p /sbin/ldconfig -%post -n libboost_program_options-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_program_options1_36_0 -p /sbin/ldconfig -%post -n libboost_python-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_python1_36_0 -p /sbin/ldconfig -%post -n libboost_regex-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_regex1_36_0 -p /sbin/ldconfig -%post -n libboost_serialization-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_serialization1_36_0 -p /sbin/ldconfig -%post -n libboost_signals-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_signals1_36_0 -p /sbin/ldconfig -%post -n libboost_thread-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_thread1_36_0 -p /sbin/ldconfig -%post -n libboost_math-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_math1_36_0 -p /sbin/ldconfig %if %build_mpi -%post -n libboost_mpi-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_mpi1_36_0 -p /sbin/ldconfig %endif -%post -n libboost_graph-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_graph1_36_0 -p /sbin/ldconfig -%post -n libboost_system-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_system1_36_0 -p /sbin/ldconfig -%post -n libboost_wave-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%post -n libboost_wave1_36_0 -p /sbin/ldconfig -%postun -n libboost_date_time-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_date_time1_36_0 -p /sbin/ldconfig -%postun -n libboost_filesystem-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_filesystem1_36_0 -p /sbin/ldconfig -%postun -n libboost_iostreams-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_iostreams1_36_0 -p /sbin/ldconfig -%postun -n libboost_test-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_test1_36_0 -p /sbin/ldconfig -%postun -n libboost_program_options-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_program_options1_36_0 -p /sbin/ldconfig -%postun -n libboost_python-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_python1_36_0 -p /sbin/ldconfig -%postun -n libboost_regex-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_regex1_36_0 -p /sbin/ldconfig -%postun -n libboost_serialization-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_serialization1_36_0 -p /sbin/ldconfig -%postun -n libboost_signals-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_signals1_36_0 -p /sbin/ldconfig -%postun -n libboost_thread-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_thread1_36_0 -p /sbin/ldconfig -%postun -n libboost_math-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_math1_36_0 -p /sbin/ldconfig %if %build_mpi -%postun -n libboost_mpi-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_mpi1_36_0 -p /sbin/ldconfig %endif -%postun -n libboost_graph-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_graph1_36_0 -p /sbin/ldconfig -%postun -n libboost_system-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig +%postun -n libboost_system1_36_0 -p /sbin/ldconfig -%postun -n libboost_wave-gcc43-mt-1_36-1_36_0 -p /sbin/ldconfig - -%files -%defattr(-, root, root, -) -%doc README +%postun -n libboost_wave1_36_0 -p /sbin/ldconfig %files license %defattr(-, root, root, -) %doc LICENSE_1_0.txt -%files -n libboost_date_time-gcc43-mt-1_36-1_36_0 +%files -n libboost_date_time1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_date_time*.so.* -%files -n libboost_filesystem-gcc43-mt-1_36-1_36_0 +%files -n libboost_filesystem1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_filesystem*.so.* -%files -n libboost_graph-gcc43-mt-1_36-1_36_0 +%files -n libboost_graph1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_graph*.so.* -%files -n libboost_iostreams-gcc43-mt-1_36-1_36_0 +%files -n libboost_iostreams1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_iostreams*.so.* -%files -n libboost_math-gcc43-mt-1_36-1_36_0 +%files -n libboost_math1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_math_*.so.* %if %build_mpi -%files -n libboost_mpi-gcc43-mt-1_36-1_36_0 +%files -n libboost_mpi1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_mpi*.so.* -#%{_libdir}/libboost_mpi*.so -#%{_libdir}/mpi*.so.%{version} -#%{_libdir}/mpi*.so +%{_libdir}/mpi.so %endif -%files -n libboost_test-gcc43-mt-1_36-1_36_0 +%files -n libboost_test1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_prg_exec_monitor*.so.* %{_libdir}/libboost_unit_test_framework*.so.* -%files -n libboost_program_options-gcc43-mt-1_36-1_36_0 +%files -n libboost_program_options1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_program_options*.so.* -%files -n libboost_python-gcc43-mt-1_36-1_36_0 +%files -n libboost_python1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_python*.so.* -%files -n libboost_serialization-gcc43-mt-1_36-1_36_0 +%files -n libboost_serialization1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_*serialization*.so.* -%files -n libboost_signals-gcc43-mt-1_36-1_36_0 +%files -n libboost_signals1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_signals*.so.* -%files -n libboost_system-gcc43-mt-1_36-1_36_0 +%files -n libboost_system1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_system*.so.* -%files -n libboost_thread-gcc43-mt-1_36-1_36_0 +%files -n libboost_thread1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_thread*.so.* -%files -n libboost_wave-gcc43-mt-1_36-1_36_0 +%files -n libboost_wave1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_wave*.so.* -%files -n libboost_regex-gcc43-mt-1_36-1_36_0 +%files -n libboost_regex1_36_0 %defattr(-, root, root, -) %{_libdir}/libboost_regex*.so.* @@ -562,6 +602,29 @@ find %{buildroot}%{_docdir}/boost-%{version} -name \*.py -exec chmod -x {} + %doc %{_mandir}/man7/*.7.gz %changelog +* Tue Nov 11 2008 ro@suse.de +- SLE-11 uses PPC64 instead of PPC, adapt baselibs.conf +* Fri Oct 31 2008 pth@suse.de +- Fix the bug that made boost.monitor mix up uid and pib and + also make boost.monitor not special-case SIGCLD (bnc#439805) +- Fix generation of default extension in boost.filesystem. +- Make boost recommend library subpackages instead of requiring + them to allow removal of unwanted libraries after update. +- Run mkspec explicitely in a shell so that mkspec.sh doesn't + need to be executable. +- Disable deletion of full-name symlinks in boost.spec.in. +- Make boost-devel directly require all library subpackages. +- boost.rpm isn't needed, even for updates, so don't build it and + remove the README file needeed only for this package. +- Make debug package require all library subpackages. +- Add pre_checkin.sh to ensure that boost.spec is regenerated + at check-in time. +- Make boost.build use sane library names. Only the multi-threaded + libraries are built and these have no -mt in their name. + Symlinks for convenience are spupplied. +- Use -fno-strict-aliasing only for boost.python, where it's needed. +- Don't use configure and make (only convenience wrappers) but + call bjam directly. * Mon Oct 27 2008 ro@suse.de - do not remove full-name symlinks for shared libs * Thu Oct 23 2008 pth@suse.de @@ -950,7 +1013,7 @@ find %{buildroot}%{_docdir}/boost-%{version} -name \*.py -exec chmod -x {} + - Fix broken assembler constraints [#148429]. * Wed Jan 25 2006 mls@suse.de - converted neededforbuild to BuildRequires -* Wed Jan 18 2006 schwab@suse.de +* Tue Jan 17 2006 schwab@suse.de - Don't strip binaries. * Wed Dec 07 2005 pth@suse.de - Fix cases of type-punning in boost::python diff --git a/boost.spec.in b/boost.spec.in index 4004e02..12b8acb 100644 --- a/boost.spec.in +++ b/boost.spec.in @@ -17,8 +17,9 @@ # norootforbuild -# WARNING: This file is generated from boost.spec.in by running -# mkspec.sh. Changes to this file will get lost. +# WARNING: +# THIS FILE IS GENERATED FROM boost.spec.in BY CALLING MAKE. +# CHANGES TO THIS FILE WILL GET LOST. # Just hardcode build_mpi to 1 as soon as openmpi builds on all # named architectures. @@ -29,6 +30,16 @@ %define build_mpi 1 %endif +%define most_libs libboost_date_time@lib_appendix@ libboost_filesystem@lib_appendix@ libboost_graph@lib_appendix@ libboost_iostreams@lib_appendix@ libboost_math@lib_appendix@ libboost_test@lib_appendix@ libboost_program_options@lib_appendix@ libboost_python@lib_appendix@ libboost_serialization@lib_appendix@ libboost_signals@lib_appendix@ libboost_system@lib_appendix@ libboost_thread@lib_appendix@ libboost_wave@lib_appendix@ libboost_regex@lib_appendix@ + +%if %build_mpi +%define all_libs %{most_libs} libboost_mpi@lib_appendix@ +%else +%define all_libs %{most_libs} +%endif + +%define debug_package_requires %{all_libs} + Name: boost BuildRequires: boost-jam >= 3.1.16 dos2unix gcc-c++ libbz2-devel libicu-devel python-devel xorg-x11-devel BuildRequires: libexpat-devel @@ -49,10 +60,10 @@ Source0: %{name}_@file_version@.tar.bz2 Source1: boost-rpmlintrc Source2: boost_@man_file_version@_man.tar.bz2 Source3: existing_extra_docs -Source4: README Source5: mkspec.sh Source6: boost.spec.in Source7: Makefile +Source8: pre_checkin.sh Patch0: boost-threading.patch Patch1: boost-thread.patch Patch2: boost-no_type_punning.patch @@ -60,27 +71,12 @@ Patch4: boost-visit_each.diff Patch5: boost-pass_BJAM_CONFIG.patch Patch6: boost-use_rpm_optflags.patch Patch8: boost-no_segfault_in_Regex_filter.patch -Patch17: boost-ppc-asm.patch - -Requires: libboost_date_time-@lib_appendix@ -Requires: libboost_filesystem-@lib_appendix@ -Requires: libboost_graph-@lib_appendix@ -Requires: libboost_iostreams-@lib_appendix@ -Requires: libboost_math-@lib_appendix@ -%if %build_mpi -Requires: libboost_mpi-@lib_appendix@ -%endif -Requires: libboost_test-@lib_appendix@ -Requires: libboost_program_options-@lib_appendix@ -Requires: libboost_python-@lib_appendix@ -Requires: libboost_serialization-@lib_appendix@ -Requires: libboost_signals-@lib_appendix@ -Requires: libboost_system-@lib_appendix@ -Requires: libboost_thread-@lib_appendix@ -Requires: libboost_wave-@lib_appendix@ -Requires: libboost_regex-@lib_appendix@ -Requires: boost-license -%define _prefix /usr +Patch9: boost-ppc-asm.patch +Patch18: boost-sigcld_handling.patch +Patch19: boost-sane_versioning.patch +Patch20: boost-strict_aliasing.patch +Patch21: boost-default_extension.patch +Recommends: %{all_libs} %description Boost provides free peer-reviewed portable C++ source libraries. The @@ -106,7 +102,8 @@ see the boost-doc package. License: BSD 3-Clause Summary: Development package for Boost C++ Group: Development/Libraries/C and C++ -Requires: %{name} = %{version} +Requires: %{all_libs} +Requires: %{name}-license = %{version} AutoReqProv: on %description devel @@ -139,189 +136,188 @@ This package contains documentation about the boost dynamic libraries. -%package -n libboost_date_time-@lib_appendix@ +%package -n libboost_date_time@lib_appendix@ License: BSD 3-Clause Summary: Boost::Date.Time Runtime libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_date_time-@lib_appendix@ +%description -n libboost_date_time@lib_appendix@ This package contains the Boost Date.Time runtime libraries. -%package -n libboost_filesystem-@lib_appendix@ +%package -n libboost_filesystem@lib_appendix@ License: BSD 3-Clause Summary: Boost::Filesystem Runtime Libraries Group: System/Localization Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_filesystem-@lib_appendix@ +%description -n libboost_filesystem@lib_appendix@ This package contains the Boost::Filesystem libraries. -%package -n libboost_graph-@lib_appendix@ +%package -n libboost_graph@lib_appendix@ License: BSD 3-Clause Summary: Boost::Graph Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_graph-@lib_appendix@ +%description -n libboost_graph@lib_appendix@ This package contains the Boost::Graph Runtime libraries. -%package -n libboost_iostreams-@lib_appendix@ +%package -n libboost_iostreams@lib_appendix@ License: BSD 3-Clause Summary: Boost::IOStreams Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_iostreams-@lib_appendix@ +%description -n libboost_iostreams@lib_appendix@ This package contains the Boost::IOStreams Runtime libraries. -%package -n libboost_math-@lib_appendix@ +%package -n libboost_math@lib_appendix@ License: BSD 3-Clause Summary: Boost::Math Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_math-@lib_appendix@ +%description -n libboost_math@lib_appendix@ This package contains the Boost::Math Runtime libraries. %if %build_mpi -%package -n libboost_mpi-@lib_appendix@ +%package -n libboost_mpi@lib_appendix@ License: BSD 3-Clause Summary: Boost::MPI Runtime libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_mpi-@lib_appendix@ +%description -n libboost_mpi@lib_appendix@ This package contains the Boost::MPI Runtime libraries. %endif -%package -n libboost_test-@lib_appendix@ +%package -n libboost_test@lib_appendix@ License: BSD 3-Clause Summary: Boost::Test Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_test-@lib_appendix@ +%description -n libboost_test@lib_appendix@ This package contains the Boost::Test runtime libraries. -%package -n libboost_program_options-@lib_appendix@ +%package -n libboost_program_options@lib_appendix@ License: BSD 3-Clause Summary: Boost::ProgramOptions Runtime libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_program_options-@lib_appendix@ +%description -n libboost_program_options@lib_appendix@ This package contains the Boost::ProgramOptions Runtime libraries. -%package -n libboost_python-@lib_appendix@ +%package -n libboost_python@lib_appendix@ License: BSD 3-Clause Summary: Boost::Python Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_python-@lib_appendix@ +%description -n libboost_python@lib_appendix@ This package contains the Boost::Python Runtime libraries. -%package -n libboost_serialization-@lib_appendix@ +%package -n libboost_serialization@lib_appendix@ License: BSD 3-Clause Summary: Boost::Serialization Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_serialization-@lib_appendix@ +%description -n libboost_serialization@lib_appendix@ This package contains the Boost::Serialization Runtime libraries. -%package -n libboost_signals-@lib_appendix@ +%package -n libboost_signals@lib_appendix@ License: BSD 3-Clause Summary: Boost::Signals Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_signals-@lib_appendix@ +%description -n libboost_signals@lib_appendix@ This package contains the Boost::Signals Runtime libraries. -%package -n libboost_system-@lib_appendix@ +%package -n libboost_system@lib_appendix@ License: BSD 3-Clause Summary: Boost::System Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_system-@lib_appendix@ +%description -n libboost_system@lib_appendix@ This package contains the Boost::System runtime libraries. -%package -n libboost_thread-@lib_appendix@ +%package -n libboost_thread@lib_appendix@ License: BSD 3-Clause Summary: Boost::Thread Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_thread-@lib_appendix@ +%description -n libboost_thread@lib_appendix@ This package contains the Boost::Thread runtime libraries. -%package -n libboost_wave-@lib_appendix@ +%package -n libboost_wave@lib_appendix@ License: BSD 3-Clause Summary: Boost::Wave Runtime Libraries Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_wave-@lib_appendix@ +%description -n libboost_wave@lib_appendix@ This package contains the Boost::Wave runtime libraries. -%package -n libboost_regex-@lib_appendix@ +%package -n libboost_regex@lib_appendix@ License: BSD 3-Clause Summary: The Boost::Regex runtime library Group: System/Libraries Requires: %{name}-license = %{version} AutoReqProv: on -%description -n libboost_regex-@lib_appendix@ +%description -n libboost_regex@lib_appendix@ This package contains the Boost::Regex runtime library. %prep %setup -q -n %{name}_@file_version@ -a 2 -cp %{S:4} . find -name .cvsignore -exec rm -f {} + #everything in the tarball has the executable flag set ...... find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl \) -exec chmod -x {} + @@ -332,61 +328,137 @@ find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl \) -exec chmod -x {} %patch5 %patch6 %patch8 -%patch17 +%patch9 +%patch18 +%patch19 +%patch20 +%patch21 chmod +x configure #stupid build machinery copies .orig files find . -name \*.orig -exec rm {} + %build -# define bjam_config -d2 --layout=system %{?jobs:-j%jobs} -%define bjam_config -d2 %{?jobs:-j%jobs} find . -type f -exec chmod u+w {} + + # Now build it -BUILD_FLAGS="--with-toolset=gcc --prefix=%{buildroot}/usr --libdir=%{buildroot}%{_libdir} --with-bjam=/usr/bin/bjam" +J_P=%{jobs} +J_G=$(getconf _NPROCESSORS_CONF) + +if test -z "$JOBS"; then + JOBS=$J_G +else + test 1 -gt "$JOBS" && JOBS=1 +fi +if test "$JOBS" == "0"; then + JOBS=1 +fi + +# In case you want more parallel jobs then autobuild grants you +#if [ $J_P -gt $J_I ]; then +# JOBS=$J_G +#fi + +BJAM_CONFIG="-d2 -j$JOBS -sICU_PATH=%{_prefix}" PYTHON_VERSION=$(python -c 'import sys; print sys.version[:3]') PYTHON_FLAGS="--with-python-root=/usr --with-python-version=$PYTHON_VERSION" REGEX_FLAGS="--with-icu" -#BJAM_TARGET=rpm -export EXPAT_INCLUDE=/usr/include EXPAT_LIBPATH=%{_libdir} -BJAM_CONFIG="%bjam_config" BJAM_TARGET="$BJAM_TARGET" ./configure $BUILD_FLAGS $PYTHON_FLAGS $REGEX_FLAGS -%if %build_mpi -echo "using mpi ;" >> user-config.jam -%endif -export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-deprecated" -make all +export EXPAT_INCLUDE=/usr/include EXPAT_LIBPATH=%{_libdir} REGEX_FLAGS="--with-icu" +export PYTHON_FLAGS + +cat << EOF >user-config.jam +# Boost.Build Configuration + +# Compiler configuration +using gcc ; + +# Python configuration +using python : ${PYTHON_VERSION} : %{_prefix} ; +using mpi ; +EOF + +# Set PATH, MANPATH and LD_LIBRARY_PATH +source /var/mpi-selector/data/$(cat /etc/sysconfig/mpi-selector).sh + +%{_bindir}/bjam ${BJAM_CONFIG} --user-config=user-config.jam cflags="%{optflags}" cxxflags="%{optflags}" stage || (echo "Not all Boost libraries built properly."; exit 1) %install -mkdir -p %{buildroot}%{_libdir} -mkdir -p %{buildroot}%{_includedir} +# Now build it +J_P=%{jobs} +J_G=$(getconf _NPROCESSORS_CONF) + +if test -z "$JOBS"; then + JOBS=$J_G +else + test 1 -gt "$JOBS" && JOBS=1 +fi +if test "$JOBS" == "0"; then + JOBS=1 +fi + +# In case you want more parallel jobs then autobuild grants you +if [ $J_P -gt $J_I ]; then + JOBS=$J_G +fi + +BJAM_CONFIG="-d2 -j$JOBS -sICU_PATH=%{_prefix}" +PYTHON_VERSION=$(python -c 'import sys; print sys.version[:3]') +PYTHON_FLAGS="--with-python-root=/usr --with-python-version=$PYTHON_VERSION" +REGEX_FLAGS="--with-icu" +export EXPAT_INCLUDE=/usr/include EXPAT_LIBPATH=%{_libdir} REGEX_FLAGS="--with-icu" +export PYTHON_FLAGS + +# Set PATH, MANPATH and LD_LIBRARY_PATH +source /var/mpi-selector/data/$(cat /etc/sysconfig/mpi-selector).sh + +%{_bindir}/bjam ${BJAM_CONFIG} --user-config=user-config.jam \ + --prefix=%{buildroot}%{_prefix} \ + --exec-prefix=$%{buildroot}%{_prefix} \ + --libdir=%{buildroot}%{_libdir} \ + --includedir=%{buildroot}%{_includedir} \ + install || echo "Not all Boost libraries built properly." + +mv %{buildroot}%{_includedir}/boost-@short_version@/boost %{buildroot}%{_includedir}/ + mkdir -p %{buildroot}%{_docdir}/boost-%{version} -# install lib -for i in $(find stage -type f -name \*.a); do - NAME=$(basename $i); - install -p -m 0644 $i %{buildroot}%{_libdir}/$NAME; -done; -cd stage/lib -for lib in $(find . -follow -name \*-gcc??-mt-@short_version@.so); do - NAME=${lib}.%{version} - SONAME_MT=$(echo $lib | sed -e 's/-gcc..-mt-@short_version@/-mt/g') - SONAME=$(echo $lib | sed -e 's/-gcc..-mt-@short_version@//g') - rm $lib - ln -sf $NAME $SONAME_MT - ln -sf $NAME $SONAME + +## install lib +#for i in $(find stage -type f -name \*.a); do +# NAME=$(basename $i); +# install -p -m 0644 $i %{buildroot}%{_libdir}/$NAME; +#done; + +#pushd stage/lib +#for lib in $(find . -name \*.so.%{version}); do +# BASE=$(basename ${lib} .so.%{version}) +# SONAME_MT="$BASE-mt.so" +# ln -sf $NAME $SONAME_MT +#done +#popd + +pushd %{buildroot}%{_libdir} +for lib in $(find . -name \*.so.%{version}); do + BASE=$(basename ${lib} .so.%{version}) + SONAME_MT="$BASE-mt.so" + ln -sf ${lib} $SONAME_MT done -cd ../.. -mv stage/lib/*.so* %{buildroot}%{_libdir} +popd + + +# mv stage/lib/*.so* %{buildroot}%{_libdir} # install include files -for i in $(find boost -type d); do - mkdir -p %{buildroot}%{_includedir}/$i -done -for i in $(find boost -type f); do - install -p -m 644 $i %{buildroot}%{_includedir}/$i -done -chmod +x %{buildroot}%{_includedir}/boost/signals/detail/gen_signal_N.pl \ - %{buildroot}%{_includedir}/boost/pool/detail/pool_construct_simple.sh \ - %{buildroot}%{_includedir}/boost/pool/detail/pool_construct.sh \ - %{buildroot}%{_includedir}/boost/function/gen_function_N.pl \ - %{buildroot}%{_includedir}/boost/function/detail/gen_maybe_include.pl +#for i in $(find boost -type d); do +# mkdir -p %{buildroot}%{_includedir}/$i +#done +#for i in $(find boost -type f); do +# install -p -m 644 $i %{buildroot}%{_includedir}/$i +#done +#chmod +x %{buildroot}%{_includedir}/boost/signals/detail/gen_signal_N.pl \ +# %{buildroot}%{_includedir}/boost/pool/detail/pool_construct_simple.sh \ +# %{buildroot}%{_includedir}/boost/pool/detail/pool_construct.sh \ +# %{buildroot}%{_includedir}/boost/function/gen_function_N.pl \ +# %{buildroot}%{_includedir}/boost/function/detail/gen_maybe_include.pl + + #install the man pages install -d %buildroot/%{_mandir}/man3 install -d %buildroot/%{_mandir}/man7 @@ -395,6 +467,7 @@ for page in $(find . -type f); do install -p -m 644 $page %buildroot/%{_mandir}/$page done popd + #install doc files dos2unix libs/ptr_container/doc/tutorial_example.html \ libs/parameter/doc/html/reference.html \ @@ -414,114 +487,107 @@ find %{buildroot}%{_docdir}/boost-%{version} -name \*.py -exec chmod -x {} + %fdupes %buildroot %endif -%post -n libboost_date_time-@lib_appendix@ -p /sbin/ldconfig -%post -n libboost_filesystem-@lib_appendix@ -p /sbin/ldconfig -%post -n libboost_iostreams-@lib_appendix@ -p /sbin/ldconfig -%post -n libboost_test-@lib_appendix@ -p /sbin/ldconfig -%post -n libboost_program_options-@lib_appendix@ -p /sbin/ldconfig -%post -n libboost_python-@lib_appendix@ -p /sbin/ldconfig -%post -n libboost_regex-@lib_appendix@ -p /sbin/ldconfig -%post -n libboost_serialization-@lib_appendix@ -p /sbin/ldconfig -%post -n libboost_signals-@lib_appendix@ -p /sbin/ldconfig -%post -n libboost_thread-@lib_appendix@ -p /sbin/ldconfig -%post -n libboost_math-@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_date_time@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_filesystem@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_iostreams@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_test@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_program_options@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_python@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_regex@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_serialization@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_signals@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_thread@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_math@lib_appendix@ -p /sbin/ldconfig %if %build_mpi -%post -n libboost_mpi-@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_mpi@lib_appendix@ -p /sbin/ldconfig %endif -%post -n libboost_graph-@lib_appendix@ -p /sbin/ldconfig -%post -n libboost_system-@lib_appendix@ -p /sbin/ldconfig -%post -n libboost_wave-@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_graph@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_system@lib_appendix@ -p /sbin/ldconfig +%post -n libboost_wave@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_date_time-@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_filesystem-@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_iostreams-@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_test-@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_program_options-@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_python-@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_regex-@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_serialization-@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_signals-@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_thread-@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_math-@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_date_time@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_filesystem@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_iostreams@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_test@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_program_options@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_python@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_regex@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_serialization@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_signals@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_thread@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_math@lib_appendix@ -p /sbin/ldconfig %if %build_mpi -%postun -n libboost_mpi-@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_mpi@lib_appendix@ -p /sbin/ldconfig %endif -%postun -n libboost_graph-@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_system-@lib_appendix@ -p /sbin/ldconfig -%postun -n libboost_wave-@lib_appendix@ -p /sbin/ldconfig - - -%files -%defattr(-, root, root, -) -%doc README +%postun -n libboost_graph@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_system@lib_appendix@ -p /sbin/ldconfig +%postun -n libboost_wave@lib_appendix@ -p /sbin/ldconfig %files license %defattr(-, root, root, -) %doc LICENSE_1_0.txt -%files -n libboost_date_time-@lib_appendix@ +%files -n libboost_date_time@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_date_time*.so.* -%files -n libboost_filesystem-@lib_appendix@ +%files -n libboost_filesystem@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_filesystem*.so.* -%files -n libboost_graph-@lib_appendix@ +%files -n libboost_graph@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_graph*.so.* -%files -n libboost_iostreams-@lib_appendix@ +%files -n libboost_iostreams@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_iostreams*.so.* -%files -n libboost_math-@lib_appendix@ +%files -n libboost_math@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_math_*.so.* %if %build_mpi -%files -n libboost_mpi-@lib_appendix@ +%files -n libboost_mpi@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_mpi*.so.* -#%{_libdir}/libboost_mpi*.so -#%{_libdir}/mpi*.so.%{version} -#%{_libdir}/mpi*.so +%{_libdir}/mpi.so %endif -%files -n libboost_test-@lib_appendix@ +%files -n libboost_test@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_prg_exec_monitor*.so.* %{_libdir}/libboost_unit_test_framework*.so.* -%files -n libboost_program_options-@lib_appendix@ +%files -n libboost_program_options@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_program_options*.so.* -%files -n libboost_python-@lib_appendix@ +%files -n libboost_python@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_python*.so.* -%files -n libboost_serialization-@lib_appendix@ +%files -n libboost_serialization@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_*serialization*.so.* -%files -n libboost_signals-@lib_appendix@ +%files -n libboost_signals@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_signals*.so.* -%files -n libboost_system-@lib_appendix@ +%files -n libboost_system@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_system*.so.* -%files -n libboost_thread-@lib_appendix@ +%files -n libboost_thread@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_thread*.so.* -%files -n libboost_wave-@lib_appendix@ +%files -n libboost_wave@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_wave*.so.* -%files -n libboost_regex-@lib_appendix@ +%files -n libboost_regex@lib_appendix@ %defattr(-, root, root, -) %{_libdir}/libboost_regex*.so.* diff --git a/mkspec.sh b/mkspec.sh index 47715d1..6c3ddc7 100644 --- a/mkspec.sh +++ b/mkspec.sh @@ -2,15 +2,13 @@ version=1.36.0 man_version=1.33.1 -gcc_version=43 file_version="$(echo $version|sed 's/\./_/g')" short_version="$(echo $file_version | cut -d_ -f 1,2)" -gcc_part="gcc$gcc_version" -lib_appendix="${gcc_part}-mt-${short_version}-${file_version}" - man_file_version="$(echo $man_version|sed 's/\./_/g')" +lib_appendix="${file_version}" + sed -e "s/@lib_appendix@/$lib_appendix/g" \ -e "s/@man_version@/$man_version/g" \ -e "s/@man_file_version@/$man_file_version/g" \ diff --git a/pre_checkin.sh b/pre_checkin.sh new file mode 100644 index 0000000..838f8c5 --- /dev/null +++ b/pre_checkin.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# This script is called automatically during autobuild checkin +# and ensures that boost.spec is up-to-date + +case $0 in + \./*) + here=$PWD + ;; + */*) + here=${0%/*} + ;; + *) + here=$PWD + ;; +esac + +. ${here}/mkspec.sh +