From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Tremer To: development@lists.ipfire.org Subject: Re: [PATCH] boost: Updat to 1.60.0. Date: Thu, 14 Apr 2016 10:48:29 +0100 Message-ID: <1460627309.2617.92.camel@ipfire.org> In-Reply-To: <1460616495-4403-1-git-send-email-stefan.schantl@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0891956707495120839==" List-Id: --===============0891956707495120839== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=3D/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-a= dd-bjam-man-page.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.50.0-fix-non-utf8-fi= les.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-PyI= mport_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_lett= ers.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.57.0-python-libpytho= n_dep.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.57.0-spirit-unused_t= ypedef.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_linki= ng.patch /usr/src/packages/boost-1.60.0-1.ip3.src/patches/boost-1.59-test-fenv.patch2' Applying patches... =C2=A0 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 =C2=A0 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 =C2=A0 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:=C2=A0 Skip this patch? [y]=C2=A0 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:=C2=A0 Skip this patch? [y]=C2=A0 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. >=20 > Fixes #11018. >=20 > Signed-off-by: Stefan Schantl > --- > =C2=A0boost/boost.nm=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0|=C2=A0=C2=A021 +-- > =C2=A0boost/patches/boost-1.48.0-add-bjam-man-page.patch | 150 > +++++++++++++++++++++ > =C2=A0.../patches/boost-1.50.0-fix-non-utf8-files.patch=C2=A0=C2=A0|=C2=A0= =C2=A022 +++ > =C2=A0...1.55.0-python-test-PyImport_AppendInittab.patch |=C2=A0=C2=A098 ++= ++++++++++++ > =C2=A0boost/patches/boost-1.57.0-build-optflags.patch=C2=A0=C2=A0=C2=A0=C2= =A0|=C2=A0=C2=A048 +++++++ > =C2=A0boost/patches/boost-1.57.0-mpl-print.patch=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0=C2=A031 +++++ > =C2=A0.../patches/boost-1.57.0-python-abi_letters.patch=C2=A0=C2=A0|=C2=A0= =C2=A062 +++++++++ > =C2=A0.../boost-1.57.0-python-libpython_dep.patch=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0=C2=A013 ++ > =C2=A0.../boost-1.57.0-spirit-unused_typedef.patch=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0|=C2=A0=C2=A019 +++ > =C2=A0boost/patches/boost-1.58.0-pool-test_linking.patch |=C2=A0=C2=A031 ++= +++ > =C2=A0boost/patches/boost-1.58.0-pool.patch0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0| 120 +++++++++++++++++ > =C2=A0boost/patches/boost-1.59-test-fenv.patch2=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0=C2=A032 +++++ > =C2=A012 files changed, 638 insertions(+), 9 deletions(-) > =C2=A0create mode 100644 boost/patches/boost-1.48.0-add-bjam-man-page.patch > =C2=A0create mode 100644 boost/patches/boost-1.50.0-fix-non-utf8-files.patch > =C2=A0create mode 100644 boost/patches/boost-1.55.0-python-test- > PyImport_AppendInittab.patch > =C2=A0create mode 100644 boost/patches/boost-1.57.0-build-optflags.patch > =C2=A0create mode 100644 boost/patches/boost-1.57.0-mpl-print.patch > =C2=A0create mode 100644 boost/patches/boost-1.57.0-python-abi_letters.patch > =C2=A0create mode 100644 boost/patches/boost-1.57.0-python-libpython_dep.pa= tch > =C2=A0create mode 100644 boost/patches/boost-1.57.0-spirit-unused_typedef.p= atch > =C2=A0create mode 100644 boost/patches/boost-1.58.0-pool-test_linking.patch > =C2=A0create mode 100644 boost/patches/boost-1.58.0-pool.patch0 > =C2=A0create mode 100644 boost/patches/boost-1.59-test-fenv.patch2 >=20 > 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 @@ > =C2=A0 > =C2=A0name=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=3D boost > =C2=A0ver_major=C2=A0=C2=A0=3D 1 > -ver_minor=C2=A0=C2=A0=3D 51 > +ver_minor=C2=A0=C2=A0=3D 60 > =C2=A0ver_plevel =3D 0 > =C2=A0version=C2=A0=C2=A0=C2=A0=C2=A0=3D %{ver_major}.%{ver_minor}.%{ver_pl= evel} > -release=C2=A0=C2=A0=C2=A0=C2=A0=3D 2 > +release=C2=A0=C2=A0=C2=A0=C2=A0=3D 1 > =C2=A0 > =C2=A0groups=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=3D System/Libraries > =C2=A0url=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=3D http://www.boo= st.org/ > @@ -31,6 +31,7 @@ build > =C2=A0 requires > =C2=A0 bzip2-devel > =C2=A0 gcc-c++ > + icu-devel > =C2=A0 python-devel > =C2=A0 python3-devel > =C2=A0 zlib-devel > @@ -39,12 +40,13 @@ build > =C2=A0 CFLAGS=C2=A0=C2=A0=C2=A0+=3D -fno-strict-aliasing > =C2=A0 CXXFLAGS +=3D -fno-strict-aliasing > =C2=A0 > - # Don't build in parallel on ARM. > + # Obtain python3 abiflags. > + python3_abiflags =3D %(python3-config --abiflags) > + > + # Don't build in parallel on any architecture. > =C2=A0 # The C++ compiles consumes too much memory, so > =C2=A0 # we cannot run multiple instances at once. > - if "%{DISTRO_PLATFORM}" =3D=3D "arm" > - PARALLELISMFLAGS =3D -j2 > - end > + PARALLELISMFLAGS =3D -j2 > =C2=A0 > =C2=A0 configure_options =3D \ > =C2=A0 --layout=3Dtagged \ > @@ -68,11 +70,12 @@ build > =C2=A0 mkdir -pv %{DIR_APP}/serial > =C2=A0 > =C2=A0 # Bootstrap build environment. > - ./bootstrap.sh --with-toolset=3Dgcc > + ./bootstrap.sh --with-toolset=3Dgcc --with-icu > =C2=A0 > =C2=A0 # 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} ; > =C2=A0 EOF > =C2=A0 end > =C2=A0 > 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=3Dy= ] [- > tx] [-v] [--x]\fP > ++.PP > ++\fIbjam\fP accepts the following options: > ++.PP > ++\fB-a\fP=C2=A0 > ++.br > ++ Build all targets, even if they are current > ++.PP > ++\fB-dx\fP=C2=A0 > ++.br > ++ Set the debug level to x (0-9) > ++.PP > ++\fB-fx\fP=C2=A0 > ++.br > ++ Read x instead of Jambase > ++.PP > ++\fB-jx\fP=C2=A0 > ++.br > ++ Run up to x shell commands concurrently > ++.PP > ++\fB-lx\fP=C2=A0 > ++.br > ++ Limit actions to x number of seconds after which they are stopped > ++.PP > ++\fB-n\fP=C2=A0 > ++.br > ++ Don't actually execute the updating actions > ++.PP > ++\fB-ox\fP=C2=A0 > ++.br > ++ Write the updating actions to file x > ++.PP > ++\fB-px\fP=C2=A0 > ++.br > ++ x=3D0, pipes action stdout and stderr merged into action output > ++.PP > ++\fB-q\fP=C2=A0 > ++.br > ++ Quit quickly as soon as a target fails > ++.PP > ++\fB-sx=3Dy\fP=C2=A0 > ++.br > ++ Set variable x=3Dy, overriding environment > ++.PP > ++\fB-tx\fP=C2=A0 > ++.br > ++ Rebuild x, even if it is up-to-date > ++.PP > ++\fB-v\fP=C2=A0 > ++.br > ++ Print the version of jam and exit > ++.PP > ++\fB--x\fP=C2=A0 > ++.br > ++ Option is ignored > ++.SH "DESCRIPTION" > ++.PP > ++This section provides the information necessary to create your own projec= ts > 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-lev= el > module\&. The exact process is described in the section called > =E2=80=9CInitialization=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 cau= se > 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 actual= ly > 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/d= oc/ > 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/b= bv2 > /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/d= oc/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 compil= er > 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 executab= le > 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\&. Oft= en, > 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=E2=80=94object 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=3Dgcc toolset=3Dmsvc > ++.br > ++.PP > ++In that case, the metatarget will be called twice, once with toolset=3Dgc= c and > once with toolset=3Dmsvc\&. Both invocations will produce concrete targets,= that > will have different extensions and use different command lines\&. Another k= ey > 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 diffe= rs > by requiring that all build properties are declared in advance, and providi= ng > a large set of properties with portable semantics > ++.PP > ++The final concept is property propagation\&. Boost\&.Build does not requi= re > that every metatarget is called with the same properties\&. Instead, the 't= op- > 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 > =E2=80=9CRequirements=E2=80=9D: 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 t= hen > 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 ref= er > 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=C2=A0 > 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> > + { > +=C2=A0=C2=A0=C2=A0static const char* name() { return("EUR"); } > +-=C2=A0=C2=A0static const char* symbol() { return(""); } > ++=C2=A0=C2=A0static const char* symbol() { return("=E2=82=AC"); } > + }; > +=C2=A0 > + int main() > +@@ -140,7 +140,7 @@ int main() > +=C2=A0 > +=C2=A0=C2=A0=C2=A0quantity ce =3D 2048. * > euro_base_unit::unit_type(); > +=C2=A0=C2=A0=C2=A0cout << name_format << engineering_prefix << ce << endl;= =C2=A0=C2=A0// 2.048 kiloEUR > +-=C2=A0=C2=A0cout << symbol_format << engineering_prefix << ce << endl;=C2= =A0=C2=A0// 2.048 k > ++=C2=A0=C2=A0cout << symbol_format << engineering_prefix << ce << endl;=C2= =A0=C2=A0// 2.048 k=E2=82=AC > +=C2=A0 > +=C2=A0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return 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() > +=C2=A0=C2=A0=C2=A0BOOST_TEST(value =3D=3D "ABCDEFG"); > + } > +=C2=A0 > ++struct PyCtx > ++{ > ++=C2=A0=C2=A0PyCtx() { > ++=C2=A0=C2=A0=C2=A0=C2=A0Py_Initialize(); > ++=C2=A0=C2=A0} > ++ > ++=C2=A0=C2=A0~PyCtx() { > ++=C2=A0=C2=A0=C2=A0=C2=A0// N.B. certain problems may arise when Py_Finali= ze is called when > ++=C2=A0=C2=A0=C2=A0=C2=A0// using Boost.Python.=C2=A0=C2=A0However in this= test suite it all seems to > ++=C2=A0=C2=A0=C2=A0=C2=A0// work fine. > ++=C2=A0=C2=A0=C2=A0=C2=A0Py_Finalize(); > ++=C2=A0=C2=A0} > ++}; > ++ > + void exec_test() > + { > +=C2=A0=C2=A0=C2=A0// Register the module with the interpreter > +@@ -68,6 +82,8 @@ void exec_test() > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0) =3D=3D -1)=C2=A0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0throw std::runtime_error("Failed to add embe= dded_hello to the > interpreter's " > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0"builtin modules"); > ++ > ++=C2=A0=C2=A0PyCtx ctx; > +=C2=A0=C2=A0=C2=A0// Retrieve the main module > +=C2=A0=C2=A0=C2=A0python::object main =3D python::import("__main__"); > +=C2=A0=C2=A0=C2=A0 > +@@ -148,41 +164,43 @@ void check_pyerr(bool pyerr_expected=3Dfal > +=C2=A0=C2=A0=C2=A0} > + } > +=C2=A0 > ++template > ++bool > ++run_and_handle_exception(Cb cb, bool pyerr_expected =3D false) > ++{ > ++=C2=A0=C2=A0PyCtx ctx; > ++=C2=A0=C2=A0if (python::handle_exception(cb)) { > ++=C2=A0=C2=A0=C2=A0=C2=A0check_pyerr(pyerr_expected); > ++=C2=A0=C2=A0=C2=A0=C2=A0return true; > ++=C2=A0=C2=A0} else { > ++=C2=A0=C2=A0=C2=A0=C2=A0return false; > ++=C2=A0=C2=A0} > ++} > ++ > + int main(int argc, char **argv) > + { > +=C2=A0=C2=A0=C2=A0BOOST_TEST(argc =3D=3D 2 || argc =3D=3D 3); > +=C2=A0=C2=A0=C2=A0std::string script =3D argv[1]; > +-=C2=A0=C2=A0// Initialize the interpreter > +-=C2=A0=C2=A0Py_Initialize(); > +=C2=A0 > +-=C2=A0=C2=A0if (python::handle_exception(eval_test)) { > +-=C2=A0=C2=A0=C2=A0=C2=A0check_pyerr(); > +-=C2=A0=C2=A0} > +-=C2=A0=C2=A0else if(python::handle_exception(exec_test)) { > +-=C2=A0=C2=A0=C2=A0=C2=A0check_pyerr(); > +-=C2=A0=C2=A0} > +-=C2=A0=C2=A0else if (python::handle_exception(boost::bind(exec_file_test,= script))) { > ++=C2=A0=C2=A0// N.B. exec_test mustn't be called through run_and_handle_ex= ception > ++=C2=A0=C2=A0// as it needs to handles the python context by itself. > ++=C2=A0=C2=A0if (run_and_handle_exception(eval_test) > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0|| python::handle_exception(exec_test= )) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0check_pyerr(); > +-=C2=A0=C2=A0} > +-=C2=A0=C2=A0 > +-=C2=A0=C2=A0if (python::handle_exception(exec_test_error)) > +-=C2=A0=C2=A0{ > +-=C2=A0=C2=A0=C2=A0=C2=A0check_pyerr(/*pyerr_expected*/ true); > +-=C2=A0=C2=A0} > +=C2=A0=C2=A0=C2=A0else > +-=C2=A0=C2=A0{ > ++=C2=A0=C2=A0=C2=A0=C2=A0run_and_handle_exception(boost::bind(exec_file_te= st, script)); > ++ > ++=C2=A0=C2=A0if (!run_and_handle_exception(exec_test_error, true)) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0BOOST_ERROR("Python exception expected, but = not seen."); > +-=C2=A0=C2=A0} > +=C2=A0 > +=C2=A0=C2=A0=C2=A0if (argc > 2) { > ++=C2=A0=C2=A0=C2=A0=C2=A0PyCtx ctx; > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0// The main purpose is to test compilation. = Since this test generates > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0// a file and I (rwgk) am uncertain about th= e side-effects, run it only > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0// if explicitly requested. > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0exercise_embedding_html(); > +=C2=A0=C2=A0=C2=A0} > +=C2=A0 > +-=C2=A0=C2=A0// Boost.Python doesn't support Py_Finalize yet. > +-=C2=A0=C2=A0// Py_Finalize(); > +=C2=A0=C2=A0=C2=A0return boost::report_errors(); > + } > +=C2=A0 > + > +Diff finished.=C2=A0=C2=A0Fri Jan=C2=A0=C2=A09 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 : ; > +=C2=A0 > + # Declare flags and action for compilation. > +-toolset.flags gcc.compile OPTIONS off=C2=A0=C2=A0=C2=A0: -O= 0 ; > +-toolset.flags gcc.compile OPTIONS speed : -O3 ; > +-toolset.flags gcc.compile OPTIONS space : -Os ; > ++toolset.flags gcc.compile OPTIONS off=C2=A0=C2=A0=C2=A0:=C2= =A0=C2=A0; > ++toolset.flags gcc.compile OPTIONS speed :=C2=A0=C2=A0; > ++toolset.flags gcc.compile OPTIONS space :=C2=A0=C2=A0; > +=C2=A0 > +-toolset.flags gcc.compile OPTIONS off=C2=A0=C2=A0: -fno-inline ; > +-toolset.flags gcc.compile OPTIONS on=C2=A0=C2=A0=C2=A0: -Wno-in= line ; > +-toolset.flags gcc.compile OPTIONS full : -finline-functions -Wn= o- > inline ; > ++toolset.flags gcc.compile OPTIONS off=C2=A0=C2=A0:=C2=A0=C2=A0; > ++toolset.flags gcc.compile OPTIONS on=C2=A0=C2=A0=C2=A0:=C2=A0= =C2=A0; > ++toolset.flags gcc.compile OPTIONS full :=C2=A0=C2=A0; > +=C2=A0 > +-toolset.flags gcc.compile OPTIONS off : -w ; > +-toolset.flags gcc.compile OPTIONS on=C2=A0=C2=A0: -Wall ; > +-toolset.flags gcc.compile OPTIONS all : -Wall -pedantic ; > ++toolset.flags gcc.compile OPTIONS off :=C2=A0=C2=A0; > ++toolset.flags gcc.compile OPTIONS on=C2=A0=C2=A0:=C2=A0=C2=A0; > ++toolset.flags gcc.compile OPTIONS all :=C2=A0=C2=A0; > + toolset.flags gcc.compile OPTIONS on : -Werror ; > +=C2=A0 > + toolset.flags gcc.compile OPTIONS on : -g ; > +@@ -603,7 +603,7 @@ rule compile.fortran ( targets * : sourc > +=C2=A0 > + actions compile.c++ bind PCH_FILE > + { > +-=C2=A0=C2=A0=C2=A0=C2=A0"$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TE= MPLATE_DEPTH) > $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c > -o "$(<:W)" "$(>:W)" > ++=C2=A0=C2=A0=C2=A0=C2=A0"$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPT= IONS) -D$(DEFINES) > -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)" > + } > +=C2=A0 > + actions compile.c bind PCH_FILE > +@@ -613,7 +613,7 @@ actions compile.c bind PCH_FILE > +=C2=A0 > + actions compile.c++.preprocess bind PCH_FILE > + { > +-=C2=A0=C2=A0=C2=A0=C2=A0"$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TE= MPLATE_DEPTH) > $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" > "$(>:W)" -E >"$(<:W)" > ++=C2=A0=C2=A0=C2=A0=C2=A0"$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPT= IONS) -D$(DEFINES) > -I"$(PCH_FILE:D)" -I"$(INCLUDES)" "$(>:W)" -E >"$(<:W)" > + } > +=C2=A0 > + actions compile.c.preprocess bind PCH_FILE > diff --git a/boost/patches/boost-1.57.0-mpl-print.patch b/boost/patches/boo= st- > 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.h= pp > +--- 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 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0enum { n =3D sizeof(T) + -1 }; > + #elif defined(__MWERKS__) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0void f(int); > +-#else=C2=A0 > +-=C2=A0=C2=A0=C2=A0=C2=A0enum { > +-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0n =3D > +-# if defined(__EDG_VERSION__) > +-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0aux::de= pendent_unsigned::value > -1 > +-# else=C2=A0 > +-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0sizeof(= T) > -1 > +-# endif=C2=A0 > +-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0}; > +-#endif=C2=A0 > ++#elif defined(__EDG_VERSION__) > ++=C2=A0=C2=A0=C2=A0=C2=A0enum { n =3D aux::dependent_unsigned::value > = -1 }; > ++#elif defined(BOOST_GCC) > ++=C2=A0=C2=A0=C2=A0=C2=A0enum { n1 }; > ++=C2=A0=C2=A0=C2=A0=C2=A0enum { n2 }; > ++=C2=A0=C2=A0=C2=A0=C2=A0enum { n =3D n1 !=3D n2 }; > ++#else > ++=C2=A0=C2=A0=C2=A0=C2=A0enum { n =3D sizeof(T) > -1 }; > ++#endif > + }; > +=C2=A0 > + #if defined(BOOST_MSVC) > + > +Diff finished.=C2=A0=C2=A0Tue 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 > + #=C2=A0=C2=A0=C2=A0using python : 2.3 : /usr/local/bin/python ; > + # > + rule init ( version ? : cmd-or-prefix ? : includes * : libraries ? > +-=C2=A0=C2=A0=C2=A0=C2=A0: condition * : extension-suffix ? ) > ++=C2=A0=C2=A0=C2=A0=C2=A0: condition * : extension-suffix ? : abi-letters = ? ) > + { > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0project.push-current $(.project) ; > +=C2=A0 > +@@ -107,7 +107,7 @@ rule init ( version ? : cmd-or-prefix ?=C2=A0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > +=C2=A0 > +-=C2=A0=C2=A0=C2=A0=C2=A0configure $(version) : $(cmd-or-prefix) : $(inclu= des) : $(libraries) : > $(condition) : $(extension-suffix) ; > ++=C2=A0=C2=A0=C2=A0=C2=A0configure $(version) : $(cmd-or-prefix) : $(inclu= des) : $(libraries) : > $(condition) : $(extension-suffix) : $(abi-letters) ; > +=C2=A0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0project.pop-current ; > + } > +@@ -653,7 +653,7 @@ local rule system-library-dependencies ( > +=C2=A0 > + # Declare a target to represent Python's library. > + # > +-local rule declare-libpython-target ( version ? : requirements * ) > ++local rule declare-libpython-target ( version ? : requirements * : abi- > letters ? ) > + { > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0# Compute the representation of Python versi= on in the name of Python's > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0# library file. > +@@ -677,13 +677,13 @@ local rule declare-libpython-target ( ve > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > +=C2=A0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0# Declare it. > +-=C2=A0=C2=A0=C2=A0=C2=A0lib python.lib : : python$(lib-version) $(r= equirements) ; > ++=C2=A0=C2=A0=C2=A0=C2=A0lib python.lib : : python$(lib-version)$(ab= i-letters) > $(requirements) ; > + } > +=C2=A0 > +=C2=A0 > + # Implementation of init. > + local rule configure ( version ? : cmd-or-prefix ? : includes * : librari= es > ? : > +-=C2=A0=C2=A0=C2=A0=C2=A0condition * : extension-suffix ? ) > ++=C2=A0=C2=A0=C2=A0=C2=A0condition * : extension-suffix ? : abi-letters ? ) > + { > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0local prefix ; > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0local exec-prefix ; > +@@ -699,6 +699,7 @@ local rule configure ( version ? : cmd-o > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0extension-suffix ?= =3D _d ; > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0extension-suffix ?=3D "" ; > ++=C2=A0=C2=A0=C2=A0=C2=A0abi-letters ?=3D "" ; > +=C2=A0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0# Normalize and dissect any version number. > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0local major-minor ; > +@@ -922,7 +923,7 @@ local rule configure ( version ? : cmd-o > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0else > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0{ > +-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0declare-libpython-target = $(version) : $(target-requirements) ; > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0declare-libpython-target = $(version) : $(target-requirements) : > $(abi-letters) ; > +=C2=A0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0# This is an evil ha= ck.=C2=A0=C2=A0On, Windows, when Python is embedded, > nothing > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0# seems to set up sy= s.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 > +=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 @@ > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0else > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0{ > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0alias python_for_ext= ensions > +-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0: > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0:= python > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0: $(target-requirements) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0: $(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) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0typedef impl::gramma= r_helper_base helper_base_t; > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0typedef grammar_help= er_list helper_list_t; > +-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0typedef typename helper_l= ist_t::vector_t::reverse_iterator > iterator_t; > +=C2=A0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0helper_list_t&=C2=A0= =C2=A0helpers =3D > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0grammartract_helper_= list::do_(self); > +=C2=A0 > + # if defined(BOOST_INTEL_CXX_VERSION) > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0typedef typename helper_l= ist_t::vector_t::reverse_iterator > iterator_t; > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0for (iterator_t i = =3D helpers.rbegin(); i !=3D helpers.rend(); ++i) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0(*i)->undefine(self); > + # else > + > +Diff finished.=C2=A0=C2=A0Tue 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 =3D gcc:on msvc: errors>on ; > +=C2=A0 > + test-suite pool : > +-=C2=A0=C2=A0=C2=A0=C2=A0[ run test_simple_seg_storage.cpp : : : $(Werr) > msvc:-wd4267 ] > +-=C2=A0=C2=A0=C2=A0=C2=A0[ run test_pool_alloc.cpp : : : $(Werr) ] > +-=C2=A0=C2=A0=C2=A0=C2=A0[ run pool_msvc_compiler_bug_test.cpp : : : $(Wer= r) > msvc:-wd4512 ] > +-=C2=A0=C2=A0=C2=A0=C2=A0[ run test_msvc_mem_leak_detect.cpp : : : $(Werr)= ] > +-=C2=A0=C2=A0=C2=A0=C2=A0[ run test_bug_3349.cpp : : : $(Werr) ] > +-=C2=A0=C2=A0=C2=A0=C2=A0[ run test_bug_4960.cpp : : : $(Werr) ] > +-=C2=A0=C2=A0=C2=A0=C2=A0[ run test_bug_1252.cpp : : : $(Werr) ] > +-=C2=A0=C2=A0=C2=A0=C2=A0[ run test_bug_2696.cpp : : : $(Werr) ] > +-=C2=A0=C2=A0=C2=A0=C2=A0[ run test_bug_5526.cpp : : : $(Werr) ] > ++=C2=A0=C2=A0=C2=A0=C2=A0[ run test_simple_seg_storage.cpp : : : $(Werr) > msvc:-wd4267 /boost/system//boost_system ] > ++=C2=A0=C2=A0=C2=A0=C2=A0[ run test_pool_alloc.cpp : : : $(Werr) > /boost/system//boost_system ] > ++=C2=A0=C2=A0=C2=A0=C2=A0[ run pool_msvc_compiler_bug_test.cpp : : : $(Wer= r) > msvc:-wd4512 /boost/system//boost_system ] > ++=C2=A0=C2=A0=C2=A0=C2=A0[ run test_msvc_mem_leak_detect.cpp : : : $(Werr) > /boost/system//boost_system ] > ++=C2=A0=C2=A0=C2=A0=C2=A0[ run test_bug_3349.cpp : : : $(Werr) > /boost/system//boost_system ] > ++=C2=A0=C2=A0=C2=A0=C2=A0[ run test_bug_4960.cpp : : : $(Werr) > /boost/system//boost_system ] > ++=C2=A0=C2=A0=C2=A0=C2=A0[ run test_bug_1252.cpp : : : $(Werr) > /boost/system//boost_system ] > ++=C2=A0=C2=A0=C2=A0=C2=A0[ run test_bug_2696.cpp : : : $(Werr) > /boost/system//boost_system ] > ++=C2=A0=C2=A0=C2=A0=C2=A0[ run test_bug_5526.cpp : : : $(Werr) > /boost/system//boost_system ] > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0[ run test_threading.cpp : : : mu= lti > /boost/thread//boost_thread ] > +-=C2=A0=C2=A0=C2=A0=C2=A0[ run=C2=A0=C2=A0../example/time_pool_alloc.cpp := : : $(Werr) ] > ++=C2=A0=C2=A0=C2=A0=C2=A0[ run=C2=A0=C2=A0../example/time_pool_alloc.cpp := : : $(Werr) > /boost/system//boost_system ] > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0[ compile test_poisoned_macros.cpp : $(Werr)= ] > +=C2=A0 > + # > 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 > +=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 > +=C2=A0 > ++// std::numeric_limits > ++#include > + // boost::integer::static_lcm > + #include > +@@ -358,4 +360,11 @@ > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > +=C2=A0 > ++=C2=A0=C2=A0=C2=A0=C2=A0size_type max_chunks() const > ++=C2=A0=C2=A0=C2=A0=C2=A0{ //! Calculated maximum number of memory chunks = that can be allocated > in a single call by this Pool. > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0size_type partition_size =3D alloc_si= ze(); > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0size_type POD_size =3D integer::stati= c_lcm sizeof(void *)>::value + sizeof(size_type); > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return (std::numeric_limits::max() - POD_size) / > alloc_size(); > ++=C2=A0=C2=A0=C2=A0=C2=A0} > ++ > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0static void * & nextof(void * const ptr) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0{ //! \returns Pointer dereferenced. > +@@ -377,5 +388,7 @@ > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0//!=C2=A0=C2=A0=C2=A0the first t= ime that object needs to allocate system memory. > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0//!=C2=A0=C2=A0=C2=A0The default= is 32. This parameter may not be 0. > +-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0//! \param nmax_size is the maximum n= umber of chunks to allocate in > one block. > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0//! \param nmax_size is the maximum n= umber of chunks to allocate in > one block. =09 > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0set_next_size(nnext_size); > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0set_max_size(nmax_size); > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > +=C2=A0 > +@@ -400,7 +413,7 @@ > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0void set_next_size(const size_type nnext_siz= e) > +-=C2=A0=C2=A0=C2=A0=C2=A0{ //! Set number of chunks to request from the sy= stem the next time that > object needs to allocate system memory. This value should never be set to 0. > +-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0//! \returns nnext_size. > +-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0next_size =3D start_size =3D nnext_si= ze; > ++=C2=A0=C2=A0=C2=A0=C2=A0{ //! Set number of chunks to request from the sy= stem the next time that > object needs to allocate system memory. This value should never be set to > 0.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0BOOST_USING_STD_MIN(); > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0next_size =3D start_size =3D min > BOOST_PREVENT_MACRO_SUBSTITUTION(nnext_size, max_chunks()); > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0size_type get_max_size() const > +@@ -410,5 +423,6 @@ > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0void set_max_size(const size_type nmax_size) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0{ //! Set max_size. > +-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0max_size =3D nmax_size; > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0BOOST_USING_STD_MIN(); > ++=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0max_size =3D min BOOST_PREVENT_MACRO_= SUBSTITUTION(nmax_size, > max_chunks()); > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0size_type get_requested_size() const > +@@ -713,7 +727,7 @@ > +=C2=A0=C2=A0=C2=A0BOOST_USING_STD_MIN(); > +=C2=A0=C2=A0=C2=A0if(!max_size) > +-=C2=A0=C2=A0=C2=A0=C2=A0next_size <<=3D 1; > ++=C2=A0=C2=A0=C2=A0=C2=A0set_next_size(next_size << 1); > +=C2=A0=C2=A0=C2=A0else if( next_size*partition_size/requested_size < max_s= ize) > +-=C2=A0=C2=A0=C2=A0=C2=A0next_size =3D min BOOST_PREVENT_MACRO_SUBSTITUTIO= N(next_size << 1, > max_size*requested_size/ partition_size); > ++=C2=A0=C2=A0=C2=A0=C2=A0set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTIO= N(next_size << 1, > max_size * requested_size / partition_size)); > +=C2=A0 > +=C2=A0=C2=A0=C2=A0//=C2=A0=C2=A0initialize it, > +@@ -753,7 +767,7 @@ > +=C2=A0=C2=A0=C2=A0BOOST_USING_STD_MIN(); > +=C2=A0=C2=A0=C2=A0if(!max_size) > +-=C2=A0=C2=A0=C2=A0=C2=A0next_size <<=3D 1; > ++=C2=A0=C2=A0=C2=A0=C2=A0set_next_size(next_size << 1); > +=C2=A0=C2=A0=C2=A0else if( next_size*partition_size/requested_size < max_s= ize) > +-=C2=A0=C2=A0=C2=A0=C2=A0next_size =3D min BOOST_PREVENT_MACRO_SUBSTITUTIO= N(next_size << 1, > max_size*requested_size/ partition_size); > ++=C2=A0=C2=A0=C2=A0=C2=A0set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTIO= N(next_size << 1, > max_size * requested_size / partition_size)); > +=C2=A0 > +=C2=A0=C2=A0=C2=A0//=C2=A0=C2=A0initialize it, > +@@ -797,4 +811,6 @@ > +=C2=A0=C2=A0=C2=A0//! \returns Address of chunk n if allocated ok. > +=C2=A0=C2=A0=C2=A0//! \returns 0 if not enough memory for n chunks. > ++=C2=A0=C2=A0if (n > max_chunks()) > ++=C2=A0=C2=A0=C2=A0=C2=A0return 0; > +=C2=A0 > +=C2=A0=C2=A0=C2=A0const size_type partition_size =3D alloc_size(); > +@@ -845,7 +861,7 @@ > +=C2=A0=C2=A0=C2=A0BOOST_USING_STD_MIN(); > +=C2=A0=C2=A0=C2=A0if(!max_size) > +-=C2=A0=C2=A0=C2=A0=C2=A0next_size <<=3D 1; > ++=C2=A0=C2=A0=C2=A0=C2=A0set_next_size(next_size << 1); > +=C2=A0=C2=A0=C2=A0else if( next_size*partition_size/requested_size < max_s= ize) > +-=C2=A0=C2=A0=C2=A0=C2=A0next_size =3D min BOOST_PREVENT_MACRO_SUBSTITUTIO= N(next_size << 1, > max_size*requested_size/ partition_size); > ++=C2=A0=C2=A0=C2=A0=C2=A0set_next_size(min BOOST_PREVENT_MACRO_SUBSTITUTIO= N(next_size << 1, > max_size * requested_size / partition_size)); > +=C2=A0 > +=C2=A0=C2=A0=C2=A0//=C2=A0=C2=A0insert 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 > ++*=C2=A0 > ++* Use, modification and distribution is subject to the=C2=A0 > ++* 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() > ++{ > ++=C2=A0=C2=A0boost::pool<> p(1024, std::numeric_limits::max() / 76= 8); > ++ > ++=C2=A0=C2=A0void *x =3D p.malloc(); > ++=C2=A0=C2=A0BOOST_ASSERT(!x); > ++=C2=A0=C2=A0 > ++=C2=A0=C2=A0BOOST_ASSERT(std::numeric_limits::max() / 1024 >=3D > p.get_next_size()); > ++=C2=A0=C2=A0BOOST_ASSERT(std::numeric_limits::max() / 1024 >=3D > p.get_max_size()); > ++ > ++=C2=A0=C2=A0void *y =3D p.ordered_malloc(std::numeric_limits::max= () / 768); > ++=C2=A0=C2=A0BOOST_ASSERT(!y); > ++ > ++=C2=A0=C2=A0return 0; > ++} > diff --git a/boost/patches/boost-1.59-test-fenv.patch2 b/boost/patches/boos= t- > 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:=C2=A0=C2=A0=C2=A0Mon Sep 14 15:05:24 2015 +0100 > + > +=C2=A0=C2=A0=C2=A0=C2=A0Do 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 ) > +=C2=A0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return ~old_cw & BOOST_FPE_ALL; > + #elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && > !defined(BOOST_NO_FENV_H) > +-=C2=A0=C2=A0=C2=A0=C2=A0::feclearexcept(BOOST_FPE_ALL); > +-=C2=A0=C2=A0=C2=A0=C2=A0int res =3D ::feenableexcept( mask ); > ++=C2=A0=C2=A0=C2=A0=C2=A0feclearexcept(BOOST_FPE_ALL); > ++=C2=A0=C2=A0=C2=A0=C2=A0int res =3D feenableexcept( mask ); > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return res =3D=3D -1 ? (unsigned)BOOST_FPE_I= NV : (unsigned)res; > + #else > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0/* Not Implemented=C2=A0=C2=A0*/ > +@@ -1417,8 +1417,8 @@ disable( unsigned mask ) > +=C2=A0 > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return ~old_cw & BOOST_FPE_ALL; > + #elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && > !defined(BOOST_NO_FENV_H) > +-=C2=A0=C2=A0=C2=A0=C2=A0::feclearexcept(BOOST_FPE_ALL); > +-=C2=A0=C2=A0=C2=A0=C2=A0int res =3D ::fedisableexcept( mask ); > ++=C2=A0=C2=A0=C2=A0=C2=A0feclearexcept(BOOST_FPE_ALL); > ++=C2=A0=C2=A0=C2=A0=C2=A0int res =3D fedisableexcept( mask ); > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return res =3D=3D -1 ? (unsigned)BOOST_FPE_I= NV : (unsigned)res; > + #else > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0/* Not Implemented */ --===============0891956707495120839== Content-Type: application/pgp-signature Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="signature.asc" MIME-Version: 1.0 LS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KVmVyc2lvbjogR251UEcgdjIKCmlRSWNCQUFC Q2dBR0JRSlhEMmR0QUFvSkVJQjU4UDl2a0FrSG1FMFArZ1BNeCthT2V1UDdSdFhLdmY4bkF4SmYK ME02RC9VQmt4MVhGWW0rOG04QjlHWnA2Z0RDcDZLZzBTLzZVSzZrSEVkYW5mQ3hGSXFNVzlQbEIy SEN6WkdmNwoyNnZiNk9zU3crOXNPVlc3OGpXc2gxRk5LVFhrbTBTT0FLZFM3aUphOGRzVlM3ekVy MTIxSU1vTy84SWhXLytPCjl4Sm9YdFA4ZktOQVc4S0o5Ym9Id3NCL3c5QSt3eWZjTENQMm1Hc3Yv czhRUktWTW14OWJadzFLc1hWQ2ZzSUcKUUZ1dzdCTUxMSGFGcVRmdmpDUjFubmZ3RTlHOUVJWGov bWhkN2dXRUthUVJBWGhIdk9qTEc4UjVDYWpXK1Q5MwpZUStDbnVmWDBPWG1WMG8xdS9CZUhwaDQ2 dmRxRXF4RERsK3hVd2N4T1dLUmdrQnhrQ1ArU04vdVExay9kTTBCCmZIM0M5c3I4bmlVaitxUVJQ UGpuRFJORitjWWpkVURMM2hCUXc0NEVONHNqOXFqakVhUjNJSTRUWkNKRGY5U3cKdnpzSzlueVNY K0NsR1NRMFk2WEtydzBWK1lWNG9SdkRPNXJyQnV2aFlWbnFkY0laTkJOenVhbVE4cS9nUmJvSwpV MXdzYjY0K1kxcmFPMC8xRUFqemlmMXBVSVhVNERGV1h4M2ZiOU1aSU9GWktITkJway9YZjhvR0R5 enY5SGxJCmZUMWdCUFhOVjVQK3RYQjlmc0ZZT3pvYVNSZEgzUUtFRTk2aW0zR3d1SFM2WWp3V205 aUN4dHVUaURNaDJmMWwKbUxzSU9od2ltYzlOOTkvNkVZU0ttazQzTG9wcm5sOTJPYlFNb3JXb2ZV ZnZ0Nmkvd0RmSzRsNXQ1OGQ5djFUNApiUFVieFdOc0pPc0sxMjU3V3ltbgo9UTFSVwotLS0tLUVO RCBQR1AgU0lHTkFUVVJFLS0tLS0K --===============0891956707495120839==--