%define ver 1.49.0 %define file_version 1_49_0 %define short_version 1_49 %define lib_appendix %{nil} #Define to 0 to not generate the pdf documentation %define build_pdf 0 %define package_pdf 0 # Just hardcode build_mpi to 1 as soon as openmpi builds on all # named architectures. %define build_mpi 0 %define disable_long_double 0 %define boost_libs1 libboost_date_time%{lib_appendix} libboost_filesystem%{lib_appendix} libboost_graph%{lib_appendix} %define boost_libs2 libboost_iostreams%{lib_appendix} libboost_math%{lib_appendix} libboost_test%{lib_appendix} %define boost_libs3 libboost_program_options%{lib_appendix} libboost_python%{lib_appendix} libboost_serialization%{lib_appendix} %define boost_libs4 libboost_signals%{lib_appendix} libboost_system%{lib_appendix} libboost_thread%{lib_appendix} %define boost_libs5 libboost_wave%{lib_appendix} libboost_regex%{lib_appendix} libboost_regex%{lib_appendix} %define boost_libs6 libboost_random%{lib_appendix} libboost_chrono%{lib_appendix} libboost_locale%{lib_appendix} %define boost_libs7 libboost_timer%{lib_appendix} %define most_libs %boost_libs1 %boost_libs2 %boost_libs3 %boost_libs4 %boost_libs5 %boost_libs6 %boost_libs7 %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 BuildRequires: dos2unix BuildRequires: chrpath BuildRequires: gcc-c++ BuildRequires: bzip2-devel BuildRequires: zlib-devel BuildRequires: expat-devel BuildRequires: libicu-devel BuildRequires: python-devel BuildRequires: xz %if %build_mpi BuildRequires: openmpi-devel %endif BuildRequires: fdupes Url: http://www.boost.org Summary: Boost C++ Libraries License: BSD-3-Clause Group: Development/Libraries/C and C++ BuildRoot: %{_tmppath}/%{name}-%{version}-build Version: 1.49.0 Release: 0 Source0: %{name}_%{file_version}.tar.bz2 Source1: boost-rpmlintrc Source4: existing_extra_docs %define _docdir %{_datadir}/doc/packages/boost %description Boost provides free peer-reviewed portable C++ source libraries. The emphasis is on libraries that work well with the C++ Standard Library. One goal is to establish "existing practice" and provide reference implementations so that the Boost libraries are suitable for eventual standardization. Some of the libraries have already been proposed for inclusion in the C++ Standards Committee's upcoming C++ Standard Library Technical Report. Although Boost was begun by members of the C++ Standards Committee Library Working Group, membership has expanded to include nearly two thousand members of the C++ community at large. This package is mainly needed for updating from a prior version, the dynamic libraries are found in their respective package. For development using Boost, you also need the boost-devel package. For documentation, see the boost-doc package. %package devel Summary: Development package for Boost C++ Group: Development/Libraries/C and C++ Requires: %{all_libs} Requires: libstdc++-devel %description devel This package contains all that is needed to develop/compile applications that use the Boost C++ libraries. For documentation see the documentation packages (html, man or pdf). %package -n boost-license%{lib_appendix} Summary: Boost License Group: Development/Libraries/C and C++ Provides: boost-license = %{version}-%{release} Obsoletes: boost-license < %{version} BuildArch: noarch %description -n boost-license%{lib_appendix} This package contains the license boost is provided under. %package -n libboost_date_time%{lib_appendix} Summary: Boost::Date.Time Runtime libraries Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_date_time%{lib_appendix} This package contains the Boost Date.Time runtime libraries. %package -n libboost_filesystem%{lib_appendix} Summary: Boost::Filesystem Runtime Libraries Group: System/Localization Requires: boost-license%{lib_appendix} %description -n libboost_filesystem%{lib_appendix} This package contains the Boost::Filesystem libraries. %package -n libboost_graph%{lib_appendix} Summary: Boost::Graph Runtime Libraries Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_graph%{lib_appendix} This package contains the Boost::Graph Runtime libraries. %package -n libboost_iostreams%{lib_appendix} Summary: Boost::IOStreams Runtime Libraries Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_iostreams%{lib_appendix} This package contains the Boost::IOStreams Runtime libraries. %package -n libboost_math%{lib_appendix} Summary: Boost::Math Runtime Libraries Group: System/Libraries Requires: boost-license%{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} Summary: Boost::MPI Runtime libraries Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_mpi%{lib_appendix} This package contains the Boost::MPI Runtime libraries. %endif %package -n libboost_test%{lib_appendix} Summary: Boost::Test Runtime Libraries Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_test%{lib_appendix} This package contains the Boost::Test runtime libraries. %package -n libboost_program_options%{lib_appendix} Summary: Boost::ProgramOptions Runtime libraries Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_program_options%{lib_appendix} This package contains the Boost::ProgramOptions Runtime libraries. %package -n libboost_python%{lib_appendix} Summary: Boost::Python Runtime Libraries Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_python%{lib_appendix} This package contains the Boost::Python Runtime libraries. %package -n libboost_serialization%{lib_appendix} Summary: Boost::Serialization Runtime Libraries Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_serialization%{lib_appendix} This package contains the Boost::Serialization Runtime libraries. %package -n libboost_signals%{lib_appendix} Summary: Boost::Signals Runtime Libraries Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_signals%{lib_appendix} This package contains the Boost::Signals Runtime libraries. %package -n libboost_system%{lib_appendix} Summary: Boost::System Runtime Libraries Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_system%{lib_appendix} This package contains the Boost::System runtime libraries. %package -n libboost_thread%{lib_appendix} Summary: Boost::Thread Runtime Libraries Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_thread%{lib_appendix} This package contains the Boost::Thread runtime libraries. %package -n libboost_wave%{lib_appendix} Summary: Boost::Wave Runtime Libraries Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_wave%{lib_appendix} This package contains the Boost::Wave runtime libraries. %package -n libboost_regex%{lib_appendix} Summary: The Boost::Regex runtime library Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_regex%{lib_appendix} This package contains the Boost::Regex runtime library. %package -n libboost_random%{lib_appendix} Summary: The Boost::Random runtime library Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_random%{lib_appendix} This package contains the Boost::Random runtime library. %package -n libboost_chrono%{lib_appendix} Summary: The Boost::Chrono runtime library Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_chrono%{lib_appendix} This package contains the Boost::Chrono runtime library. %package -n libboost_locale%{lib_appendix} Summary: The Boost::Locale runtime library Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_locale%{lib_appendix} This package contains the Boost::Locale runtime library. %package -n libboost_timer%{lib_appendix} Summary: The Boost::Timer runtime library Group: System/Libraries Requires: boost-license%{lib_appendix} %description -n libboost_timer%{lib_appendix} This package contains the Boost::Timer runtime library. %prep %setup -q -n %{name}_%{file_version} #everything in the tarball has the executable flag set ... find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl \) -exec chmod -x {} + #stupid build machinery copies .orig files find . -name \*.orig -exec rm {} + %build find . -type f -exec chmod u+w {} + # Now build it J_P=%{jobs} J_G=$(getconf _NPROCESSORS_ONLN) [ $J_G -gt 64 ] && J_G=64 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 %if %{disable_long_double} export LONG_DOUBLE_FLAGS="--disable-long-double" %endif 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 cat << EOF >user-config.jam # Boost.Build Configuration # Compiler configuration using gcc ; # Python configuration using python : ${PYTHON_VERSION} : %{_prefix} ; EOF %if %build_mpi cat << EOF >>user-config.jam using mpi ; EOF # Set PATH, MANPATH and LD_LIBRARY_PATH source /var/mpi-selector/data/$(rpm --qf "%{NAME}-%{VERSION}" -q openmpi).sh %endif sh ./bootstrap.sh ./b2 %install # Now build it J_P=%{jobs} J_G=$(getconf _NPROCESSORS_ONLN) [ $J_G -gt 64 ] && J_G=64 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_G ]; 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 %if %build_mpi source /var/mpi-selector/data/$(rpm --qf "%{NAME}-%{VERSION}" -q openmpi).sh %endif %{_bindir}/bjam ${BJAM_CONFIG} ${LONG_DOUBLE_FLAGS} --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." mkdir -p %{buildroot}%{_docdir} pushd %{buildroot}%{_libdir} blibs=$(find . -name \*.so.%{version}) echo $blibs | xargs chrpath -d for lib in ${blibs}; do BASE=$(basename ${lib} .so.%{version}) SONAME_MT="$BASE-mt.so" ln -sf ${lib} $SONAME_MT done popd #install the man pages rm -rf doc/man/man3/boost::units::operator for sec in 3 7 9; do install -d %buildroot/%{_mandir}/man${sec} done #install doc files dos2unix libs/ptr_container/doc/tutorial_example.html \ libs/parameter/doc/html/reference.html \ libs/parameter/doc/html/index.html \ libs/iostreams/doc/tree/tree.js \ libs/graph/doc/lengauer_tarjan_dominator.htm \ libs/test/test/test_files/errors_handling_test.pattern \ libs/test/test/test_files/result_report_test.pattern find . -name \*.htm\* -o -name \*.gif -o -name \*.css -o -name \*.jpg -o -name \*.png -o -name \*.ico | \ tar --files-from=%{S:4} -cf - --files-from=- | tar -C %{buildroot}%{_docdir} -xf - rm -rf %{buildroot}%{_docdir}/boost ln -s /usr/include/boost %{buildroot}%{_docdir} ln -s ../LICENSE_1_0.txt %{buildroot}%{_docdir}/libs #Copy the news file. #cp %%{S:5} %%{buildroot}%%{_docdir} #only for documentation, doesn't need to be executable find %{buildroot}%{_docdir} -name \*.py -exec chmod -x {} + rm -f %{buildroot}%{_libdir}/*.a #symlink dupes %fdupes %buildroot %remove_docs %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 %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_random%{lib_appendix} -p /sbin/ldconfig %post -n libboost_chrono%{lib_appendix} -p /sbin/ldconfig %post -n libboost_locale%{lib_appendix} -p /sbin/ldconfig %post -n libboost_timer%{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 %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 %postun -n libboost_random%{lib_appendix} -p /sbin/ldconfig %postun -n libboost_chrono%{lib_appendix} -p /sbin/ldconfig %postun -n libboost_locale%{lib_appendix} -p /sbin/ldconfig %postun -n libboost_timer%{lib_appendix} -p /sbin/ldconfig %files -n boost-license%{lib_appendix} %defattr(-, root, root, -) ##%doc %{_docdir}/LICENSE_1_0.txt %files -n libboost_date_time%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_date_time*.so.* %files -n libboost_filesystem%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_filesystem*.so.* %files -n libboost_graph%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_graph*.so.* %files -n libboost_iostreams%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_iostreams*.so.* %files -n libboost_math%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_math_*.so.* %if %build_mpi %files -n libboost_mpi%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_mpi*.so.* %{_libdir}/mpi.so %endif %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} %defattr(-, root, root, -) %{_libdir}/libboost_program_options*.so.* %files -n libboost_python%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_python*.so.* %files -n libboost_serialization%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_*serialization*.so.* %files -n libboost_signals%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_signals*.so.* %files -n libboost_system%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_system*.so.* %files -n libboost_thread%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_thread*.so.* %files -n libboost_wave%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_wave*.so.* %files -n libboost_regex%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_regex*.so.* %files -n libboost_random%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_random*.so.* %files -n libboost_chrono%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_chrono*.so.* %files -n libboost_locale%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_locale*.so.* %files -n libboost_timer%{lib_appendix} %defattr(-, root, root, -) %{_libdir}/libboost_timer*.so.* %files devel %defattr(-, root, root, -) %{_includedir}/boost %{_libdir}/*.so %if %build_mpi %exclude %{_libdir}/mpi.so %endif #%%{_datadir}/aclocal/*.m4 %changelog