# - split shared libs from core package into -iostreams/-serialization.
#
# Conditional build:
-%bcond_without python2 # without boost-python2 support
-%bcond_without python3 # without boost-python3 support
+%bcond_without python2 # boost-python[2] support
+%bcond_without python3 # boost-python3 support
+%bcond_without numpy # boost-numpy support
%define fver %(echo %{version} | tr . _)
Summary: The Boost C++ Libraries
Summary(pl.UTF-8): Biblioteki C++ "Boost"
Name: boost
-Version: 1.59.0
-Release: 1
+Version: 1.63.0
+Release: 3
License: Boost Software License and others
Group: Libraries
Source0: http://downloads.sourceforge.net/boost/%{name}_%{fver}.tar.bz2
-# Source0-md5: 6aa9a5c6a4ca1016edd0ed1178e3cb87
+# Source0-md5: 1c837ecd990bb022d07e7aab32b09847
Patch0: %{name}-link.patch
Patch1: %{name}-x32-context.patch
Patch2: %{name}-clean-gcc-flags.patch
+Patch3: %{name}-numpy3.patch
# FC Patches:
+Patch201: %{name}-python-abi_letters.patch
+# https://github.com/boostorg/build/issues/163
+Patch202: %{name}-dual-python-build.patch
# https://svn.boost.org/trac/boost/ticket/5637
Patch203: %{name}-1.54.0-mpl-print.patch
-# https://svn.boost.org/trac/boost/ticket/8870
-Patch212: %{name}-1.54.0-spirit-unused_typedef-2.patch
-# https://svn.boost.org/trac/boost/ticket/8878
-Patch218: %{name}-1.54.0-locale-unused_typedef.patch
# https://svn.boost.org/trac/boost/ticket/8881
Patch221: %{name}-1.54.0-mpi-unused_typedef.patch
URL: http://www.boost.org/
BuildRequires: libicu-devel
BuildRequires: libstdc++-devel
BuildRequires: perl-base
-%{?with_python:BuildRequires: python-devel >= 2.2}
-%{?with_python3:BuildRequires: python3-devel}
+%if %{with python}
+BuildRequires: python-devel >= 2.2
+%{?with_numpy:BuildRequires: python-numpy-devel}
+%endif
+%if %{with python3}
+BuildRequires: python3-devel
+%{?with_numpy:BuildRequires: python3-numpy-devel}
+%endif
BuildRequires: rpm-pythonprov
BuildRequires: zlib-devel
BuildConflicts: gcc = 5:3.3.1
%define specflags -DBOOST_IOSTREAMS_USE_DEPRECATED=1
+# __once_call, __once_callable non-function symbols from libstdc++
+%define skip_post_check_so libboost_context.so.* libboost_fiber.so.*
+
%description
The Boost web site provides free peer-reviewed portable C++ source
libraries. The emphasis is on libraries which work well with the C++
Requires: %{name}-chrono = %{version}-%{release}
Requires: %{name}-context = %{version}-%{release}
Requires: %{name}-date_time = %{version}-%{release}
+Requires: %{name}-fiber = %{version}-%{release}
Requires: %{name}-filesystem = %{version}-%{release}
Requires: %{name}-graph = %{version}-%{release}
Requires: %{name}-locale = %{version}-%{release}
Summary(pl.UTF-8): Pliki programistyczne biblioteki Boost.Python dla Pythona 3
Group: Development/Libraries
Requires: %{name}-devel = %{version}-%{release}
-Requires: %{name}-python3 = %{version}-%{release}
Requires: %{name}-python-devel-common = %{version}-%{release}
+Requires: %{name}-python3 = %{version}-%{release}
%description python3-devel
Boost.Python development files for Python 3.
%description date_time -l pl.UTF-8
Zbiór bibliotek daty-czasu.
+%package fiber
+Summary: A framework for micro-/userland-threads (fibers) scheduled cooperatively
+Group: Libraries
+
+%description fiber
+boost::fiber provides a framework for micro-/userland-threads (fibers)
+scheduled cooperatively. The API contains classes and functions
+to manage and synchronize fibers similiar to boost.thread.
+
%package filesystem
Summary: Portable paths, iteration over directories, and other useful filesystem operations
Summary(pl.UTF-8): Przenośne ścieżki, iteracje katalogów i inne użyteczne operacje na systemie plików
%patch0 -p1
%patch1 -p1
%patch2 -p1
+%patch3 -p1
+%patch201 -p1
+%patch202 -p1
%patch203 -p0
-%patch212 -p1
-%patch218 -p1
%patch221 -p1
cat << EOF > tools/build/src/user-config.jam
threading=multi
%if %{with python3}
-echo "using python : %{py3_ver}m : %{py3_prefix} : %{py3_incdir} ;" >> project-config.jam
+echo "using python : %{py3_ver} : %{py3_prefix} : %{py3_incdir} : : : : m ;" >> project-config.jam
./b2 \
- --with-python python=%{py3_ver}m \
+ --with-python python=%{py3_ver} \
-a -d2 --toolset=gcc \
variant=release \
debug-symbols=on \
%endif
%if %{with python2}
+%{__sed} -i -e '/^using python : 3/d' project-config.jam
echo "using python : %{py_ver} : %{py_prefix} : %{py_incdir} ;" >> project-config.jam
./b2 \
--with-python python=%{py_ver} \
%post date_time -p /sbin/ldconfig
%postun date_time -p /sbin/ldconfig
+%post fiber -p /sbin/ldconfig
+%postun fiber -p /sbin/ldconfig
+
%post filesystem -p /sbin/ldconfig
%postun filesystem -p /sbin/ldconfig
%attr(755,root,root) %{_libdir}/libboost_math_*.so.*.*.*
%attr(755,root,root) %{_libdir}/libboost_random.so.*.*.*
%attr(755,root,root) %{_libdir}/libboost_serialization.so.*.*.*
+%attr(755,root,root) %{_libdir}/libboost_type_erasure.so.*.*.*
%attr(755,root,root) %{_libdir}/libboost_wserialization.so.*.*.*
%files devel
%attr(755,root,root) %{_libdir}/libboost_context.so
%attr(755,root,root) %{_libdir}/libboost_coroutine.so
%attr(755,root,root) %{_libdir}/libboost_date_time.so
+%attr(755,root,root) %{_libdir}/libboost_fiber.so
%attr(755,root,root) %{_libdir}/libboost_filesystem.so
%attr(755,root,root) %{_libdir}/libboost_graph.so
%attr(755,root,root) %{_libdir}/libboost_iostreams.so
%attr(755,root,root) %{_libdir}/libboost_system.so
%attr(755,root,root) %{_libdir}/libboost_thread.so
%attr(755,root,root) %{_libdir}/libboost_timer.so
+%attr(755,root,root) %{_libdir}/libboost_type_erasure.so
%attr(755,root,root) %{_libdir}/libboost_unit_test_framework.so
%attr(755,root,root) %{_libdir}/libboost_wave.so
%attr(755,root,root) %{_libdir}/libboost_wserialization.so
%{_libdir}/libboost_coroutine.a
%{_libdir}/libboost_date_time.a
%{_libdir}/libboost_exception.a
+%{_libdir}/libboost_fiber.a
%{_libdir}/libboost_filesystem.a
%{_libdir}/libboost_graph.a
%{_libdir}/libboost_iostreams.a
%{_libdir}/libboost_test_exec_monitor.a
%{_libdir}/libboost_timer.a
%{_libdir}/libboost_thread.a
+%{_libdir}/libboost_type_erasure.a
%{_libdir}/libboost_unit_test_framework.a
%{_libdir}/libboost_wave.a
%{_libdir}/libboost_wserialization.a
%if %{with python2}
%files python
%defattr(644,root,root,755)
+%if %{with numpy}
+%attr(755,root,root) %{_libdir}/libboost_numpy.so.*.*.*
+%endif
%attr(755,root,root) %{_libdir}/libboost_python.so.*.*.*
%files python-devel
%defattr(644,root,root,755)
+%if %{with numpy}
+%attr(755,root,root) %{_libdir}/libboost_numpy.so
+%endif
%attr(755,root,root) %{_libdir}/libboost_python.so
%files python-static
%defattr(644,root,root,755)
+%if %{with numpy}
+%{_libdir}/libboost_numpy.a
+%endif
%{_libdir}/libboost_python.a
%endif
%if %{with python3}
%files python3
%defattr(644,root,root,755)
+%if %{with numpy}
+%attr(755,root,root) %{_libdir}/libboost_numpy3.so.*.*.*
+%endif
%attr(755,root,root) %{_libdir}/libboost_python3.so.*.*.*
%files python3-devel
%defattr(644,root,root,755)
+%if %{with numpy}
+%attr(755,root,root) %{_libdir}/libboost_numpy3.so
+%endif
%attr(755,root,root) %{_libdir}/libboost_python3.so
%files python3-static
%defattr(644,root,root,755)
+%if %{with numpy}
+%{_libdir}/libboost_numpy3.a
+%endif
%{_libdir}/libboost_python3.a
%endif
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libboost_date_time.so.*.*.*
+%files fiber
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libboost_fiber.so.*.*.*
+
%files filesystem
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libboost_filesystem.so.*.*.*