From 1b90837bd6da06388264369d7766d4ece2eb808f Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Sun, 9 Apr 2017 08:08:31 +0200 Subject: [PATCH] - updated to 1.63.0 - merged python-abi_letters,dual-python-build patches from Fedora - added numpy3 patch to link numpy3 library with python3 instead of python --- boost-dual-python-build.patch | 46 +++++++++++++++++++++++++ boost-numpy3.patch | 11 ++++++ boost-python-abi_letters.patch | 62 ++++++++++++++++++++++++++++++++++ boost.spec | 51 +++++++++++++++++++++++----- 4 files changed, 161 insertions(+), 9 deletions(-) create mode 100644 boost-dual-python-build.patch create mode 100644 boost-numpy3.patch create mode 100644 boost-python-abi_letters.patch diff --git a/boost-dual-python-build.patch b/boost-dual-python-build.patch new file mode 100644 index 0000000..d20b262 --- /dev/null +++ b/boost-dual-python-build.patch @@ -0,0 +1,46 @@ +--- boost_1_63_0/tools/build/src/tools/python.jam.orig 2017-02-16 18:51:14.005483084 +0000 ++++ boost_1_63_0/tools/build/src/tools/python.jam 2017-02-16 18:51:24.912497496 +0000 +@@ -926,27 +926,27 @@ + # for a particular target OS as the default. This makes it so that we can + # select a python interpreter with only knowledge of the target OS. And hence + # can configure different Pythons based on the target OS only. +- local toolset-requirements = [ toolset.requirements ] ; +- local toolset-target-os-requirements +- = [ property.evaluate-conditionals-in-context +- [ $(toolset-requirements).raw ] : $(target-os) ] ; +- if ! in $(toolset-target-os-requirements:G) +- { +- toolset.add-requirements $(target-os):$(version:E=default) ; +- } ++ #local toolset-requirements = [ toolset.requirements ] ; ++ #local toolset-target-os-requirements ++ # = [ property.evaluate-conditionals-in-context ++ # [ $(toolset-requirements).raw ] : $(target-os) ] ; ++ #if ! in $(toolset-target-os-requirements:G) ++ #{ ++ # toolset.add-requirements $(target-os):$(version:E=default) ; ++ #} + + # We also set a default requirement that assigns the first python configured + # for a particular target OS as the default. This makes it so that we can + # select a python interpreter with only knowledge of the target OS. And hence + # can configure different Pythons based on the target OS only. +- local toolset-requirements = [ toolset.requirements ] ; +- local toolset-target-os-requirements +- = [ property.evaluate-conditionals-in-context +- [ $(toolset-requirements).raw ] : $(target-os) ] ; +- if ! in $(toolset-target-os-requirements:G) +- { +- toolset.add-requirements $(target-os):$(version:E=default) ; +- } ++ #local toolset-requirements = [ toolset.requirements ] ; ++ #local toolset-target-os-requirements ++ # = [ property.evaluate-conditionals-in-context ++ # [ $(toolset-requirements).raw ] : $(target-os) ] ; ++ #if ! in $(toolset-target-os-requirements:G) ++ #{ ++ # toolset.add-requirements $(target-os):$(version:E=default) ; ++ #} + + # Register the right suffix for extensions. + register-extension-suffix $(extension-suffix) : $(target-requirements) ; diff --git a/boost-numpy3.patch b/boost-numpy3.patch new file mode 100644 index 0000000..0deef86 --- /dev/null +++ b/boost-numpy3.patch @@ -0,0 +1,11 @@ +--- boost_1_63_0/libs/python/build/Jamfile.orig 2016-12-22 13:33:19.000000000 +0100 ++++ boost_1_63_0/libs/python/build/Jamfile 2017-04-08 21:35:49.226719994 +0200 +@@ -140,7 +140,7 @@ + [ cond [ python.numpy ] : /python//python_for_extensions ] + [ unless [ python.numpy ] : no ] + $(numpy-include) +- boost_python ++ [ cond $(is-py3) : boost_python3 : boost_python ] + on:BOOST_DEBUG_PYTHON + [ cond $(is-py3) : $(py3-version) ] + diff --git a/boost-python-abi_letters.patch b/boost-python-abi_letters.patch new file mode 100644 index 0000000..7df3ee7 --- /dev/null +++ b/boost-python-abi_letters.patch @@ -0,0 +1,62 @@ +--- boost_1_57_0/tools/build/src/tools/python.jam 2013-05-21 06:14:18.000000000 +0200 ++++ boost_1_55_0/tools/build/src/tools/python.jam 2014-05-29 19:09:12.115413877 +0200 +@@ -94,7 +94,7 @@ feature.feature pythonpath : : free opti + # using python : 2.3 : /usr/local/bin/python ; + # + rule init ( version ? : cmd-or-prefix ? : includes * : libraries ? +- : condition * : extension-suffix ? ) ++ : condition * : extension-suffix ? : abi-letters ? ) + { + project.push-current $(.project) ; + +@@ -107,7 +107,7 @@ rule init ( version ? : cmd-or-prefix ? + } + } + +- configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) ; ++ configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) : $(abi-letters) ; + + project.pop-current ; + } +@@ -653,7 +653,7 @@ local rule system-library-dependencies ( + + # Declare a target to represent Python's library. + # +-local rule declare-libpython-target ( version ? : requirements * ) ++local rule declare-libpython-target ( version ? : requirements * : abi-letters ? ) + { + # Compute the representation of Python version in the name of Python's + # library file. +@@ -677,13 +677,13 @@ local rule declare-libpython-target ( ve + } + + # Declare it. +- lib python.lib : : python$(lib-version) $(requirements) ; ++ lib python.lib : : python$(lib-version)$(abi-letters) $(requirements) ; + } + + + # Implementation of init. + local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? : +- condition * : extension-suffix ? ) ++ condition * : extension-suffix ? : abi-letters ? ) + { + local prefix ; + local exec-prefix ; +@@ -699,6 +699,7 @@ local rule configure ( version ? : cmd-o + extension-suffix ?= _d ; + } + extension-suffix ?= "" ; ++ abi-letters ?= "" ; + + # Normalize and dissect any version number. + local major-minor ; +@@ -922,7 +923,7 @@ local rule configure ( version ? : cmd-o + } + else + { +- declare-libpython-target $(version) : $(target-requirements) ; ++ declare-libpython-target $(version) : $(target-requirements) : $(abi-letters) ; + + # This is an evil hack. On, Windows, when Python is embedded, nothing + # seems to set up sys.path to include Python's standard library diff --git a/boost.spec b/boost.spec index 3a0d6b8..11b9059 100644 --- a/boost.spec +++ b/boost.spec @@ -4,23 +4,28 @@ # - 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.61.0 -Release: 6 +Version: 1.63.0 +Release: 1 License: Boost Software License and others Group: Libraries Source0: http://downloads.sourceforge.net/boost/%{name}_%{fver}.tar.bz2 -# Source0-md5: 6095876341956f65f9d35939ccea1a9f +# 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/8881 @@ -31,8 +36,14 @@ BuildRequires: expat-devel 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 @@ -459,7 +470,10 @@ Dokumentacja dla biblioteki Boost C++. %patch0 -p1 %patch1 -p1 %patch2 -p1 +%patch3 -p1 +%patch201 -p1 +%patch202 -p1 %patch203 -p0 %patch221 -p1 @@ -487,9 +501,9 @@ ICU_PATH=%{_prefix} \ 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 \ @@ -499,6 +513,7 @@ echo "using python : %{py3_ver}m : %{py3_prefix} : %{py3_incdir} ;" >> project-c %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} \ @@ -706,28 +721,46 @@ rm -rf $RPM_BUILD_ROOT %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 -- 2.43.0