commit a08474ce00f2f3d74da734744934d4f35ef0107c Author: overweight <5324761+overweight@user.noreply.gitee.com> Date: Mon Sep 30 10:32:42 2019 -0400 Package init diff --git a/boost-1.48.0-add-bjam-man-page.patch b/boost-1.48.0-add-bjam-man-page.patch new file mode 100644 index 0000000..ea3f19f --- /dev/null +++ b/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/html/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/overview/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/targets.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-1.50.0-fix-non-utf8-files.patch b/boost-1.50.0-fix-non-utf8-files.patch new file mode 100644 index 0000000..b60a3ac --- /dev/null +++ b/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 + { + 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-1.57.0-mpl-print.patch b/boost-1.57.0-mpl-print.patch new file mode 100644 index 0000000..561cef1 --- /dev/null +++ b/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-1.57.0-python-libpython_dep.patch b/boost-1.57.0-python-libpython_dep.patch new file mode 100644 index 0000000..57bfc26 --- /dev/null +++ b/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-1.58.0-pool-test_linking.patch b/boost-1.58.0-pool-test_linking.patch new file mode 100644 index 0000000..a381370 --- /dev/null +++ b/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: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-1.58.0-pool.patch b/boost-1.58.0-pool.patch new file mode 100644 index 0000000..ed8449e --- /dev/null +++ b/boost-1.58.0-pool.patch @@ -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::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-1.66.0-address-model.patch b/boost-1.66.0-address-model.patch new file mode 100644 index 0000000..603aa72 --- /dev/null +++ b/boost-1.66.0-address-model.patch @@ -0,0 +1,13 @@ +--- boost_1_66_0/tools/build/src/tools/gcc.jam~ 2018-01-19 13:09:56.041685502 +0000 ++++ boost_1_66_0/tools/build/src/tools/gcc.jam 2018-01-19 13:09:56.042685500 +0000 +@@ -421,7 +421,9 @@ + + rule set-address-model-options ( targets * : sources * : properties * ) + { +- local model = [ feature.get-values address-model : $(properties) ] ; ++ # For RPM builds the address model flag is passed in %{optflags}. ++ # local model = [ feature.get-values address-model : $(properties) ] ; ++ local model ; + if $(model) + { + local option ; diff --git a/boost-1.66.0-bjam-build-flags.patch b/boost-1.66.0-bjam-build-flags.patch new file mode 100644 index 0000000..34ee6ca --- /dev/null +++ b/boost-1.66.0-bjam-build-flags.patch @@ -0,0 +1,26 @@ +--- boost_1_66_0/tools/build/src/engine/build.jam~ 2018-02-07 21:36:14.552201421 +0000 ++++ boost_1_66_0/tools/build/src/engine/build.jam 2018-02-07 21:36:29.014173266 +0000 +@@ -4,7 +4,7 @@ + #~ http://www.boost.org/LICENSE_1_0.txt) + + # Clean env vars of any "extra" empty values. +-for local v in ARGV CC CFLAGS LIBS ++for local v in ARGV CC CFLAGS LIBS RPM_OPT_FLAGS RPM_LD_FLAGS + { + local values ; + for local x in $($(v)) +@@ -215,12 +215,12 @@ + : -L$(--python-lib[1]) -l$(--python-lib[2]) ; + ## GCC 2.x, 3.x, 4.x + toolset gcc gcc : "-o " : -D +- : -pedantic -fno-strict-aliasing ++ : -pedantic -fno-strict-aliasing $(RPM_OPT_FLAGS) + [ opt --release : [ opt --symbols : -g : -s ] -O3 ] + [ opt --debug : -g -O0 -fno-inline ] + [ opt --profile : -O3 -g -pg ] + -I$(--python-include) -I$(--extra-include) -Wno-long-long +- : -L$(--python-lib[1]) -l$(--python-lib[2]) ; ++ : -L$(--python-lib[1]) -l$(--python-lib[2]) $(RPM_LD_FLAGS) ; + ## GCC 2.x, 3.x on CYGWIN but without cygwin1.dll + toolset gcc-nocygwin gcc : "-o " : -D + : -s -O3 -mno-cygwin diff --git a/boost-1.66.0-build-optflags.patch b/boost-1.66.0-build-optflags.patch new file mode 100644 index 0000000..8855b40 --- /dev/null +++ b/boost-1.66.0-build-optflags.patch @@ -0,0 +1,49 @@ +--- boost_1_66_0/tools/build/src/tools/gcc.jam~ 2017-12-13 23:56:50.000000000 +0000 ++++ boost_1_66_0/tools/build/src/tools/gcc.jam 2018-01-19 12:48:26.264755316 +0000 +@@ -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 +@@ -755,17 +755,17 @@ actions compile.c.pch + ### + + # 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 : -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 : -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 speed : ; ++toolset.flags gcc.compile OPTIONS space : ; ++ ++toolset.flags gcc.compile OPTIONS off : ; ++toolset.flags gcc.compile OPTIONS on : ; ++toolset.flags gcc.compile OPTIONS full : ; ++ ++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 ; diff --git a/boost-1.66.0-compute.patch b/boost-1.66.0-compute.patch new file mode 100644 index 0000000..2bd2b4a --- /dev/null +++ b/boost-1.66.0-compute.patch @@ -0,0 +1,23 @@ +From fdbdb94db64e888fce90fe519be23c2a4396a82e Mon Sep 17 00:00:00 2001 +From: pradeep +Date: Tue, 8 May 2018 14:53:38 +0530 +Subject: [PATCH 1/2] Fix return var qualifier in svm_ptr::get_context + +Lack of `const` qualifier is throwing errors with GCC 8.1 +--- + include/boost/compute/memory/svm_ptr.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/boost/compute/memory/svm_ptr.hpp b/include/boost/compute/memory/svm_ptr.hpp +index c8753f5b..56cf1268 100644 +--- a/include/boost/compute/memory/svm_ptr.hpp ++++ b/include/boost/compute/memory/svm_ptr.hpp +@@ -126,7 +126,7 @@ class svm_ptr + return m_ptr - other.m_ptr; + } + +- context& get_context() const ++ const context& get_context() const + { + return m_context; + } diff --git a/boost-1.66.0-no-rpath.patch b/boost-1.66.0-no-rpath.patch new file mode 100644 index 0000000..e69e0b4 --- /dev/null +++ b/boost-1.66.0-no-rpath.patch @@ -0,0 +1,20 @@ +--- boost_1_66_0/tools/build/src/tools/gcc.jam~ 2018-01-19 13:23:45.361330881 +0000 ++++ boost_1_66_0/tools/build/src/tools/gcc.jam 2018-01-19 13:23:45.362330880 +0000 +@@ -1191,7 +1191,7 @@ rule link ( targets * : sources * : prop + + actions link bind LIBRARIES + { +- "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,$(RPATH) -Wl,-rpath-link$(SPACE)-Wl,"$(RPATH_LINK)" -o "$(<)" $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) ++ "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -o "$(<)" $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + } + + rule link.dll ( targets * : sources * : properties * ) +@@ -1204,7 +1204,7 @@ rule link.dll ( targets * : sources * : + # Differs from 'link' above only by -shared. + actions link.dll bind LIBRARIES + { +- "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,$(RPATH) "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) ++ "$(CONFIG_COMMAND)" -L"$(LINKPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + } + + ### diff --git a/boost-1.66.0-numpy3.patch b/boost-1.66.0-numpy3.patch new file mode 100644 index 0000000..27add8c --- /dev/null +++ b/boost-1.66.0-numpy3.patch @@ -0,0 +1,29 @@ +From 0fce0e589353d772ceda4d493b147138406b22fd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Moritz=20Wanzenb=C3=B6ck?= +Date: Wed, 11 Jul 2018 11:57:46 +0200 +Subject: [PATCH] Add missing return statement in numpy import + +This adds a missing return statement in the python3 specific +import logic of boost.python.numpy. + +For python3 wrap_import_array() needs to return a pointer value. +The import_array() macro only returns NULL in case of error. The +missing return statement is UB, so the compiler can assume it does +not happen. This means the compiler can assume the error branch +is always taken, so import_array must always fail. +--- + src/numpy/numpy.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/numpy/numpy.cpp b/src/numpy/numpy.cpp +index 8e259bc75..3ae2295e3 100644 +--- a/libs/python/src/numpy/numpy.cpp ++++ b/libs/python/src/numpy/numpy.cpp +@@ -19,6 +19,7 @@ static void wrap_import_array() + static void * wrap_import_array() + { + import_array(); ++ return NULL; + } + #endif + diff --git a/boost-1.66.0-python-abi_letters.patch b/boost-1.66.0-python-abi_letters.patch new file mode 100644 index 0000000..a421a75 --- /dev/null +++ b/boost-1.66.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 ?= "" ; + + local cmds-to-try ; + +@@ -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-1.66.0-python37.patch b/boost-1.66.0-python37.patch new file mode 100644 index 0000000..9577f21 --- /dev/null +++ b/boost-1.66.0-python37.patch @@ -0,0 +1,39 @@ +From 660487c43fde76f3e64f1cb2e644500da92fe582 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Bernhard=20Rosenkr=C3=A4nzer?= +Date: Fri, 9 Feb 2018 18:20:30 +0100 +Subject: [PATCH] Fix build with Python 3.7 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Python 3.7 changes the return type of _PyUnicode_AsString() +from void* to const char* -- causing the build of boost-python +to fail. + +Signed-off-by: Bernhard Rosenkränzer +--- + src/converter/builtin_converters.cpp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/converter/builtin_converters.cpp b/src/converter/builtin_converters.cpp +index 1c28af7fc..ee2d5b479 100644 +--- a/libs/python/src/converter/builtin_converters.cpp ++++ b/libs/python/src/converter/builtin_converters.cpp +@@ -45,11 +45,16 @@ namespace + { + return PyString_Check(obj) ? PyString_AsString(obj) : 0; + } +-#else ++#elif PY_VERSION_HEX < 0x03070000 + void* convert_to_cstring(PyObject* obj) + { + return PyUnicode_Check(obj) ? _PyUnicode_AsString(obj) : 0; + } ++#else ++ void* convert_to_cstring(PyObject* obj) ++ { ++ return PyUnicode_Check(obj) ? const_cast(reinterpret_cast(_PyUnicode_AsString(obj))) : 0; ++ } + #endif + + // Given a target type and a SlotPolicy describing how to perform a diff --git a/boost-1.66.0-spirit-abs-overflow.patch b/boost-1.66.0-spirit-abs-overflow.patch new file mode 100644 index 0000000..d98ab4e --- /dev/null +++ b/boost-1.66.0-spirit-abs-overflow.patch @@ -0,0 +1,15 @@ +--- boost_1_66_0/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp~ 2018-02-23 16:59:53.785141676 +0000 ++++ boost_1_66_0/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp 2018-02-23 17:00:16.838092946 +0000 +@@ -68,7 +68,11 @@ + typedef unsignedtype type; \ + static type call(signedtype n) \ + { \ +- return static_cast((n >= 0) ? n : -n); \ ++ if (n >= 0) \ ++ return n; \ ++ if (n == std::numeric_limits::min()) \ ++ return (unsignedtype)n; \ ++ return (unsignedtype)(-n); \ + } \ + } \ + /**/ diff --git a/boost.spec b/boost.spec new file mode 100644 index 0000000..4388466 --- /dev/null +++ b/boost.spec @@ -0,0 +1,1178 @@ +%global boost_docdir __tmp_docdir +%global boost_examplesdir __tmp_examplesdir +%global version_enc 1_66_0 +%global toplev_dirname %{name}_%{version_enc} +%global sonamever %{version} + +%bcond_without mpich +%bcond_without openmpi +%bcond_without context +%bcond_without python2 +%bcond_without python3 + +%ifnarch %{ix86} x86_64 + %bcond_with quadmath +%else + %bcond_without quadmath +%endif + +%bcond_with tests +%bcond_with docs_generated + +Name: boost +Version: 1.66.0 +Release: 15 +Summary: The free peer-reviewed portable C++ source libraries +License: Boost and MIT and Python +URL: http://www.boost.org +Source0: https://sourceforge.net/projects/boost/files/boost/%{version}/%{toplev_dirname}.tar.bz2 +Source1: libboost_thread.so + +# https://svn.boost.org/trac/boost/ticket/6150 +Patch4: boost-1.50.0-fix-non-utf8-files.patch + +# http://www.boost.org/boost-build2/doc/html/bbv2/overview.html +Patch5: boost-1.48.0-add-bjam-man-page.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=828856 +# https://bugzilla.redhat.com/show_bug.cgi?id=828857 +# https://svn.boost.org/trac/boost/ticket/6701 +Patch15: boost-1.58.0-pool.patch + +# https://svn.boost.org/trac/boost/ticket/5637 +Patch25: boost-1.57.0-mpl-print.patch + +# https://svn.boost.org/trac/boost/ticket/9038 +Patch51: boost-1.58.0-pool-test_linking.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1102667 +Patch61: boost-1.57.0-python-libpython_dep.patch +Patch62: boost-1.66.0-python-abi_letters.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1190039 +Patch65: boost-1.66.0-build-optflags.patch + +Patch68: boost-1.66.0-address-model.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1318383 +Patch82: boost-1.66.0-no-rpath.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1541035 +Patch83: boost-1.66.0-bjam-build-flags.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1545092 +Patch84: boost-1.66.0-spirit-abs-overflow.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1585515 +Patch85: boost-1.66.0-compute.patch + +# https://github.com/boostorg/python/pull/186 +Patch86: boost-1.66.0-python37.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1596468 +# https://github.com/boostorg/python/pull/218 +Patch87: boost-1.66.0-numpy3.patch + +Requires: boost-atomic%{?_isa} = %{version}-%{release} +Requires: boost-chrono%{?_isa} = %{version}-%{release} +Requires: boost-container%{?_isa} = %{version}-%{release} +Requires: boost-context%{?_isa} = %{version}-%{release} +Requires: boost-coroutine%{?_isa} = %{version}-%{release} +Requires: boost-date-time%{?_isa} = %{version}-%{release} +Requires: boost-fiber%{?_isa} = %{version}-%{release} +Requires: boost-filesystem%{?_isa} = %{version}-%{release} +Requires: boost-graph%{?_isa} = %{version}-%{release} +Requires: boost-iostreams%{?_isa} = %{version}-%{release} +Requires: boost-locale%{?_isa} = %{version}-%{release} +Requires: boost-log%{?_isa} = %{version}-%{release} +Requires: boost-math%{?_isa} = %{version}-%{release} +Requires: boost-program-options%{?_isa} = %{version}-%{release} +Requires: boost-random%{?_isa} = %{version}-%{release} +Requires: boost-regex%{?_isa} = %{version}-%{release} +Requires: boost-serialization%{?_isa} = %{version}-%{release} +Requires: boost-signals%{?_isa} = %{version}-%{release} +Requires: boost-stacktrace%{?_isa} = %{version}-%{release} +Requires: boost-system%{?_isa} = %{version}-%{release} +Requires: boost-test%{?_isa} = %{version}-%{release} +Requires: boost-thread%{?_isa} = %{version}-%{release} +Requires: boost-timer%{?_isa} = %{version}-%{release} +Requires: boost-type_erasure%{?_isa} = %{version}-%{release} +Requires: boost-wave%{?_isa} = %{version}-%{release} + +BuildRequires: gcc-c++ m4 tcl +BuildRequires: libstdc++-devel bzip2-devel zlib-devel +BuildRequires: python2-devel python3-devel libicu-devel +BuildRequires: python2-numpy python3-numpy +%if %{with quadmath} +BuildRequires: libquadmath-devel +%endif + +%description +Boost provides free peer-reviewed portable C++ source libraries. The +emphasis is on libraries which work well with the C++ Standard +Library. In order to establish "existing practice" and provide +reference implementations so that the Boost libraries are suitable +for eventual standardization. Ten Boost libraries are included in +the C++ Standards Committee's Library Technical Report (TR1) and in +the new C++11 Standard. C++11 also includes several more Boost +libraries in addition to those from TR1. More Boost libraries are +proposed for standardization in C++17. + +%package atomic +Summary: C++11-style atomic<> + +%description atomic + +Boost.Atomic is a library that provides atomic data types and +operations on these data types, as well as memory ordering constraints +required for coordinating multiple threads through atomic variables. +It implements the interface as defined by the C++11 standard,but makes +this feature available for platforms lacking system/compiler support +for this particular C++11 feature. + +%package chrono +Summary: Useful time utilities C++11 +Requires: boost-system%{?_isa} = %{version}-%{release} + +%description chrono + +Boost.Chrono implements the new time facilities in C++11, as proposed in +N2661 - A Foundation to Sleep On. That document provides background and +motivation for key design decisions and is the source of a good deal of +information in this documentation. In addition to the clocks provided by +the standard proposal, Boost.Chrono provides specific process and thread +clocks. + +%package container +Summary: Standard library containers and extensions + +%description container + +Boost.Container library implements several well-known containers, +including STL containers. The aim of the library is to offer advanced +features not present in standard containers or to offer the latest +standard draft features for compilers that don't comply with the latest +C++. + +%package context +Summary: (C++11) Context switching library + +%description context + +Boost.Context is a foundational library that provides a sort of +cooperative multitasking on a single thread. By providing an abstraction +of the current execution state in the current thread, including the stack +(with local variables) and stack pointer, all registers and CPU flags, +and the instruction pointer, a execution context represents a specific +point in the application's execution path. This is useful for building +higher-level abstractions, like coroutines, cooperative threads +(userland threads) or an equivalent to C# keyword yield in C++. + +%package coroutine +Summary: Run-time component of boost coroutine library + +%description coroutine +Boost.Coroutine provides templates for generalized subroutines which +allow suspending and resuming execution at certain locations. It +preserves the local state of execution and allows re-entering +subroutines more than once (useful if state must be kept across function +calls). + +%package date-time +Summary: A set of date-time libraries based on generic programming concepts + +%description date-time + +Boost Date Time is a set of date-time libraries based on generic +programming concepts. + +%package fiber +Summary: (C++11) Userland threads library + +%description fiber + +Boost.Fiber provides a framework for micro-/userland-threads (fibers) +scheduled cooperatively. The API contains classes and functions to manage +and synchronize fibers similiarly to standard thread support library. + +%package filesystem +Summary: Run-time component of boost filesystem library +Requires: boost-system%{?_isa} = %{version}-%{release} + +%description filesystem + +The Boost Filesystem Library provides portable facilities to query and +manipulate paths, files, and directories. + +%package graph +Summary: Run-time component of boost graph library +Requires: boost-regex%{?_isa} = %{version}-%{release} + +%description graph + +BGL interface and graph components are generic, in the same sense as +the Standard Template Library (STL). + +%package iostreams +Summary: Run-time component of boost iostreams library + +%description iostreams + +Boost.Iostreams provides a framework for defining streams, stream +buffers and i/o filters. + +%package locale +Summary: Run-time component of boost locale library +Requires: boost-chrono%{?_isa} = %{version}-%{release} +Requires: boost-system%{?_isa} = %{version}-%{release} +Requires: boost-thread%{?_isa} = %{version}-%{release} + +%description locale + +Boost.Locale provide a set of localization and Unicode handling tools. + +%package log +Summary: Run-time component of boost logging library + +%description log + +Boost.Log library aims to make logging significantly easier for the +application developer. It provides a wide range of out-of-the-box +tools along with public interfaces for extending the library. + +%package math +Summary: Math functions for boost TR1 library + +%description math + +Boost.Math includes several contributions in the domain of mathematics: +The Greatest Common Divisor and Least Common Multiple library provides +run-time and compile-time evaluation of the greatest common divisor +(GCD) or least common multiple (LCM) of two integers. The Special +Functions library currently provides eight templated special functions, +in namespace boost. The Complex Number Inverse Trigonometric Functions +are the inverses of trigonometric functions currently present in the C++ +standard. Quaternions are a relative of complex numbers often used to +parameterise rotations in three dimentional space. Octonions, like +quaternions, are a relative of complex numbers. + +%package numpy2 +Summary: Run-time component of boost numpy library for Python 2 +Requires: boost-python2%{?_isa} = %{version}-%{release} +Requires: python2-numpy +Provides: boost-numpy%{?_isa} = %{version}-%{release} +Obsoletes: boost-numpy < %{version}-%{release} + +%description numpy2 + +The Boost Python Library is a framework for interfacing Python and +C++. It allows you to quickly and seamlessly expose C++ classes, +functions and objects to Python, and vice versa, using no special +tools -- just your C++ compiler. This package contains run-time +support for the NumPy extension of the Boost Python Library for Python 2. + +%package numpy3 +Summary: Run-time component of boost numpy library for Python 3 +Requires: boost-python3%{?_isa} = %{version}-%{release} +Requires: python3-numpy + +%description numpy3 + +The Boost Python Library is a framework for interfacing Python and +C++. It allows you to quickly and seamlessly expose C++ classes, +functions and objects to Python, and vice versa, using no special +tools -- just your C++ compiler. This package contains run-time +support for the NumPy extension of the Boost Python Library for Python 3. + +%package program-options +Summary: Run-time component of boost program_options library + +%description program-options + +Boost program options library allows program developers to obtain +(name, value) pairs from the user, via conventional methods such as +command line and config file. + +%package python2 +Provides: %{name}-python = %{version}-%{release} +Provides: %{name}-python%{?_isa} = %{version}-%{release} +Obsoletes: %{name}-python < %{version}-%{release} +Obsoletes: python2-%{name} < %{version}-%{release} +Summary: Run-time component of boost python library for Python 2 + +%description python2 + +The Boost Python Library is a framework for interfacing Python and +C++. It allows you to quickly and seamlessly expose C++ classes, +functions and objects to Python, and vice versa, using no special +tools -- just your C++ compiler. This package contains run-time +support for the Boost Python Library compiled for Python 2. + +%package python2-devel +Summary: Shared object symbolic links for Boost.Python 2 +Requires: boost-numpy2%{?_isa} = %{version}-%{release} +Requires: boost-python2%{?_isa} = %{version}-%{release} +Requires: boost-devel%{?_isa} = %{version}-%{release} +Provides: boost-python-devel%{?_isa} = %{version}-%{release} +Obsoletes: boost-python-devel < %{version}-%{release} + +%description python2-devel + +Shared object symbolic links for Python 2 variant of Boost.Python. + +%package python3 +Summary: Run-time component of boost python library for Python 3 + +%description python3 + +The Boost Python Library is a framework for interfacing Python and +C++. It allows you to quickly and seamlessly expose C++ classes, +functions and objects to Python, and vice versa, using no special +tools -- just your C++ compiler. This package contains run-time +support for the Boost Python Library compiled for Python 3. + +%package python3-devel +Summary: Shared object symbolic links for Boost.Python 3 +Requires: boost-numpy3%{?_isa} = %{version}-%{release} +Requires: boost-python3%{?_isa} = %{version}-%{release} +Requires: boost-devel%{?_isa} = %{version}-%{release} + +%description python3-devel + +Shared object symbolic links for Python 3 variant of Boost.Python. + +%package random +Summary: A complete system for random number generation + +%description random + +The Boost Random Number Library provides a variety of generators and +distributions to produce random numbers having useful properties, +such as uniform distribution. + +%package regex +Summary: Run-time component of boost regular expression library + +%description regex + +Regular expression library. + +%package serialization +Summary: Run-time component of boost serialization library + +%description serialization + +Run-time support for serialization for persistence and marshaling. + +%package signals +Summary: Run-time component of boost signals and slots library + +%description signals + +Managed signals & slots callback implementation (thread-safe version 2). + +%package stacktrace +Summary: Run-time component of boost stacktrace library + +%description stacktrace + +Gather, store, copy and print backtraces. + +%package system +Summary: Run-time component of boost system support library + +%description system + +Boost operating system support library, including the diagnostics support +that will be part of the C++0x standard library. + +%package test +Summary: Run-time component of boost test library + +%description test + +Support for simple program testing, full unit testing, and for program +execution monitoring. + +%package thread +Summary: Run-time component of boost thread library +Requires: boost-system%{?_isa} = %{version}-%{release} + +%description thread + +Boost.Thread enables the use of multiple threads of execution with shared +data in portable C++ code. It provides classes and functions for managing +the threads themselves, along with others for synchronizing data between +the threads or providing separate copies of data specific to individual +threads. + +%package timer +Summary: Event timer, progress timer, and progress display classes +Requires: boost-chrono%{?_isa} = %{version}-%{release} +Requires: boost-system%{?_isa} = %{version}-%{release} + +%description timer + +"How long does my C++ code take to run?" +The Boost Timer library answers that question and does so portably, +with as little as one #include and one additional line of code. + +%package type_erasure +Summary: Run-time component of boost type erasure library +Requires: boost-chrono%{?_isa} = %{version}-%{release} +Requires: boost-system%{?_isa} = %{version}-%{release} + +%description type_erasure + +The Boost.TypeErasure library provides runtime polymorphism in C++ +that is more flexible than that provided by the core language. + +%package wave +Summary: Run-time component of boost C99/C++ preprocessing library +Requires: boost-chrono%{?_isa} = %{version}-%{release} +Requires: boost-date-time%{?_isa} = %{version}-%{release} +Requires: boost-filesystem%{?_isa} = %{version}-%{release} +Requires: boost-system%{?_isa} = %{version}-%{release} +Requires: boost-thread%{?_isa} = %{version}-%{release} + +%description wave + +The Boost.Wave library is a Standards conforming, and highly +configurable implementation of the mandated C99/C++ preprocessor +functionality packed behind an easy to use iterator interface. + +%package devel +Summary: The Boost C++ headers, shared and static development libraries and examples +Requires: boost%{?_isa} = %{version}-%{release} +Requires: libicu-devel%{?_isa} +%if %{with quadmath} +Requires: libquadmath-devel%{?_isa} +%endif +Provides: boost-static +Obsoletes: boost-static +Provides: boost-examples +Obsoletes: boost-examples + +%description devel +Headers shared object symbolic links for the Boost C++ libraries and static +Boost C++ libraries, example source files distributed with boost. + +%package help +Summary: HTML documentation for the Boost C++ libraries +BuildArch: noarch + +%description help +This package contains the documentation in the HTML format of the Boost C++ +libraries. The documentation provides the same content as that on the Boost +web page (http://www.boost.org/doc/libs/%{version_enc}). + +%package openmpi +Summary: Run-time component of Boost.MPI library +BuildRequires: openmpi-devel +Requires: boost-serialization%{?_isa} = %{version}-%{release} + +%description openmpi + +Run-time support for Boost.MPI-OpenMPI, a library providing a clean C++ +API over the OpenMPI implementation of MPI. + +%package openmpi-devel +Summary: Shared library symbolic links for Boost.MPI +Requires: boost-devel%{?_isa} = %{version}-%{release} +Requires: boost-openmpi%{?_isa} = %{version}-%{release} +Requires: boost-graph-openmpi%{?_isa} = %{version}-%{release} + +%description openmpi-devel + +Devel package for Boost.MPI-OpenMPI, a library providing a clean C++ +API over the OpenMPI implementation of MPI. + +%package openmpi-python2 +Summary: Python 2 run-time component of Boost.MPI library +Requires: boost-openmpi%{?_isa} = %{version}-%{release} +Requires: boost-python%{?_isa} = %{version}-%{release} +Requires: boost-serialization%{?_isa} = %{version}-%{release} +Requires: python2-openmpi%{?_isa} +Provides: boost-openmpi-python%{?_isa} = %{version}-%{release} +Obsoletes: boost-openmpi-python < %{version}-%{release} + +%description openmpi-python2 + +Python 2 support for Boost.MPI-OpenMPI, a library providing a clean C++ +API over the OpenMPI implementation of MPI. + +%package openmpi-python2-devel +Summary: Shared library symbolic links for Boost.MPI Python 2 component +Requires: boost-devel%{?_isa} = %{version}-%{release} +Requires: boost-openmpi-devel%{?_isa} = %{version}-%{release} +Requires: boost-openmpi-python2%{?_isa} = %{version}-%{release} + +%description openmpi-python2-devel + +Devel package for the Python 2 interface of Boost.MPI-OpenMPI, a library +providing a clean C++ API over the OpenMPI implementation of MPI. + +%package openmpi-python3 +Summary: Python 3 run-time component of Boost.MPI library +Requires: boost-openmpi%{?_isa} = %{version}-%{release} +Requires: boost-python3%{?_isa} = %{version}-%{release} +Requires: boost-serialization%{?_isa} = %{version}-%{release} +Requires: python3-openmpi%{?_isa} + +%description openmpi-python3 + +Python 3 support for Boost.MPI-OpenMPI, a library providing a clean C++ +API over the OpenMPI implementation of MPI. + +%package openmpi-python3-devel +Summary: Shared library symbolic links for Boost.MPI Python 3 component +Requires: boost-devel%{?_isa} = %{version}-%{release} +Requires: boost-python3-devel%{?_isa} = %{version}-%{release} +Requires: boost-openmpi-devel%{?_isa} = %{version}-%{release} +Requires: boost-openmpi-python3%{?_isa} = %{version}-%{release} + +%description openmpi-python3-devel + +Devel package for the Python 3 interface of Boost.MPI-OpenMPI, a library +providing a clean C++ API over the OpenMPI implementation of MPI. + +%package graph-openmpi +Summary: Run-time component of parallel boost graph library +Requires: boost-openmpi%{?_isa} = %{version}-%{release} +Requires: boost-serialization%{?_isa} = %{version}-%{release} + +%description graph-openmpi + +Run-time support for the Parallel BGL graph library. The interface and +graph components are generic, in the same sense as the Standard +Template Library (STL). This libraries in this package use OpenMPI +back-end to do the parallel work. + +%package mpich +Summary: Run-time component of Boost.MPI library +BuildRequires: mpich-devel +Requires: boost-serialization%{?_isa} = %{version}-%{release} + +%description mpich + +Run-time support for Boost.MPI-MPICH, a library providing a clean C++ +API over the MPICH implementation of MPI. + +%package mpich-devel +Summary: Shared library symbolic links for Boost.MPI +Requires: boost-devel%{?_isa} = %{version}-%{release} +Requires: boost-mpich%{?_isa} = %{version}-%{release} +Requires: boost-graph-mpich%{?_isa} = %{version}-%{release} + +%description mpich-devel + +Devel package for Boost.MPI-MPICH, a library providing a clean C++ +API over the MPICH implementation of MPI. + +%package mpich-python2 +Summary: Python run-time component of Boost.MPI library +Requires: boost-mpich%{?_isa} = %{version}-%{release} +Requires: boost-python2%{?_isa} = %{version}-%{release} +Requires: boost-serialization%{?_isa} = %{version}-%{release} +Requires: python2-mpich%{?_isa} +Provides: boost-mpich-python%{?_isa} = %{version}-%{release} +Obsoletes: boost-mpich-python < %{version}-%{release} + +%description mpich-python2 + +Python 2 support for Boost.MPI-MPICH, a library providing a clean C++ +API over the MPICH implementation of MPI. + +%package mpich-python2-devel +Summary: Shared library symbolic links for Boost.MPI Python 2 component +Requires: boost-devel%{?_isa} = %{version}-%{release} +Requires: boost-mpich-devel%{?_isa} = %{version}-%{release} +Requires: boost-mpich-python2%{?_isa} = %{version}-%{release} + +%description mpich-python2-devel + +Devel package for the Python 2 interface of Boost.MPI-MPICH, a library +providing a clean C++ API over the MPICH implementation of MPI. + +%package mpich-python3 +Summary: Python 3 run-time component of Boost.MPI library +Requires: boost-mpich%{?_isa} = %{version}-%{release} +Requires: boost-python3%{?_isa} = %{version}-%{release} +Requires: boost-serialization%{?_isa} = %{version}-%{release} +Requires: python3-mpich%{?_isa} + +%description mpich-python3 + +Python 3 support for Boost.MPI-MPICH, a library providing a clean C++ +API over the MPICH implementation of MPI. + +%package mpich-python3-devel +Summary: Shared library symbolic links for Boost.MPI Python 3 component +Requires: boost-devel%{?_isa} = %{version}-%{release} +Requires: boost-python3-devel%{?_isa} = %{version}-%{release} +Requires: boost-mpich-devel%{?_isa} = %{version}-%{release} +Requires: boost-mpich-python3%{?_isa} = %{version}-%{release} + +%description mpich-python3-devel + +Devel package for the Python 3 interface of Boost.MPI-MPICH, a library +providing a clean C++ API over the MPICH implementation of MPI. + +%package graph-mpich +Summary: Run-time component of parallel boost graph library +Requires: boost-mpich%{?_isa} = %{version}-%{release} +Requires: boost-serialization%{?_isa} = %{version}-%{release} + +%description graph-mpich + +Run-time support for the Parallel BGL graph library. The interface and +graph components are generic, in the same sense as the Standard +Template Library (STL). This libraries in this package use MPICH +back-end to do the parallel work. + +%package build +Summary: Cross platform build system for C++ projects +Requires: boost-jam +BuildArch: noarch + +%description build +Boost.Build is an easy way to build C++ projects, everywhere. You name +your pieces of executable and libraries and list their sources. Boost.Build +takes care about compiling your sources with the right options, +creating static and shared libraries, making pieces of executable, and other +chores -- whether you're using GCC, MSVC, or a dozen more supported +C++ compilers -- on Windows, OSX, Linux and commercial UNIX systems. + +%package doctools +Summary: Tools for working with Boost documentation +Requires: docbook-dtds +Requires: docbook-style-xsl + +%description doctools + +Tools for working with Boost documentation in BoostBook or QuickBook format. + +%package jam +Summary: A low-level build tool + +%description jam +Boost.Jam (BJam) is the low-level build engine tool for Boost.Build. +Historically, Boost.Jam is based on on FTJam and on Perforce Jam but has grown +a number of significant features and is now developed independently. + +%prep +%setup -q -n %{toplev_dirname} +find ./boost -name '*.hpp' -perm /111 | xargs chmod a-x + +%patch4 -p1 +%patch5 -p1 +%patch15 -p0 +%patch25 -p1 +%patch51 -p1 +%patch61 -p1 +%patch62 -p1 +%patch65 -p1 +%patch68 -p1 +%patch82 -p1 +%patch83 -p1 +%patch84 -p1 +%patch85 -p2 +%patch86 -p1 +%patch87 -p1 + +%build +: PYTHON2_VERSION=%{python2_version} +PYTHON3_ABIFLAGS=$(/usr/bin/python3-config --abiflags) +: PYTHON3_VERSION=%{python3_version} +: PYTHON3_ABIFLAGS=${PYTHON3_ABIFLAGS} + +export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-unused-local-typedefs -Wno-deprecated-declarations" +export RPM_LD_FLAGS + +cat > ./tools/build/src/user-config.jam << "EOF" +import os ; +local RPM_OPT_FLAGS = [ os.environ RPM_OPT_FLAGS ] ; +local RPM_LD_FLAGS = [ os.environ RPM_LD_FLAGS ] ; + +using gcc : : : $(RPM_OPT_FLAGS) $(RPM_LD_FLAGS) ; +using mpi ; +using python : %{python2_version} : /usr/bin/python2 : /usr/include/python%{python2_version} : : : : ; +EOF + +./bootstrap.sh --with-toolset=gcc --with-icu + +echo ============================= build serial ================== +./b2 -d+2 -q %{?_smp_mflags} --without-mpi --without-graph_parallel \ + --build-dir=serial variant=release threading=multi debug-symbols=on \ + pch=off python=%{python2_version} stage + +if [ $(find serial -type f -name has_atomic_flag_lockfree -print -quit | wc -l) -ne 0 ]; then + DEF=D +else + DEF=U +fi + +m4 -${DEF}HAS_ATOMIC_FLAG_LOCKFREE -DVERSION=%{version} %{SOURCE1} > $(basename %{SOURCE1}) + +cat > python3-config.jam << "EOF" +import os ; +local RPM_OPT_FLAGS = [ os.environ RPM_OPT_FLAGS ] ; +local RPM_LD_FLAGS = [ os.environ RPM_LD_FLAGS ] ; + +using gcc : : : $(RPM_OPT_FLAGS) $(RPM_LD_FLAGS) ; +using mpi ; +EOF + +cat >> python3-config.jam << EOF +using python : %{python3_version} : /usr/bin/python3 : /usr/include/python%{python3_version}${PYTHON3_ABIFLAGS} : : : : ${PYTHON3_ABIFLAGS} ; +EOF + +echo ============================= build serial-py3 ================== +./b2 -d+2 -q %{?_smp_mflags} --user-config=./python3-config.jam \ + --with-python --build-dir=serial-py3 variant=release threading=multi \ + debug-symbols=on pch=off python=%{python3_version} stage + +module purge ||: + +%{_openmpi_load} +echo ============================= build $MPI_COMPILER ================== +./b2 -d+2 -q %{?_smp_mflags} --with-mpi --with-graph_parallel \ + --build-dir=$MPI_COMPILER variant=release threading=multi \ + debug-symbols=on pch=off python=%{python2_version} stage + +echo ============================= build $MPI_COMPILER-py3 ================== +./b2 -d+2 -q %{?_smp_mflags} --user-config=./python3-config.jam \ + --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER-py3 \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python3_version} stage + +%{_openmpi_unload} +export PATH=/bin${PATH:+:}$PATH + +%{_mpich_load} +echo ============================= build $MPI_COMPILER ================== +./b2 -d+2 -q %{?_smp_mflags} --with-mpi --with-graph_parallel \ + --build-dir=$MPI_COMPILER variant=release threading=multi \ + debug-symbols=on pch=off python=%{python2_version} stage + +echo ============================= build $MPI_COMPILER-py3 ================== +./b2 -d+2 -q %{?_smp_mflags} --user-config=./python3-config.jam \ + --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER-py3 \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python3_version} stage + +%{_mpich_unload} +export PATH=/bin${PATH:+:}$PATH + +echo ============================= build Boost.Build ================== +(cd tools/build + ./bootstrap.sh --with-toolset=gcc) + +%check +: + +%install +cd %{_builddir}/%{toplev_dirname} + +module purge ||: + +%{_openmpi_load} +echo ============================= install $MPI_COMPILER ================== +./b2 -q %{?_smp_mflags} --with-mpi --with-graph_parallel \ + --build-dir=$MPI_COMPILER --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python2_version} stage + +mkdir -p ${RPM_BUILD_ROOT}%{python2_sitearch}/openmpi/boost +touch ${RPM_BUILD_ROOT}%{python2_sitearch}/openmpi/boost/__init__.py +mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/mpi.so \ + ${RPM_BUILD_ROOT}%{python2_sitearch}/openmpi/boost/ + +echo ============================= install $MPI_COMPILER-py3 ================== +./b2 -q %{?_smp_mflags} --user-config=./python3-config.jam \ + --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER-py3 \ + --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} variant=release \ + threading=multi debug-symbols=on pch=off \ + python=%{python3_version} stage + +mkdir -p ${RPM_BUILD_ROOT}%{python3_sitearch}/openmpi/boost +touch ${RPM_BUILD_ROOT}%{python3_sitearch}/openmpi/boost/__init__.py +mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/mpi.so ${RPM_BUILD_ROOT}%{python3_sitearch}/openmpi/boost/ + +rm -f ${RPM_BUILD_ROOT}${MPI_HOME}/lib/libboost_{python,{w,}serialization}* + +%{_openmpi_unload} +export PATH=/bin${PATH:+:}$PATH + +%{_mpich_load} +echo ============================= install $MPI_COMPILER ================== +./b2 -q %{?_smp_mflags} --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \ + --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} variant=release threading=multi\ + debug-symbols=on pch=off python=%{python2_version} stage + +mkdir -p ${RPM_BUILD_ROOT}%{python2_sitearch}/mpich/boost +touch ${RPM_BUILD_ROOT}%{python2_sitearch}/mpich/boost/__init__.py +mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/mpi.so ${RPM_BUILD_ROOT}%{python2_sitearch}/mpich/boost/ + +echo ============================= install $MPI_COMPILER-py3 ================== +./b2 -q %{?_smp_mflags} --user-config=./python3-config.jam \ + --with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER-py3 \ + --stagedir=${RPM_BUILD_ROOT}${MPI_HOME} variant=release threading=multi \ + debug-symbols=on pch=off python=%{python3_version} stage + +mkdir -p ${RPM_BUILD_ROOT}%{python3_sitearch}/mpich/boost +touch ${RPM_BUILD_ROOT}%{python3_sitearch}/mpich/boost/__init__.py +mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/mpi.so ${RPM_BUILD_ROOT}%{python3_sitearch}/mpich/boost/ + +rm -f ${RPM_BUILD_ROOT}${MPI_HOME}/lib/libboost_{python,{w,}serialization}* + +%{_mpich_unload} +export PATH=/bin${PATH:+:}$PATH + +echo ============================= install serial ================== +./b2 -d+2 -q %{?_smp_mflags} --without-mpi --without-graph_parallel \ + --build-dir=serial --prefix=$RPM_BUILD_ROOT%{_prefix} \ + --libdir=$RPM_BUILD_ROOT%{_libdir} \ + variant=release threading=multi debug-symbols=on pch=off \ + python=%{python2_version} install + +[ -f $RPM_BUILD_ROOT%{_libdir}/libboost_thread.so ] +rm -f $RPM_BUILD_ROOT%{_libdir}/libboost_thread.so +install -p -m 644 $(basename %{SOURCE1}) $RPM_BUILD_ROOT%{_libdir}/ + +echo ============================= install serial-py3 ================== +./b2 -d+2 -q %{?_smp_mflags} --user-config=python3-config.jam \ + --with-python --build-dir=serial-py3 --prefix=$RPM_BUILD_ROOT%{_prefix} \ + --libdir=$RPM_BUILD_ROOT%{_libdir} variant=release threading=multi \ + debug-symbols=on pch=off python=%{python3_version} install + +echo ============================= install Boost.Build ================== +(cd tools/build + ./b2 --prefix=$RPM_BUILD_ROOT%{_prefix} install + chmod -x $RPM_BUILD_ROOT%{_datadir}/boost-build/src/build/alias.py + chmod +x $RPM_BUILD_ROOT%{_datadir}/boost-build/src/tools/doxproc.py + rm -f $RPM_BUILD_ROOT%{_bindir}/b2 + rm -f $RPM_BUILD_ROOT%{_datadir}/boost-build/src/build/project.ann.py + rm -f $RPM_BUILD_ROOT%{_datadir}/boost-build/src/tools/doxygen/windows-paths-check.hpp + %{__install} -p -m 644 v2/doc/bjam.1 -D $RPM_BUILD_ROOT%{_mandir}/man1/bjam.1 +) + +echo ============================= install Boost.QuickBook ================== +(cd tools/quickbook + ../build/b2 --prefix=$RPM_BUILD_ROOT%{_prefix} + %{__install} -p -m 755 ../../dist/bin/quickbook $RPM_BUILD_ROOT%{_bindir}/ + cd ../boostbook + find dtd -type f -name '*.dtd' | while read tobeinstalledfiles; do + install -p -m 644 $tobeinstalledfiles -D $RPM_BUILD_ROOT%{_datadir}/boostbook/$tobeinstalledfiles + done + find xsl -type f | while read tobeinstalledfiles; do + install -p -m 644 $tobeinstalledfiles -D $RPM_BUILD_ROOT%{_datadir}/boostbook/$tobeinstalledfiles + done +) + +echo ============================= install documentation ================== +rm -rf %{boost_docdir} && %{__mkdir_p} %{boost_docdir}/html +DOCPATH=%{boost_docdir} +DOCREGEX='.*\.\(html?\|css\|png\|gif\)' + +find libs doc more -type f -regex $DOCREGEX | sed -n '/\//{s,/[^/]*$,,;p}' | sort -u > tmp-doc-directories + +sed "s:^:$DOCPATH/:" tmp-doc-directories | xargs -P 0 --no-run-if-empty %{__install} -d + +cat tmp-doc-directories | while read tobeinstalleddocdir; do + find $tobeinstalleddocdir -mindepth 1 -maxdepth 1 -regex $DOCREGEX -print0 \ + | xargs -P 0 -0 %{__install} -p -m 644 -t $DOCPATH/$tobeinstalleddocdir +done +rm -f tmp-doc-directories +%{__install} -p -m 644 -t $DOCPATH LICENSE_1_0.txt index.htm index.html boost.png rst.css boost.css + +echo ============================= install examples ================== +sed -i -e 's/\r//g' libs/geometry/example/ml02_distance_strategy.cpp +for tmp_doc_file in flyweight/example/Jamfile.v2 \ + format/example/sample_new_features.cpp multi_index/example/Jamfile.v2 \ + multi_index/example/hashed.cpp serialization/example/demo_output.txt +do + mv libs/${tmp_doc_file} libs/${tmp_doc_file}.iso8859 + iconv -f ISO8859-1 -t UTF8 < libs/${tmp_doc_file}.iso8859 > libs/${tmp_doc_file} + touch -r libs/${tmp_doc_file}.iso8859 libs/${tmp_doc_file} + rm -f libs/${tmp_doc_file}.iso8859 +done + +rm -rf %{boost_examplesdir} && mkdir -p %{boost_examplesdir}/html +EXAMPLESPATH=%{boost_examplesdir} +find libs -type d -name example -exec find {} -type f \; | sed -n '/\//{s,/[^/]*$,,;p}' | sort -u > tmp-doc-directories +sed "s:^:$EXAMPLESPATH/:" tmp-doc-directories | xargs -P 0 --no-run-if-empty %{__install} -d +rm -f tmp-doc-files-to-be-installed && touch tmp-doc-files-to-be-installed +cat tmp-doc-directories | while read tobeinstalleddocdir +do + find $tobeinstalleddocdir -mindepth 1 -maxdepth 1 -type f >> tmp-doc-files-to-be-installed +done +cat tmp-doc-files-to-be-installed | while read tobeinstalledfiles +do + if test -s $tobeinstalledfiles; then + tobeinstalleddocdir=`dirname $tobeinstalledfiles` + %{__install} -p -m 644 -t $EXAMPLESPATH/$tobeinstalleddocdir $tobeinstalledfiles + fi +done +rm -f tmp-doc-files-to-be-installed +rm -f tmp-doc-directories +%{__install} -p -m 644 -t $EXAMPLESPATH LICENSE_1_0.txt + +%post doctools +CATALOG=%{_sysconfdir}/xml/catalog +%{_bindir}/xmlcatalog --noout --add "rewriteSystem" \ + "http://www.boost.org/tools/boostbook/dtd" \ + "file://%{_datadir}/boostbook/dtd" $CATALOG +%{_bindir}/xmlcatalog --noout --add "rewriteURI" \ + "http://www.boost.org/tools/boostbook/dtd" \ + "file://%{_datadir}/boostbook/dtd" $CATALOG +%{_bindir}/xmlcatalog --noout --add "rewriteSystem" \ + "http://www.boost.org/tools/boostbook/xsl" \ + "file://%{_datadir}/boostbook/xsl" $CATALOG +%{_bindir}/xmlcatalog --noout --add "rewriteURI" \ + "http://www.boost.org/tools/boostbook/xsl" \ + "file://%{_datadir}/boostbook/xsl" $CATALOG + +%postun doctools +if [ "$1" = 0 ]; then + CATALOG=%{_sysconfdir}/xml/catalog + %{_bindir}/xmlcatalog --noout --del "file://%{_datadir}/boostbook/dtd" $CATALOG + %{_bindir}/xmlcatalog --noout --del "file://%{_datadir}/boostbook/xsl" $CATALOG +fi + + +%files +%license LICENSE_1_0.txt + +%files atomic +%license LICENSE_1_0.txt +%{_libdir}/libboost_atomic.so.%{sonamever} + +%files chrono +%license LICENSE_1_0.txt +%{_libdir}/libboost_chrono.so.%{sonamever} + +%files container +%license LICENSE_1_0.txt +%{_libdir}/libboost_container.so.%{sonamever} + +%files context +%license LICENSE_1_0.txt +%{_libdir}/libboost_context.so.%{sonamever} + +%files coroutine +%license LICENSE_1_0.txt +%{_libdir}/libboost_coroutine.so.%{sonamever} + +%files date-time +%license LICENSE_1_0.txt +%{_libdir}/libboost_date_time.so.%{sonamever} + +%files fiber +%license LICENSE_1_0.txt +%{_libdir}/libboost_fiber.so.%{sonamever} + +%files filesystem +%license LICENSE_1_0.txt +%{_libdir}/libboost_filesystem.so.%{sonamever} + +%files graph +%license LICENSE_1_0.txt +%{_libdir}/libboost_graph.so.%{sonamever} + +%files iostreams +%license LICENSE_1_0.txt +%{_libdir}/libboost_iostreams.so.%{sonamever} + +%files locale +%license LICENSE_1_0.txt +%{_libdir}/libboost_locale.so.%{sonamever} + +%files log +%license LICENSE_1_0.txt +%{_libdir}/libboost_log.so.%{sonamever} +%{_libdir}/libboost_log_setup.so.%{sonamever} + +%files math +%license LICENSE_1_0.txt +%{_libdir}/libboost_math_c99.so.%{sonamever} +%{_libdir}/libboost_math_c99f.so.%{sonamever} +%{_libdir}/libboost_math_c99l.so.%{sonamever} +%{_libdir}/libboost_math_tr1.so.%{sonamever} +%{_libdir}/libboost_math_tr1f.so.%{sonamever} +%{_libdir}/libboost_math_tr1l.so.%{sonamever} + +%files numpy2 +%license LICENSE_1_0.txt +%{_libdir}/libboost_numpy.so.%{sonamever} + +%files numpy3 +%license LICENSE_1_0.txt +%{_libdir}/libboost_numpy3.so.%{sonamever} + +%files test +%license LICENSE_1_0.txt +%{_libdir}/libboost_prg_exec_monitor.so.%{sonamever} +%{_libdir}/libboost_unit_test_framework.so.%{sonamever} + +%files program-options +%license LICENSE_1_0.txt +%{_libdir}/libboost_program_options.so.%{sonamever} + +%files python2 +%license LICENSE_1_0.txt +%{_libdir}/libboost_python.so.%{sonamever} + +%files python2-devel +%license LICENSE_1_0.txt +%{_libdir}/libboost_numpy.so +%{_libdir}/libboost_python.so + +%files python3 +%license LICENSE_1_0.txt +%{_libdir}/libboost_python3.so.%{sonamever} + +%files python3-devel +%license LICENSE_1_0.txt +%{_libdir}/libboost_numpy3.so +%{_libdir}/libboost_python3.so + +%files random +%license LICENSE_1_0.txt +%{_libdir}/libboost_random.so.%{sonamever} + +%files regex +%license LICENSE_1_0.txt +%{_libdir}/libboost_regex.so.%{sonamever} + +%files serialization +%license LICENSE_1_0.txt +%{_libdir}/libboost_serialization.so.%{sonamever} +%{_libdir}/libboost_wserialization.so.%{sonamever} + +%files signals +%license LICENSE_1_0.txt +%{_libdir}/libboost_signals.so.%{sonamever} + +%files stacktrace +%license LICENSE_1_0.txt +%{_libdir}/libboost_stacktrace_addr2line.so.%{sonamever} +%{_libdir}/libboost_stacktrace_basic.so.%{sonamever} +%{_libdir}/libboost_stacktrace_noop.so.%{sonamever} + +%files system +%license LICENSE_1_0.txt +%{_libdir}/libboost_system.so.%{sonamever} + +%files thread +%license LICENSE_1_0.txt +%{_libdir}/libboost_thread.so.%{sonamever} + +%files timer +%license LICENSE_1_0.txt +%{_libdir}/libboost_timer.so.%{sonamever} + +%files type_erasure +%license LICENSE_1_0.txt +%{_libdir}/libboost_type_erasure.so.%{sonamever} + +%files wave +%license LICENSE_1_0.txt +%{_libdir}/libboost_wave.so.%{sonamever} + +%files help +%doc %{boost_docdir}/* + +%files devel +%exclude %{_libdir}/libboost_numpy3.so +%exclude %{_libdir}/libboost_numpy.so +%exclude %{_libdir}/libboost_python3.so +%exclude %{_libdir}/libboost_python.so +%license LICENSE_1_0.txt +%{_includedir}/%{name} +%{_libdir}/*.so +%{_libdir}/*.a +%{_libdir}/mpich/lib/*.a +%{_libdir}/openmpi/lib/*.a +%doc %{boost_examplesdir}/* + +%files openmpi +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/libboost_mpi.so.%{sonamever} + +%files openmpi-devel +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/libboost_mpi.so +%{_libdir}/openmpi/lib/libboost_graph_parallel.so + + +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/libboost_mpi_python.so.%{sonamever} +%{python2_sitearch}/openmpi/boost/ + +%files openmpi-python2-devel +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/libboost_mpi_python.so + +%files openmpi-python3 +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/libboost_mpi_python3.so.%{sonamever} +%{python3_sitearch}/openmpi/boost/ + +%files openmpi-python3-devel +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/libboost_mpi_python3.so + + +%files graph-openmpi +%license LICENSE_1_0.txt +%{_libdir}/openmpi/lib/libboost_graph_parallel.so.%{sonamever} + +%files mpich +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/libboost_mpi.so.%{sonamever} + +%files mpich-devel +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/libboost_mpi.so +%{_libdir}/mpich/lib/libboost_graph_parallel.so + +%files mpich-python2 +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/libboost_mpi_python.so.%{sonamever} +%{python2_sitearch}/mpich/boost/ + +%files mpich-python2-devel +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/libboost_mpi_python.so + +%files mpich-python3 +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/libboost_mpi_python3.so.%{sonamever} +%{python3_sitearch}/mpich/boost/ + +%files mpich-python3-devel +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/libboost_mpi_python3.so + +%files graph-mpich +%license LICENSE_1_0.txt +%{_libdir}/mpich/lib/libboost_graph_parallel.so.%{sonamever} + +%files build +%license LICENSE_1_0.txt +%{_datadir}/boost-build/ + +%files doctools +%license LICENSE_1_0.txt +%{_bindir}/quickbook +%{_datadir}/boostbook/ + +%files jam +%license LICENSE_1_0.txt +%{_bindir}/bjam +%{_mandir}/man1/bjam.1* + +%changelog +* Wed Aug 28 2019 openEuler Buildteam - 1.66.0-15 +- Package init diff --git a/boost_1_66_0.tar.bz2 b/boost_1_66_0.tar.bz2 new file mode 100644 index 0000000..5552748 Binary files /dev/null and b/boost_1_66_0.tar.bz2 differ diff --git a/libboost_thread.so b/libboost_thread.so new file mode 100644 index 0000000..db50610 --- /dev/null +++ b/libboost_thread.so @@ -0,0 +1,21 @@ +changequote(`[', `]')dnl +/* GNU ld script + + Boost.Thread header files pull in enough of Boost.System that + symbols from the latter library are referenced by a compiled object + that includes Boost.Thread headers. libboost_system-mt.so is among + libboost_thread-mt.so's DT_NEEDED, but program linker requires that + missing symbols are satisfied by direct dependency, not by a + transitive one. Hence this linker script, which brings in the + Boost.System DSO. */ + +INPUT(libboost_thread.so.VERSION) +INPUT(libboost_system.so.VERSION) +ifdef([HAS_ATOMIC_FLAG_LOCKFREE],[], +[ +/* If the given architecture doesn't have lock-free implementation of + boost::atomic_flag, the dependency on Boost.Atomic may leak from + the header files to client binaries. */ + +INPUT(libboost_atomic.so.VERSION) +])dnl