Mageia Bugzilla – Attachment 7022 Details for
Bug 16756
boost-1.58 is missing mpi
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
New Account
|
Forgot Password
boost spec
boost.spec (text/plain), 27.17 KB, created by
Barry Jackson
on 2015-09-20 16:53:05 CEST
(
hide
)
Description:
boost spec
Filename:
MIME Type:
Creator:
Barry Jackson
Created:
2015-09-20 16:53:05 CEST
Size:
27.17 KB
patch
obsolete
># Support for documentation installation As the %%doc macro erases the ># target directory (%%{buildroot}%%{_docdir}/%%{name}), manually ># installed documentation must be saved into a temporary dedicated ># directory. >## TODO note that as of rpm 4.9.1, this shouldn't be necessary anymore. ># We should be able to install directly. > >%define boost_docdir __tmp_docdir >%define boost_examplesdir __tmp_examplesdir >%define toplev_dirname %{name}_%(echo "%{version}"|tr \. _) >%define libname %mklibname %{name} %{version} >%define libnamedevel %mklibname %{name} -d >%define libnamestaticdevel %mklibname %{name} -d -s >%define libnamempi %mklibname %{name}-openmpi %{version} >%define devnamempi %mklibname %{name}-openmpi -d >%define libnamempich %mklibname %{name}-mpich %{version} >%define devnamempich %mklibname %{name}-mpich -d >%define libnamegraphmpich %mklibname %{name}-graph-mpich %{version} >%define libnamepy3 %mklibname %{name}-python3 _%{version} >%define devnamepy3 %mklibname %{name}-python3 -d >%define libnamempipy %mklibname %{name}-mpi-python %{version} >%define devnamempipy %mklibname %{name}-mpi-python -d >%define libnamempichpy %mklibname %{name}-mpich-python %{version} >%define libnamegraphmpi %mklibname %{name}-graph-mpi %{version} >%define devnamegraphmpi %mklibname %{name}-graph-mpi -d >%define libnamethread %mklibname %{name}_thread %{version} >%define devnamethread %mklibname %{name}_thread -d >%define libnamesystem %mklibname %{name}_system %{version} > ># Fedora multi-arch conditionals left here in case ever needed >%ifarch ppc64le > %bcond_with mpich >%else > %bcond_without mpich >%endif > >%ifarch s390 s390x ppc64le ># No OpenMPI support on these arches > %bcond_with openmpi >%else > %bcond_without openmpi >%endif > >%ifnarch %{ix86} x86_64 %{arm} ppc64 ppc64le aarch64 > %bcond_with context >%else > %bcond_without context >%endif > >%bcond_without python3 > >################ >Name: boost >Summary: The free peer-reviewed portable C++ source libraries >Version: 1.59.0 >Release: %mkrel 0.90 >License: Boost and MIT and Python >URL: http://boost.org >Group: Development/C++ ># http://downloads.sourceforge.net/boost/boost_1_59_0.tar.bz2 >Source0: http://downloads.sourceforge.net/%{name}/%{toplev_dirname}.tar.bz2 >Source1: ver.py >Source2: libboost_thread.so > >BuildRequires: m4 >BuildRequires: libstdc++-devel >BuildRequires: bzip2-devel >BuildRequires: pkgconfig(zlib) >BuildRequires: pkgconfig(python) >%if %{with python3} >BuildRequires: pkgconfig(python3) >%endif >BuildRequires: libicu-devel > ># (barjac) Allows building in iurt on local machine >Patch1: boost-1.58-mga-fix_local_iurt_build.patch > ># https://svn.boost.org/trac/boost/ticket/6150 >Patch4: boost-1.50.0-fix-non-utf8-files.patch > ># Add a manual page for 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=828856 ># https://bugzilla.redhat.com/show_bug.cgi?id=828857 ># https://svn.boost.org/trac/boost/ticket/6701 >Patch15: boost-1.58.0-pool.patch > ># https://svn.boost.org/trac/boost/ticket/5637 >Patch25: boost-1.57.0-mpl-print.patch > ># https://svn.boost.org/trac/boost/ticket/8870 >Patch36: boost-1.57.0-spirit-unused_typedef.patch > ># https://svn.boost.org/trac/boost/ticket/8878 >Patch45: boost-1.54.0-locale-unused_typedef.patch > ># https://svn.boost.org/trac/boost/ticket/9038 >Patch51: boost-1.58.0-pool-test_linking.patch > ># https://bugzilla.redhat.com/show_bug.cgi?id=1102667 >Patch61: boost-1.57.0-python-libpython_dep.patch >Patch62: boost-1.57.0-python-abi_letters.patch >Patch63: boost-1.55.0-python-test-PyImport_AppendInittab.patch > ># https://bugzilla.redhat.com/show_bug.cgi?id=1190039 >Patch65: boost-1.57.0-build-optflags.patch > ># Prevent gcc.jam from setting -m32 or -m64. >Patch68: boost-1.58.0-address-model.patch > ># https://svn.boost.org/trac/boost/ticket/11549 >Patch70: boost-1.59.0-log.patch > ># https://github.com/boostorg/python/pull/40 >Patch80: boost-1.59-python-make_setter.patch > >%bcond_with tests >%bcond_with docs_generated ># (barjac) split out 'thread' from $boostlibs loop and add manually to better control provides >%define boostlibs atomic chrono container context coroutine date_time filesystem graph iostreams locale log math prg_exec_monitor program_options python random regex serialization signals system timer unit_test_framework wave wserialization ># (Anssi 01/2010) dashes are converted to underscores for macros ($lib2); ># The sed script adds _ when library name ends in number. >%{expand:%(for lib in %boostlibs; do lib2=${lib/-/_}; cat <<EOF >%%global libname$lib2 %%mklibname boost_$(echo $lib | sed 's,[0-9]$,&_,') %{version} >%%package -n %%{libname$lib2} > >Summary: Boost $lib shared library ># no one should require this, but provided anyway for maximum compatibility: >Provides: boost = %version-%release >Group: System/Libraries >EOF >done)} ># (Anssi 01/2010) splitted expand contents due to rpm bug failing build, ># triggered by a too long expanded string. >%{expand:%(for lib in %boostlibs; do lib2=${lib/-/_}; cat <<EOF >%%description -n %%{libname$lib2} >Boost is a collection of free peer-reviewed portable C++ source >libraries. The emphasis is on libraries which work well with the C++ >Standard Library. This package contains the shared library needed for >running programs dynamically linked against Boost $lib. >EOF >done)} >%{expand:%(for lib in %boostlibs; do lib2=${lib/-/_}; cat <<EOF >%%files -n %%{libname$lib2} >%%doc LICENSE_1_0.txt >%{_libdir}/libboost_$lib*.so.%{version} >EOF >done)} > >%description >Boost provides free peer-reviewed portable C++ source libraries. The >emphasis is on libraries which work well with the C++ Standard >Library, in the hopes of establishing "existing practice" for >extensions and providing reference implementations so that the Boost >libraries are suitable for eventual standardization. (Some of the >libraries have already been included in the C++ 2011 standard and >others have been proposed to the C++ Standards Committee for inclusion >in future standards.) > >%package -n %{libnamethread} >Summary: Boost thread shared library >Group: System/Libraries >Provides: boost = %version-%release >Requires: %{libnamesystem} = %{version}-%{release} > >%description -n %{libnamethread} >Boost is a collection of free peer-reviewed portable C++ source >libraries. The emphasis is on libraries which work well with the C++ >Standard Library. This package contains the shared library needed for >running programs dynamically linked against Boost thread. > >%package -n %{devnamethread} >Summary: Shared object symbolic links for thread >Group: System/Libraries >Requires: %{libnamethread} = %{version}-%{release} >Provides: %{name}_thread-devel = %{version}-%{release} >Provides: lib%{name}_thread_devel = %{version}-%{release} >Provides: devel(libboost_thread%([ "%{?_lib}" = "lib64" ] && echo "(64bit)")) = %{version}-%{release} > >%description -n %{devnamethread} >Devel package for boost_thread. > >%if %{with python3} > >%package -n %{libnamepy3} >Summary: Run-Time component of boost python library for Python 3 >Group: System/Libraries > >%description -n %{libnamepy3} >The Boost Python Library is a framework for interfacing Python and >C++. It allows you to quickly and seamlessly expose C++ classes, >functions and objects to Python, and vice versa, using no special >tools -- just your C++ compiler. This package contains run-time >support for Boost Python Library compiled for Python 3. > >%package -n %{devnamepy3} >Summary: Shared object symbolic links for Boost.Python 3 >Group: System/Libraries >Requires: %{libnamepy3} = %{version}-%{release} >Requires: %{libnamedevel} = %{version}-%{release} > >%description -n %{devnamepy3} >Shared object symbolic links for Python 3 variant of Boost.Python. > >%endif > >%package -n %{libnamedevel} >Summary: The libraries and headers needed for Boost development >Group: Development/C++ >Requires: %{expand:%(for lib in %boostlibs; do echo -n "%%{libname${lib/-/_}} = %{version}-%{release} "; done)} >Requires: %{devnamethread} = %{version}-%{release} >Obsoletes: %{mklibname boost 1}-devel < %{version}-%{release} >Provides: %{name}-devel = %{version}-%{release} >Provides: lib%{name}-devel = %{version}-%{release} > >%description -n %{libnamedevel} >Boost is a collection of free peer-reviewed portable C++ source >libraries. The emphasis is on libraries which work well with the C++ >Standard Library. This package contains headers and shared library >symlinks needed for Boost development. > >%package -n %{libnamestaticdevel} >Summary: The Boost C++ static development libraries >Group: Development/Libraries >Requires: %{libnamedevel} = %{version}-%{release} >Obsoletes: boost-devel-static < 1.34.1-14 >Provides: boost-devel-static = %{version}-%{release} > >%description -n %{libnamestaticdevel} >Static Boost C++ libraries. > >%package doc >Summary: HTML documentation for the Boost C++ libraries >Group: Documentation >BuildArch: noarch >Provides: boost-python-docs = %{version}-%{release} > >%description doc >This package contains the documentation in the HTML format of the Boost C++ >libraries. The documentation provides the same content as that on the Boost >web page (http://www.boost.org/doc/libs/1_40_0). > >%package examples >Summary: Source examples for the Boost C++ libraries >Group: Documentation >BuildArch: noarch >Requires: %{libnamedevel} = %{version}-%{release} > >%description examples >This package contains example source files distributed with boost. > >%if %{with openmpi} > >%package -n %{libnamempi} >Summary: Run-Time component of Boost.MPI library >Group: System/Libraries >BuildRequires: openmpi-devel >Requires: %{_lib}boost-serialization = %{version}-%{release} > >%description -n %{libnamempi} >Run-Time support for Boost.MPI-OpenMPI, a library providing a clean C++ >API over the OpenMPI implementation of MPI. > >%package -n %{devnamempi} >Summary: Shared library symbolic links for Boost.MPI >Group: System/Libraries >Requires: %{libnamedevel} = %{version}-%{release} >Requires: %{libnamempi} = %{version}-%{release} >Requires: %{libnamempipy} = %{version}-%{release} >Requires: %{libnamegraphmpi} = %{version}-%{release} > >%description -n %{devnamempi} >Devel package for Boost.MPI-OpenMPI, a library providing a clean C++ >API over the OpenMPI implementation of MPI. > >%package -n %{libnamempipy} >Summary: Python run-time component of Boost.MPI library >Group: System/Libraries >Requires: %{libnamempi} = %{version}-%{release} >Requires: %{_lib}boost-python = %{version}-%{release} >Requires: %{_lib}boost-serialization = %{version}-%{release} > >%description -n %{libnamempipy} >Python support for Boost.MPI-OpenMPI, a library providing a clean C++ >API over the OpenMPI implementation of MPI. > >%package -n %{libnamegraphmpi} >Summary: Run-Time component of parallel boost graph library >Group: System/Libraries >Requires: %{libnamempi} = %{version}-%{release} >Requires: %{_lib}boost-serialization = %{version}-%{release} > >%description -n %{libnamegraphmpi} >Run-Time support for the Parallel BGL graph library. The interface and >graph components are generic, in the same sense as the the Standard >Template Library (STL). The libraries in this package use OpenMPI >back-end to do the parallel work. > >%endif > >%if %{with mpich} > >%package -n %{libnamempich} >Summary: Run-Time component of Boost.MPI library >Group: System/Libraries >Requires: %{_lib}boost-serialization = %{version}-%{release} >Provides: %{_lib}boost-mpich2 = %{version}-%{release} >Obsoletes: boost-mpich2 < 1.53.0-9 > >%description -n %{libnamempich} >Run-Time support for Boost.MPI-MPICH, a library providing a clean C++ >API over the MPICH implementation of MPI. > >%package -n %{devnamempich} >Summary: Shared library symbolic links for Boost.MPI >Group: System/Libraries >Requires: %{libnamedevel} = %{version}-%{release} >Requires: %{libnamempich} = %{version}-%{release} >Requires: %{libnamempichpy} = %{version}-%{release} >Requires: %{libnamegraphmpich} = %{version}-%{release} >Provides: boost-mpich2-devel = %{version}-%{release} >Obsoletes: boost-mpich2-devel < 1.53.0-9 > >%description -n %{devnamempich} >Devel package for Boost.MPI-MPICH, a library providing a clean C++ >API over the MPICH implementation of MPI. > >%package -n %{libnamempichpy} >Summary: Python run-time component of Boost.MPI library >Group: System/Libraries >Requires: %{libnamempich} = %{version}-%{release} >Requires: %{_lib}boost-python = %{version}-%{release} >Requires: %{_lib}boost-serialization = %{version}-%{release} >Provides: boost-mpich2-python = %{version}-%{release} >Obsoletes: boost-mpich2-python < 1.53.0-9 > >%description -n %{libnamempichpy} >Python support for Boost.MPI-MPICH, a library providing a clean C++ >API over the MPICH implementation of MPI. > >%package -n %{libnamegraphmpich} >Summary: Run-Time component of parallel boost graph library >Group: System/Libraries >Requires: %{libnamempich} = %{version}-%{release} >Requires: %{_lib}boost-serialization = %{version}-%{release} >Provides: boost-graph-mpich2 = %{version}-%{release} >Obsoletes: boost-graph-mpich2 < 1.53.0-9 > >%description -n %{libnamegraphmpich} >Run-Time support for the Parallel BGL graph library. The interface and >graph components are generic, in the same sense as the the Standard >Template Library (STL). This libraries in this package use MPICH >back-end to do the parallel work. > >%endif > >%package build >Summary: Cross platform build system for C++ projects >Group: Development/Tools >Requires: boost-jam >BuildArch: noarch > >%description build >Boost.Build is an easy way to build C++ projects, everywhere. You name >your pieces of executable and libraries and list their sources. Boost.Build >takes care about compiling your sources with the right options, >creating static and shared libraries, making pieces of executable, and other >chores -- whether you're using GCC, MSVC, or a dozen more supported >C++ compilers -- on Windows, OSX, Linux and commercial UNIX systems. > >%package doctools >Summary: Tools for working with Boost documentation >Group: Applications/Publishing >Requires: docbook-dtds >Requires: docbook-style-xsl > >%description doctools > >Tools for working with Boost documentation in BoostBook or QuickBook format. > >%package jam >Summary: A low-level build tool >Group: Development/Tools > >%description jam >Boost.Jam (BJam) is the low-level build engine tool for Boost.Build. >Historically, Boost.Jam is based on on FTJam and on Perforce Jam but has grown >a number of significant features and is now developed independently > >%prep >%setup -q -n %{toplev_dirname} >%patch1 -p1 >%patch4 -p1 >%patch5 -p1 >%patch15 -p0 >%patch25 -p1 >%patch36 -p1 >%patch45 -p1 >%patch51 -p1 >%patch61 -p1 >%patch62 -p1 >%patch63 -p1 >%patch65 -p1 >%patch68 -p1 >%patch70 -p2 >%patch80 -p2 > ># At least python2_version needs to be a macro so that it's visible in ># %%install as well. >%global python2_version %(/usr/bin/python2 %{SOURCE1}) >%if %{with python3} >%global python3_version %(/usr/bin/python3 %{SOURCE1}) >%global python3_abiflags %(/usr/bin/python3-config --abiflags) >%endif > ># Build section from Fedora >%build >: PYTHON2_VERSION=%{python2_version} >%if %{with python3} >: PYTHON3_VERSION=%{python3_version} >: PYTHON3_ABIFLAGS=%{python3_abiflags} >%endif > ># There are many strict aliasing warnings, and it's not feasible to go ># through them all at this time. ># There are also lots of noisy but harmless unused local typedef warnings. >export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-unused-local-typedefs" > >cat > ./tools/build/src/user-config.jam << "EOF" >import os ; >local RPM_OPT_FLAGS = [ os.environ RPM_OPT_FLAGS ] ; > >using gcc : : : <compileflags>$(RPM_OPT_FLAGS) ; >%if %{with openmpi} || %{with mpich} >using mpi ; >%endif >%if %{with python3} >using python : %{python2_version} : /usr/bin/python2 : /usr/include/python%{python2_version} : : : : ; >using python : %{python3_version} : /usr/bin/python3 : /usr/include/python%{python3_version}%{python3_abiflags} : : : : %{python3_abiflags} ; >%endif >EOF > >./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. ># ># The "python=2.*" bit tells jam that we want to _also_ build 2.*, not ># just 3.*. When omitted, it just builds for python 3 twice, once ># calling the library libboost_python and once libboost_python3. I ># assume this is for backward compatibility for apps that are used to ># linking against -lboost_python, for when 2->3 transition is ># eventually done. > >echo ============================= build serial ================== >./b2 -d+2 -q %{?_smp_mflags} \ > --without-mpi \ > --without-graph_parallel \ > --build-dir=serial \ >%if !%{with context} > --without-context \ > --without-coroutine \ >%endif > variant=release \ > threading=multi \ > debug-symbols=on \ > pch=off \ > python=%{python2_version} \ > stage > ># See libs/thread/build/Jamfile.v2 for where this file comes from. >if [ $(find serial -type f -name has_atomic_flag_lockfree \ > -print -quit | wc -l) -ne 0 ]; then > DEF=D >else > DEF=U >fi > >m4 -${DEF}HAS_ATOMIC_FLAG_LOCKFREE -DVERSION=%{version} \ > %{SOURCE2} > $(basename %{SOURCE2}) > ># Build MPI parts of Boost with OpenMPI support > ># N.B. python=2.* here behaves differently: it exactly selects a ># version that we want to build against. Boost MPI is not portable to ># Python 3 due to API changes in Python, so this suits us. >%if %{with openmpi} > >echo ============================= build $MPI_COMPILER ================== >./b2 -d+2 -q %{?_smp_mflags} \ > --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \ > variant=release threading=multi debug-symbols=on pch=off \ > python=%{python2_version} stage >export PATH=/bin${PATH:+:}$PATH >%endif > ># Build MPI parts of Boost with MPICH support >%if %{with mpich} >echo ============================= build $MPI_COMPILER ================== >./b2 -d+2 -q %{?_smp_mflags} \ > --with-mpi \ > --with-graph_parallel \ > --build-dir=$MPI_COMPILER \ > variant=release \ > threading=multi \ > debug-symbols=on \ > pch=off \ > python=%{python2_version} \ > stage >export PATH=/bin${PATH:+:}$PATH >%endif > >echo ============================= build Boost.Build ================== >(cd tools/build > ./bootstrap.sh --with-toolset=gcc) > >%check >: > >%install >rm -rf %{buildroot} >cd %{_builddir}/%{toplev_dirname} > >%if %{with openmpi} >export MPI_HOME=%{_libdir}/openmpi ># XXX We want to extract this from RPM flags ># b2 instruction-set=i686 etc. >echo ============================= install $MPI_COMPILER ================== >./b2 -q %{?_smp_mflags} \ > --with-mpi \ > --with-graph_parallel \ > --build-dir=$MPI_COMPILER \ > --stagedir=%{buildroot}${MPI_HOME} \ > variant=release \ > threading=multi \ > debug-symbols=on \ > pch=off \ > python=%{python2_version} \ > stage > ># Remove generic parts of boost that were built for dependencies. >rm -f %{buildroot}${MPI_HOME}/lib/libboost_{python,{w,}serialization}* > >export MPI_HOME= >export PATH=/bin${PATH:+:}$PATH >%endif > >%if %{with mpich} >export MPI_HOME=%{_libdir}/mpich >echo ============================= install $MPI_COMPILER ================== >./b2 -q %{?_smp_mflags} \ > --with-mpi \ > --with-graph_parallel \ > --build-dir=$MPI_COMPILER \ > --stagedir=%{buildroot}${MPI_HOME} \ > variant=release \ > threading=multi \ > debug-symbols=on \ > pch=off \ > python=%{python2_version} \ > stage > ># Remove generic parts of boost that were built for dependencies. >rm -f %{buildroot}${MPI_HOME}/lib/libboost_{python,{w,}serialization}* >export MPI_HOME= >export PATH=/bin${PATH:+:}$PATH >%endif > >echo ============================= install serial ================== >./b2 -d+2 -q %{?_smp_mflags} \ > --without-mpi \ > --without-graph_parallel \ > --build-dir=serial \ >%if !%{with context} > --without-context --without-coroutine \ >%endif > --prefix=%{buildroot}%{_prefix} \ > --libdir=%{buildroot}%{_libdir} \ > variant=release \ > threading=multi \ > debug-symbols=on \ > pch=off \ > python=%{python2_version} \ > install > ># Override DSO symlink with a linker script. See the linker script ># itself for details of why we need to do this. >[ -f %{buildroot}%{_libdir}/libboost_thread.so ] # Must be present >rm -f %{buildroot}%{_libdir}/libboost_thread.so >install -p -m 644 $(basename %{SOURCE2}) %{buildroot}%{_libdir}/ > >echo ============================= install Boost.Build ================== >(cd tools/build > ./b2 --prefix=%{buildroot}%{_prefix} install > # Fix some permissions > chmod -x %{buildroot}%{_datadir}/boost-build/src/build/alias.py > chmod +x %{buildroot}%{_datadir}/boost-build/src/tools/doxproc.py > # We don't want to distribute this > rm -f %{buildroot}%{_bindir}/b2 > # Not a real file > rm -f %{buildroot}%{_datadir}/boost-build/src/build/project.ann.py > # Empty file > rm -f %{buildroot}%{_datadir}/boost-build/src/tools/doxygen/windows-paths-check.hpp > # Install the manual page > %{__install} -p -m 644 v2/doc/bjam.1 -D %{buildroot}%{_mandir}/man1/bjam.1 >) > >echo ============================= install Boost.QuickBook ================== >(cd tools/quickbook > ../build/b2 --prefix=%{buildroot}%{_prefix} > %{__install} -p -m 755 ../../dist/bin/quickbook %{buildroot}%{_bindir}/ > cd ../boostbook > find dtd -type f -name '*.dtd' | while read tobeinstalledfiles; do > install -p -m 644 $tobeinstalledfiles -D %{buildroot}%{_datadir}/boostbook/$tobeinstalledfiles > done > find xsl -type f | while read tobeinstalledfiles; do > install -p -m 644 $tobeinstalledfiles -D %{buildroot}%{_datadir}/boostbook/$tobeinstalledfiles > done >) > ># Install documentation files (HTML pages) within the temporary place >echo ============================= install documentation ================== ># Prepare the place to temporarily store the generated documentation >rm -rf %{boost_docdir} && %{__mkdir_p} %{boost_docdir}/html >DOCPATH=%{boost_docdir} >DOCREGEX='.*\.\(html?\|css\|png\|gif\)' > >find libs doc more -type f -regex $DOCREGEX \ > | sed -n '/\//{s,/[^/]*$,,;p}' \ > | sort -u > tmp-doc-directories > >sed "s:^:$DOCPATH/:" tmp-doc-directories \ > | xargs -P 0 --no-run-if-empty %{__install} -d > >cat tmp-doc-directories | while read tobeinstalleddocdir; do > find $tobeinstalleddocdir -mindepth 1 -maxdepth 1 -regex $DOCREGEX -print0 \ > | xargs -P 0 -0 %{__install} -p -m 644 -t $DOCPATH/$tobeinstalleddocdir >done >rm -f tmp-doc-directories >%{__install} -p -m 644 -t $DOCPATH LICENSE_1_0.txt index.htm index.html boost.png rst.css boost.css > >echo ============================= install examples ================== ># Fix a few non-standard issues (DOS and/or non-UTF8 files) >sed -i -e 's/\r//g' libs/geometry/example/ml02_distance_strategy.cpp >for tmp_doc_file in flyweight/example/Jamfile.v2 \ > format/example/sample_new_features.cpp multi_index/example/Jamfile.v2 \ > multi_index/example/hashed.cpp serialization/example/demo_output.txt \ > test/example/cla/wide_string.cpp >do > mv libs/${tmp_doc_file} libs/${tmp_doc_file}.iso8859 > iconv -f ISO8859-1 -t UTF8 < libs/${tmp_doc_file}.iso8859 > libs/${tmp_doc_file} > touch -r libs/${tmp_doc_file}.iso8859 libs/${tmp_doc_file} > rm -f libs/${tmp_doc_file}.iso8859 >done > ># Prepare the place to temporarily store the examples >rm -rf %{boost_examplesdir} && mkdir -p %{boost_examplesdir}/html >EXAMPLESPATH=%{boost_examplesdir} >find libs -type d -name example -exec find {} -type f \; \ > | sed -n '/\//{s,/[^/]*$,,;p}' \ > | sort -u > tmp-doc-directories >sed "s:^:$EXAMPLESPATH/:" tmp-doc-directories \ > | xargs -P 0 --no-run-if-empty %{__install} -d >rm -f tmp-doc-files-to-be-installed && touch tmp-doc-files-to-be-installed >cat tmp-doc-directories | while read tobeinstalleddocdir >do > find $tobeinstalleddocdir -mindepth 1 -maxdepth 1 -type f \ > >> tmp-doc-files-to-be-installed >done >cat tmp-doc-files-to-be-installed | while read tobeinstalledfiles >do > if test -s $tobeinstalledfiles > then > tobeinstalleddocdir=`dirname $tobeinstalledfiles` > %{__install} -p -m 644 -t $EXAMPLESPATH/$tobeinstalleddocdir $tobeinstalledfiles > fi >done >rm -f tmp-doc-files-to-be-installed >rm -f tmp-doc-directories >%{__install} -p -m 644 -t $EXAMPLESPATH LICENSE_1_0.txt > >%post doctools >CATALOG=%{_sysconfdir}/xml/catalog >%{_bindir}/xmlcatalog --noout --add "rewriteSystem" \ > "http://www.boost.org/tools/boostbook/dtd" \ > "file://%{_datadir}/boostbook/dtd" $CATALOG >%{_bindir}/xmlcatalog --noout --add "rewriteURI" \ > "http://www.boost.org/tools/boostbook/dtd" \ > "file://%{_datadir}/boostbook/dtd" $CATALOG >%{_bindir}/xmlcatalog --noout --add "rewriteSystem" \ > "http://www.boost.org/tools/boostbook/xsl" \ > "file://%{_datadir}/boostbook/xsl" $CATALOG >%{_bindir}/xmlcatalog --noout --add "rewriteURI" \ > "http://www.boost.org/tools/boostbook/xsl" \ > "file://%{_datadir}/boostbook/xsl" $CATALOG > >%postun doctools ># remove entries only on removal of package >if [ "$1" = 0 ]; then > CATALOG=%{_sysconfdir}/xml/catalog > %{_bindir}/xmlcatalog --noout --del \ > "file://%{_datadir}/boostbook/dtd" $CATALOG > %{_bindir}/xmlcatalog --noout --del \ > "file://%{_datadir}/boostbook/xsl" $CATALOG >fi > >%if %{with python3} >%files -n %{libnamepy3} >%license LICENSE_1_0.txt >%{_libdir}/libboost_python3.so.%{version} > >%files -n %{devnamepy3} >%license LICENSE_1_0.txt >%{_libdir}/libboost_python3.so >%endif > >%files doc >%doc %{boost_docdir}/* > >%files examples >%doc %{boost_examplesdir}/* > >%files -n %{libnamedevel} >%license LICENSE_1_0.txt >%{_includedir}/%{name} >%{_libdir}/libboost_atomic.so >%{_libdir}/libboost_chrono.so >%{_libdir}/libboost_container.so >%if %{with context} >%{_libdir}/libboost_context.so >%{_libdir}/libboost_coroutine.so >%endif >%{_libdir}/libboost_date_time.so >%{_libdir}/libboost_filesystem.so >%{_libdir}/libboost_graph.so >%{_libdir}/libboost_iostreams.so >%{_libdir}/libboost_locale.so >%{_libdir}/libboost_log.so >%{_libdir}/libboost_log_setup.so >%{_libdir}/libboost_math_tr1.so >%{_libdir}/libboost_math_tr1f.so >%{_libdir}/libboost_math_tr1l.so >%{_libdir}/libboost_math_c99.so >%{_libdir}/libboost_math_c99f.so >%{_libdir}/libboost_math_c99l.so >%{_libdir}/libboost_prg_exec_monitor.so >%{_libdir}/libboost_unit_test_framework.so >%{_libdir}/libboost_program_options.so >%{_libdir}/libboost_python.so >%{_libdir}/libboost_random.so >%{_libdir}/libboost_regex.so >%{_libdir}/libboost_serialization.so >%{_libdir}/libboost_wserialization.so >%{_libdir}/libboost_signals.so >%{_libdir}/libboost_system.so >%{_libdir}/libboost_timer.so >%{_libdir}/libboost_wave.so > >%files -n %{devnamethread} >%doc LICENSE_1_0.txt >%{_libdir}/libboost_thread.so > >%files -n %{libnamethread} >%doc LICENSE_1_0.txt >%{_libdir}/libboost_thread*.so.%{version} > >%files -n %{libnamestaticdevel} >%license LICENSE_1_0.txt >%{_libdir}/*.a >%if %{with mpich} >%{_libdir}/mpich/lib/*.a >%endif >%if %{with openmpi} >%{_libdir}/openmpi/lib/*.a >%endif > ># OpenMPI packages >%if %{with openmpi} > >%files -n %{libnamempi} >%license LICENSE_1_0.txt >%{_libdir}/openmpi/lib/libboost_mpi.so.%{version} > >%files -n %{devnamempi} >%license LICENSE_1_0.txt >%{_libdir}/openmpi/lib/libboost_*.so > >%files -n %{libnamempipy} >%license LICENSE_1_0.txt >%{_libdir}/openmpi/lib/libboost_mpi_python.so.%{version} >%{_libdir}/openmpi/lib/mpi.so > >%files -n %{libnamegraphmpi} >%license LICENSE_1_0.txt >%{_libdir}/openmpi/lib/libboost_graph_parallel.so.%{version} > >%endif > ># MPICH packages >%if %{with mpich} > >%files -n %{libnamempich} >%license LICENSE_1_0.txt >%{_libdir}/mpich/lib/libboost_mpi.so.%{version} > >%files -n %{devnamempich} >%license LICENSE_1_0.txt >%{_libdir}/mpich/lib/libboost_*.so > >%files -n %{libnamempichpy} >%license LICENSE_1_0.txt >%{_libdir}/mpich/lib/libboost_mpi_python.so.%{version} >%{_libdir}/mpich/lib/mpi.so > >%files -n %{libnamegraphmpich} >%license LICENSE_1_0.txt >%{_libdir}/mpich/lib/libboost_graph_parallel.so.%{version} > >%endif > >%files build >%license LICENSE_1_0.txt >%{_datadir}/boost-build/ > >%files doctools >%license LICENSE_1_0.txt >%{_bindir}/quickbook >%{_datadir}/boostbook/ > >%files jam >%license LICENSE_1_0.txt >%{_bindir}/bjam >%{_mandir}/man1/bjam.1*
# Support for documentation installation As the %%doc macro erases the # target directory (%%{buildroot}%%{_docdir}/%%{name}), manually # installed documentation must be saved into a temporary dedicated # directory. ## TODO note that as of rpm 4.9.1, this shouldn't be necessary anymore. # We should be able to install directly. %define boost_docdir __tmp_docdir %define boost_examplesdir __tmp_examplesdir %define toplev_dirname %{name}_%(echo "%{version}"|tr \. _) %define libname %mklibname %{name} %{version} %define libnamedevel %mklibname %{name} -d %define libnamestaticdevel %mklibname %{name} -d -s %define libnamempi %mklibname %{name}-openmpi %{version} %define devnamempi %mklibname %{name}-openmpi -d %define libnamempich %mklibname %{name}-mpich %{version} %define devnamempich %mklibname %{name}-mpich -d %define libnamegraphmpich %mklibname %{name}-graph-mpich %{version} %define libnamepy3 %mklibname %{name}-python3 _%{version} %define devnamepy3 %mklibname %{name}-python3 -d %define libnamempipy %mklibname %{name}-mpi-python %{version} %define devnamempipy %mklibname %{name}-mpi-python -d %define libnamempichpy %mklibname %{name}-mpich-python %{version} %define libnamegraphmpi %mklibname %{name}-graph-mpi %{version} %define devnamegraphmpi %mklibname %{name}-graph-mpi -d %define libnamethread %mklibname %{name}_thread %{version} %define devnamethread %mklibname %{name}_thread -d %define libnamesystem %mklibname %{name}_system %{version} # Fedora multi-arch conditionals left here in case ever needed %ifarch ppc64le %bcond_with mpich %else %bcond_without mpich %endif %ifarch s390 s390x ppc64le # No OpenMPI support on these arches %bcond_with openmpi %else %bcond_without openmpi %endif %ifnarch %{ix86} x86_64 %{arm} ppc64 ppc64le aarch64 %bcond_with context %else %bcond_without context %endif %bcond_without python3 ################ Name: boost Summary: The free peer-reviewed portable C++ source libraries Version: 1.59.0 Release: %mkrel 0.90 License: Boost and MIT and Python URL: http://boost.org Group: Development/C++ # http://downloads.sourceforge.net/boost/boost_1_59_0.tar.bz2 Source0: http://downloads.sourceforge.net/%{name}/%{toplev_dirname}.tar.bz2 Source1: ver.py Source2: libboost_thread.so BuildRequires: m4 BuildRequires: libstdc++-devel BuildRequires: bzip2-devel BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(python) %if %{with python3} BuildRequires: pkgconfig(python3) %endif BuildRequires: libicu-devel # (barjac) Allows building in iurt on local machine Patch1: boost-1.58-mga-fix_local_iurt_build.patch # https://svn.boost.org/trac/boost/ticket/6150 Patch4: boost-1.50.0-fix-non-utf8-files.patch # Add a manual page for 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=828856 # https://bugzilla.redhat.com/show_bug.cgi?id=828857 # https://svn.boost.org/trac/boost/ticket/6701 Patch15: boost-1.58.0-pool.patch # https://svn.boost.org/trac/boost/ticket/5637 Patch25: boost-1.57.0-mpl-print.patch # https://svn.boost.org/trac/boost/ticket/8870 Patch36: boost-1.57.0-spirit-unused_typedef.patch # https://svn.boost.org/trac/boost/ticket/8878 Patch45: boost-1.54.0-locale-unused_typedef.patch # https://svn.boost.org/trac/boost/ticket/9038 Patch51: boost-1.58.0-pool-test_linking.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1102667 Patch61: boost-1.57.0-python-libpython_dep.patch Patch62: boost-1.57.0-python-abi_letters.patch Patch63: boost-1.55.0-python-test-PyImport_AppendInittab.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1190039 Patch65: boost-1.57.0-build-optflags.patch # Prevent gcc.jam from setting -m32 or -m64. Patch68: boost-1.58.0-address-model.patch # https://svn.boost.org/trac/boost/ticket/11549 Patch70: boost-1.59.0-log.patch # https://github.com/boostorg/python/pull/40 Patch80: boost-1.59-python-make_setter.patch %bcond_with tests %bcond_with docs_generated # (barjac) split out 'thread' from $boostlibs loop and add manually to better control provides %define boostlibs atomic chrono container context coroutine date_time filesystem graph iostreams locale log math prg_exec_monitor program_options python random regex serialization signals system timer unit_test_framework wave wserialization # (Anssi 01/2010) dashes are converted to underscores for macros ($lib2); # The sed script adds _ when library name ends in number. %{expand:%(for lib in %boostlibs; do lib2=${lib/-/_}; cat <<EOF %%global libname$lib2 %%mklibname boost_$(echo $lib | sed 's,[0-9]$,&_,') %{version} %%package -n %%{libname$lib2} Summary: Boost $lib shared library # no one should require this, but provided anyway for maximum compatibility: Provides: boost = %version-%release Group: System/Libraries EOF done)} # (Anssi 01/2010) splitted expand contents due to rpm bug failing build, # triggered by a too long expanded string. %{expand:%(for lib in %boostlibs; do lib2=${lib/-/_}; cat <<EOF %%description -n %%{libname$lib2} Boost is a collection of free peer-reviewed portable C++ source libraries. The emphasis is on libraries which work well with the C++ Standard Library. This package contains the shared library needed for running programs dynamically linked against Boost $lib. EOF done)} %{expand:%(for lib in %boostlibs; do lib2=${lib/-/_}; cat <<EOF %%files -n %%{libname$lib2} %%doc LICENSE_1_0.txt %{_libdir}/libboost_$lib*.so.%{version} EOF done)} %description Boost provides free peer-reviewed portable C++ source libraries. The emphasis is on libraries which work well with the C++ Standard Library, in the hopes of establishing "existing practice" for extensions and providing reference implementations so that the Boost libraries are suitable for eventual standardization. (Some of the libraries have already been included in the C++ 2011 standard and others have been proposed to the C++ Standards Committee for inclusion in future standards.) %package -n %{libnamethread} Summary: Boost thread shared library Group: System/Libraries Provides: boost = %version-%release Requires: %{libnamesystem} = %{version}-%{release} %description -n %{libnamethread} Boost is a collection of free peer-reviewed portable C++ source libraries. The emphasis is on libraries which work well with the C++ Standard Library. This package contains the shared library needed for running programs dynamically linked against Boost thread. %package -n %{devnamethread} Summary: Shared object symbolic links for thread Group: System/Libraries Requires: %{libnamethread} = %{version}-%{release} Provides: %{name}_thread-devel = %{version}-%{release} Provides: lib%{name}_thread_devel = %{version}-%{release} Provides: devel(libboost_thread%([ "%{?_lib}" = "lib64" ] && echo "(64bit)")) = %{version}-%{release} %description -n %{devnamethread} Devel package for boost_thread. %if %{with python3} %package -n %{libnamepy3} Summary: Run-Time component of boost python library for Python 3 Group: System/Libraries %description -n %{libnamepy3} The Boost Python Library is a framework for interfacing Python and C++. It allows you to quickly and seamlessly expose C++ classes, functions and objects to Python, and vice versa, using no special tools -- just your C++ compiler. This package contains run-time support for Boost Python Library compiled for Python 3. %package -n %{devnamepy3} Summary: Shared object symbolic links for Boost.Python 3 Group: System/Libraries Requires: %{libnamepy3} = %{version}-%{release} Requires: %{libnamedevel} = %{version}-%{release} %description -n %{devnamepy3} Shared object symbolic links for Python 3 variant of Boost.Python. %endif %package -n %{libnamedevel} Summary: The libraries and headers needed for Boost development Group: Development/C++ Requires: %{expand:%(for lib in %boostlibs; do echo -n "%%{libname${lib/-/_}} = %{version}-%{release} "; done)} Requires: %{devnamethread} = %{version}-%{release} Obsoletes: %{mklibname boost 1}-devel < %{version}-%{release} Provides: %{name}-devel = %{version}-%{release} Provides: lib%{name}-devel = %{version}-%{release} %description -n %{libnamedevel} Boost is a collection of free peer-reviewed portable C++ source libraries. The emphasis is on libraries which work well with the C++ Standard Library. This package contains headers and shared library symlinks needed for Boost development. %package -n %{libnamestaticdevel} Summary: The Boost C++ static development libraries Group: Development/Libraries Requires: %{libnamedevel} = %{version}-%{release} Obsoletes: boost-devel-static < 1.34.1-14 Provides: boost-devel-static = %{version}-%{release} %description -n %{libnamestaticdevel} Static Boost C++ libraries. %package doc Summary: HTML documentation for the Boost C++ libraries Group: Documentation BuildArch: noarch Provides: boost-python-docs = %{version}-%{release} %description doc This package contains the documentation in the HTML format of the Boost C++ libraries. The documentation provides the same content as that on the Boost web page (http://www.boost.org/doc/libs/1_40_0). %package examples Summary: Source examples for the Boost C++ libraries Group: Documentation BuildArch: noarch Requires: %{libnamedevel} = %{version}-%{release} %description examples This package contains example source files distributed with boost. %if %{with openmpi} %package -n %{libnamempi} Summary: Run-Time component of Boost.MPI library Group: System/Libraries BuildRequires: openmpi-devel Requires: %{_lib}boost-serialization = %{version}-%{release} %description -n %{libnamempi} Run-Time support for Boost.MPI-OpenMPI, a library providing a clean C++ API over the OpenMPI implementation of MPI. %package -n %{devnamempi} Summary: Shared library symbolic links for Boost.MPI Group: System/Libraries Requires: %{libnamedevel} = %{version}-%{release} Requires: %{libnamempi} = %{version}-%{release} Requires: %{libnamempipy} = %{version}-%{release} Requires: %{libnamegraphmpi} = %{version}-%{release} %description -n %{devnamempi} Devel package for Boost.MPI-OpenMPI, a library providing a clean C++ API over the OpenMPI implementation of MPI. %package -n %{libnamempipy} Summary: Python run-time component of Boost.MPI library Group: System/Libraries Requires: %{libnamempi} = %{version}-%{release} Requires: %{_lib}boost-python = %{version}-%{release} Requires: %{_lib}boost-serialization = %{version}-%{release} %description -n %{libnamempipy} Python support for Boost.MPI-OpenMPI, a library providing a clean C++ API over the OpenMPI implementation of MPI. %package -n %{libnamegraphmpi} Summary: Run-Time component of parallel boost graph library Group: System/Libraries Requires: %{libnamempi} = %{version}-%{release} Requires: %{_lib}boost-serialization = %{version}-%{release} %description -n %{libnamegraphmpi} Run-Time support for the Parallel BGL graph library. The interface and graph components are generic, in the same sense as the the Standard Template Library (STL). The libraries in this package use OpenMPI back-end to do the parallel work. %endif %if %{with mpich} %package -n %{libnamempich} Summary: Run-Time component of Boost.MPI library Group: System/Libraries Requires: %{_lib}boost-serialization = %{version}-%{release} Provides: %{_lib}boost-mpich2 = %{version}-%{release} Obsoletes: boost-mpich2 < 1.53.0-9 %description -n %{libnamempich} Run-Time support for Boost.MPI-MPICH, a library providing a clean C++ API over the MPICH implementation of MPI. %package -n %{devnamempich} Summary: Shared library symbolic links for Boost.MPI Group: System/Libraries Requires: %{libnamedevel} = %{version}-%{release} Requires: %{libnamempich} = %{version}-%{release} Requires: %{libnamempichpy} = %{version}-%{release} Requires: %{libnamegraphmpich} = %{version}-%{release} Provides: boost-mpich2-devel = %{version}-%{release} Obsoletes: boost-mpich2-devel < 1.53.0-9 %description -n %{devnamempich} Devel package for Boost.MPI-MPICH, a library providing a clean C++ API over the MPICH implementation of MPI. %package -n %{libnamempichpy} Summary: Python run-time component of Boost.MPI library Group: System/Libraries Requires: %{libnamempich} = %{version}-%{release} Requires: %{_lib}boost-python = %{version}-%{release} Requires: %{_lib}boost-serialization = %{version}-%{release} Provides: boost-mpich2-python = %{version}-%{release} Obsoletes: boost-mpich2-python < 1.53.0-9 %description -n %{libnamempichpy} Python support for Boost.MPI-MPICH, a library providing a clean C++ API over the MPICH implementation of MPI. %package -n %{libnamegraphmpich} Summary: Run-Time component of parallel boost graph library Group: System/Libraries Requires: %{libnamempich} = %{version}-%{release} Requires: %{_lib}boost-serialization = %{version}-%{release} Provides: boost-graph-mpich2 = %{version}-%{release} Obsoletes: boost-graph-mpich2 < 1.53.0-9 %description -n %{libnamegraphmpich} Run-Time support for the Parallel BGL graph library. The interface and graph components are generic, in the same sense as the the Standard Template Library (STL). This libraries in this package use MPICH back-end to do the parallel work. %endif %package build Summary: Cross platform build system for C++ projects Group: Development/Tools Requires: boost-jam BuildArch: noarch %description build Boost.Build is an easy way to build C++ projects, everywhere. You name your pieces of executable and libraries and list their sources. Boost.Build takes care about compiling your sources with the right options, creating static and shared libraries, making pieces of executable, and other chores -- whether you're using GCC, MSVC, or a dozen more supported C++ compilers -- on Windows, OSX, Linux and commercial UNIX systems. %package doctools Summary: Tools for working with Boost documentation Group: Applications/Publishing Requires: docbook-dtds Requires: docbook-style-xsl %description doctools Tools for working with Boost documentation in BoostBook or QuickBook format. %package jam Summary: A low-level build tool Group: Development/Tools %description jam Boost.Jam (BJam) is the low-level build engine tool for Boost.Build. Historically, Boost.Jam is based on on FTJam and on Perforce Jam but has grown a number of significant features and is now developed independently %prep %setup -q -n %{toplev_dirname} %patch1 -p1 %patch4 -p1 %patch5 -p1 %patch15 -p0 %patch25 -p1 %patch36 -p1 %patch45 -p1 %patch51 -p1 %patch61 -p1 %patch62 -p1 %patch63 -p1 %patch65 -p1 %patch68 -p1 %patch70 -p2 %patch80 -p2 # At least python2_version needs to be a macro so that it's visible in # %%install as well. %global python2_version %(/usr/bin/python2 %{SOURCE1}) %if %{with python3} %global python3_version %(/usr/bin/python3 %{SOURCE1}) %global python3_abiflags %(/usr/bin/python3-config --abiflags) %endif # Build section from Fedora %build : PYTHON2_VERSION=%{python2_version} %if %{with python3} : PYTHON3_VERSION=%{python3_version} : PYTHON3_ABIFLAGS=%{python3_abiflags} %endif # There are many strict aliasing warnings, and it's not feasible to go # through them all at this time. # There are also lots of noisy but harmless unused local typedef warnings. export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-unused-local-typedefs" cat > ./tools/build/src/user-config.jam << "EOF" import os ; local RPM_OPT_FLAGS = [ os.environ RPM_OPT_FLAGS ] ; using gcc : : : <compileflags>$(RPM_OPT_FLAGS) ; %if %{with openmpi} || %{with mpich} using mpi ; %endif %if %{with python3} using python : %{python2_version} : /usr/bin/python2 : /usr/include/python%{python2_version} : : : : ; using python : %{python3_version} : /usr/bin/python3 : /usr/include/python%{python3_version}%{python3_abiflags} : : : : %{python3_abiflags} ; %endif EOF ./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. # # The "python=2.*" bit tells jam that we want to _also_ build 2.*, not # just 3.*. When omitted, it just builds for python 3 twice, once # calling the library libboost_python and once libboost_python3. I # assume this is for backward compatibility for apps that are used to # linking against -lboost_python, for when 2->3 transition is # eventually done. echo ============================= build serial ================== ./b2 -d+2 -q %{?_smp_mflags} \ --without-mpi \ --without-graph_parallel \ --build-dir=serial \ %if !%{with context} --without-context \ --without-coroutine \ %endif variant=release \ threading=multi \ debug-symbols=on \ pch=off \ python=%{python2_version} \ stage # See libs/thread/build/Jamfile.v2 for where this file comes from. if [ $(find serial -type f -name has_atomic_flag_lockfree \ -print -quit | wc -l) -ne 0 ]; then DEF=D else DEF=U fi m4 -${DEF}HAS_ATOMIC_FLAG_LOCKFREE -DVERSION=%{version} \ %{SOURCE2} > $(basename %{SOURCE2}) # Build MPI parts of Boost with OpenMPI support # N.B. python=2.* here behaves differently: it exactly selects a # version that we want to build against. Boost MPI is not portable to # Python 3 due to API changes in Python, so this suits us. %if %{with openmpi} echo ============================= build $MPI_COMPILER ================== ./b2 -d+2 -q %{?_smp_mflags} \ --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \ variant=release threading=multi debug-symbols=on pch=off \ python=%{python2_version} stage export PATH=/bin${PATH:+:}$PATH %endif # Build MPI parts of Boost with MPICH support %if %{with mpich} echo ============================= build $MPI_COMPILER ================== ./b2 -d+2 -q %{?_smp_mflags} \ --with-mpi \ --with-graph_parallel \ --build-dir=$MPI_COMPILER \ variant=release \ threading=multi \ debug-symbols=on \ pch=off \ python=%{python2_version} \ stage export PATH=/bin${PATH:+:}$PATH %endif echo ============================= build Boost.Build ================== (cd tools/build ./bootstrap.sh --with-toolset=gcc) %check : %install rm -rf %{buildroot} cd %{_builddir}/%{toplev_dirname} %if %{with openmpi} export MPI_HOME=%{_libdir}/openmpi # XXX We want to extract this from RPM flags # b2 instruction-set=i686 etc. echo ============================= install $MPI_COMPILER ================== ./b2 -q %{?_smp_mflags} \ --with-mpi \ --with-graph_parallel \ --build-dir=$MPI_COMPILER \ --stagedir=%{buildroot}${MPI_HOME} \ variant=release \ threading=multi \ debug-symbols=on \ pch=off \ python=%{python2_version} \ stage # Remove generic parts of boost that were built for dependencies. rm -f %{buildroot}${MPI_HOME}/lib/libboost_{python,{w,}serialization}* export MPI_HOME= export PATH=/bin${PATH:+:}$PATH %endif %if %{with mpich} export MPI_HOME=%{_libdir}/mpich echo ============================= install $MPI_COMPILER ================== ./b2 -q %{?_smp_mflags} \ --with-mpi \ --with-graph_parallel \ --build-dir=$MPI_COMPILER \ --stagedir=%{buildroot}${MPI_HOME} \ variant=release \ threading=multi \ debug-symbols=on \ pch=off \ python=%{python2_version} \ stage # Remove generic parts of boost that were built for dependencies. rm -f %{buildroot}${MPI_HOME}/lib/libboost_{python,{w,}serialization}* export MPI_HOME= export PATH=/bin${PATH:+:}$PATH %endif echo ============================= install serial ================== ./b2 -d+2 -q %{?_smp_mflags} \ --without-mpi \ --without-graph_parallel \ --build-dir=serial \ %if !%{with context} --without-context --without-coroutine \ %endif --prefix=%{buildroot}%{_prefix} \ --libdir=%{buildroot}%{_libdir} \ variant=release \ threading=multi \ debug-symbols=on \ pch=off \ python=%{python2_version} \ install # Override DSO symlink with a linker script. See the linker script # itself for details of why we need to do this. [ -f %{buildroot}%{_libdir}/libboost_thread.so ] # Must be present rm -f %{buildroot}%{_libdir}/libboost_thread.so install -p -m 644 $(basename %{SOURCE2}) %{buildroot}%{_libdir}/ echo ============================= install Boost.Build ================== (cd tools/build ./b2 --prefix=%{buildroot}%{_prefix} install # Fix some permissions chmod -x %{buildroot}%{_datadir}/boost-build/src/build/alias.py chmod +x %{buildroot}%{_datadir}/boost-build/src/tools/doxproc.py # We don't want to distribute this rm -f %{buildroot}%{_bindir}/b2 # Not a real file rm -f %{buildroot}%{_datadir}/boost-build/src/build/project.ann.py # Empty file rm -f %{buildroot}%{_datadir}/boost-build/src/tools/doxygen/windows-paths-check.hpp # Install the manual page %{__install} -p -m 644 v2/doc/bjam.1 -D %{buildroot}%{_mandir}/man1/bjam.1 ) echo ============================= install Boost.QuickBook ================== (cd tools/quickbook ../build/b2 --prefix=%{buildroot}%{_prefix} %{__install} -p -m 755 ../../dist/bin/quickbook %{buildroot}%{_bindir}/ cd ../boostbook find dtd -type f -name '*.dtd' | while read tobeinstalledfiles; do install -p -m 644 $tobeinstalledfiles -D %{buildroot}%{_datadir}/boostbook/$tobeinstalledfiles done find xsl -type f | while read tobeinstalledfiles; do install -p -m 644 $tobeinstalledfiles -D %{buildroot}%{_datadir}/boostbook/$tobeinstalledfiles done ) # Install documentation files (HTML pages) within the temporary place echo ============================= install documentation ================== # Prepare the place to temporarily store the generated documentation rm -rf %{boost_docdir} && %{__mkdir_p} %{boost_docdir}/html DOCPATH=%{boost_docdir} DOCREGEX='.*\.\(html?\|css\|png\|gif\)' find libs doc more -type f -regex $DOCREGEX \ | sed -n '/\//{s,/[^/]*$,,;p}' \ | sort -u > tmp-doc-directories sed "s:^:$DOCPATH/:" tmp-doc-directories \ | xargs -P 0 --no-run-if-empty %{__install} -d cat tmp-doc-directories | while read tobeinstalleddocdir; do find $tobeinstalleddocdir -mindepth 1 -maxdepth 1 -regex $DOCREGEX -print0 \ | xargs -P 0 -0 %{__install} -p -m 644 -t $DOCPATH/$tobeinstalleddocdir done rm -f tmp-doc-directories %{__install} -p -m 644 -t $DOCPATH LICENSE_1_0.txt index.htm index.html boost.png rst.css boost.css echo ============================= install examples ================== # Fix a few non-standard issues (DOS and/or non-UTF8 files) sed -i -e 's/\r//g' libs/geometry/example/ml02_distance_strategy.cpp for tmp_doc_file in flyweight/example/Jamfile.v2 \ format/example/sample_new_features.cpp multi_index/example/Jamfile.v2 \ multi_index/example/hashed.cpp serialization/example/demo_output.txt \ test/example/cla/wide_string.cpp do mv libs/${tmp_doc_file} libs/${tmp_doc_file}.iso8859 iconv -f ISO8859-1 -t UTF8 < libs/${tmp_doc_file}.iso8859 > libs/${tmp_doc_file} touch -r libs/${tmp_doc_file}.iso8859 libs/${tmp_doc_file} rm -f libs/${tmp_doc_file}.iso8859 done # Prepare the place to temporarily store the examples rm -rf %{boost_examplesdir} && mkdir -p %{boost_examplesdir}/html EXAMPLESPATH=%{boost_examplesdir} find libs -type d -name example -exec find {} -type f \; \ | sed -n '/\//{s,/[^/]*$,,;p}' \ | sort -u > tmp-doc-directories sed "s:^:$EXAMPLESPATH/:" tmp-doc-directories \ | xargs -P 0 --no-run-if-empty %{__install} -d rm -f tmp-doc-files-to-be-installed && touch tmp-doc-files-to-be-installed cat tmp-doc-directories | while read tobeinstalleddocdir do find $tobeinstalleddocdir -mindepth 1 -maxdepth 1 -type f \ >> tmp-doc-files-to-be-installed done cat tmp-doc-files-to-be-installed | while read tobeinstalledfiles do if test -s $tobeinstalledfiles then tobeinstalleddocdir=`dirname $tobeinstalledfiles` %{__install} -p -m 644 -t $EXAMPLESPATH/$tobeinstalleddocdir $tobeinstalledfiles fi done rm -f tmp-doc-files-to-be-installed rm -f tmp-doc-directories %{__install} -p -m 644 -t $EXAMPLESPATH LICENSE_1_0.txt %post doctools CATALOG=%{_sysconfdir}/xml/catalog %{_bindir}/xmlcatalog --noout --add "rewriteSystem" \ "http://www.boost.org/tools/boostbook/dtd" \ "file://%{_datadir}/boostbook/dtd" $CATALOG %{_bindir}/xmlcatalog --noout --add "rewriteURI" \ "http://www.boost.org/tools/boostbook/dtd" \ "file://%{_datadir}/boostbook/dtd" $CATALOG %{_bindir}/xmlcatalog --noout --add "rewriteSystem" \ "http://www.boost.org/tools/boostbook/xsl" \ "file://%{_datadir}/boostbook/xsl" $CATALOG %{_bindir}/xmlcatalog --noout --add "rewriteURI" \ "http://www.boost.org/tools/boostbook/xsl" \ "file://%{_datadir}/boostbook/xsl" $CATALOG %postun doctools # remove entries only on removal of package if [ "$1" = 0 ]; then CATALOG=%{_sysconfdir}/xml/catalog %{_bindir}/xmlcatalog --noout --del \ "file://%{_datadir}/boostbook/dtd" $CATALOG %{_bindir}/xmlcatalog --noout --del \ "file://%{_datadir}/boostbook/xsl" $CATALOG fi %if %{with python3} %files -n %{libnamepy3} %license LICENSE_1_0.txt %{_libdir}/libboost_python3.so.%{version} %files -n %{devnamepy3} %license LICENSE_1_0.txt %{_libdir}/libboost_python3.so %endif %files doc %doc %{boost_docdir}/* %files examples %doc %{boost_examplesdir}/* %files -n %{libnamedevel} %license LICENSE_1_0.txt %{_includedir}/%{name} %{_libdir}/libboost_atomic.so %{_libdir}/libboost_chrono.so %{_libdir}/libboost_container.so %if %{with context} %{_libdir}/libboost_context.so %{_libdir}/libboost_coroutine.so %endif %{_libdir}/libboost_date_time.so %{_libdir}/libboost_filesystem.so %{_libdir}/libboost_graph.so %{_libdir}/libboost_iostreams.so %{_libdir}/libboost_locale.so %{_libdir}/libboost_log.so %{_libdir}/libboost_log_setup.so %{_libdir}/libboost_math_tr1.so %{_libdir}/libboost_math_tr1f.so %{_libdir}/libboost_math_tr1l.so %{_libdir}/libboost_math_c99.so %{_libdir}/libboost_math_c99f.so %{_libdir}/libboost_math_c99l.so %{_libdir}/libboost_prg_exec_monitor.so %{_libdir}/libboost_unit_test_framework.so %{_libdir}/libboost_program_options.so %{_libdir}/libboost_python.so %{_libdir}/libboost_random.so %{_libdir}/libboost_regex.so %{_libdir}/libboost_serialization.so %{_libdir}/libboost_wserialization.so %{_libdir}/libboost_signals.so %{_libdir}/libboost_system.so %{_libdir}/libboost_timer.so %{_libdir}/libboost_wave.so %files -n %{devnamethread} %doc LICENSE_1_0.txt %{_libdir}/libboost_thread.so %files -n %{libnamethread} %doc LICENSE_1_0.txt %{_libdir}/libboost_thread*.so.%{version} %files -n %{libnamestaticdevel} %license LICENSE_1_0.txt %{_libdir}/*.a %if %{with mpich} %{_libdir}/mpich/lib/*.a %endif %if %{with openmpi} %{_libdir}/openmpi/lib/*.a %endif # OpenMPI packages %if %{with openmpi} %files -n %{libnamempi} %license LICENSE_1_0.txt %{_libdir}/openmpi/lib/libboost_mpi.so.%{version} %files -n %{devnamempi} %license LICENSE_1_0.txt %{_libdir}/openmpi/lib/libboost_*.so %files -n %{libnamempipy} %license LICENSE_1_0.txt %{_libdir}/openmpi/lib/libboost_mpi_python.so.%{version} %{_libdir}/openmpi/lib/mpi.so %files -n %{libnamegraphmpi} %license LICENSE_1_0.txt %{_libdir}/openmpi/lib/libboost_graph_parallel.so.%{version} %endif # MPICH packages %if %{with mpich} %files -n %{libnamempich} %license LICENSE_1_0.txt %{_libdir}/mpich/lib/libboost_mpi.so.%{version} %files -n %{devnamempich} %license LICENSE_1_0.txt %{_libdir}/mpich/lib/libboost_*.so %files -n %{libnamempichpy} %license LICENSE_1_0.txt %{_libdir}/mpich/lib/libboost_mpi_python.so.%{version} %{_libdir}/mpich/lib/mpi.so %files -n %{libnamegraphmpich} %license LICENSE_1_0.txt %{_libdir}/mpich/lib/libboost_graph_parallel.so.%{version} %endif %files build %license LICENSE_1_0.txt %{_datadir}/boost-build/ %files doctools %license LICENSE_1_0.txt %{_bindir}/quickbook %{_datadir}/boostbook/ %files jam %license LICENSE_1_0.txt %{_bindir}/bjam %{_mandir}/man1/bjam.1*
View Attachment As Raw
Actions:
View
Attachments on
bug 16756
:
7004
|
7005
| 7022