From: Stefan Schantl <stefan.schantl@ipfire.org>
To: development@lists.ipfire.org
Subject: Re: [PATCH] boost: Updat to 1.60.0.
Date: Fri, 15 Apr 2016 08:48:23 +0200 [thread overview]
Message-ID: <1460702903.2968.2.camel@ipfire.org> (raw)
In-Reply-To: <1460627309.2617.92.camel@ipfire.org>
[-- Attachment #1: Type: text/plain, Size: 40614 bytes --]
Thanks for reviewing the patch.
I missed to check if those deleted patch is also part of the commit,
which sadly is not. I'll sent a new patch.
- Stefan
> 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 <stefan.schantl(a)ipfire.org>
> > ---
> > 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<thing_base_unit, boost::units::
> > + struct euro_base_unit : boost::units::base_unit<euro_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<euro_base_unit::unit_type> 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 <class Cb>
> > ++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 <pch>on : <pch-file> ;
> > +
> > + # Declare flags and action for compilation.
> > +-toolset.flags gcc.compile OPTIONS <optimization>off : -O0 ;
> > +-toolset.flags gcc.compile OPTIONS <optimization>speed : -O3 ;
> > +-toolset.flags gcc.compile OPTIONS <optimization>space : -Os ;
> > ++toolset.flags gcc.compile OPTIONS <optimization>off : ;
> > ++toolset.flags gcc.compile OPTIONS <optimization>speed : ;
> > ++toolset.flags gcc.compile OPTIONS <optimization>space : ;
> > +
> > +-toolset.flags gcc.compile OPTIONS <inlining>off : -fno-inline ;
> > +-toolset.flags gcc.compile OPTIONS <inlining>on : -Wno-inline ;
> > +-toolset.flags gcc.compile OPTIONS <inlining>full : -finline
> > -functions -Wno-
> > inline ;
> > ++toolset.flags gcc.compile OPTIONS <inlining>off : ;
> > ++toolset.flags gcc.compile OPTIONS <inlining>on : ;
> > ++toolset.flags gcc.compile OPTIONS <inlining>full : ;
> > +
> > +-toolset.flags gcc.compile OPTIONS <warnings>off : -w ;
> > +-toolset.flags gcc.compile OPTIONS <warnings>on : -Wall ;
> > +-toolset.flags gcc.compile OPTIONS <warnings>all : -Wall -pedantic
> > ;
> > ++toolset.flags gcc.compile OPTIONS <warnings>off : ;
> > ++toolset.flags gcc.compile OPTIONS <warnings>on : ;
> > ++toolset.flags gcc.compile OPTIONS <warnings>all : ;
> > + toolset.flags gcc.compile OPTIONS <warnings-as-errors>on :
> > -Werror ;
> > +
> > + toolset.flags gcc.compile OPTIONS <debug-symbols>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<T>::value > -1
> > +-# else
> > +- sizeof(T) > -1
> > +-# endif
> > +- };
> > +-#endif
> > ++#elif defined(__EDG_VERSION__)
> > ++ enum { n = aux::dependent_unsigned<T>::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 : : <name>python$(lib-version) $(requirements)
> > ;
> > ++ lib python.lib : : <name>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/gramm
> > ar.ipp\~
> > 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/gramm
> > ar.ipp~
> > 2014-10-13 12:21:40.000000000 +0200
> > ++++
> > boost_1_57_0/boost/spirit/home/classic/core/non_terminal/impl/gramm
> > ar.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<GrammarT>
> > helper_base_t;
> > + typedef grammar_helper_list<GrammarT> 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 = <toolset>gcc:<warnings-as-errors>on
> > <toolset>msvc:<warnings-as-
> > errors>on ;
> > +
> > + test-suite pool :
> > +- [ run test_simple_seg_storage.cpp : : : $(Werr)
> > <toolset>msvc:<cxxflags>-wd4267 ]
> > +- [ run test_pool_alloc.cpp : : : $(Werr) ]
> > +- [ run pool_msvc_compiler_bug_test.cpp : : : $(Werr)
> > <toolset>msvc:<cxxflags>-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)
> > <toolset>msvc:<cxxflags>-wd4267
> > <library>/boost/system//boost_system ]
> > ++ [ run test_pool_alloc.cpp : : : $(Werr)
> > <library>/boost/system//boost_system ]
> > ++ [ run pool_msvc_compiler_bug_test.cpp : : : $(Werr)
> > <toolset>msvc:<cxxflags>-wd4512
> > <library>/boost/system//boost_system ]
> > ++ [ run test_msvc_mem_leak_detect.cpp : : : $(Werr)
> > <library>/boost/system//boost_system ]
> > ++ [ run test_bug_3349.cpp : : : $(Werr)
> > <library>/boost/system//boost_system ]
> > ++ [ run test_bug_4960.cpp : : : $(Werr)
> > <library>/boost/system//boost_system ]
> > ++ [ run test_bug_1252.cpp : : : $(Werr)
> > <library>/boost/system//boost_system ]
> > ++ [ run test_bug_2696.cpp : : : $(Werr)
> > <library>/boost/system//boost_system ]
> > ++ [ run test_bug_5526.cpp : : : $(Werr)
> > <library>/boost/system//boost_system ]
> > + [ run test_threading.cpp : : : <threading>multi
> > <library>/boost/thread//boost_thread ]
> > +- [ run ../example/time_pool_alloc.cpp : : : $(Werr) ]
> > ++ [ run ../example/time_pool_alloc.cpp : : : $(Werr)
> > <library>/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 <boost/pool/poolfwd.hpp>
> > +
> > ++// std::numeric_limits
> > ++#include <boost/limits.hpp>
> > + // boost::integer::static_lcm
> > + #include <boost/integer/common_factor_ct.hpp>
> > +@@ -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(size_type),
> > sizeof(void *)>::value + sizeof(size_type);
> > ++ return (std::numeric_limits<size_type>::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 <boost/pool/object_pool.hpp>
> > ++#include <boost/limits.hpp>
> > ++
> > ++int main()
> > ++{
> > ++ boost::pool<> p(1024, std::numeric_limits<size_t>::max() /
> > 768);
> > ++
> > ++ void *x = p.malloc();
> > ++ BOOST_ASSERT(!x);
> > ++
> > ++ BOOST_ASSERT(std::numeric_limits<size_t>::max() / 1024 >=
> > p.get_next_size());
> > ++ BOOST_ASSERT(std::numeric_limits<size_t>::max() / 1024 >=
> > p.get_max_size());
> > ++
> > ++ void *y = p.ordered_malloc(std::numeric_limits<size_t>::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 <jwakely(a)redhat.com>
> > +Date: Mon Sep 14 15:05:24 2015 +0100
> > +
> > + Do not qualify <fenv.h> 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
next prev parent reply other threads:[~2016-04-15 6:48 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-14 6:48 Stefan Schantl
2016-04-14 9:48 ` Michael Tremer
2016-04-15 6:48 ` Stefan Schantl [this message]
2016-04-15 6:52 ` [[PATCHv2]] boost: Update " Stefan Schantl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1460702903.2968.2.camel@ipfire.org \
--to=stefan.schantl@ipfire.org \
--cc=development@lists.ipfire.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox