Hi, no idea why this patch is not showing up in patchwork, but well... Main issue: Doesn't build. + /usr/lib/pakfire/patch --search-path=/usr/src/packages/boost-1.60.0-1.ip3.src/patches '/usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.48.0-add-bjam-man-page.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.50.0-fix-non-utf8-files.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.51.0-context-no-exec-stack.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.55.0-python-test-PyImport_AppendInittab.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.57.0-build-optflags.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.57.0-mpl-print.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.57.0-python-abi_letters.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.57.0-python-libpython_dep.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.57.0-spirit-unused_typedef.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.58.0-pool.patch0 /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.58.0-pool-test_linking.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.59-test-fenv.patch2' Applying patches...   Applying /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.48.0-add-bjam-man-page.patch (-N -p1)... patching file tools/build/v2/doc/bjam.1   Applying /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.50.0-fix-non-utf8-files.patch (-N -p1)... patching file libs/units/example/autoprefixes.cpp   Applying /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.51.0-context-no-exec-stack.patch (-N -p1)... can't find file to patch at input line 4 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |diff -Nur a/libs/context/src/asm/fcontext_arm_aapcs_elf_gas.S b/libs/context/src/asm/fcontext_arm_aapcs_elf_gas.S |--- a/libs/context/src/asm/fcontext_arm_aapcs_elf_gas.S 2012-07-03 21:12:31.000000000 +0200 |+++ b/libs/context/src/asm/fcontext_arm_aapcs_elf_gas.S 2012-10-27 19:25:08.016850683 +0200 -------------------------- File to patch:  Skip this patch? [y]  Skipping patch. 1 out of 1 hunk ignored can't find file to patch at input line 18 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |diff -Nur a/libs/context/src/asm/fcontext_i386_sysv_elf_gas.S b/libs/context/src/asm/fcontext_i386_sysv_elf_gas.S |--- a/libs/context/src/asm/fcontext_i386_sysv_elf_gas.S 2012-07-03 21:12:31.000000000 +0200 |+++ b/libs/context/src/asm/fcontext_i386_sysv_elf_gas.S 2012-10-27 19:24:34.166680913 +0200 -------------------------- File to patch:  Skip this patch? [y]  Skipping patch. 1 out of 1 hunk ignored Command exited with an error: ['bash', '--login', '-c', '/tmp/tmpnYzFgq'] On Thu, 2016-04-14 at 08:48 +0200, Stefan Schantl wrote: > 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_AppendInittab.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 @@ >   >  name       = boost >  ver_major  = 1 > -ver_minor  = 51 > +ver_minor  = 60 >  ver_plevel = 0 >  version    = %{ver_major}.%{ver_minor}.%{ver_plevel} > -release    = 2 > +release    = 1 >   >  groups     = System/Libraries >  url        = 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   += -fno-strict-aliasing >   CXXFLAGS += -fno-strict-aliasing >   > - # Don't build in parallel on ARM. > + # Obtain python3 abiflags. > + python3_abiflags = %(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}" == "arm" > - PARALLELISMFLAGS = -j2 > - end > + PARALLELISMFLAGS = -j2 >   >   configure_options = \ >   --layout=tagged \ > @@ -68,11 +70,12 @@ build >   mkdir -pv %{DIR_APP}/serial >   >   # Bootstrap build environment. > - ./bootstrap.sh --with-toolset=gcc > + ./bootstrap.sh --with-toolset=gcc --with-icu >   >   # Enable boost lib for python3. > - cat >> ./tools/build/v2/user-config.jam << EOF > - using python : %{python3_version} : %{python3} : > %{includedir}/python%{python3_version}%{python3_abiflags} : > %{libdir}/python%{python3_version} ; > + cat >> ./tools/build/src/user-config.jam << EOF > + using python : %{python_version} : %{python2} : > %{includedir}/python%{python_version} : : : : ; > + using python : %{python3_version} : %{python3} : > %{includedir}/python%{python3_version}%{python3_abiflags} : : : : > %{python3_abiflags} ; >   EOF >   end >   > diff --git a/boost/patches/boost-1.48.0-add-bjam-man-page.patch > b/boost/patches/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=y] [- > tx] [-v] [--x]\fP > ++.PP > ++\fIbjam\fP accepts the following options: > ++.PP > ++\fB-a\fP  > ++.br > ++ Build all targets, even if they are current > ++.PP > ++\fB-dx\fP  > ++.br > ++ Set the debug level to x (0-9) > ++.PP > ++\fB-fx\fP  > ++.br > ++ Read x instead of Jambase > ++.PP > ++\fB-jx\fP  > ++.br > ++ Run up to x shell commands concurrently > ++.PP > ++\fB-lx\fP  > ++.br > ++ Limit actions to x number of seconds after which they are stopped > ++.PP > ++\fB-n\fP  > ++.br > ++ Don't actually execute the updating actions > ++.PP > ++\fB-ox\fP  > ++.br > ++ Write the updating actions to file x > ++.PP > ++\fB-px\fP  > ++.br > ++ x=0, pipes action stdout and stderr merged into action output > ++.PP > ++\fB-q\fP  > ++.br > ++ Quit quickly as soon as a target fails > ++.PP > ++\fB-sx=y\fP  > ++.br > ++ Set variable x=y, overriding environment > ++.PP > ++\fB-tx\fP  > ++.br > ++ Rebuild x, even if it is up-to-date > ++.PP > ++\fB-v\fP  > ++.br > ++ Print the version of jam and exit > ++.PP > ++\fB--x\fP  > ++.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- > level, and Chapter 6, Reference as well as the on-line help system must be > used to obtain low-level documentation (see --help) > ++.PP > ++\fIBoost\&.Build\fP actually consists of two parts - \fIBoost\&.Jam\fP, a > build 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 > “Initialization” > ++.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, > with 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 scheduled build action commands > ++.PP > ++.PP > ++So, to be able to successfully use \fIBoost\&.Build\fP, you need to know > only 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/ht > ml/bbv2/overview/targets.html) > ++.IP "\(bu" 2 > ++How the build process works (http://www.boost.org/boost-build2/doc/html/bbv2 > /overview/build_process.html) > ++.PP > ++.PP > ++Some Basics about the \fIBoost\&.Jam\fP language\&. See the section called > “Boost\&.Jam Language” (http://www.boost.org/boost-build2/doc/html/bbv2/overvi > ew/jam_language.html) > ++.SH "CONCEPTS" > ++.PP > ++\fIBoost\&.Build\fP has a few unique concepts that are introduced in this > section\&. The best way to explain the concepts is by comparison with more > classical build tools > ++.PP > ++When using any flavour of make, you directly specify targets and commands > that 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 > commands, options, and sets of created targets depending on the used compiler > and operating system\&. > ++.PP > ++To improve portability, most modern build system provide a set of higher- > level functions that can be used in build description files\&. Consider this > example: > ++.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\&. Often, > change in any build property requires complete reconfiguration of the build > tree > ++.PP > ++In order to support true multivariant builds, Boost\&.Build introduces the > concept of metatarget—object that is created when build description is parsed > and can be later called with specific build properties to generate actual > 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=gcc toolset=msvc > ++.br > ++.PP > ++In that case, the metatarget will be called twice, once with toolset=gcc and > once with toolset=msvc\&. Both invocations will produce concrete targets, that > will have different extensions and use different command lines\&. Another key > concept is build property\&. Build property is a variable that affects the > build process\&. It can be specified on the command line, and is passed 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 providing > 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 'top- > level' metatargets are called with the properties specified on the command > line Each metatarget can elect to augment or override some properties (in > particular, using the requirements mechanism, see the section called > “Requirements”: http://www.boost.org/boost-build2/doc/html/bbv2/overview/targe > ts.html#bbv2.overview.targets.requirements) Then, the dependency metatargets > are called with modified properties and produce concrete targets that are 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/04_ > 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 > directly on Internet: > ++.br > ++ http://www.boost.org/LICENSE_1_0.txt  > diff --git a/boost/patches/boost-1.50.0-fix-non-utf8-files.patch > b/boost/patches/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/autoprefixes.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 + struct euro_base_unit : boost::units::base_unit boost::units::dimensionless_type, 5> > + { > +   static const char* name() { return("EUR"); } > +-  static const char* symbol() { return(""); } > ++  static const char* symbol() { return("€"); } > + }; > +  > + int main() > +@@ -140,7 +140,7 @@ int main() > +  > +   quantity ce = 2048. * > euro_base_unit::unit_type(); > +   cout << name_format << engineering_prefix << ce << endl;  // 2.048 kiloEUR > +-  cout << symbol_format << engineering_prefix << ce << endl;  // 2.048 k > ++  cout << symbol_format << engineering_prefix << ce << endl;  // 2.048 k€ > +  > +  > +     return 0; > diff --git a/boost/patches/boost-1.55.0-python-test- > PyImport_AppendInittab.patch 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/test/exec.cpp > +--- boost_1_55_0/libs/python/test/exec.cpp~ 2010-07-05 > 00:38:38.000000000 +0200 > ++++ boost_1_55_0/libs/python/test/exec.cpp 2015-01-09 > 21:31:12.903218280 +0100 > +@@ -56,6 +56,20 @@ void eval_test() > +   BOOST_TEST(value == "ABCDEFG"); > + } > +  > ++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() > +                              ) == -1)  > +     throw std::runtime_error("Failed to add embedded_hello to the > interpreter's " > +                  "builtin modules"); > ++ > ++  PyCtx ctx; > +   // Retrieve the main module > +   python::object main = python::import("__main__"); > +    > +@@ -148,41 +164,43 @@ void check_pyerr(bool pyerr_expected=fal > +   } > + } > +  > ++template > ++bool > ++run_and_handle_exception(Cb cb, bool pyerr_expected = 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 == 2 || argc == 3); > +   std::string script = argv[1]; > +-  // Initialize the interpreter > +-  Py_Initialize(); > +  > +-  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(); > +-  } > +-   > +-  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."); > +-  } > +  > +   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(); > +   } > +  > +-  // Boost.Python doesn't support Py_Finalize yet. > +-  // Py_Finalize(); > +   return boost::report_errors(); > + } > +  > + > +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 : ; > +  > + # 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 :  ; > +  > +-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 :  ; > +  > +-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 ; > +  > + toolset.flags gcc.compile OPTIONS on : -g ; > +@@ -603,7 +603,7 @@ rule compile.fortran ( targets * : sourc > +  > + actions compile.c++ bind PCH_FILE > + { > +-    "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) > $(OPTIONS) $(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)" > + } > +  > + actions compile.c bind PCH_FILE > +@@ -613,7 +613,7 @@ actions compile.c bind PCH_FILE > +  > + actions compile.c++.preprocess bind PCH_FILE > + { > +-    "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) > $(OPTIONS) $(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)" > + } > +  > + 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 = sizeof(T) + -1 }; > + #elif defined(__MWERKS__) > +     void f(int); > +-#else  > +-    enum { > +-        n = > +-# if defined(__EDG_VERSION__) > +-           aux::dependent_unsigned::value > -1 > +-# else  > +-           sizeof(T) > -1 > +-# endif  > +-        }; > +-#endif  > ++#elif defined(__EDG_VERSION__) > ++    enum { n = aux::dependent_unsigned::value > -1 }; > ++#elif defined(BOOST_GCC) > ++    enum { n1 }; > ++    enum { n2 }; > ++    enum { n = n1 != n2 }; > ++#else > ++    enum { n = sizeof(T) > -1 }; > ++#endif > + }; > +  > + #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/patches/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.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/patches/boost-1.57.0-python-libpython_dep.patch > b/boost/patches/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 > +=================================================================== > +--- 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/patches/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/grammar.ipp\~ > boost_1_57_0/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp > +--- > boost_1_57_0/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp~ > 2014-10-13 12:21:40.000000000 +0200 > ++++ boost_1_57_0/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp > 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; > +  > +         helper_list_t&  helpers = > +         grammartract_helper_list::do_(self); > +  > + # if defined(BOOST_INTEL_CXX_VERSION) > ++        typedef typename helper_list_t::vector_t::reverse_iterator > iterator_t; > +         for (iterator_t i = helpers.rbegin(); i != 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/patches/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/test/Jamfile.v2 > +--- boost_1_57_0/libs/pool/test/Jamfile.v2~ 2015-07-17 > 11:36:16.362519826 +0100 > ++++ boost_1_57_0/libs/pool/test/Jamfile.v2 2015-07-17 > 11:37:38.858847388 +0100 > +@@ -28,17 +28,17 @@ > + local Werr = gcc:on msvc: errors>on ; > +  > + 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_system ] > ++    [ run pool_msvc_compiler_bug_test.cpp : : : $(Werr) > msvc:-wd4512 /boost/system//boost_system ] > ++    [ run test_msvc_mem_leak_detect.cpp : : : $(Werr) > /boost/system//boost_system ] > ++    [ run test_bug_3349.cpp : : : $(Werr) > /boost/system//boost_system ] > ++    [ run test_bug_4960.cpp : : : $(Werr) > /boost/system//boost_system ] > ++    [ run test_bug_1252.cpp : : : $(Werr) > /boost/system//boost_system ] > ++    [ run test_bug_2696.cpp : : : $(Werr) > /boost/system//boost_system ] > ++    [ run test_bug_5526.cpp : : : $(Werr) > /boost/system//boost_system ] > +     [ run test_threading.cpp : : : multi > /boost/thread//boost_thread ] > +-    [ run  ../example/time_pool_alloc.cpp : : : $(Werr) ] > ++    [ run  ../example/time_pool_alloc.cpp : : : $(Werr) > /boost/system//boost_system ] > +     [ compile test_poisoned_macros.cpp : $(Werr) ] > +  > + # > diff --git a/boost/patches/boost-1.58.0-pool.patch0 b/boost/patches/boost- > 1.58.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 > +=================================================================== > +--- boost/pool/pool.hpp (revision 78317) > ++++ boost/pool/pool.hpp (revision 78326) > +@@ -27,4 +27,6 @@ > + #include > +  > ++// std::numeric_limits > ++#include > + // boost::integer::static_lcm > + #include > +@@ -358,4 +360,11 @@ > +     } > +  > ++    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 = alloc_size(); > ++      size_type POD_size = integer::static_lcm sizeof(void *)>::value + sizeof(size_type); > ++      return (std::numeric_limits::max() - POD_size) / > alloc_size(); > ++    } > ++ > +     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 > one block. > ++      //! \param nmax_size is the maximum number of chunks to allocate in > one block. > ++      set_next_size(nnext_size); > ++      set_max_size(nmax_size); > +     } > +  > +@@ -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 that > object needs to allocate system memory. This value should never be set to 0. > +-      //! \returns nnext_size. > +-      next_size = start_size = nnext_size; > ++    { //! Set number of chunks to request from the system the next time that > object needs to allocate system memory. This value should never be set to > 0.      > ++      BOOST_USING_STD_MIN(); > ++      next_size = start_size = min > BOOST_PREVENT_MACRO_SUBSTITUTION(nnext_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 = nmax_size; > ++      BOOST_USING_STD_MIN(); > ++      max_size = min BOOST_PREVENT_MACRO_SUBSTITUTION(nmax_size, > max_chunks()); > +     } > +     size_type get_requested_size() const > +@@ -713,7 +727,7 @@ > +   BOOST_USING_STD_MIN(); > +   if(!max_size) > +-    next_size <<= 1; > ++    set_next_size(next_size << 1); > +   else if( next_size*partition_size/requested_size < max_size) > +-    next_size = 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)); > +  > +   //  initialize it, > +@@ -753,7 +767,7 @@ > +   BOOST_USING_STD_MIN(); > +   if(!max_size) > +-    next_size <<= 1; > ++    set_next_size(next_size << 1); > +   else if( next_size*partition_size/requested_size < max_size) > +-    next_size = 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)); > +  > +   //  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; > +  > +   const size_type partition_size = alloc_size(); > +@@ -845,7 +861,7 @@ > +   BOOST_USING_STD_MIN(); > +   if(!max_size) > +-    next_size <<= 1; > ++    set_next_size(next_size << 1); > +   else if( next_size*partition_size/requested_size < max_size) > +-    next_size = 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)); > +  > +   //  insert it into the list, > +Index: libs/pool/test/test_bug_6701.cpp > +=================================================================== > +--- 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 Étienne Dupuis > ++*  > ++* Use, modification and distribution is subject to the  > ++* 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 = p.malloc(); > ++  BOOST_ASSERT(!x); > ++   > ++  BOOST_ASSERT(std::numeric_limits::max() / 1024 >= > p.get_next_size()); > ++  BOOST_ASSERT(std::numeric_limits::max() / 1024 >= > p.get_max_size()); > ++ > ++  void *y = 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/test/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 ) > +  > +     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 = ::feenableexcept( mask ); > ++    feclearexcept(BOOST_FPE_ALL); > ++    int res = feenableexcept( mask ); > +     return res == -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res; > + #else > +     /* Not Implemented  */ > +@@ -1417,8 +1417,8 @@ disable( unsigned mask ) > +  > +     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 = ::fedisableexcept( mask ); > ++    feclearexcept(BOOST_FPE_ALL); > ++    int res = fedisableexcept( mask ); > +     return res == -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res; > + #else > +     /* Not Implemented */