|
@@ -1,4 +1,5 @@
|
|
|
%define build_compat32 %{?_with_compat32:1}%{!?_with_compat32:0}
|
|
|
+%define _unpackaged_files_terminate_build 1
|
|
|
|
|
|
# Support for documentation installation As the %%doc macro erases the
|
|
|
# target directory ($RPM_BUILD_ROOT%%{_docdir}/%%{name}), manually
|
|
@@ -15,7 +16,7 @@
|
|
|
%bcond_with openmpi
|
|
|
|
|
|
%define major 1
|
|
|
-%define minor 60
|
|
|
+%define minor 66
|
|
|
%define teeny 0
|
|
|
%define tarname boost
|
|
|
%define lnkver %{major}_%{minor}
|
|
@@ -35,7 +36,7 @@ Summary: Portable C++ source libraries
|
|
|
Summary(ja): ポータブルな C++ ソースライブラリ
|
|
|
Name: libboost
|
|
|
Version: %{major}.%{minor}.%{teeny}
|
|
|
-Release: 3%{?_dist_release}
|
|
|
+Release: 1%{?_dist_release}
|
|
|
Source0: http://downloads.sourceforge.net/%{tarname}/%{tarname}_%{pkgver}.tar.bz2
|
|
|
Source1: ver.py
|
|
|
Source2: libboost_thread.so
|
|
@@ -66,25 +67,21 @@ 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/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
|
|
|
+Patch65: boost-1.66.0-build-optflags.patch
|
|
|
|
|
|
# Prevent gcc.jam from setting -m32 or -m64.
|
|
|
Patch68: boost-1.58.0-address-model.patch
|
|
|
|
|
|
-# https://bugzilla.redhat.com/show_bug.cgi?id=1262444
|
|
|
-Patch81: boost-1.59-test-fenv.patch
|
|
|
+# https://bugzilla.redhat.com/show_bug.cgi?id=1318383
|
|
|
+Patch82: boost-1.60.0-no-rpath.patch
|
|
|
|
|
|
Vendor: Project Vine
|
|
|
Distribution: Vine Linux
|
|
@@ -308,6 +305,15 @@ Requires: %{name} = %{version}-%{release}
|
|
|
%description signals
|
|
|
Set of signals and slots libralies in %{name}
|
|
|
|
|
|
+%package stacktrace
|
|
|
+Summary: Call-stack libraries in %{name}
|
|
|
+Group: System Environment/Libraries
|
|
|
+Requires: %{name} = %{version}-%{release}
|
|
|
+
|
|
|
+%description stacktrace
|
|
|
+simple C++03 library that provides information about call sequence in a
|
|
|
+human-readable form
|
|
|
+
|
|
|
%package system
|
|
|
Summary: Operating system support
|
|
|
Group: System Environment/Libraries
|
|
@@ -694,6 +700,15 @@ Group: System Environment/Libraries
|
|
|
%description -n compat32-%{name}-signals
|
|
|
Set of signals and slots libralies in %{name}
|
|
|
|
|
|
+%package -n compat32-%{name}-stacktrace
|
|
|
+Summary: Call-stack libraries in %{name}
|
|
|
+Group: System Environment/Libraries
|
|
|
+Requires: %{name} = %{version}-%{release}
|
|
|
+
|
|
|
+%description -n compat32-%{name}-stacktrace
|
|
|
+simple C++03 library that provides information about call sequence in a
|
|
|
+human-readable form
|
|
|
+
|
|
|
%package -n compat32-%{name}-system
|
|
|
Summary: Operating system support
|
|
|
Group: System Environment/Libraries
|
|
@@ -754,14 +769,13 @@ Set of wave libraries in %{name}
|
|
|
%patch5 -p1
|
|
|
%patch15 -p0
|
|
|
%patch25 -p1
|
|
|
-%patch36 -p1
|
|
|
%patch51 -p1
|
|
|
%patch61 -p1
|
|
|
%patch62 -p1
|
|
|
-%patch63 -p1
|
|
|
%patch65 -p1
|
|
|
%patch68 -p1
|
|
|
-%patch81 -p2
|
|
|
+%patch82 -p0
|
|
|
+
|
|
|
|
|
|
# At least python2_version needs to be a macro so that it's visible in
|
|
|
# %%install as well.
|
|
@@ -781,7 +795,7 @@ Set of wave libraries in %{name}
|
|
|
# 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"
|
|
|
+export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-unused-local-typedefs -Wno-deprecated-declarations"
|
|
|
|
|
|
cat > ./tools/build/src/user-config.jam << "EOF"
|
|
|
import os ;
|
|
@@ -791,10 +805,7 @@ 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
|
|
@@ -803,33 +814,54 @@ EOF
|
|
|
# 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 \
|
|
|
+ --without-mpi --without-graph_parallel --build-dir=serial \
|
|
|
%if !%{with context}
|
|
|
- --without-context --without-coroutine --without-coroutine2 \
|
|
|
+ --without-context --without-coroutine --without-coroutine2 \
|
|
|
+ --without-fiber \
|
|
|
%endif
|
|
|
- variant=release threading=multi debug-symbols=on pch=off \
|
|
|
- python=%{python2_version} stage
|
|
|
+ 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
|
|
|
+ -print -quit | wc -l) -ne 0 ]; then
|
|
|
+ DEF=D
|
|
|
else
|
|
|
- DEF=U
|
|
|
+ DEF=U
|
|
|
fi
|
|
|
|
|
|
m4 -${DEF}HAS_ATOMIC_FLAG_LOCKFREE -DVERSION=%{version} \
|
|
|
- %{SOURCE2} > $(basename %{SOURCE2})
|
|
|
+ %{SOURCE2} > $(basename %{SOURCE2})
|
|
|
+
|
|
|
+%if %{with python3}
|
|
|
+
|
|
|
+# Previously, we built python 2.x and 3.x interfaces simultaneously.
|
|
|
+# However, this doesn't work once trying to build other Python components
|
|
|
+# such as libboost_numpy. Therefore, we build for each separately, while
|
|
|
+# minimizing duplicate compilation as much as possible.
|
|
|
+
|
|
|
+cat > python3-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
|
|
|
+using python : %{python3_version} : /usr/bin/python3 : /usr/include/python%{python3_version}%{python3_abiflags} : : : : %{python3_abiflags} ;
|
|
|
+EOF
|
|
|
+
|
|
|
+echo ============================= build serial-py3 ==================
|
|
|
+./b2 -d+2 -q %{?_smp_mflags} \
|
|
|
+ --user-config=./python3-config.jam \
|
|
|
+ --with-python --build-dir=serial-py3 \
|
|
|
+ variant=release threading=multi debug-symbols=on pch=off \
|
|
|
+ python=%{python3_version} stage
|
|
|
+
|
|
|
+%endif
|
|
|
|
|
|
# Build MPI parts of Boost with OpenMPI support
|
|
|
|
|
@@ -839,16 +871,23 @@ m4 -${DEF}HAS_ATOMIC_FLAG_LOCKFREE -DVERSION=%{version} \
|
|
|
module purge ||:
|
|
|
%endif
|
|
|
|
|
|
-# 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}
|
|
|
%{_openmpi_load}
|
|
|
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
|
|
|
+ --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
|
|
|
+ variant=release threading=multi debug-symbols=on pch=off \
|
|
|
+ python=%{python2_version} stage
|
|
|
+
|
|
|
+%if %{with python3}
|
|
|
+echo ============================= build $MPI_COMPILER-py3 ==================
|
|
|
+./b2 -d+2 -q %{?_smp_mflags} \
|
|
|
+ --user-config=./python3-config.jam \
|
|
|
+ --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER-py3 \
|
|
|
+ variant=release threading=multi debug-symbols=on pch=off \
|
|
|
+ python=%{python3_version} stage
|
|
|
+%endif
|
|
|
+
|
|
|
%{_openmpi_unload}
|
|
|
export PATH=/bin${PATH:+:}$PATH
|
|
|
%endif
|
|
@@ -858,9 +897,19 @@ export PATH=/bin${PATH:+:}$PATH
|
|
|
%{_mpich_load}
|
|
|
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
|
|
|
+ --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
|
|
|
+ variant=release threading=multi debug-symbols=on pch=off \
|
|
|
+ python=%{python2_version} stage
|
|
|
+
|
|
|
+%if %{with python3}
|
|
|
+echo ============================= build $MPI_COMPILER-py3 ==================
|
|
|
+./b2 -d+2 -q %{?_smp_mflags} \
|
|
|
+ --user-config=./python3-config.jam \
|
|
|
+ --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER-py3 \
|
|
|
+ variant=release threading=multi debug-symbols=on pch=off \
|
|
|
+ python=%{python3_version} stage
|
|
|
+%endif
|
|
|
+
|
|
|
%{_mpich_unload}
|
|
|
export PATH=/bin${PATH:+:}$PATH
|
|
|
%endif
|
|
@@ -888,10 +937,32 @@ module purge ||:
|
|
|
# b2 instruction-set=i686 etc.
|
|
|
echo ============================= install $MPI_COMPILER ==================
|
|
|
./b2 -q %{?_smp_mflags} \
|
|
|
- --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
|
|
|
- --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \
|
|
|
- variant=release threading=multi debug-symbols=on pch=off \
|
|
|
- python=%{python2_version} stage
|
|
|
+ --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
|
|
|
+ --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \
|
|
|
+ variant=release threading=multi debug-symbols=on pch=off \
|
|
|
+ python=%{python2_version} stage
|
|
|
+
|
|
|
+# Move Python module to proper location for automatic loading
|
|
|
+mkdir -p ${RPM_BUILD_ROOT}%{python2_sitearch}/openmpi/boost
|
|
|
+touch ${RPM_BUILD_ROOT}%{python2_sitearch}/openmpi/boost/__init__.py
|
|
|
+mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/mpi.so \
|
|
|
+ ${RPM_BUILD_ROOT}%{python2_sitearch}/openmpi/boost/
|
|
|
+
|
|
|
+%if %{with python3}
|
|
|
+echo ============================= install $MPI_COMPILER-py3 ==================
|
|
|
+./b2 -q %{?_smp_mflags} \
|
|
|
+ --user-config=./python3-config.jam \
|
|
|
+ --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER-py3 \
|
|
|
+ --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \
|
|
|
+ variant=release threading=multi debug-symbols=on pch=off \
|
|
|
+ python=%{python3_version} stage
|
|
|
+
|
|
|
+# Move Python module to proper location for automatic loading
|
|
|
+mkdir -p ${RPM_BUILD_ROOT}%{python3_sitearch}/openmpi/boost
|
|
|
+touch ${RPM_BUILD_ROOT}%{python3_sitearch}/openmpi/boost/__init__.py
|
|
|
+mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/mpi.so \
|
|
|
+ ${RPM_BUILD_ROOT}%{python3_sitearch}/openmpi/boost/
|
|
|
+%endif
|
|
|
|
|
|
# Remove generic parts of boost that were built for dependencies.
|
|
|
rm -f ${RPM_BUILD_ROOT}${MPI_HOME}/lib/libboost_{python,{w,}serialization}*
|
|
@@ -904,10 +975,32 @@ export PATH=/bin${PATH:+:}$PATH
|
|
|
%{_mpich_load}
|
|
|
echo ============================= install $MPI_COMPILER ==================
|
|
|
./b2 -q %{?_smp_mflags} \
|
|
|
- --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
|
|
|
- --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \
|
|
|
- variant=release threading=multi debug-symbols=on pch=off \
|
|
|
- python=%{python2_version} stage
|
|
|
+ --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
|
|
|
+ --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \
|
|
|
+ variant=release threading=multi debug-symbols=on pch=off \
|
|
|
+ python=%{python2_version} stage
|
|
|
+
|
|
|
+# Move Python module to proper location for automatic loading
|
|
|
+mkdir -p ${RPM_BUILD_ROOT}%{python2_sitearch}/mpich/boost
|
|
|
+touch ${RPM_BUILD_ROOT}%{python2_sitearch}/mpich/boost/__init__.py
|
|
|
+mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/mpi.so \
|
|
|
+ ${RPM_BUILD_ROOT}%{python2_sitearch}/mpich/boost/
|
|
|
+
|
|
|
+%if %{with python3}
|
|
|
+echo ============================= install $MPI_COMPILER-py3 ==================
|
|
|
+./b2 -q %{?_smp_mflags} \
|
|
|
+ --user-config=./python3-config.jam \
|
|
|
+ --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER-py3 \
|
|
|
+ --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \
|
|
|
+ variant=release threading=multi debug-symbols=on pch=off \
|
|
|
+ python=%{python3_version} stage
|
|
|
+
|
|
|
+# Move Python module to proper location for automatic loading
|
|
|
+mkdir -p ${RPM_BUILD_ROOT}%{python3_sitearch}/mpich/boost
|
|
|
+touch ${RPM_BUILD_ROOT}%{python3_sitearch}/mpich/boost/__init__.py
|
|
|
+mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/mpi.so \
|
|
|
+ ${RPM_BUILD_ROOT}%{python3_sitearch}/mpich/boost/
|
|
|
+%endif
|
|
|
|
|
|
# Remove generic parts of boost that were built for dependencies.
|
|
|
rm -f ${RPM_BUILD_ROOT}${MPI_HOME}/lib/libboost_{python,{w,}serialization}*
|
|
@@ -918,14 +1011,15 @@ export PATH=/bin${PATH:+:}$PATH
|
|
|
|
|
|
echo ============================= install serial ==================
|
|
|
./b2 -d+2 -q %{?_smp_mflags} \
|
|
|
- --without-mpi --without-graph_parallel --build-dir=serial \
|
|
|
+ --without-mpi --without-graph_parallel --build-dir=serial \
|
|
|
%if !%{with context}
|
|
|
- --without-context --without-coroutine --without-coroutine2 \
|
|
|
+ --without-context --without-coroutine --without-coroutine2 \
|
|
|
+ --without-fiber \
|
|
|
%endif
|
|
|
- --prefix=$RPM_BUILD_ROOT%{_prefix} \
|
|
|
- --libdir=$RPM_BUILD_ROOT%{_libdir} \
|
|
|
- variant=release threading=multi debug-symbols=on pch=off \
|
|
|
- python=%{python2_version} install
|
|
|
+ --prefix=$RPM_BUILD_ROOT%{_prefix} \
|
|
|
+ --libdir=$RPM_BUILD_ROOT%{_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.
|
|
@@ -933,6 +1027,18 @@ echo ============================= install serial ==================
|
|
|
rm -f $RPM_BUILD_ROOT%{_libdir}/libboost_thread.so
|
|
|
install -p -m 644 $(basename %{SOURCE2}) $RPM_BUILD_ROOT%{_libdir}/
|
|
|
|
|
|
+%if %{with python3}
|
|
|
+echo ============================= install serial-py3 ==================
|
|
|
+./b2 -d+2 -q %{?_smp_mflags} \
|
|
|
+ --user-config=python3-config.jam \
|
|
|
+ --with-python --build-dir=serial-py3 \
|
|
|
+ --prefix=$RPM_BUILD_ROOT%{_prefix} \
|
|
|
+ --libdir=$RPM_BUILD_ROOT%{_libdir} \
|
|
|
+ variant=release threading=multi debug-symbols=on pch=off \
|
|
|
+ python=%{python3_version} install
|
|
|
+
|
|
|
+%endif
|
|
|
+
|
|
|
echo ============================= install Boost.Build ==================
|
|
|
(cd tools/build
|
|
|
./b2 --prefix=$RPM_BUILD_ROOT%{_prefix} install
|
|
@@ -1022,6 +1128,12 @@ rm -f tmp-doc-files-to-be-installed
|
|
|
rm -f tmp-doc-directories
|
|
|
%{__install} -p -m 644 -t $EXAMPLESPATH LICENSE_1_0.txt
|
|
|
|
|
|
+
|
|
|
+# MPI subpackages don't need the ldconfig magic. They are hidden by
|
|
|
+# default, in MPI back-end-specific directory, and only show to the
|
|
|
+# user after the relevant environment module has been loaded.
|
|
|
+# rpmlint will report that as errors, but it is fine.
|
|
|
+
|
|
|
ln -s ./%{tarname} ${RPM_BUILD_ROOT}/%{_includedir}/%{tarname}-%{lnkver}
|
|
|
|
|
|
# remove unuse files
|
|
@@ -1185,6 +1297,10 @@ rm -rf $RPM_BUILD_ROOT
|
|
|
%doc LICENSE_1_0.txt
|
|
|
%{_libdir}/%{name}_signals*.so.*
|
|
|
|
|
|
+%files stacktrace
|
|
|
+%doc LICENSE_1_0.txt
|
|
|
+%{_libdir}/%{name}_stacktrace*.so.*
|
|
|
+
|
|
|
%files system
|
|
|
%doc LICENSE_1_0.txt
|
|
|
%{_libdir}/%{name}_system*.so.*
|
|
@@ -1370,6 +1486,10 @@ rm -rf $RPM_BUILD_ROOT
|
|
|
%doc LICENSE_1_0.txt
|
|
|
%{_libdir}/%{name}_signals*.so.*
|
|
|
|
|
|
+%files -n compat32-%{name}-stacktrace
|
|
|
+%doc LICENSE_1_0.txt
|
|
|
+%{_libdir}/%{name}_stacktrace*.so.*
|
|
|
+
|
|
|
%files -n compat32-%{name}-system
|
|
|
%doc LICENSE_1_0.txt
|
|
|
%{_libdir}/%{name}_system*.so.*
|
|
@@ -1400,6 +1520,13 @@ rm -rf $RPM_BUILD_ROOT
|
|
|
|
|
|
|
|
|
%changelog
|
|
|
+* Sun Jan 07 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.66.0-1
|
|
|
+- updated to boost_1_66_0.
|
|
|
+- dropped Patch36, 63 and 81.
|
|
|
+- updated Patch65.
|
|
|
+- imported Patch82 from rawhide.
|
|
|
+- added a subpackage 'libboost-stacktrace'.
|
|
|
+
|
|
|
* Sat Jul 16 2016 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.60.0-3
|
|
|
- added compat32-* packages.
|
|
|
|