From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Schantl To: development@lists.ipfire.org Subject: [PATCH] boost: Updat to 1.60.0. Date: Thu, 14 Apr 2016 08:48:15 +0200 Message-ID: <1460616495-4403-1-git-send-email-stefan.schantl@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0578537354608093335==" List-Id: --===============0578537354608093335== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable This is a major update to the latest available version of boost. Fixes #11018. Signed-off-by: Stefan Schantl --- boost/boost.nm | 21 +-- boost/patches/boost-1.48.0-add-bjam-man-page.patch | 150 +++++++++++++++++++= ++ .../patches/boost-1.50.0-fix-non-utf8-files.patch | 22 +++ ...1.55.0-python-test-PyImport_AppendInittab.patch | 98 ++++++++++++++ boost/patches/boost-1.57.0-build-optflags.patch | 48 +++++++ boost/patches/boost-1.57.0-mpl-print.patch | 31 +++++ .../patches/boost-1.57.0-python-abi_letters.patch | 62 +++++++++ .../boost-1.57.0-python-libpython_dep.patch | 13 ++ .../boost-1.57.0-spirit-unused_typedef.patch | 19 +++ boost/patches/boost-1.58.0-pool-test_linking.patch | 31 +++++ boost/patches/boost-1.58.0-pool.patch0 | 120 +++++++++++++++++ boost/patches/boost-1.59-test-fenv.patch2 | 32 +++++ 12 files changed, 638 insertions(+), 9 deletions(-) create mode 100644 boost/patches/boost-1.48.0-add-bjam-man-page.patch create mode 100644 boost/patches/boost-1.50.0-fix-non-utf8-files.patch create mode 100644 boost/patches/boost-1.55.0-python-test-PyImport_AppendIni= ttab.patch create mode 100644 boost/patches/boost-1.57.0-build-optflags.patch create mode 100644 boost/patches/boost-1.57.0-mpl-print.patch create mode 100644 boost/patches/boost-1.57.0-python-abi_letters.patch create mode 100644 boost/patches/boost-1.57.0-python-libpython_dep.patch create mode 100644 boost/patches/boost-1.57.0-spirit-unused_typedef.patch create mode 100644 boost/patches/boost-1.58.0-pool-test_linking.patch create mode 100644 boost/patches/boost-1.58.0-pool.patch0 create mode 100644 boost/patches/boost-1.59-test-fenv.patch2 diff --git a/boost/boost.nm b/boost/boost.nm index 889b316..0a6af33 100644 --- a/boost/boost.nm +++ b/boost/boost.nm @@ -5,10 +5,10 @@ =20 name =3D boost ver_major =3D 1 -ver_minor =3D 51 +ver_minor =3D 60 ver_plevel =3D 0 version =3D %{ver_major}.%{ver_minor}.%{ver_plevel} -release =3D 2 +release =3D 1 =20 groups =3D System/Libraries url =3D http://www.boost.org/ @@ -31,6 +31,7 @@ build requires bzip2-devel gcc-c++ + icu-devel python-devel python3-devel zlib-devel @@ -39,12 +40,13 @@ build CFLAGS +=3D -fno-strict-aliasing CXXFLAGS +=3D -fno-strict-aliasing =20 - # Don't build in parallel on ARM. + # Obtain python3 abiflags. + python3_abiflags =3D %(python3-config --abiflags) + + # Don't build in parallel on any architecture. # The C++ compiles consumes too much memory, so # we cannot run multiple instances at once. - if "%{DISTRO_PLATFORM}" =3D=3D "arm" - PARALLELISMFLAGS =3D -j2 - end + PARALLELISMFLAGS =3D -j2 =20 configure_options =3D \ --layout=3Dtagged \ @@ -68,11 +70,12 @@ build mkdir -pv %{DIR_APP}/serial =20 # Bootstrap build environment. - ./bootstrap.sh --with-toolset=3Dgcc + ./bootstrap.sh --with-toolset=3Dgcc --with-icu =20 # Enable boost lib for python3. - cat >> ./tools/build/v2/user-config.jam << EOF - using python : %{python3_version} : %{python3} : %{includedir}/python%{pyt= hon3_version}%{python3_abiflags} : %{libdir}/python%{python3_version} ; + cat >> ./tools/build/src/user-config.jam << EOF + using python : %{python_version} : %{python2} : %{includedir}/python%{pyth= on_version} : : : : ; + using python : %{python3_version} : %{python3} : %{includedir}/python%{pyt= hon3_version}%{python3_abiflags} : : : : %{python3_abiflags} ; EOF end =20 diff --git a/boost/patches/boost-1.48.0-add-bjam-man-page.patch b/boost/patch= es/boost-1.48.0-add-bjam-man-page.patch new file mode 100644 index 0000000..ea3f19f --- /dev/null +++ b/boost/patches/boost-1.48.0-add-bjam-man-page.patch @@ -0,0 +1,150 @@ +diff --git a/tools/build/v2/doc/bjam.1 b/tools/build/v2/doc/bjam.1 +new file mode 100644 +index 0000000..8a44af6 +--- /dev/null ++++ b/tools/build/v2/doc/bjam.1 +@@ -0,0 +1,144 @@ ++.TH "bjam" 1 "Sat Nov 19 2011" "Doxygen" \" -*- nroff -*- ++.ad l ++.nh ++.SH NAME ++bjam \- Command-line utility to build Boost-related C++ projects with Boost= \&.Build ++.SH "SYNOPSIS" ++.PP ++\fBbjam\fP \fC[-a] [-dx] [-fx] [-jx] [-lx] [-n] [-ox] [-px] [-q] [-sx=3Dy] = [-tx] [-v] [--x]\fP ++.PP ++\fIbjam\fP accepts the following options: ++.PP ++\fB-a\fP=20 ++.br ++ Build all targets, even if they are current ++.PP ++\fB-dx\fP=20 ++.br ++ Set the debug level to x (0-9) ++.PP ++\fB-fx\fP=20 ++.br ++ Read x instead of Jambase ++.PP ++\fB-jx\fP=20 ++.br ++ Run up to x shell commands concurrently ++.PP ++\fB-lx\fP=20 ++.br ++ Limit actions to x number of seconds after which they are stopped ++.PP ++\fB-n\fP=20 ++.br ++ Don't actually execute the updating actions ++.PP ++\fB-ox\fP=20 ++.br ++ Write the updating actions to file x ++.PP ++\fB-px\fP=20 ++.br ++ x=3D0, pipes action stdout and stderr merged into action output ++.PP ++\fB-q\fP=20 ++.br ++ Quit quickly as soon as a target fails ++.PP ++\fB-sx=3Dy\fP=20 ++.br ++ Set variable x=3Dy, overriding environment ++.PP ++\fB-tx\fP=20 ++.br ++ Rebuild x, even if it is up-to-date ++.PP ++\fB-v\fP=20 ++.br ++ Print the version of jam and exit ++.PP ++\fB--x\fP=20 ++.br ++ Option is ignored ++.SH "DESCRIPTION" ++.PP ++This section provides the information necessary to create your own projects= using \fIBoost\&.Build\fP The information provided here is relatively high-l= evel, and Chapter 6, Reference as well as the on-line help system must be use= d to obtain low-level documentation (see --help) ++.PP ++\fIBoost\&.Build\fP actually consists of two parts - \fIBoost\&.Jam\fP, a b= uild engine with its own interpreted language, and \fIBoost\&.Build\fP itself= , implemented in \fIBoost\&.Jam's\fP language\&. The chain of events when you= type bjam on the command line is as follows: ++.IP "\(bu" 2 ++\fIBoost\&.Jam\fP tries to find \fIBoost\&.Build\fP and loads the top-level= module\&. The exact process is described in the section called =E2=80=9CInit= ialization=E2=80=9D ++.PP ++.PP ++.IP "\(bu" 2 ++The top-level module loads user-defined configuration files, \fIuser-config= \&.jam\fP and \fIsite-config\&.jam\fP, which define available toolsets ++.PP ++.PP ++.IP "\(bu" 2 ++The \fIJamfile\fP in the current directory is read That in turn might cause= reading of further Jamfiles\&. As a result, a tree of projects is created, w= ith targets inside projects ++.PP ++.PP ++.IP "\(bu" 2 ++Finally, using the build request specified on the command line, \fIBoost\&.= Build\fP decides which targets should be built and how\&. That information is= passed back to \fIBoost\&.Jam\fP, which takes care of actually running the s= cheduled build action commands ++.PP ++.PP ++So, to be able to successfully use \fIBoost\&.Build\fP, you need to know on= ly four things: ++.IP "\(bu" 2 ++How to configure \fIBoost\&.Build\fP (http://www.boost.org/boost-build2/doc= /html/bbv2/overview/configuration.html) ++.IP "\(bu" 2 ++How to declare targets in Jamfiles (http://www.boost.org/boost-build2/doc/h= tml/bbv2/overview/targets.html) ++.IP "\(bu" 2 ++How the build process works (http://www.boost.org/boost-build2/doc/html/bbv= 2/overview/build_process.html) ++.PP ++.PP ++Some Basics about the \fIBoost\&.Jam\fP language\&. See the section called = =E2=80=9CBoost\&.Jam Language=E2=80=9D (http://www.boost.org/boost-build2/doc= /html/bbv2/overview/jam_language.html) ++.SH "CONCEPTS" ++.PP ++\fIBoost\&.Build\fP has a few unique concepts that are introduced in this s= ection\&. The best way to explain the concepts is by comparison with more cla= ssical build tools ++.PP ++When using any flavour of make, you directly specify targets and commands t= hat are used to create them from other target\&. The below example creates a\= &.o from a\&.c using a hardcoded compiler invocation command ++.PP ++a\&.o: a\&.c ++.br ++ g++ -o a\&.o -g a\&.c ++.PP ++This is rather low-level description mechanism and it is hard to adjust com= mands, options, and sets of created targets depending on the used compiler an= d operating system\&. ++.PP ++To improve portability, most modern build system provide a set of higher-le= vel functions that can be used in build description files\&. Consider this ex= ample: ++.PP ++add_program ('a', 'a\&.c') ++.br ++.PP ++This is a function call that creates targets necessary to create executable= file from source file a\&.c\&. Depending on configured properties, different= commands line may be used\&. However, \fIadd_program\fP is higher-level, but= rather thin level All targets are created immediately when build description= is parsed, which makes it impossible to perform multi-variant builds\&. Ofte= n, change in any build property requires complete reconfiguration of the buil= d tree ++.PP ++In order to support true multivariant builds, Boost\&.Build introduces the = concept of metatarget=E2=80=94object that is created when build description i= s parsed and can be later called with specific build properties to generate a= ctual targets ++.PP ++Consider an example: ++.PP ++exe a : a\&.cpp ; ++.br ++.PP ++When this declaration is parsed, \fIBoost\&.Build\fP creates a metatarget, = but does not yet decides what files must be created, or what commands must be= used\&. After all build files are parsed, Boost\&.Build considers properties= requested on the command line\&. Supposed you have invoked \fIBoost\&.Build\= fP with: ++.PP ++\fIbjam\fP toolset=3Dgcc toolset=3Dmsvc ++.br ++.PP ++In that case, the metatarget will be called twice, once with toolset=3Dgcc = and once with toolset=3Dmsvc\&. Both invocations will produce concrete target= s, that will have different extensions and use different command lines\&. Ano= ther key concept is build property\&. Build property is a variable that affec= ts the build process\&. It can be specified on the command line, and is passe= d when calling a metatarget ++.PP ++While all build tools have a similar mechanism, \fIBoost\&.Build\fP differs= by requiring that all build properties are declared in advance, and providin= g a large set of properties with portable semantics ++.PP ++The final concept is property propagation\&. Boost\&.Build does not require= that every metatarget is called with the same properties\&. Instead, the 'to= p-level' metatargets are called with the properties specified on the command = line Each metatarget can elect to augment or override some properties (in par= ticular, using the requirements mechanism, see the section called =E2=80=9CRe= quirements=E2=80=9D: http://www.boost.org/boost-build2/doc/html/bbv2/overview= /targets.html#bbv2.overview.targets.requirements) Then, the dependency metata= rgets are called with modified properties and produce concrete targets that a= re then used in build process Of course, dependency metatargets maybe in turn= modify build properties and have dependencies of their own\&. ++.PP ++For more in-depth treatment of the requirements and concepts, you may refer= to SYRCoSE 2009 Boost\&.Build article (http://syrcose.ispras.ru/2009/files/0= 4_paper.pdf)\&. ++.SH "SEE ALSO" ++.PP ++\fBboost-libraries\fP(3) ++.SH "SUPPORT" ++.PP ++Please report any bugs to https://svn.boost.org/trac/boost/ ++.SH "COPYRIGHT" ++.PP ++Boost Software License - Version 1\&.0 - August 17th, 2003 ++.PP ++See the LICENSE_1_0\&.txt file for more information on that license, or dir= ectly on Internet: ++.br ++ http://www.boost.org/LICENSE_1_0.txt=20 diff --git a/boost/patches/boost-1.50.0-fix-non-utf8-files.patch b/boost/patc= hes/boost-1.50.0-fix-non-utf8-files.patch new file mode 100644 index 0000000..b60a3ac --- /dev/null +++ b/boost/patches/boost-1.50.0-fix-non-utf8-files.patch @@ -0,0 +1,22 @@ +diff --git a/libs/units/example/autoprefixes.cpp b/libs/units/example/autopr= efixes.cpp +index 8b2bc43..d04f2fe 100644 +--- a/libs/units/example/autoprefixes.cpp ++++ b/libs/units/example/autoprefixes.cpp +@@ -67,7 +67,7 @@ struct thing_base_unit : boost::units::base_unit + { + static const char* name() { return("EUR"); } +- static const char* symbol() { return("=EF=BF=BD"); } ++ static const char* symbol() { return("=E2=82=AC"); } + }; +=20 + int main() +@@ -140,7 +140,7 @@ int main() +=20 + quantity ce =3D 2048. * euro_base_unit::unit_t= ype(); + cout << name_format << engineering_prefix << ce << endl; // 2.048 kiloEUR +- cout << symbol_format << engineering_prefix << ce << endl; // 2.048 k=EF= =BF=BD ++ cout << symbol_format << engineering_prefix << ce << endl; // 2.048 k=E2= =82=AC +=20 +=20 + return 0; diff --git a/boost/patches/boost-1.55.0-python-test-PyImport_AppendInittab.pa= tch b/boost/patches/boost-1.55.0-python-test-PyImport_AppendInittab.patch new file mode 100644 index 0000000..1d2ee5c --- /dev/null +++ b/boost/patches/boost-1.55.0-python-test-PyImport_AppendInittab.patch @@ -0,0 +1,98 @@ +diff -up boost_1_55_0/libs/python/test/exec.cpp\~ boost_1_55_0/libs/python/t= est/exec.cpp +--- boost_1_55_0/libs/python/test/exec.cpp~ 2010-07-05 00:38:38.000000000 +0= 200 ++++ boost_1_55_0/libs/python/test/exec.cpp 2015-01-09 21:31:12.903218280 +01= 00 +@@ -56,6 +56,20 @@ void eval_test() + BOOST_TEST(value =3D=3D "ABCDEFG"); + } +=20 ++struct PyCtx ++{ ++ PyCtx() { ++ Py_Initialize(); ++ } ++ ++ ~PyCtx() { ++ // N.B. certain problems may arise when Py_Finalize is called when ++ // using Boost.Python. However in this test suite it all seems to ++ // work fine. ++ Py_Finalize(); ++ } ++}; ++ + void exec_test() + { + // Register the module with the interpreter +@@ -68,6 +82,8 @@ void exec_test() + ) =3D=3D -1)=20 + throw std::runtime_error("Failed to add embedded_hello to the interpret= er's " + "builtin modules"); ++ ++ PyCtx ctx; + // Retrieve the main module + python::object main =3D python::import("__main__"); + =20 +@@ -148,41 +164,43 @@ void check_pyerr(bool pyerr_expected=3Dfal + } + } +=20 ++template ++bool ++run_and_handle_exception(Cb cb, bool pyerr_expected =3D false) ++{ ++ PyCtx ctx; ++ if (python::handle_exception(cb)) { ++ check_pyerr(pyerr_expected); ++ return true; ++ } else { ++ return false; ++ } ++} ++ + int main(int argc, char **argv) + { + BOOST_TEST(argc =3D=3D 2 || argc =3D=3D 3); + std::string script =3D argv[1]; +- // Initialize the interpreter +- Py_Initialize(); +=20 +- if (python::handle_exception(eval_test)) { +- check_pyerr(); +- } +- else if(python::handle_exception(exec_test)) { +- check_pyerr(); +- } +- else if (python::handle_exception(boost::bind(exec_file_test, script))) { ++ // N.B. exec_test mustn't be called through run_and_handle_exception ++ // as it needs to handles the python context by itself. ++ if (run_and_handle_exception(eval_test) ++ || python::handle_exception(exec_test)) + check_pyerr(); +- } +- =20 +- if (python::handle_exception(exec_test_error)) +- { +- check_pyerr(/*pyerr_expected*/ true); +- } + else +- { ++ run_and_handle_exception(boost::bind(exec_file_test, script)); ++ ++ if (!run_and_handle_exception(exec_test_error, true)) + BOOST_ERROR("Python exception expected, but not seen."); +- } +=20 + if (argc > 2) { ++ PyCtx ctx; + // The main purpose is to test compilation. Since this test generates + // a file and I (rwgk) am uncertain about the side-effects, run it only + // if explicitly requested. + exercise_embedding_html(); + } +=20 +- // Boost.Python doesn't support Py_Finalize yet. +- // Py_Finalize(); + return boost::report_errors(); + } +=20 + +Diff finished. Fri Jan 9 21:31:13 2015 diff --git a/boost/patches/boost-1.57.0-build-optflags.patch b/boost/patches/= boost-1.57.0-build-optflags.patch new file mode 100644 index 0000000..d0b925f --- /dev/null +++ b/boost/patches/boost-1.57.0-build-optflags.patch @@ -0,0 +1,48 @@ +diff -up ./tools/build/src/tools/gcc.jam~ ./tools/build/src/tools/gcc.jam +--- ./tools/build/src/tools/gcc.jam~ 2015-02-09 15:01:04.850331626 +0100 ++++ ./tools/build/src/tools/gcc.jam 2015-02-09 15:44:29.122307134 +0100 +@@ -366,17 +366,17 @@ generators.override gcc.compile.c++.pch + toolset.flags gcc.compile PCH_FILE on : ; +=20 + # Declare flags and action for compilation. +-toolset.flags gcc.compile OPTIONS off : -O0 ; +-toolset.flags gcc.compile OPTIONS speed : -O3 ; +-toolset.flags gcc.compile OPTIONS space : -Os ; ++toolset.flags gcc.compile OPTIONS off : ; ++toolset.flags gcc.compile OPTIONS speed : ; ++toolset.flags gcc.compile OPTIONS space : ; +=20 +-toolset.flags gcc.compile OPTIONS off : -fno-inline ; +-toolset.flags gcc.compile OPTIONS on : -Wno-inline ; +-toolset.flags gcc.compile OPTIONS full : -finline-functions -Wno-= inline ; ++toolset.flags gcc.compile OPTIONS off : ; ++toolset.flags gcc.compile OPTIONS on : ; ++toolset.flags gcc.compile OPTIONS full : ; +=20 +-toolset.flags gcc.compile OPTIONS off : -w ; +-toolset.flags gcc.compile OPTIONS on : -Wall ; +-toolset.flags gcc.compile OPTIONS all : -Wall -pedantic ; ++toolset.flags gcc.compile OPTIONS off : ; ++toolset.flags gcc.compile OPTIONS on : ; ++toolset.flags gcc.compile OPTIONS all : ; + toolset.flags gcc.compile OPTIONS on : -Werror ; +=20 + toolset.flags gcc.compile OPTIONS on : -g ; +@@ -603,7 +603,7 @@ rule compile.fortran ( targets * : sourc +=20 + actions compile.c++ bind PCH_FILE + { +- "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTION= S) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:= W)" "$(>:W)" ++ "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"= $(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)" + } +=20 + actions compile.c bind PCH_FILE +@@ -613,7 +613,7 @@ actions compile.c bind PCH_FILE +=20 + actions compile.c++.preprocess bind PCH_FILE + { +- "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTION= S) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" "$(>:W)" -E= >"$(<:W)" ++ "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"= $(PCH_FILE:D)" -I"$(INCLUDES)" "$(>:W)" -E >"$(<:W)" + } +=20 + actions compile.c.preprocess bind PCH_FILE diff --git a/boost/patches/boost-1.57.0-mpl-print.patch b/boost/patches/boost= -1.57.0-mpl-print.patch new file mode 100644 index 0000000..561cef1 --- /dev/null +++ b/boost/patches/boost-1.57.0-mpl-print.patch @@ -0,0 +1,31 @@ +diff -up boost_1_57_0/boost/mpl/print.hpp\~ boost_1_57_0/boost/mpl/print.hpp +--- boost_1_57_0/boost/mpl/print.hpp~ 2014-07-09 23:12:31.000000000 +0200 ++++ boost_1_57_0/boost/mpl/print.hpp 2015-01-20 12:44:59.621400948 +0100 +@@ -52,16 +52,15 @@ struct print + enum { n =3D sizeof(T) + -1 }; + #elif defined(__MWERKS__) + void f(int); +-#else=20 +- enum { +- n =3D +-# if defined(__EDG_VERSION__) +- aux::dependent_unsigned::value > -1 +-# else=20 +- sizeof(T) > -1 +-# endif=20 +- }; +-#endif=20 ++#elif defined(__EDG_VERSION__) ++ enum { n =3D aux::dependent_unsigned::value > -1 }; ++#elif defined(BOOST_GCC) ++ enum { n1 }; ++ enum { n2 }; ++ enum { n =3D n1 !=3D n2 }; ++#else ++ enum { n =3D sizeof(T) > -1 }; ++#endif + }; +=20 + #if defined(BOOST_MSVC) + +Diff finished. Tue Jan 20 12:45:03 2015 diff --git a/boost/patches/boost-1.57.0-python-abi_letters.patch b/boost/patc= hes/boost-1.57.0-python-abi_letters.patch new file mode 100644 index 0000000..7df3ee7 --- /dev/null +++ b/boost/patches/boost-1.57.0-python-abi_letters.patch @@ -0,0 +1,62 @@ +--- boost_1_57_0/tools/build/src/tools/python.jam 2013-05-21 06:14:18.000000= 000 +0200 ++++ boost_1_55_0/tools/build/src/tools/python.jam 2014-05-29 19:09:12.115413= 877 +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) ; +=20 +@@ -107,7 +107,7 @@ rule init ( version ? : cmd-or-prefix ?=20 + } + } +=20 +- configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : = $(condition) : $(extension-suffix) ; ++ configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : = $(condition) : $(extension-suffix) : $(abi-letters) ; +=20 + project.pop-current ; + } +@@ -653,7 +653,7 @@ local rule system-library-dependencies ( +=20 + # Declare a target to represent Python's library. + # +-local rule declare-libpython-target ( version ? : requirements * ) ++local rule declare-libpython-target ( version ? : requirements * : abi-lett= ers ? ) + { + # Compute the representation of Python version in the name of Python's + # library file. +@@ -677,13 +677,13 @@ local rule declare-libpython-target ( ve + } +=20 + # Declare it. +- lib python.lib : : python$(lib-version) $(requirements) ; ++ lib python.lib : : python$(lib-version)$(abi-letters) $(requireme= nts) ; + } +=20 +=20 + # 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 ?=3D _d ; + } + extension-suffix ?=3D "" ; ++ abi-letters ?=3D "" ; +=20 + # 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) : $(ab= i-letters) ; +=20 + # This is an evil hack. On, Windows, when Python is embedded, noth= ing + # seems to set up sys.path to include Python's standard library diff --git a/boost/patches/boost-1.57.0-python-libpython_dep.patch b/boost/pa= tches/boost-1.57.0-python-libpython_dep.patch new file mode 100644 index 0000000..57bfc26 --- /dev/null +++ b/boost/patches/boost-1.57.0-python-libpython_dep.patch @@ -0,0 +1,13 @@ +Index: boost_1_57_0/tools/build/src/tools/python.jam +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- boost_1_57_0/tools/build/src/tools/python.jam (revision 50406) ++++ boost_1_57_0/tools/build/src/tools/python.jam (working copy) +@@ -994,7 +994,7 @@ + else + { + alias python_for_extensions +- : ++ : python + : $(target-requirements) + : + : $(usage-requirements) diff --git a/boost/patches/boost-1.57.0-spirit-unused_typedef.patch b/boost/p= atches/boost-1.57.0-spirit-unused_typedef.patch new file mode 100644 index 0000000..2829629 --- /dev/null +++ b/boost/patches/boost-1.57.0-spirit-unused_typedef.patch @@ -0,0 +1,19 @@ +diff -up boost_1_57_0/boost/spirit/home/classic/core/non_terminal/impl/gramm= ar.ipp\~ boost_1_57_0/boost/spirit/home/classic/core/non_terminal/impl/gramma= r.ipp +--- boost_1_57_0/boost/spirit/home/classic/core/non_terminal/impl/grammar.ip= p~ 2014-10-13 12:21:40.000000000 +0200 ++++ boost_1_57_0/boost/spirit/home/classic/core/non_terminal/impl/grammar.ip= p 2015-01-20 13:25:50.069710766 +0100 +@@ -282,12 +282,12 @@ struct grammar_definition + #if !defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE) + typedef impl::grammar_helper_base helper_base_t; + typedef grammar_helper_list helper_list_t; +- typedef typename helper_list_t::vector_t::reverse_iterator iterator= _t; +=20 + helper_list_t& helpers =3D + grammartract_helper_list::do_(self); +=20 + # if defined(BOOST_INTEL_CXX_VERSION) ++ typedef typename helper_list_t::vector_t::reverse_iterator iterator= _t; + for (iterator_t i =3D helpers.rbegin(); i !=3D helpers.rend(); ++i) + (*i)->undefine(self); + # else + +Diff finished. Tue Jan 20 13:25:53 2015 diff --git a/boost/patches/boost-1.58.0-pool-test_linking.patch b/boost/patch= es/boost-1.58.0-pool-test_linking.patch new file mode 100644 index 0000000..a381370 --- /dev/null +++ b/boost/patches/boost-1.58.0-pool-test_linking.patch @@ -0,0 +1,31 @@ +diff -up boost_1_58_0/libs/pool/test/Jamfile.v2\~ boost_1_58_0/libs/pool/tes= t/Jamfile.v2 +--- boost_1_57_0/libs/pool/test/Jamfile.v2~ 2015-07-17 11:36:16.362519826 +0= 100 ++++ boost_1_57_0/libs/pool/test/Jamfile.v2 2015-07-17 11:37:38.858847388 +01= 00 +@@ -28,17 +28,17 @@ + local Werr =3D gcc:on msvc:on ; +=20 + test-suite pool : +- [ run test_simple_seg_storage.cpp : : : $(Werr) msvc:-wd4267 ] +- [ run test_pool_alloc.cpp : : : $(Werr) ] +- [ run pool_msvc_compiler_bug_test.cpp : : : $(Werr) msvc:-wd4512 ] +- [ run test_msvc_mem_leak_detect.cpp : : : $(Werr) ] +- [ run test_bug_3349.cpp : : : $(Werr) ] +- [ run test_bug_4960.cpp : : : $(Werr) ] +- [ run test_bug_1252.cpp : : : $(Werr) ] +- [ run test_bug_2696.cpp : : : $(Werr) ] +- [ run test_bug_5526.cpp : : : $(Werr) ] ++ [ run test_simple_seg_storage.cpp : : : $(Werr) msvc:-wd4267 /boost/system//boost_system ] ++ [ run test_pool_alloc.cpp : : : $(Werr) /boost/system//boost_s= ystem ] ++ [ run pool_msvc_compiler_bug_test.cpp : : : $(Werr) msvc:-wd4512 /boost/system//boost_system ] ++ [ run test_msvc_mem_leak_detect.cpp : : : $(Werr) /boost/syste= m//boost_system ] ++ [ run test_bug_3349.cpp : : : $(Werr) /boost/system//boost_sys= tem ] ++ [ run test_bug_4960.cpp : : : $(Werr) /boost/system//boost_sys= tem ] ++ [ run test_bug_1252.cpp : : : $(Werr) /boost/system//boost_sys= tem ] ++ [ run test_bug_2696.cpp : : : $(Werr) /boost/system//boost_sys= tem ] ++ [ run test_bug_5526.cpp : : : $(Werr) /boost/system//boost_sys= tem ] + [ run test_threading.cpp : : : multi /boost/thread/= /boost_thread ] +- [ run ../example/time_pool_alloc.cpp : : : $(Werr) ] ++ [ run ../example/time_pool_alloc.cpp : : : $(Werr) /boost/sys= tem//boost_system ] + [ compile test_poisoned_macros.cpp : $(Werr) ] +=20 + # diff --git a/boost/patches/boost-1.58.0-pool.patch0 b/boost/patches/boost-1.5= 8.0-pool.patch0 new file mode 100644 index 0000000..ed8449e --- /dev/null +++ b/boost/patches/boost-1.58.0-pool.patch0 @@ -0,0 +1,120 @@ +Index: boost/pool/pool.hpp +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- boost/pool/pool.hpp (revision 78317) ++++ boost/pool/pool.hpp (revision 78326) +@@ -27,4 +27,6 @@ + #include +=20 ++// std::numeric_limits ++#include + // boost::integer::static_lcm + #include +@@ -358,4 +360,11 @@ + } +=20 ++ size_type max_chunks() const ++ { //! Calculated maximum number of memory chunks that can be allocated = in a single call by this Pool. ++ size_type partition_size =3D alloc_size(); ++ size_type POD_size =3D integer::static_lcm::value + sizeof(size_type); ++ return (std::numeric_limits::max() - POD_size) / alloc_siz= e(); ++ } ++ + static void * & nextof(void * const ptr) + { //! \returns Pointer dereferenced. +@@ -377,5 +388,7 @@ + //! the first time that object needs to allocate system memory. + //! The default is 32. This parameter may not be 0. +- //! \param nmax_size is the maximum number of chunks to allocate in o= ne block. ++ //! \param nmax_size is the maximum number of chunks to allocate in o= ne block. =09 ++ set_next_size(nnext_size); ++ set_max_size(nmax_size); + } +=20 +@@ -400,7 +413,7 @@ + } + void set_next_size(const size_type nnext_size) +- { //! Set number of chunks to request from the system the next time tha= t object needs to allocate system memory. This value should never be set to 0. +- //! \returns nnext_size. +- next_size =3D start_size =3D nnext_size; ++ { //! Set number of chunks to request from the system the next time tha= t object needs to allocate system memory. This value should never be set to 0= . =20 ++ BOOST_USING_STD_MIN(); ++ next_size =3D start_size =3D min BOOST_PREVENT_MACRO_SUBSTITUTION(nne= xt_size, max_chunks()); + } + size_type get_max_size() const +@@ -410,5 +423,6 @@ + void set_max_size(const size_type nmax_size) + { //! Set max_size. +- max_size =3D nmax_size; ++ BOOST_USING_STD_MIN(); ++ max_size =3D min BOOST_PREVENT_MACRO_SUBSTITUTION(nmax_size, max_chun= ks()); + } + size_type get_requested_size() const +@@ -713,7 +727,7 @@ + BOOST_USING_STD_MIN(); + if(!max_size) +- next_size <<=3D 1; ++ set_next_size(next_size << 1); + else if( next_size*partition_size/requested_size < max_size) +- next_size =3D min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_= size*requested_size/ partition_size); ++ set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_= size * requested_size / partition_size)); +=20 + // initialize it, +@@ -753,7 +767,7 @@ + BOOST_USING_STD_MIN(); + if(!max_size) +- next_size <<=3D 1; ++ set_next_size(next_size << 1); + else if( next_size*partition_size/requested_size < max_size) +- next_size =3D min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_= size*requested_size/ partition_size); ++ set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_= size * requested_size / partition_size)); +=20 + // initialize it, +@@ -797,4 +811,6 @@ + //! \returns Address of chunk n if allocated ok. + //! \returns 0 if not enough memory for n chunks. ++ if (n > max_chunks()) ++ return 0; +=20 + const size_type partition_size =3D alloc_size(); +@@ -845,7 +861,7 @@ + BOOST_USING_STD_MIN(); + if(!max_size) +- next_size <<=3D 1; ++ set_next_size(next_size << 1); + else if( next_size*partition_size/requested_size < max_size) +- next_size =3D min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_= size*requested_size/ partition_size); ++ set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTION(next_size << 1, max_= size * requested_size / partition_size)); +=20 + // insert it into the list, +Index: libs/pool/test/test_bug_6701.cpp +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +--- libs/pool/test/test_bug_6701.cpp (revision 78326) ++++ libs/pool/test/test_bug_6701.cpp (revision 78326) +@@ -0,0 +1,27 @@ ++/* Copyright (C) 2012 =C3=89tienne Dupuis ++*=20 ++* Use, modification and distribution is subject to the=20 ++* Boost Software License, Version 1.0. (See accompanying ++* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) ++*/ ++ ++// Test of bug #6701 (https://svn.boost.org/trac/boost/ticket/6701) ++ ++#include ++#include ++ ++int main() ++{ ++ boost::pool<> p(1024, std::numeric_limits::max() / 768); ++ ++ void *x =3D p.malloc(); ++ BOOST_ASSERT(!x); ++ =20 ++ BOOST_ASSERT(std::numeric_limits::max() / 1024 >=3D p.get_next_si= ze()); ++ BOOST_ASSERT(std::numeric_limits::max() / 1024 >=3D p.get_max_siz= e()); ++ ++ void *y =3D p.ordered_malloc(std::numeric_limits::max() / 768); ++ BOOST_ASSERT(!y); ++ ++ return 0; ++} diff --git a/boost/patches/boost-1.59-test-fenv.patch2 b/boost/patches/boost-= 1.59-test-fenv.patch2 new file mode 100644 index 0000000..df87f56 --- /dev/null +++ b/boost/patches/boost-1.59-test-fenv.patch2 @@ -0,0 +1,32 @@ +commit 2f3b98e640c25fe45ae691a5aa950745380b983e +Author: Jonathan Wakely +Date: Mon Sep 14 15:05:24 2015 +0100 + + Do not qualify names that might be macros. + +diff --git a/include/boost/test/impl/execution_monitor.ipp b/include/boost/t= est/impl/execution_monitor.ipp +index 3a9e779..8b319df 100644 +--- a/include/boost/test/impl/execution_monitor.ipp ++++ b/include/boost/test/impl/execution_monitor.ipp +@@ -1380,8 +1380,8 @@ enable( unsigned mask ) +=20 + return ~old_cw & BOOST_FPE_ALL; + #elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && = !defined(BOOST_NO_FENV_H) +- ::feclearexcept(BOOST_FPE_ALL); +- int res =3D ::feenableexcept( mask ); ++ feclearexcept(BOOST_FPE_ALL); ++ int res =3D feenableexcept( mask ); + return res =3D=3D -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res; + #else + /* Not Implemented */ +@@ -1417,8 +1417,8 @@ disable( unsigned mask ) +=20 + return ~old_cw & BOOST_FPE_ALL; + #elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && = !defined(BOOST_NO_FENV_H) +- ::feclearexcept(BOOST_FPE_ALL); +- int res =3D ::fedisableexcept( mask ); ++ feclearexcept(BOOST_FPE_ALL); ++ int res =3D fedisableexcept( mask ); + return res =3D=3D -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res; + #else + /* Not Implemented */ --=20 2.4.11 --===============0578537354608093335==--