diff options
Diffstat (limited to 'packaging/boost.spec')
-rw-r--r-- | packaging/boost.spec | 566 |
1 files changed, 566 insertions, 0 deletions
diff --git a/packaging/boost.spec b/packaging/boost.spec new file mode 100644 index 0000000000..1e7a0fa0e4 --- /dev/null +++ b/packaging/boost.spec @@ -0,0 +1,566 @@ +%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 |