Эх сурвалжийг харах

libboost-1.66.0-1

git-svn-id: http://trac.vinelinux.org/repos/projects/specs@11348 ec354946-7b23-47d6-9f5a-488ba84defc7
tomop 7 жил өмнө
parent
commit
056e78b21a

+ 181 - 54
lib/libb/libboost/libboost-vl.spec

@@ -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.