diff --git a/NEWS b/NEWS deleted file mode 100644 index ca2ac72..0000000 --- a/NEWS +++ /dev/null @@ -1,51 +0,0 @@ -Latest News - -December 5, 2005 - Version 1.33.1 - -Updated Libraries - - * Any Library: Cast to reference types introduced in 1.33.0 is now - documented on any_cast documentation page. - - * Config Library: Don't undef BOOST_LIB_TOOLSET after use. - - * Boost.Python: - o The build now assumes Python 2.4 by default, rather than 2.2 - o Support Python that's built without Unicode support - o Support for wrapping classes with overloaded address-of (&) - operators - - * Smart Pointer Library: Fixed problems under Metrowerks CodeWarrior on - PowerPC (Mac OS X) with inlining on, GNU GCC on PowerPC 64. - - * Regex Library: Fixed the supplied makefiles, and other small compiler - specific changes. Refer to the regex history page for more information on - these and other small changes. - - * Iostreams Library: Improved the interface for accessing a chain's - components, added is_open members to the file and file descriptor devices, - fixed memory-mapped files on Windows, and made minor changes to the - documentation. - - * Functional/Hash Library: Fixed the points example. - - * Multi-index Containers Library: Fixed a problem with multithreaded - code, and other minor changes. Refer to the library release notes for - further details. - - * Graph Library: - o Fixed a problem with the relaxed heap on x86 Linux (fixes bug in - dijkstra_shortest_paths). - o Fixed problems with cuthill_mckee_ordering and king_ordering - producing no results. - o Added color_map parameter to dijkstra_shortest_paths. - - * Signals Library: Fixed problems with the use of Signals across shared - library boundaries. - - * Thread library: read_write_mutex has been removed due to problems with - deadlocks. - - * Wave library (V1.2.1) Fixed a couple of problems, refer to the change - log for further details. - diff --git a/boost-Boost.Function.patch b/boost-Boost.Function.patch new file mode 100644 index 0000000..5fad665 --- /dev/null +++ b/boost-Boost.Function.patch @@ -0,0 +1,702 @@ +--- boost/function/function_base.hpp ++++ boost/function/function_base.hpp +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include // unary_function, binary_function + #include + #include + #include +@@ -30,6 +31,20 @@ + #endif + #include + ++#if defined(BOOST_MSVC) ++# pragma warning( push ) ++# pragma warning( disable : 4793 ) // complaint about native code generation ++# pragma warning( disable : 4127 ) // "conditional expression is constant" ++#endif ++ ++// Define BOOST_FUNCTION_STD_NS to the namespace that contains type_info. ++#ifdef BOOST_NO_EXCEPTION_STD_NAMESPACE ++// Embedded VC++ does not have type_info in namespace std ++# define BOOST_FUNCTION_STD_NS ++#else ++# define BOOST_FUNCTION_STD_NS std ++#endif ++ + // Borrowed from Boost.Python library: determines the cases where we + // need to use std::type_info::name to compare instead of operator==. + # if (defined(__GNUC__) && __GNUC__ >= 3) \ +@@ -59,7 +74,7 @@ + + #if defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ + || defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG) \ +- || !(BOOST_STRICT_CONFIG || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540) ++ || !(defined(BOOST_STRICT_CONFIG) || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540) + # define BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX + #endif + +@@ -198,8 +213,8 @@ + struct reference_manager + { + static inline void +- get(const function_buffer& in_buffer, function_buffer& out_buffer, +- functor_manager_operation_type op) ++ manage(const function_buffer& in_buffer, function_buffer& out_buffer, ++ functor_manager_operation_type op) + { + switch (op) { + case clone_functor_tag: +@@ -215,8 +230,8 @@ + // DPG TBD: Since we're only storing a pointer, it's + // possible that the user could ask for a base class or + // derived class. Is that okay? +- const std::type_info& check_type = +- *static_cast(out_buffer.const_obj_ptr); ++ const BOOST_FUNCTION_STD_NS::type_info& check_type = ++ *static_cast(out_buffer.const_obj_ptr); + if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(F))) + out_buffer.obj_ptr = in_buffer.obj_ptr; + else +@@ -265,8 +280,8 @@ + else if (op == destroy_functor_tag) + out_buffer.func_ptr = 0; + else /* op == check_functor_type_tag */ { +- const std::type_info& check_type = +- *static_cast(out_buffer.const_obj_ptr); ++ const BOOST_FUNCTION_STD_NS::type_info& check_type = ++ *static_cast(out_buffer.const_obj_ptr); + if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor))) + out_buffer.obj_ptr = &in_buffer.func_ptr; + else +@@ -287,8 +302,8 @@ + // Some compilers (Borland, vc6, ...) are unhappy with ~functor_type. + reinterpret_cast(&out_buffer.data)->~Functor(); + } else /* op == check_functor_type_tag */ { +- const std::type_info& check_type = +- *static_cast(out_buffer.const_obj_ptr); ++ const BOOST_FUNCTION_STD_NS::type_info& check_type = ++ *static_cast(out_buffer.const_obj_ptr); + if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor))) + out_buffer.obj_ptr = &in_buffer.data; + else +@@ -348,8 +363,8 @@ + # endif // BOOST_NO_STD_ALLOCATOR + out_buffer.obj_ptr = 0; + } else /* op == check_functor_type_tag */ { +- const std::type_info& check_type = +- *static_cast(out_buffer.const_obj_ptr); ++ const BOOST_FUNCTION_STD_NS::type_info& check_type = ++ *static_cast(out_buffer.const_obj_ptr); + if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor))) + out_buffer.obj_ptr = in_buffer.obj_ptr; + else +@@ -368,6 +383,15 @@ + mpl::bool_<(function_allows_small_object_optimization::value)>()); + } + ++ // For member pointers, we treat them as function objects with ++ // the small-object optimization always enabled. ++ static inline void ++ manager(const function_buffer& in_buffer, function_buffer& out_buffer, ++ functor_manager_operation_type op, member_ptr_tag) ++ { ++ manager(in_buffer, out_buffer, op, mpl::true_()); ++ } ++ + public: + /* Dispatch to an appropriate manager based on whether we have a + function pointer or a function object pointer. */ +@@ -456,7 +480,6 @@ + */ + struct vtable_base + { +- vtable_base() : manager(0) { } + void (*manager)(const function_buffer& in_buffer, + function_buffer& out_buffer, + functor_manager_operation_type op); +@@ -480,13 +503,13 @@ + + /** Retrieve the type of the stored function object, or typeid(void) + if this is empty. */ +- const std::type_info& target_type() const ++ const BOOST_FUNCTION_STD_NS::type_info& target_type() const + { + if (!vtable) return typeid(void); + + detail::function::function_buffer type; + vtable->manager(functor, type, detail::function::get_functor_type_tag); +- return *static_cast(type.const_obj_ptr); ++ return *static_cast(type.const_obj_ptr); + } + + template +@@ -558,7 +581,7 @@ + #endif + + public: // should be protected, but GCC 2.95.3 will fail to allow access +- detail::function::vtable_base* vtable; ++ const detail::function::vtable_base* vtable; + mutable detail::function::function_buffer functor; + }; + +@@ -733,4 +756,8 @@ + #undef BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL + #undef BOOST_FUNCTION_COMPARE_TYPE_ID + ++#if defined(BOOST_MSVC) ++# pragma warning( pop ) ++#endif ++ + #endif // BOOST_FUNCTION_BASE_HEADER +--- boost/function/function_template.hpp ++++ boost/function/function_template.hpp +@@ -11,6 +11,11 @@ + // protection. + #include + ++#if defined(BOOST_MSVC) ++# pragma warning( push ) ++# pragma warning( disable : 4127 ) // "conditional expression is constant" ++#endif ++ + #define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T) + + #define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T) +@@ -54,12 +59,20 @@ + BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS) + #define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER \ + BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS) ++#define BOOST_FUNCTION_MEMBER_INVOKER \ ++ BOOST_JOIN(member_invoker,BOOST_FUNCTION_NUM_ARGS) ++#define BOOST_FUNCTION_VOID_MEMBER_INVOKER \ ++ BOOST_JOIN(void_member_invoker,BOOST_FUNCTION_NUM_ARGS) + #define BOOST_FUNCTION_GET_FUNCTION_INVOKER \ + BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS) + #define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER \ + BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS) + #define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER \ + BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS) ++#define BOOST_FUNCTION_GET_MEMBER_INVOKER \ ++ BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS) ++#define BOOST_FUNCTION_GET_INVOKER \ ++ BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS) + #define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS) + + #ifndef BOOST_NO_VOID_RETURNS +@@ -70,16 +83,6 @@ + # define BOOST_FUNCTION_RETURN(X) X; return BOOST_FUNCTION_VOID_RETURN_TYPE () + #endif + +-#ifdef BOOST_MSVC +-# pragma warning(push) +-# pragma warning(disable: 4127) // conditional expression is constant. +-#endif +- +-#ifdef BOOST_MSVC +-# pragma warning(push) +-# pragma warning(disable: 4127) // conditional expression is constant. +-#endif +- + namespace boost { + namespace detail { + namespace function { +@@ -191,6 +194,44 @@ + } + }; + ++#if BOOST_FUNCTION_NUM_ARGS > 0 ++ /* Handle invocation of member pointers. */ ++ template< ++ typename MemberPtr, ++ typename R BOOST_FUNCTION_COMMA ++ BOOST_FUNCTION_TEMPLATE_PARMS ++ > ++ struct BOOST_FUNCTION_MEMBER_INVOKER ++ { ++ static R invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA ++ BOOST_FUNCTION_PARMS) ++ ++ { ++ MemberPtr* f = ++ reinterpret_cast(&function_obj_ptr.data); ++ return boost::mem_fn(*f)(BOOST_FUNCTION_ARGS); ++ } ++ }; ++ ++ template< ++ typename MemberPtr, ++ typename R BOOST_FUNCTION_COMMA ++ BOOST_FUNCTION_TEMPLATE_PARMS ++ > ++ struct BOOST_FUNCTION_VOID_MEMBER_INVOKER ++ { ++ static BOOST_FUNCTION_VOID_RETURN_TYPE ++ invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA ++ BOOST_FUNCTION_PARMS) ++ ++ { ++ MemberPtr* f = ++ reinterpret_cast(&function_obj_ptr.data); ++ BOOST_FUNCTION_RETURN(boost::mem_fn(*f)(BOOST_FUNCTION_ARGS)); ++ } ++ }; ++#endif ++ + template< + typename FunctionPtr, + typename R BOOST_FUNCTION_COMMA +@@ -254,12 +295,130 @@ + >::type type; + }; + ++#if BOOST_FUNCTION_NUM_ARGS > 0 ++ /* Retrieve the appropriate invoker for a member pointer. */ ++ template< ++ typename MemberPtr, ++ typename R BOOST_FUNCTION_COMMA ++ BOOST_FUNCTION_TEMPLATE_PARMS ++ > ++ struct BOOST_FUNCTION_GET_MEMBER_INVOKER ++ { ++ typedef typename mpl::if_c<(is_void::value), ++ BOOST_FUNCTION_VOID_MEMBER_INVOKER< ++ MemberPtr, ++ R BOOST_FUNCTION_COMMA ++ BOOST_FUNCTION_TEMPLATE_ARGS ++ >, ++ BOOST_FUNCTION_MEMBER_INVOKER< ++ MemberPtr, ++ R BOOST_FUNCTION_COMMA ++ BOOST_FUNCTION_TEMPLATE_ARGS ++ > ++ >::type type; ++ }; ++#endif ++ ++ /* Given the tag returned by get_function_tag, retrieve the ++ actual invoker that will be used for the given function ++ object. ++ ++ Each specialization contains an "apply" nested class template ++ that accepts the function object, return type, function ++ argument types, and allocator. The resulting "apply" class ++ contains two typedefs, "invoker_type" and "manager_type", ++ which correspond to the invoker and manager types. */ ++ template ++ struct BOOST_FUNCTION_GET_INVOKER { }; ++ ++ /* Retrieve the invoker for a function pointer. */ ++ template<> ++ struct BOOST_FUNCTION_GET_INVOKER ++ { ++ template ++ struct apply ++ { ++ typedef typename BOOST_FUNCTION_GET_FUNCTION_INVOKER< ++ FunctionPtr, ++ R BOOST_FUNCTION_COMMA ++ BOOST_FUNCTION_TEMPLATE_ARGS ++ >::type ++ invoker_type; ++ ++ typedef functor_manager manager_type; ++ }; ++ }; ++ ++#if BOOST_FUNCTION_NUM_ARGS > 0 ++ /* Retrieve the invoker for a member pointer. */ ++ template<> ++ struct BOOST_FUNCTION_GET_INVOKER ++ { ++ template ++ struct apply ++ { ++ typedef typename BOOST_FUNCTION_GET_MEMBER_INVOKER< ++ MemberPtr, ++ R BOOST_FUNCTION_COMMA ++ BOOST_FUNCTION_TEMPLATE_ARGS ++ >::type ++ invoker_type; ++ ++ typedef functor_manager manager_type; ++ }; ++ }; ++#endif ++ ++ /* Retrieve the invoker for a function object. */ ++ template<> ++ struct BOOST_FUNCTION_GET_INVOKER ++ { ++ template ++ struct apply ++ { ++ typedef typename BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER< ++ FunctionObj, ++ R BOOST_FUNCTION_COMMA ++ BOOST_FUNCTION_TEMPLATE_ARGS ++ >::type ++ invoker_type; ++ ++ typedef functor_manager manager_type; ++ }; ++ }; ++ ++ /* Retrieve the invoker for a reference to a function object. */ ++ template<> ++ struct BOOST_FUNCTION_GET_INVOKER ++ { ++ template ++ struct apply ++ { ++ typedef typename BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER< ++ typename RefWrapper::type, ++ R BOOST_FUNCTION_COMMA ++ BOOST_FUNCTION_TEMPLATE_ARGS ++ >::type ++ invoker_type; ++ ++ typedef reference_manager manager_type; ++ }; ++ }; ++ + /** + * vtable for a specific boost::function instance. + */ + template +- struct BOOST_FUNCTION_VTABLE : vtable_base ++ struct BOOST_FUNCTION_VTABLE + { + #ifndef BOOST_NO_VOID_RETURNS + typedef R result_type; +@@ -272,50 +431,25 @@ + BOOST_FUNCTION_TEMPLATE_ARGS); + + template +- BOOST_FUNCTION_VTABLE(F f) : vtable_base(), invoker(0) +- { +- init(f); +- } +- +- template +- bool assign_to(F f, function_buffer& functor) ++ bool assign_to(const F& f, function_buffer& functor) const + { + typedef typename get_function_tag::type tag; + return assign_to(f, functor, tag()); + } + +- void clear(function_buffer& functor) ++ void clear(function_buffer& functor) const + { +- if (manager) +- manager(functor, functor, destroy_functor_tag); ++ if (base.manager) ++ base.manager(functor, functor, destroy_functor_tag); + } +- ++#ifndef BOOST_NO_PRIVATE_IN_AGGREGATE + private: +- template +- void init(F f) +- { +- typedef typename get_function_tag::type tag; +- init(f, tag()); +- } +- ++#endif + // Function pointers + template +- void init(FunctionPtr /*f*/, function_ptr_tag) +- { +- typedef typename BOOST_FUNCTION_GET_FUNCTION_INVOKER< +- FunctionPtr, +- R BOOST_FUNCTION_COMMA +- BOOST_FUNCTION_TEMPLATE_ARGS +- >::type +- actual_invoker_type; +- +- invoker = &actual_invoker_type::invoke; +- manager = &functor_manager::manage; +- } +- +- template + bool +- assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) ++ assign_to(FunctionPtr f, function_buffer& functor, ++ function_ptr_tag) const + { + this->clear(functor); + if (f) { +@@ -331,22 +465,13 @@ + // Member pointers + #if BOOST_FUNCTION_NUM_ARGS > 0 + template +- void init(MemberPtr f, member_ptr_tag) +- { +- // DPG TBD: Add explicit support for member function +- // objects, so we invoke through mem_fn() but we retain the +- // right target_type() values. +- this->init(mem_fn(f)); +- } +- +- template +- bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) ++ bool ++ assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const + { +- // DPG TBD: Add explicit support for member function +- // objects, so we invoke through mem_fn() but we retain the +- // right target_type() values. + if (f) { +- this->assign_to(mem_fn(f), functor); ++ // Always use the small-object optimization for member ++ // pointers. ++ assign_functor(f, functor, mpl::true_()); + return true; + } else { + return false; +@@ -355,24 +480,11 @@ + #endif // BOOST_FUNCTION_NUM_ARGS > 0 + + // Function objects +- template +- void init(FunctionObj /*f*/, function_obj_tag) +- { +- typedef typename BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER< +- FunctionObj, +- R BOOST_FUNCTION_COMMA +- BOOST_FUNCTION_TEMPLATE_ARGS +- >::type +- actual_invoker_type; +- +- invoker = &actual_invoker_type::invoke; +- manager = &functor_manager::manage; +- } +- + // Assign to a function object using the small object optimization + template + void +- assign_functor(FunctionObj f, function_buffer& functor, mpl::true_) ++ assign_functor(const FunctionObj& f, function_buffer& functor, ++ mpl::true_) const + { + new ((void*)&functor.data) FunctionObj(f); + } +@@ -380,7 +492,8 @@ + // Assign to a function object allocated on the heap. + template + void +- assign_functor(FunctionObj f, function_buffer& functor, mpl::false_) ++ assign_functor(const FunctionObj& f, function_buffer& functor, ++ mpl::false_) const + { + #ifndef BOOST_NO_STD_ALLOCATOR + typedef typename Allocator::template rebind::other +@@ -400,7 +513,8 @@ + + template + bool +- assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) ++ assign_to(const FunctionObj& f, function_buffer& functor, ++ function_obj_tag) const + { + if (!boost::detail::function::has_empty_target(boost::addressof(f))) { + assign_functor(f, functor, +@@ -413,24 +527,9 @@ + + // Reference to a function object + template +- void +- init(const reference_wrapper& /*f*/, function_obj_ref_tag) +- { +- typedef typename BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER< +- FunctionObj, +- R BOOST_FUNCTION_COMMA +- BOOST_FUNCTION_TEMPLATE_ARGS +- >::type +- actual_invoker_type; +- +- invoker = &actual_invoker_type::invoke; +- manager = &reference_manager::get; +- } +- +- template + bool + assign_to(const reference_wrapper& f, +- function_buffer& functor, function_obj_ref_tag) ++ function_buffer& functor, function_obj_ref_tag) const + { + if (!boost::detail::function::has_empty_target(f.get_pointer())) { + // DPG TBD: We might need to detect constness of +@@ -445,6 +544,7 @@ + } + + public: ++ vtable_base base; + invoker_type invoker; + }; + } // end namespace function +@@ -456,6 +556,17 @@ + typename Allocator = BOOST_FUNCTION_DEFAULT_ALLOCATOR + > + class BOOST_FUNCTION_FUNCTION : public function_base ++ ++#if BOOST_FUNCTION_NUM_ARGS == 1 ++ ++ , public std::unary_function ++ ++#elif BOOST_FUNCTION_NUM_ARGS == 2 ++ ++ , public std::binary_function ++ ++#endif ++ + { + public: + #ifndef BOOST_NO_VOID_RETURNS +@@ -537,7 +648,7 @@ + if (this->empty()) + boost::throw_exception(bad_function_call()); + +- return static_cast(vtable)->invoker ++ return reinterpret_cast(vtable)->invoker + (this->functor BOOST_FUNCTION_COMMA BOOST_FUNCTION_ARGS); + } + #else +@@ -561,12 +672,16 @@ + operator=(Functor BOOST_FUNCTION_TARGET_FIX(const &) f) + { + this->clear(); ++#ifndef BOOST_NO_EXCEPTIONS + try { + this->assign_to(f); + } catch (...) { + vtable = 0; + throw; + } ++#else ++ this->assign_to(f); ++#endif + return *this; + } + +@@ -592,12 +707,16 @@ + return *this; + + this->clear(); ++#ifndef BOOST_NO_EXCEPTIONS + try { + this->assign_to_own(f); + } catch (...) { + vtable = 0; + throw; + } ++#else ++ this->assign_to_own(f); ++#endif + return *this; + } + +@@ -615,7 +734,7 @@ + void clear() + { + if (vtable) { +- static_cast(vtable)->clear(this->functor); ++ reinterpret_cast(vtable)->clear(this->functor); + vtable = 0; + } + } +@@ -650,10 +769,24 @@ + } + + template +- void assign_to(Functor f) ++ void assign_to(const Functor& f) + { +- static vtable_type stored_vtable(f); +- if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable; ++ using detail::function::vtable_base; ++ ++ typedef typename detail::function::get_function_tag::type tag; ++ typedef detail::function::BOOST_FUNCTION_GET_INVOKER get_invoker; ++ typedef typename get_invoker:: ++ template apply ++ handler_type; ++ ++ typedef typename handler_type::invoker_type invoker_type; ++ typedef typename handler_type::manager_type manager_type; ++ ++ static const vtable_type stored_vtable = ++ { { &manager_type::manage }, &invoker_type::invoke }; ++ ++ if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable.base; + else vtable = 0; + } + }; +@@ -688,7 +821,7 @@ + if (this->empty()) + boost::throw_exception(bad_function_call()); + +- return static_cast(vtable)->invoker ++ return reinterpret_cast(vtable)->invoker + (this->functor BOOST_FUNCTION_COMMA BOOST_FUNCTION_ARGS); + } + #endif +@@ -798,21 +931,14 @@ + } + }; + +-#ifdef BOOST_MSVC +-# pragma warning(pop) +-#endif +- + #undef BOOST_FUNCTION_PARTIAL_SPEC + #endif // have partial specialization + + } // end namespace boost + +-#ifdef BOOST_MSVC +-# pragma warning(pop) +-#endif +- + // Cleanup after ourselves... + #undef BOOST_FUNCTION_VTABLE ++#undef BOOST_FUNCTION_GET_INVOKER + #undef BOOST_FUNCTION_DEFAULT_ALLOCATOR + #undef BOOST_FUNCTION_COMMA + #undef BOOST_FUNCTION_FUNCTION +@@ -822,10 +948,12 @@ + #undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER + #undef BOOST_FUNCTION_FUNCTION_REF_INVOKER + #undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER ++#undef BOOST_FUNCTION_MEMBER_INVOKER ++#undef BOOST_FUNCTION_VOID_MEMBER_INVOKER + #undef BOOST_FUNCTION_GET_FUNCTION_INVOKER + #undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER + #undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER +-#undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER ++#undef BOOST_FUNCTION_GET_MEMBER_INVOKER + #undef BOOST_FUNCTION_TEMPLATE_PARMS + #undef BOOST_FUNCTION_TEMPLATE_ARGS + #undef BOOST_FUNCTION_PARMS +@@ -835,3 +963,7 @@ + #undef BOOST_FUNCTION_ARG_TYPES + #undef BOOST_FUNCTION_VOID_RETURN_TYPE + #undef BOOST_FUNCTION_RETURN ++ ++#if defined(BOOST_MSVC) ++# pragma warning( pop ) ++#endif diff --git a/boost-CVE-2008-0171.patch b/boost-CVE-2008-0171.patch new file mode 100644 index 0000000..1a7b2e5 --- /dev/null +++ b/boost-CVE-2008-0171.patch @@ -0,0 +1,46 @@ +--- boost/regex/v4/basic_regex_parser.hpp (revision 38864) ++++ boost/regex/v4/basic_regex_parser.hpp (revision 42674) +@@ -785,4 +785,5 @@ + case syntax_element_jump: + case syntax_element_startmark: ++ case syntax_element_backstep: + // can't legally repeat any of the above: + fail(regex_constants::error_badrepeat, m_position - m_base); +@@ -1870,4 +1871,5 @@ + { + re_syntax_base* b = this->getaddress(expected_alt_point); ++ // Make sure we have exactly one alternative following this state: + if(b->type != syntax_element_alt) + { +@@ -1878,4 +1880,13 @@ + { + fail(regex_constants::error_bad_pattern, m_position - m_base); ++ return false; ++ } ++ // check for invalid repetition of next state: ++ b = this->getaddress(expected_alt_point); ++ b = this->getaddress(static_cast(b)->next.i, b); ++ if((b->type != syntax_element_assert_backref) ++ && (b->type != syntax_element_startmark)) ++ { ++ fail(regex_constants::error_badrepeat, m_position - m_base); + return false; + } +--- libs/regex/test/regress/test_perl_ex.cpp (revision 30980) ++++ libs/regex/test/regress/test_perl_ex.cpp (revision 42674) +@@ -122,4 +122,15 @@ + TEST_INVALID_REGEX("(?:(a)|b)(?(?<", perl); + TEST_INVALID_REGEX("(?:(a)|b)(?(? -+#include - - namespace boost - { diff --git a/boost-codecleanup.patch b/boost-codecleanup.patch new file mode 100644 index 0000000..7ae389f --- /dev/null +++ b/boost-codecleanup.patch @@ -0,0 +1,43 @@ +--- boost/archive/iterators/base64_from_binary.hpp ++++ boost/archive/iterators/base64_from_binary.hpp +@@ -43,7 +43,7 @@ + "0123456789" + "+/"; + assert(t < 64); +- return lookup_table[t]; ++ return lookup_table[int(t)]; + } + }; + +--- boost/token_functions.hpp ++++ boost/token_functions.hpp +@@ -335,11 +335,12 @@ + if (next == end) + return false; + +- if (current_offset_ == offsets_.size()) ++ if (current_offset_ == offsets_.size()) { + if (wrap_offsets_) + current_offset_=0; + else + return false; ++ } + + int c = offsets_[current_offset_]; + int i = 0; +@@ -448,13 +449,14 @@ + else { // m_empty_tokens == keep_empty_tokens + + // Handle empty token at the end +- if (next == end) ++ if (next == end) { + if (m_output_done == false) { + m_output_done = true; + assigner::assign(start,next,tok); + return true; + } else + return false; ++ } + + if (is_kept(*next)) { + if (m_output_done == false) diff --git a/boost-configure.patch b/boost-configure.patch deleted file mode 100644 index 44db3b7..0000000 --- a/boost-configure.patch +++ /dev/null @@ -1,81 +0,0 @@ ---- Makefile.in -+++ Makefile.in -@@ -0,0 +1,32 @@ -+BJAM=@BJAM@ -+TOOLSET=@TOOLSET@ -+BJAM_FLAGS= -+BJAM_CONFIG=@BJAM_CONFIG@ -+PREFIX=@PREFIX@ -+EPREFIX=@EPREFIX@ -+LIBDIR=@LIBDIR@ -+INCLUDEDIR=@INCLUDEDIR@ -+LIBS=@LIBS@ -+GXX=c++ -+GCC=c++ -+DESTDIR= -+ -+all: .dummy -+ $(BJAM) $(BJAM_FLAGS) $(BJAM_CONFIG) -sGXX="$(GXX)" -sGCC="$(GCC)" -sTOOLS="$(TOOLSET)" -sBUILD="release single/multiple" $(LIBS) || \ -+ echo "Not all Boost libraries built properly." -+ -+clean: .dummy -+ rm -rf bin -+ -+distclean: clean -+ rm -rf Makefile config.log -+ -+check: .dummy -+ @cd status && ../$(BJAM) $(BJAM_CONFIG) -sTOOLS=$(TOOLSET) test || echo "Some Boost regression tests failed. This is normal." -+ -+install: .dummy -+ $(BJAM) $(BJAM_FLAGS) $(BJAM_CONFIG) -sGXX="$(GXX)" -sGCC="$(GCC)" --prefix=$(DESTDIR)$(PREFIX) \ -+ --exec-prefix=$(DESTDIR)$(EPREFIX) --libdir=$(DESTDIR)$(LIBDIR) --includedir=$(DESTDIR)$(INCLUDEDIR) \ -+ -sTOOLS=$(TOOLSET) -sBUILD="release single/multiple" $(LIBS) install || echo "Not all Boost libraries built properly." -+ -+.dummy: ---- configure -+++ configure -@@ -277,34 +277,12 @@ - - # Generate the Makefile - echo "Generating Makefile..." --cat > Makefile <Makefile diff --git a/boost-fix_doc_url.patch b/boost-fix_doc_url.patch new file mode 100644 index 0000000..0d5219f --- /dev/null +++ b/boost-fix_doc_url.patch @@ -0,0 +1,154 @@ +--- libs/filesystem/doc/tr2_proposal.html ++++ libs/filesystem/doc/tr2_proposal.html +@@ -2512,7 +2512,7 @@ + processor! Although these semantics are often useful, they are also very + error-prone.

+

See +- ++ + complete() note for usage suggestions. -- end note]

+ +
errno_type to_errno( system_error_type code );
+--- libs/test/doc/components/prg_exec_monitor/compilation.html ++++ libs/test/doc/components/prg_exec_monitor/compilation.html +@@ -42,13 +42,13 @@ + that is built on top of bjam tool. All make systems require some kind of + configuration file that list all files that constitute the library and all + the build options. For example makefile that is used by make, Microsoft Visual +- Studio project file, Jamfile that is used by Boost.Build. For the sake of ++ Studio project file, Jamfile.v2 that is used by Boost.Build. For the sake of + simplicity lets call this file the makefile. To build a stanalone library + following files, that are located in the Boost Test Library source directory, + needs to be listed as source files in your makefile:

+

execution_monitor.cpp
+ cpp_main.cpp

+-

The Jamfile for ++

The Jamfile.v2 for + use with Boost.Build system is supplied in libs/test/build directory.

+
Building static library
+

There are no additional build defines or options +--- libs/test/doc/components/utf/compilation.html ++++ libs/test/doc/components/utf/compilation.html +@@ -64,7 +64,7 @@ + unit_test_suite.cpp
+ xml_log_formatter.cpp
+ xml_report_formatter.cpp

+-

The Jamfile for ++

The Jamfile.v2 for + use with Boost.Build system is supplied in libs/test/build directory.

+
Building static library
+

There are no additional build defines or options +--- libs/test/doc/examples/unit_test_example1.html ++++ libs/test/doc/examples/unit_test_example1.html +@@ -31,13 +31,14 @@ + + Output: + Running 1 test case...
+- .../unit_test_example1.cpp(17): error in "free_test_function": test 2 == 1 failed
++ .../unit_test_example_01.cpp(17): error in "free_test_function": test 2 == 1 failed
+
+ *** No errors detected
+ + + Source: +- unit_test_example1.cpp ++ unit_test_example_01.cpp + + + +--- libs/test/doc/examples/unit_test_example2.html ++++ libs/test/doc/examples/unit_test_example2.html +@@ -34,13 +34,14 @@ + it will look like this:
+ Running 2 test case...
+ Exception in "force_division_by_zero": integer divide by zero
+- .../unit_test_example2.cpp(16) : last checkpoint: About to force division by zero!
++ .../unit_test_example_02.cpp(16) : last checkpoint: About to force division by zero!
+
+ *** errors detected in test suite "Unit test example 2"; see standard output for details
+ + + Source: +- unit_test_example2.cpp ++ unit_test_example_02.cpp + + + +--- libs/test/doc/examples/unit_test_example3.html ++++ libs/test/doc/examples/unit_test_example3.html +@@ -34,18 +34,18 @@ + Output: + With the input described above the output looks like:
+ Running 3 test case...
+- .../unit_test_example3.cpp(63): error in "account_test::test_init": test m_account.balance() == ++ .../unit_test_example_03.cpp(63): error in "account_test::test_init": test m_account.balance() == + 5.0 failed [10 != 5]
+ Enter deposit value:
+ 5
+- .../unit_test_example3.cpp(87): fatal error in "account_test::test_deposit": ++ .../unit_test_example_03.cpp(87): fatal error in "account_test::test_deposit": + test m_account.balance() >= 100.0 failed
+
+ *** 2 failures detected (5 failures expected) in test suite "Unit test example 3"
+ + + Source: +- unit_test_example3.cpp ++ unit_test_example_03.cpp + + + +--- libs/test/doc/examples/unit_test_example4.html ++++ libs/test/doc/examples/unit_test_example4.html +@@ -27,14 +27,14 @@ + The output depends on whether or not your system support setting test case timeout. For Win32 + it will look like this:
+ Running 1 test case...
+- .../unit_test_example4.cpp(20): error in "check_string": test s.substr( 0, 3 ) == "hdr" failed ++ .../unit_test_example_04.cpp(20): error in "check_string": test s.substr( 0, 3 ) == "hdr" failed + [3 != hdr]
+
+ *** No errors detected
+ + + Source: +- unit_test_example4.cpp ++ unit_test_example_04.cpp + + + +--- libs/test/doc/examples/unit_test_example5.html ++++ libs/test/doc/examples/unit_test_example5.html +@@ -52,7 +52,7 @@ + + + Source: +- unit_test_example5.cpp ++ unit_test_example_05.cpp + + + +--- libs/test/doc/tutorials/hello_the_testing_world.html ++++ libs/test/doc/tutorials/hello_the_testing_world.html +@@ -134,7 +134,7 @@ +

© Copyright Gennadiy + Rozental 2001-2006.
+ Distributed under the Boost Software License, Version 1.0. (See accompanying +- file LICENSE_1_0.txt or copy ++ file LICENSE_1_0.txt or copy + at www.boost.org/LICENSE_1_0.txt)

+

Revised: + 28 February, 2006 +--- more/count_bdy.htm ++++ more/count_bdy.htm +@@ -753,7 +753,7 @@ +

+
+ First published in Overload 25, ++ "http://www.accu.org/index.php/overloadonline" 25, + April 1998, ISSN 1354-3172 +
+ diff --git a/boost-fix_documentation.patch b/boost-fix_documentation.patch new file mode 100644 index 0000000..f31a5e5 --- /dev/null +++ b/boost-fix_documentation.patch @@ -0,0 +1,11 @@ +--- libs/bind/bind.html ++++ libs/bind/bind.html +@@ -341,7 +341,7 @@ + { + public: + +- boost::function<void> onClick; ++ boost::function<void()> onClick; + }; + + class player diff --git a/boost-ia64.patch b/boost-ia64.patch deleted file mode 100644 index 6fe7a7e..0000000 --- a/boost-ia64.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- boost/detail/sp_counted_base_gcc_ia64.hpp -+++ boost/detail/sp_counted_base_gcc_ia64.hpp -@@ -34,7 +34,7 @@ - // release barrier associated with it. We choose release as it should be - // cheaper. - __asm__ ("fetchadd8.rel %0=[%2],1" : -- "=r"(tmp), "=m"(*pw) : -+ "=r"(tmp), "+m"(*pw) : - "r"(pw)); - } - -@@ -47,7 +47,7 @@ - __asm__ (" fetchadd8.rel %0=[%2],-1 ;; \n" - " cmp.eq p7,p0=1,%0 ;; \n" - "(p7) ld8.acq %0=[%2] " : -- "=&r"(rv), "=m"(*pw) : -+ "=&r"(rv), "+m"(*pw) : - "r"(pw) : - "p7"); - -@@ -71,7 +71,7 @@ - "(p7) br.cond.spnt 0b \n" - " mov %0=%1 ;; \n" - "1:" : -- "=&r"(rv), "=&r"(tmp), "=&r"(tmp2), "=m"(*pw) : -+ "=&r"(rv), "=&r"(tmp), "=&r"(tmp2), "+m"(*pw) : - "r"(pw) : - "ar.ccv", "p7"); - diff --git a/boost-missing_includes.patch b/boost-missing_includes.patch new file mode 100644 index 0000000..928bc5e --- /dev/null +++ b/boost-missing_includes.patch @@ -0,0 +1,118 @@ +--- boost/regex/v4/basic_regex.hpp ++++ boost/regex/v4/basic_regex.hpp +@@ -23,6 +23,8 @@ + # include BOOST_ABI_PREFIX + #endif + ++#include // For CHAR_BIT ant UINT_MAX ++ + namespace boost{ + #ifdef BOOST_MSVC + #pragma warning(push) +--- boost/regex/v4/basic_regex_creator.hpp ++++ boost/regex/v4/basic_regex_creator.hpp +@@ -24,6 +24,8 @@ + # include BOOST_ABI_PREFIX + #endif + ++#include // For CHAR_BIT and UINT_MAX ++ + namespace boost{ + + namespace re_detail{ +--- boost/regex/v4/basic_regex_parser.hpp ++++ boost/regex/v4/basic_regex_parser.hpp +@@ -23,6 +23,8 @@ + # include BOOST_ABI_PREFIX + #endif + ++#include ++ + namespace boost{ + namespace re_detail{ + +--- boost/regex/v4/cpp_regex_traits.hpp ++++ boost/regex/v4/cpp_regex_traits.hpp +@@ -41,6 +41,7 @@ + + #include + #include ++#include + + #ifdef BOOST_HAS_ABI_HEADERS + # include BOOST_ABI_PREFIX +--- boost/regex/v4/perl_matcher.hpp ++++ boost/regex/v4/perl_matcher.hpp +@@ -18,6 +18,8 @@ + # include BOOST_ABI_PREFIX + #endif + ++#include // For CHAR_BIT ++ + namespace boost{ + namespace re_detail{ + +--- boost/regex/v4/regex_split.hpp ++++ boost/regex/v4/regex_split.hpp +@@ -21,6 +21,8 @@ + #ifndef BOOST_REGEX_SPLIT_HPP + #define BOOST_REGEX_SPLIT_HPP + ++#include // For UINT_MAX ++ + namespace boost{ + + #ifdef BOOST_HAS_ABI_HEADERS +--- boost/regex/v4/states.hpp ++++ boost/regex/v4/states.hpp +@@ -23,6 +23,8 @@ + # include BOOST_ABI_PREFIX + #endif + ++#include // For CHAR_BIT ++ + namespace boost{ + namespace re_detail{ + +--- boost/spirit/phoenix/operators.hpp ++++ boost/spirit/phoenix/operators.hpp +@@ -20,6 +20,8 @@ + #define CREF + #endif + ++#include // for INT_MAX ++ + #include + #include + #include +--- boost/test/test_tools.hpp ++++ boost/test/test_tools.hpp +@@ -45,6 +45,8 @@ + #include // for std::size_t + #include + ++#include // For CHAR_BIT ++ + #include + + //____________________________________________________________________________// +--- boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp ++++ boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + #if defined(BOOST_SPIRIT_DEBUG) + #include + #endif // defined(BOOST_SPIRIT_DEBUG) +--- boost/wave/util/flex_string.hpp ++++ boost/wave/util/flex_string.hpp +@@ -94,6 +94,7 @@ + #include + #include + #include ++#include + + // this must occur after all of the includes and before any code appears + #ifdef BOOST_HAS_ABI_HEADERS diff --git a/boost-no_intrinsic_int64_t.patch b/boost-no_intrinsic_int64_t.patch new file mode 100644 index 0000000..d7ae2ef --- /dev/null +++ b/boost-no_intrinsic_int64_t.patch @@ -0,0 +1,38 @@ +--- boost/archive/polymorphic_iarchive.hpp ++++ boost/archive/polymorphic_iarchive.hpp +@@ -16,6 +16,7 @@ + + // See http://www.boost.org for updates, documentation, and revision history. + ++#include // UINT_MAX + #include // std::size_t + #include + +@@ -38,7 +39,7 @@ + // if there is no 64 bit int or if its the same as a long + // we shouldn't define separate functions for int64 data types. + #if defined(BOOST_NO_INT64_T) \ +- || (ULONG_MAX != 0xffffffff && ULONG_MAX == 18446744073709551615u) // 2**64 - 1 ++ || (ULONG_MAX != 0xffffffffu /* 2^^32 -1 */ && ULONG_MAX == 0xffffffffffffffffu) // 2**64 - 1 + # define BOOST_NO_INTRINSIC_INT64_T + #endif + +--- boost/archive/polymorphic_oarchive.hpp ++++ boost/archive/polymorphic_oarchive.hpp +@@ -16,6 +16,7 @@ + + // See http://www.boost.org for updates, documentation, and revision history. + ++#include // UINT_MAX + #include // size_t + #include + +@@ -37,7 +38,7 @@ + // if there is no 64 bit int or if its the same as a long + // we shouldn't define separate functions for int64 data types. + #if defined(BOOST_NO_INT64_T) \ +- || (ULONG_MAX != 0xffffffff && ULONG_MAX == 18446744073709551615u) // 2**64 - 1 ++ || (ULONG_MAX != 0xffffffffu /* 2^^32 -1 */ && ULONG_MAX == 0xffffffffffffffffu) // 2**64 - 1 + # define BOOST_NO_INTRINSIC_INT64_T + #endif + diff --git a/boost-no_segfault_in_Regex_filter.patch b/boost-no_segfault_in_Regex_filter.patch new file mode 100644 index 0000000..649cbba --- /dev/null +++ b/boost-no_segfault_in_Regex_filter.patch @@ -0,0 +1,11 @@ +--- boost/iostreams/filter/regex.hpp ++++ boost/iostreams/filter/regex.hpp +@@ -57,7 +57,7 @@ + return; + iterator first(&src[0], &src[0] + src.size(), re_, flags_); + iterator last; +- const Ch* suffix = 0; // Prevent GCC 2.95 warning. ++ const Ch* suffix = &src[0]; //suffix will be entire input if no match found + for (; first != last; ++first) { + dest.insert( dest.end(), + first->prefix().first, diff --git a/boost-no_segfault_on_dir_iteration.patch b/boost-no_segfault_on_dir_iteration.patch new file mode 100644 index 0000000..df5cae9 --- /dev/null +++ b/boost-no_segfault_on_dir_iteration.patch @@ -0,0 +1,11 @@ +--- libs/filesystem/src/operations.cpp ++++ libs/filesystem/src/operations.cpp +@@ -1209,7 +1209,7 @@ + const std::string & dir, std::string & target, + file_status &, file_status & ) + { +- static const std::string dummy_first_name( "." ); ++ const std::string dummy_first_name( "." ); + if ( (handle = ::opendir( dir.c_str() )) == 0 ) return errno; + target = dummy_first_name; + std::size_t path_size; diff --git a/boost-no_type_attrs_on_forward_decls.patch b/boost-no_type_attrs_on_forward_decls.patch deleted file mode 100644 index 459b9a4..0000000 --- a/boost-no_type_attrs_on_forward_decls.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- boost/python/detail/exception_handler.hpp -+++ boost/python/detail/exception_handler.hpp -@@ -11,7 +11,7 @@ - - namespace boost { namespace python { namespace detail { - --struct BOOST_PYTHON_DECL exception_handler; -+struct exception_handler; - - typedef function2 const&> handler_function; - ---- boost/python/detail/wrapper_base.hpp -+++ boost/python/detail/wrapper_base.hpp -@@ -14,7 +14,7 @@ - - namespace detail - { -- class BOOST_PYTHON_DECL wrapper_base; -+ class wrapper_base; - - namespace wrapper_base_ // ADL disabler - { diff --git a/boost-no_type_punning.patch b/boost-no_type_punning.patch index c2dc31f..51abbba 100644 --- a/boost-no_type_punning.patch +++ b/boost-no_type_punning.patch @@ -14,7 +14,7 @@ dict_base::dict_base() --- libs/python/src/list.cpp +++ libs/python/src/list.cpp -@@ -9,10 +9,11 @@ +@@ -10,10 +10,11 @@ detail::new_non_null_reference list_base::call(object const& arg_) { @@ -66,7 +66,7 @@ : object(long_base::call(arg)) --- libs/python/src/object/class.cpp +++ libs/python/src/object/class.cpp -@@ -538,9 +538,11 @@ +@@ -566,9 +566,11 @@ void class_base::add_property( char const* name, object const& fget, char const* docstr) { @@ -79,7 +79,7 @@ this->setattr(name, property); } -@@ -548,9 +550,11 @@ +@@ -576,9 +578,11 @@ void class_base::add_property( char const* name, object const& fget, object const& fset, char const* docstr) { @@ -94,7 +94,7 @@ } --- libs/python/src/str.cpp +++ libs/python/src/str.cpp -@@ -8,9 +8,10 @@ +@@ -9,9 +9,10 @@ detail::new_reference str_base::call(object const& arg_) { diff --git a/boost-pass_BJAM_CONFIG.patch b/boost-pass_BJAM_CONFIG.patch new file mode 100644 index 0000000..f080a65 --- /dev/null +++ b/boost-pass_BJAM_CONFIG.patch @@ -0,0 +1,32 @@ +--- configure ++++ configure +@@ -9,7 +9,7 @@ + + BJAM="" + TOOLSET="" +-BJAM_CONFIG="" ++BJAM_CONFIG=${BJAM_CONFIG:-""} + BUILD="" + PREFIX=/usr/local + EPREFIX= +@@ -318,6 +318,7 @@ + cat > Makefile < - #endif - -+#if PY_VERSION_HEX < 0x02050000 -+typedef int Py_ssize_t; -+#define PY_SSIZE_T_MIN INT_MIN -+#define PY_SSIZE_T_MAX INT_MAX -+#endif -+ - #ifdef BOOST_PYTHON_ULONG_MAX_UNDEFINED - # undef ULONG_MAX - # undef BOOST_PYTHON_ULONG_MAX_UNDEFINED - -diff -u -r1.7 object_protocol.cpp ---- libs/python/src/object_protocol.cpp 26 Jul 2004 00:32:11 -0000 1.7 -+++ libs/python/src/object_protocol.cpp 12 Apr 2006 15:55:31 -0000 -@@ -106,7 +106,7 @@ - PySequenceMethods *sq = tp->tp_as_sequence; - - if (sq && sq->sq_slice && ISINT(v) && ISINT(w)) { -- int ilow = 0, ihigh = INT_MAX; -+ Py_ssize_t ilow = 0, ihigh = PY_SSIZE_T_MAX; - if (!_PyEval_SliceIndex(v, &ilow)) - return NULL; - if (!_PyEval_SliceIndex(w, &ihigh)) -@@ -133,7 +133,7 @@ - PySequenceMethods *sq = tp->tp_as_sequence; - - if (sq && sq->sq_slice && ISINT(v) && ISINT(w)) { -- int ilow = 0, ihigh = INT_MAX; -+ Py_ssize_t ilow = 0, ihigh = PY_SSIZE_T_MAX; - if (!_PyEval_SliceIndex(v, &ilow)) - return -1; - if (!_PyEval_SliceIndex(w, &ihigh)) diff --git a/boost-qualify_name.patch b/boost-qualify_name.patch new file mode 100644 index 0000000..74d1eb2 --- /dev/null +++ b/boost-qualify_name.patch @@ -0,0 +1,13 @@ +Qualify special_values_parser to avoid later confusion. + +--- boost/date_time/date_facet.hpp ++++ boost/date_time/date_facet.hpp +@@ -429,7 +429,7 @@ + typedef std::basic_string string_type; + typedef CharT char_type; + typedef boost::date_time::period_parser period_parser_type; +- typedef special_values_parser special_values_parser_type; ++ typedef boost::date_time::special_values_parser special_values_parser_type; + typedef std::vector > input_collection_type; + typedef format_date_parser format_date_parser_type; + // date_generators stuff goes here diff --git a/boost-rpmlintrc b/boost-rpmlintrc new file mode 100644 index 0000000..eb703ed --- /dev/null +++ b/boost-rpmlintrc @@ -0,0 +1,7 @@ +# This line is mandatory to access the configuration functions +from Config import * + +addFilter("boost.* shlib-policy-nonversioned-dir") +addFilter("boost.* shlib-policy-missing-suffix") +addFilter("boost-doc.* devel-dependency") +addFilter("boost.* rpm-buildroot-usage") diff --git a/boost-strip.patch b/boost-strip.patch deleted file mode 100644 index bc6980a..0000000 --- a/boost-strip.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- tools/build/v1/gcc-tools.jam -+++ tools/build/v1/gcc-tools.jam -@@ -338,7 +338,6 @@ - flags gcc HDRS ; - flags gcc SYSHDRS ; - flags gcc LINKFLAGS ; --flags gcc LINKFLAGS off : -s ; - flags gcc ARFLAGS ; - - flags gcc STDHDRS : $(GCC_INCLUDE_DIRECTORY) ; diff --git a/boost-threading.patch b/boost-threading.patch index e9c57ae..fdb63af 100644 --- a/boost-threading.patch +++ b/boost-threading.patch @@ -1,17 +1,6 @@ ---- tools/build/v1/gcc-tools.jam -+++ tools/build/v1/gcc-tools.jam -@@ -150,7 +150,7 @@ - } - case * : - { -- flags gcc CFLAGS multi : -pthread ; -+ flags gcc CFLAGS multi : -pthread -D_REENTRANT ; - flags gcc LINKFLAGS multi : -pthread ; - flags gcc FINDLIBS multi : rt ; - } --- tools/build/v2/tools/gcc.jam +++ tools/build/v2/tools/gcc.jam -@@ -368,7 +368,7 @@ +@@ -677,7 +677,7 @@ } case * : { diff --git a/boost-undefined_behaviour.patch b/boost-undefined_behaviour.patch deleted file mode 100644 index cb8df29..0000000 --- a/boost-undefined_behaviour.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- boost/tuple/tuple_io.hpp -+++ boost/tuple/tuple_io.hpp -@@ -349,7 +349,7 @@ - char c; - if (is_delimiter) { - is >> c; -- if (c!=d) { -+ if (is.good() && c!=d) { - is.setstate(std::ios::failbit); - } - } diff --git a/boost-use_O2.patch b/boost-use_O2.patch deleted file mode 100644 index 9e5d86d..0000000 --- a/boost-use_O2.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- tools/build/v1/gcc-tools.jam -+++ tools/build/v1/gcc-tools.jam -@@ -60,7 +60,7 @@ - flags gcc CFLAGS on : -g ; - flags gcc LINKFLAGS on : -g ; - flags gcc CFLAGS off : -O0 ; --flags gcc CFLAGS speed : -O3 ; -+flags gcc CFLAGS speed : -O2 -fpermissive ; - - # Other optimizations we might want for GCC - # -fforce-mem -fomit-frame-pointer diff --git a/boost-use_rpm_optflags.patch b/boost-use_rpm_optflags.patch new file mode 100644 index 0000000..8a493bc --- /dev/null +++ b/boost-use_rpm_optflags.patch @@ -0,0 +1,38 @@ +--- tools/build/v2/tools/builtin.jam ++++ tools/build/v2/tools/builtin.jam +@@ -91,7 +91,7 @@ + feature runtime-debugging : on off : propagated ; + + +-feature optimization : off speed space : propagated ; ++feature optimization : off speed space rpm : propagated ; + feature profiling : off on : propagated ; + feature inlining : off on full : propagated ; + +@@ -102,7 +102,7 @@ + feature asynch-exceptions : off on : propagated ; + # Whether all extern "C" functions are considered nothrow by default + feature extern-c-nothrow : off on : propagated ; +-feature debug-symbols : on off : propagated ; ++feature debug-symbols : on off rpm : propagated ; + feature define : : free ; + feature undef : : free ; + feature "include" : : free path ; #order-sensitive ; +@@ -327,6 +327,7 @@ + variant release : speed off full + off NDEBUG ; + variant profile : release : on on ; ++variant rpm : rpm rpm full off ; + + class searched-lib-target : abstract-file-target + { +--- tools/build/v2/tools/gcc.jam ++++ tools/build/v2/tools/gcc.jam +@@ -270,6 +270,7 @@ + flags gcc.compile OPTIONS off : -O0 ; + flags gcc.compile OPTIONS speed : -O3 ; + flags gcc.compile OPTIONS space : -Os ; ++flags gcc.compile OPTIONS rpm : "$RPM_OPT_FLAGS" ; + + flags gcc.compile OPTIONS off : -fno-inline ; + flags gcc.compile OPTIONS on : -Wno-inline ; diff --git a/boost-used_unitialized.patch b/boost-used_unitialized.patch deleted file mode 100644 index bc72633..0000000 --- a/boost-used_unitialized.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- boost/date_time/constrained_value.hpp -+++ boost/date_time/constrained_value.hpp -@@ -40,6 +40,7 @@ - // typedef except_type exception_type; - constrained_value(value_type value) - { -+ value_ = value; - assign(value); - }; - constrained_value& operator=(value_type v) diff --git a/boost-visit_each.diff b/boost-visit_each.diff index 8b669f8..85c9d85 100644 --- a/boost-visit_each.diff +++ b/boost-visit_each.diff @@ -1,5 +1,5 @@ ---- boost/visit_each.hpp.ORG 2004-07-25 04:29:28.000000000 +0200 -+++ boost/visit_each.hpp 2006-07-13 16:41:14.000000000 +0200 +--- boost/visit_each.hpp ++++ boost/visit_each.hpp @@ -22,7 +22,7 @@ template inline void visit_each(Visitor& visitor, const T& t) diff --git a/boost.changes b/boost.changes index fad0f52..320884a 100644 --- a/boost.changes +++ b/boost.changes @@ -1,7 +1,26 @@ ------------------------------------------------------------------- -Wed Jan 16 10:19:30 CET 2008 - schwab@suse.de +Mon Jan 28 10:53:09 CET 2008 - schwab@suse.de -- Fix asm constraints. +- Remove obsolete patch again. + +------------------------------------------------------------------- +Fri Jan 18 14:04:18 CET 2008 - pth@suse.de + +- Fix CVE-2008-0171 and CVE-2008-0171 (bugzilla #353180) +- Qualify special_values_parser (bugzilla #353897) + +------------------------------------------------------------------- +Thu Jan 17 18:18:03 CET 2008 - schwab@suse.de + +- Remove obsolete patch. + +------------------------------------------------------------------- +Mon Jan 14 13:51:36 CET 2008 - pth@suse.de + +- Move 1.34.1 from BS to Autobuild +- Add patch for critical bug in Boost.Function. +- Include C headers where necessary. +- Make the tests for ULONG_MAX more readable 64. ------------------------------------------------------------------- Wed Oct 24 17:49:46 CEST 2007 - rguenther@suse.de @@ -9,6 +28,300 @@ Wed Oct 24 17:49:46 CEST 2007 - rguenther@suse.de - Use -fpermissive in addition to -O2 for building. - Add patch to enable building wave with GCC 4.3. +------------------------------------------------------------------- +Mon Aug 20 15:09:41 CEST 2007 - pth@suse.de + +- Only use fdupes from 10.3 onwards. + +------------------------------------------------------------------- +Sat Aug 11 13:17:53 CEST 2007 - aj@suse.de + +- Fix spec file to build again. + +------------------------------------------------------------------- +Thu Aug 9 15:16:09 CEST 2007 - pth@suse.de + +- Add man pages (made for 1.33.1). +- Package html documentation differently. +- Check all links and add missing files that do exist. +- Use %%fdupes +- Add patch by rschiele@gmail.com to pass compiler flags into + Boost.build. + +- Update to 1.34.1 and use .spec file from bkoz@redhat.com as + a basis. + + Changes 1.33.1 -> 1.34.0: + + New Libraries: + + * Foreach Library: BOOST_FOREACH macro for easily iterating over + the elements of a sequence, + + * Statechart Library: Arbitrarily complex finite state machines + can be implemented in easily readable and + maintainable C++ code, + + * TR1 Library: An implementation of the C++ Technical Report on Standard + Library Extensions, from John Maddock. This library does + not itself implement the TR1 components, rather it's a + thin wrapper that will include your standard library's + TR1 implementation (if it has one), otherwise it will + include the Boost Library equivalents, and import them + into namespace std::tr1. Highlights include: Reference + Wrappers, Smart Pointers, result_of, Function Object + Binders, Polymorphic function wrappers, Type Traits, + Random Number Generators and Distributions, Tuples, Fixed + Size Array, Hash Function Objects, Regular Expressions, + and Complex Number Additional Algorithms. + + * Typeof Library: Typeof operator emulation, from Arkadiy Vertleyb + and Peder Holt. + + * Xpressive Library: Regular expressions that can be written as strings + or as expression templates, and that can refer to + each other and themselves recursively with the + power of context-free grammars, from Eric Niebler. + + Updated Libraries: + + * Assign Library: + o Support for ptr_map via the new function ptr_map_insert() + o Support for initialization of Pointer Containers when the + containers hold pointers to an abstract base class. + + * Date_time library: + o Support for new US/Canada timezone rules and other bug fixes. + See Change History for details. + + * Filesystem Library: Major upgrade in preparation for submission to the + C++ Standards Committee for TR2. Changes include: + + o Internationalization, provided by class templates basic_path, + basic_filesystem_error, basic_directory_iterator, and + basic_directory_entry. + + o Simplification of the path interface by eliminating special + constructors to identify native formats. + + o Rationalization of predicate function design, including the + addition of several new functions. + + o Clearer specification by reference to POSIX, the ISO/IEEE Single + Unix Standard, with provisions for Windows and other operating + systems. + + o Preservation of existing user code whenever possible. + o More efficient directory iteration. + o Addition of a recursive directory iterator. + + * Function Library: Boost.Function now implements a small buffer + optimization, which can drastically improve the + performance when copying or constructing + Boost.Function objects storing small function + objects. For instance, bind(&X:foo, &x, _1, _2) + requires no heap allocation when placed into a + Boost.Function object. + + * Functional/Hash Library + o Use declarations for standard classes, so that the library + doesn't need to include all of their headers + + o Deprecated the headers. + + o Add support for the BOOST_HASH_NO_EXTENSIONS macro, which + disables the extensions to TR1 + + o Minor improvements to the hash functions for floating point numbers. + + * Graph Library: + o edmonds_maximum_cardinality_matching, + o lengauer_tarjan_dominator_tree, + o compressed_sparse_row_graph, + o sorted_erdos_renyi_iterator, + + o biconnected_components now supports a visitor and named + parameters, + + o adjacency_matrix now models the Bidirectional Graph concept. + + o dijkstra_shortest_paths now calls vis.initialize_vertex for each + vertex during initialization. + + o Note: the name of the compiled library for the GraphViz reader has + changed to boost_graph (from bgl-viz) to match Boost conventions. + + o See the complete revision history for more information. + + * MultiArray Library: Boost.MultiArray now by default provides + range-checking for operator[]. Range checking can + be disabled by defining the macro + BOOST_DISABLE_ASSERTS before including + multi_array.hpp. A bug in multi_array::resize() + related to storage orders was fixed. + + * Multi-index Containers Library: + o New random access indices. + o Non key-based indices feature new rearrange facilities. + + o This version also includes a number of optimizations and usage + improvements. For a complete list of changes, see the library + release notes. + + * Optional Library: + o boost::none_t and boost::none now added to Optional's + documentation + + o Relational operators now directly support arguments of type + 'T' and 'none_t' + + o operator->() now also works with reference types. + + o Helper functions make_optional(val), make_optional(cond,val) + and get_optional_value_or(opt,alternative_value) added. + + o Constructor taking a boolean condition (as well as a value) + added. + + o Member function get_value_or(alternative_value) added. + o Incompatbility bug with mpl::apply<> fixed. + o Converting assignment bug with uninitialized lvalues fixed. + + * Parameter Library: + o Every ArgumentPack is now a valid MPL Forward Sequence. + + o Support for unnamed arguments (those whose keyword is + deduced from their types) is added. + + o Support for named and unnamed template arguments is added. + + o New overload generation macros solve the forwarding problem + directly. + + o See also the Python library changes, below. + + * Pointer Container Library: + o Support for serialization via Boost.Serialization. + + o Exceptions can be disabled by defining the macro + BOOST_PTR_CONTAINER_NO_EXCEPTIONS before including any header. + This macro is defined by default if BOOST_NO_EXCEPTIONS is defined. + + o Additional std::auto_ptr overloads added s.t. one can also + pass std::auto_ptr instead of only T* arguments to member + functions. + + o transfer() now has weaker requirements s.t. one can transfer + objects from ptr_container to ptr_container, + + * Python Library: + o Boost.Python now automatically appends C++ signatures to + docstrings. The new docstring_options.hpp header is available to + control the content of docstrings. + + o stl_input_iterator, for turning a Python iterable object into an + STL input iterator, from Eric Niebler. + + o Support for void* conversions is added. + + o Integrated support for wrapping C++ functions built with the + parameter library; keyword names are automatically known to + docsstrings. + + o Enhancements to the API for better embedding support + (boost::python::import(), boost::python::exec(), and + boost::python::exec_file()). + + * Signals Library: More improvements to signal invocation performance. + + * Smart Pointers Library: + o Allocator support as proposed in N1851 (162 Kb PDF). + o pointer_cast and pointer_to_other utilities to allow + pointer-independent code, + + * String Algorithm Library: + o lexicographical_compare + o join + o New comparison predicates is_less, is_not_greater. + o Negative indexes support (like Perl) in various algorihtms + (*_head/tail, *_nth). + + * Wave Library: + o Wave now correctly recognizes pp-number tokens as mandated by + the C++ Standard, which are converted to C++ tokens right before + they are returned from the library. + + o Several new preprocessing hooks have been added. For a complete + description please refer to the related documentation page: The + Context Policy. + + o Shared library (dll) support has been added for the generated + Wave libraries. + + o The overall error handling has been improved. It is now possible + to recover and continue after an error or a warning was issued. + + o Support for optional comment and/or full whitespace + preservation in the generated output stream has been added. + + o The Wave library now performs automatic include guard + detection to avoid accessing header files more than once, if + appropriate. + + o Full interactive mode has been added to the Wave tool. Now the + Wave tool can be used just like Python or Perl for instance to + interactively try out your BOOST_PP macros. Additionally it is + now possible to load and save the current state of an + interactive session (macro tables et.al.). + + o The overall performance has been improved by upto 40-60%, + depending on the concrete files to process. + + o Support for new pragmas has been added allowing to control + certain library features from inside the preprocessed sources + (partial output redirection, control of generated whitespace + and #line directives). + + o Optional support for #pragma message "..." has been added. + + o This version also includes a number of bug fixes and usage + improvements. For a complete list of changes, see the + libraries change log. + +Fixes in 1.34.1: + + * Fixes for build on IBM pSeries for AIX and Linux + * gcc-4.2 atomicity.h location fixed + * [iostreams] zlib_compressor memory leaks in 1.34.0 + * filtering ostream problem... pushing zlib_compressor works in 1_33, + dies in 1_34 + * [doc] The "Getting Started" page mentions incorrect library names + * [filesystem] missing documentation or bad links + * add missing docs for boost.python API enhancements. + * Entire iostreams library outdated in 1.34.0 + * numeric_limits specializations in limits.hpp are incorrect + * Updated ICU support in Boost.Regex + * Make boost.python compatible with python 2.5 + * ::boost::detail::empty_base improved + * Fix failing uild of libs/python/example/quickstart. + * Fix problems when building Python modules on boost 1.34.0 + * Patches to allow boost 1.34.0 to compile with stricter warning + checking under mac OS and gcc + * Unable to compile Python example, tutorial, or quickstart with + Boost 1_34_0 + * Improper overflow handling in shortest paths algorithms + * Multiple include paths for Python + * Add documentation for the iter_find/split algorithms + * regex_token_iterator crashes + * regex_error exception when quantifying some non-capturing groups + * read_write_mutex docs don't clearly specify that the functionality + is not present + +- Remove patches not needed anymore. +- Replace file dupes by symlinks. +- Add rpmlintrc to suppress rpmlint warnings for things that won't be + changed. + ------------------------------------------------------------------- Sun Jul 15 16:09:59 CEST 2007 - schwab@suse.de diff --git a/boost.spec b/boost.spec index 7a62f1f..3070d4d 100644 --- a/boost.spec +++ b/boost.spec @@ -1,5 +1,5 @@ # -# spec file for package boost (Version 1.33.1) +# spec file for package boost (Version 1.34.1) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -11,36 +11,43 @@ # norootforbuild Name: boost -BuildRequires: boost-jam gcc-c++ libbz2-devel libicu-devel python-devel xorg-x11-devel -%define file_version 1_33_1 -%define version_tag 1_33_1 +%define file_version 1_34_1 +%define man_version 1.33.1 +%define man_file_version 1_33_1 +BuildRequires: boost-jam >= 3.1.14 dos2unix gcc-c++ libbz2-devel libicu-devel python-devel xorg-x11-devel +%if 0%suse_version > 1020 +BuildRequires: fdupes +%endif Url: http://www.boost.org License: BSD 3-Clause Group: Development/Libraries/C and C++ Summary: Boost C++ Libraries BuildRoot: %{_tmppath}/%{name}-%{version}-build -Version: 1.33.1 -Release: 136 +Version: 1.34.1 +Release: 8 Source0: %{name}_%{file_version}.tar.bz2 -Source1: NEWS -Patch: boost-threading.patch +Source1: boost-rpmlintrc +Source2: boost_%{man_file_version}_man.tar.bz2 +Source3: existing_extra_docs +Patch0: boost-threading.patch Patch1: boost-thread.patch -Patch3: boost-use_O2.patch -Patch4: boost-undefined_behaviour.patch -Patch5: boost-configure.patch -Patch6: boost-used_unitialized.patch -Patch7: boost-no_type_punning.patch -Patch8: boost-no_type_attrs_on_forward_decls.patch -Patch9: boost-strip.patch -Patch10: boost-ia64.patch -Patch11: boost-visit_each.diff -Patch12: boost-python_2_5-minimal.patch -Patch13: boost-atomicity.patch -Patch14: boost_1_33_1-gcc43.patch -Patch15: sp-counted-base-gcc-ppc.diff +Patch2: boost-no_type_punning.patch +Patch4: boost-visit_each.diff +Patch5: boost-pass_BJAM_CONFIG.patch +Patch6: boost-use_rpm_optflags.patch +Patch7: boost-fix_doc_url.patch +Patch8: boost-no_segfault_in_Regex_filter.patch +Patch9: boost-no_segfault_on_dir_iteration.patch +Patch10: boost-fix_documentation.patch +Patch11: boost-Boost.Function.patch +Patch12: boost-missing_includes.patch +Patch13: boost-no_intrinsic_int64_t.patch +Patch14: boost-codecleanup.patch +# Secfix for 1.34.1 +Patch15: boost-CVE-2008-0171.patch +# +Patch16: boost-qualify_name.patch %define _prefix /usr -%define python_root /usr -%define python_lib_path %py_libdir/config %description Boost provides free peer-reviewed portable C++ source libraries. The @@ -86,13 +93,13 @@ This package contains documentation about the boost dynamic libraries. %prep -%setup -q -n %{name}_%{file_version} -find -name .cvsignore|xargs rm -f +%setup -q -n %{name}_%{file_version} -a 2 +find -name .cvsignore -exec rm -f {} + #everything in the tarball has the executable flag set ...... -find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl -o -name configure \) | xargs chmod -x +find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl \) -exec chmod -x {} + %patch %patch1 -%patch3 +%patch2 %patch4 %patch5 %patch6 @@ -104,28 +111,86 @@ find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl -o -name configure \ %patch12 %patch13 %patch14 -%patch15 -p1 -cp %{S:1} . +%patch15 +%patch16 +chmod +x configure +#stupid build machinery copies .orig files +find . -name \*.orig -exec rm {} + %build -#%define boost_cxxflags %optflags -fno-strict-aliasing -%define boost_cxxflags %optflags -%define bjam_flags -d2 --layout=system --no-objcopy %{?jobs:-j%jobs} -find . -type f|xargs chmod u+w -# To have the documentation in a place that can easily be included in the file list -mkdir .backup -tar -cf - $(find . -name \*.htm\* -o -name \*.gif -o -name \*.css -o -name \*.jpg)| tar -C .backup -xf - -rm -rf .backup/boost -ln -s /usr/include/boost .backup +%define bjam_config -d2 --layout=system %{?jobs:-j%jobs} +find . -type f -exec chmod u+w {} + # Now build it -./configure --with-bjam=/usr/bin/bjam --with-icu --prefix=%{buildroot}/usr --libdir=%{buildroot}%{_libdir} -make GXX="c++ %{boost_cxxflags}" GCC="c++ %{boost_cxxflags}" BJAM_FLAGS="%{bjam_flags}" +BUILD_FLAGS="--with-toolset=gcc --prefix=%{buildroot}/usr --libdir=%{buildroot}%{_libdir} --with-bjam=/usr/bin/bjam" +PYTHON_VERSION=$(python -c 'import sys; print sys.version[:3]') +PYTHON_FLAGS="--with-python-root=/usr --with-python-version=$PYTHON_VERSION" +REGEX_FLAGS="--with-icu" +BJAM_TARGET=rpm +BJAM_CONFIG="%{bjam_config}" BJAM_TARGET="$BJAM_TARGET" ./configure $BUILD_FLAGS $PYTHON_FLAGS $REGEX_FLAGS +export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-deprecated" +make all %install -make GXX="c++ %{boost_cxxflags}" GCC="c++ %{boost_cxxflags}" BJAM_FLAGS="%{bjam_flags}" install -chmod -R u+rw,go+rX %{buildroot}%{_prefix} -## symlink needed for jahshaka's openlibraries framework, jw@suse.de -(cd %{buildroot}%{_prefix}/%_lib; ln -s libboost_thread-mt.so libboost_thread.so) +mkdir -p %{buildroot}%{_libdir} +mkdir -p %{buildroot}%{_includedir} +mkdir -p %{buildroot}%{_docdir}/boost-%{version} +# install lib +for i in `find stage -type f -name \*.a`; do + NAME=`basename $i`; + install -p -m 0644 $i %{buildroot}%{_libdir}/$NAME; +done; +for lib in `find stage -type f -name \*.so`; do + NAME=$lib; + SONAME=$lib.2; + VNAME=$lib.%{version}; + base=$(basename $lib); + NAMEbase=$base; + SONAMEbase=$base.2; + VNAMEbase=$base.%{version}; + mv $lib $VNAME; + ln -s $VNAMEbase $SONAME; + ln -s $VNAMEbase $NAME; + install -p -m 755 $VNAME %{buildroot}%{_libdir}/$VNAMEbase; + mv $SONAME %{buildroot}%{_libdir}/$SONAMEbase; + mv $NAME %{buildroot}%{_libdir}/$NAMEbase; +done; +# install include files +for i in $(find boost -type d); do + mkdir -p %{buildroot}%{_includedir}/$i +done +for i in $(find boost -type f); do + install -p -m 644 $i %{buildroot}%{_includedir}/$i +done +chmod +x %{buildroot}%{_includedir}/boost/signals/detail/gen_signal_N.pl \ + %{buildroot}%{_includedir}/boost/pool/detail/pool_construct_simple.sh \ + %{buildroot}%{_includedir}/boost/pool/detail/pool_construct.sh \ + %{buildroot}%{_includedir}/boost/function/gen_function_N.pl \ + %{buildroot}%{_includedir}/boost/function/detail/gen_maybe_include.pl +#install the man pages +install -d %buildroot/%{_mandir}/man3 +install -d %buildroot/%{_mandir}/man7 +pushd boost-%{man_version}/doc/man +for page in $(find . -type f); do + install -p -m 644 $page %buildroot/%{_mandir}/$page +done +popd +#install doc files +dos2unix libs/ptr_container/doc/tutorial_example.html \ + libs/ptr_container/doc/style.css \ + libs/parameter/doc/html/reference.html \ + libs/parameter/doc/html/index.html \ + libs/iostreams/doc/tree/tree.js \ + libs/graph/doc/lengauer_tarjan_dominator.htm +tar --files-from=%{S:3} -cf - $(find . -name \*.htm\* -o -name \*.gif -o -name \*.css -o -name \*.jpg -o -name \*.png -o -name \*.ico) | tar -C %{buildroot}%{_docdir}/boost-%{version} -xf - +rm -rf %{buildroot}%{_docdir}/boost-%{version}/boost +ln -s /usr/include/boost %{buildroot}%{_docdir}/boost-%{version}/ +ln -s ../LICENSE_1_0.txt %{buildroot}%{_docdir}/boost-%{version}/libs +#only for documentation, don't need to be executable +find %{buildroot}%{_docdir}/boost-%{version} -name \*.py -exec chmod -x {} + +#symlink dupes +%if 0%suse_version > 1020 +%fdupes %buildroot +%endif %post %run_ldconfig @@ -134,64 +199,256 @@ chmod -R u+rw,go+rX %{buildroot}%{_prefix} %run_ldconfig %files -%defattr(-,root,root) -%doc NEWS -%{_libdir}/libboost_date_time.so.* -%{_libdir}/libboost_filesystem.so.* -%{_libdir}/libboost_iostreams.so.* -%{_libdir}/libboost_prg_exec_monitor.so.* -%{_libdir}/libboost_program_options.so.* -%{_libdir}/libboost_python.so.* -%{_libdir}/libboost_regex.so.* -%{_libdir}/libboost_serialization.so.* -%{_libdir}/libboost_signals.so.* -%{_libdir}/libboost_test_exec_monitor.so.* -%{_libdir}/libboost_thread-mt.so.* -%{_libdir}/libboost_unit_test_framework.so.* -%{_libdir}/libboost_wserialization.so.* +%defattr(-, root, root, -) +%doc LICENSE_1_0.txt README +%{_libdir}/*.so.%{version} +%{_libdir}/*.so.2 %files devel -%defattr(-,root,root) -%{_libdir}/libboost_date_time.a -%{_libdir}/libboost_filesystem.a -%{_libdir}/libboost_iostreams.a -%{_libdir}/libboost_prg_exec_monitor.a -%{_libdir}/libboost_program_options.a -%{_libdir}/libboost_python.a -%{_libdir}/libboost_regex.a -%{_libdir}/libboost_serialization.a -%{_libdir}/libboost_signals.a -%{_libdir}/libboost_test_exec_monitor.a -%{_libdir}/libboost_thread-mt.a -%{_libdir}/libboost_unit_test_framework.a -%{_libdir}/libboost_wserialization.a -%{_libdir}/libboost_date_time.so -%{_libdir}/libboost_filesystem.so -%{_libdir}/libboost_iostreams.so -%{_libdir}/libboost_prg_exec_monitor.so -%{_libdir}/libboost_program_options.so -%{_libdir}/libboost_python.so -%{_libdir}/libboost_regex.so -%{_libdir}/libboost_serialization.so -%{_libdir}/libboost_signals.so -%{_libdir}/libboost_test_exec_monitor.so -%{_libdir}/libboost_thread-mt.so -%{_libdir}/libboost_thread.so -%{_libdir}/libboost_unit_test_framework.so -%{_libdir}/libboost_wave.a -%{_libdir}/libboost_wserialization.so +%defattr(-, root, root, -) %{_includedir}/boost +%{_libdir}/*.so +%{_libdir}/*.a %files doc -%defattr(-,root,root) -%doc .backup/* +%defattr(-, root, root, -) +%doc %{_docdir}/boost-%{version} +%doc %{_mandir}/man3/*.3.gz +%doc %{_mandir}/man7/*.7.gz %changelog -* Wed Jan 16 2008 schwab@suse.de -- Fix asm constraints. +* Mon Jan 28 2008 schwab@suse.de +- Remove obsolete patch again. +* Fri Jan 18 2008 pth@suse.de +- Fix CVE-2008-0171 and CVE-2008-0171 (bugzilla #353180) +- Qualify special_values_parser (bugzilla #353897) +* Thu Jan 17 2008 schwab@suse.de +- Remove obsolete patch. +* Mon Jan 14 2008 pth@suse.de +- Move 1.34.1 from BS to Autobuild +- Add patch for critical bug in Boost.Function. +- Include C headers where necessary. +- Make the tests for ULONG_MAX more readable 64. * Wed Oct 24 2007 rguenther@suse.de - Use -fpermissive in addition to -O2 for building. - Add patch to enable building wave with GCC 4.3. +* Mon Aug 20 2007 pth@suse.de +- Only use fdupes from 10.3 onwards. +* Sat Aug 11 2007 aj@suse.de +- Fix spec file to build again. +* Thu Aug 09 2007 pth@suse.de +- Add man pages (made for 1.33.1). +- Package html documentation differently. +- Check all links and add missing files that do exist. +- Use %%fdupes +- Add patch by rschiele@gmail.com to pass compiler flags into + Boost.build. +- Update to 1.34.1 and use .spec file from bkoz@redhat.com as + a basis. + Changes 1.33.1 -> 1.34.0: + New Libraries: + * Foreach Library: BOOST_FOREACH macro for easily iterating over + the elements of a sequence, + * Statechart Library: Arbitrarily complex finite state machines + can be implemented in easily readable and + maintainable C++ code, + * TR1 Library: An implementation of the C++ Technical Report on Standard + Library Extensions, from John Maddock. This library does + not itself implement the TR1 components, rather it's a + thin wrapper that will include your standard library's + TR1 implementation (if it has one), otherwise it will + include the Boost Library equivalents, and import them + into namespace std::tr1. Highlights include: Reference + Wrappers, Smart Pointers, result_of, Function Object + Binders, Polymorphic function wrappers, Type Traits, + Random Number Generators and Distributions, Tuples, Fixed + Size Array, Hash Function Objects, Regular Expressions, + and Complex Number Additional Algorithms. + * Typeof Library: Typeof operator emulation, from Arkadiy Vertleyb + and Peder Holt. + * Xpressive Library: Regular expressions that can be written as strings + or as expression templates, and that can refer to + each other and themselves recursively with the + power of context-free grammars, from Eric Niebler. + Updated Libraries: + * Assign Library: + o Support for ptr_map via the new function ptr_map_insert() + o Support for initialization of Pointer Containers when the + containers hold pointers to an abstract base class. + * Date_time library: + o Support for new US/Canada timezone rules and other bug fixes. + See Change History for details. + * Filesystem Library: Major upgrade in preparation for submission to the + C++ Standards Committee for TR2. Changes include: + o Internationalization, provided by class templates basic_path, + basic_filesystem_error, basic_directory_iterator, and + basic_directory_entry. + o Simplification of the path interface by eliminating special + constructors to identify native formats. + o Rationalization of predicate function design, including the + addition of several new functions. + o Clearer specification by reference to POSIX, the ISO/IEEE Single + Unix Standard, with provisions for Windows and other operating + systems. + o Preservation of existing user code whenever possible. + o More efficient directory iteration. + o Addition of a recursive directory iterator. + * Function Library: Boost.Function now implements a small buffer + optimization, which can drastically improve the + performance when copying or constructing + Boost.Function objects storing small function + objects. For instance, bind(&X:foo, &x, _1, _2) + requires no heap allocation when placed into a + Boost.Function object. + * Functional/Hash Library + o Use declarations for standard classes, so that the library + doesn't need to include all of their headers + o Deprecated the headers. + o Add support for the BOOST_HASH_NO_EXTENSIONS macro, which + disables the extensions to TR1 + o Minor improvements to the hash functions for floating point numbers. + * Graph Library: + o edmonds_maximum_cardinality_matching, + o lengauer_tarjan_dominator_tree, + o compressed_sparse_row_graph, + o sorted_erdos_renyi_iterator, + o biconnected_components now supports a visitor and named + parameters, + o adjacency_matrix now models the Bidirectional Graph concept. + o dijkstra_shortest_paths now calls vis.initialize_vertex for each + vertex during initialization. + o Note: the name of the compiled library for the GraphViz reader has + changed to boost_graph (from bgl-viz) to match Boost conventions. + o See the complete revision history for more information. + * MultiArray Library: Boost.MultiArray now by default provides + range-checking for operator[]. Range checking can + be disabled by defining the macro + BOOST_DISABLE_ASSERTS before including + multi_array.hpp. A bug in multi_array::resize() + related to storage orders was fixed. + * Multi-index Containers Library: + o New random access indices. + o Non key-based indices feature new rearrange facilities. + o This version also includes a number of optimizations and usage + improvements. For a complete list of changes, see the library + release notes. + * Optional Library: + o boost::none_t and boost::none now added to Optional's + documentation + o Relational operators now directly support arguments of type + 'T' and 'none_t' + o operator->() now also works with reference types. + o Helper functions make_optional(val), make_optional(cond,val) + and get_optional_value_or(opt,alternative_value) added. + o Constructor taking a boolean condition (as well as a value) + added. + o Member function get_value_or(alternative_value) added. + o Incompatbility bug with mpl::apply<> fixed. + o Converting assignment bug with uninitialized lvalues fixed. + * Parameter Library: + o Every ArgumentPack is now a valid MPL Forward Sequence. + o Support for unnamed arguments (those whose keyword is + deduced from their types) is added. + o Support for named and unnamed template arguments is added. + o New overload generation macros solve the forwarding problem + directly. + o See also the Python library changes, below. + * Pointer Container Library: + o Support for serialization via Boost.Serialization. + o Exceptions can be disabled by defining the macro + BOOST_PTR_CONTAINER_NO_EXCEPTIONS before including any header. + This macro is defined by default if BOOST_NO_EXCEPTIONS is defined. + o Additional std::auto_ptr overloads added s.t. one can also + pass std::auto_ptr instead of only T* arguments to member + functions. + o transfer() now has weaker requirements s.t. one can transfer + objects from ptr_container to ptr_container, + * Python Library: + o Boost.Python now automatically appends C++ signatures to + docstrings. The new docstring_options.hpp header is available to + control the content of docstrings. + o stl_input_iterator, for turning a Python iterable object into an + STL input iterator, from Eric Niebler. + o Support for void* conversions is added. + o Integrated support for wrapping C++ functions built with the + parameter library; keyword names are automatically known to + docsstrings. + o Enhancements to the API for better embedding support + (boost::python::import(), boost::python::exec(), and + boost::python::exec_file()). + * Signals Library: More improvements to signal invocation performance. + * Smart Pointers Library: + o Allocator support as proposed in N1851 (162 Kb PDF). + o pointer_cast and pointer_to_other utilities to allow + pointer-independent code, + * String Algorithm Library: + o lexicographical_compare + o join + o New comparison predicates is_less, is_not_greater. + o Negative indexes support (like Perl) in various algorihtms + (*_head/tail, *_nth). + * Wave Library: + o Wave now correctly recognizes pp-number tokens as mandated by + the C++ Standard, which are converted to C++ tokens right before + they are returned from the library. + o Several new preprocessing hooks have been added. For a complete + description please refer to the related documentation page: The + Context Policy. + o Shared library (dll) support has been added for the generated + Wave libraries. + o The overall error handling has been improved. It is now possible + to recover and continue after an error or a warning was issued. + o Support for optional comment and/or full whitespace + preservation in the generated output stream has been added. + o The Wave library now performs automatic include guard + detection to avoid accessing header files more than once, if + appropriate. + o Full interactive mode has been added to the Wave tool. Now the + Wave tool can be used just like Python or Perl for instance to + interactively try out your BOOST_PP macros. Additionally it is + now possible to load and save the current state of an + interactive session (macro tables et.al.). + o The overall performance has been improved by upto 40-60%%, + depending on the concrete files to process. + o Support for new pragmas has been added allowing to control + certain library features from inside the preprocessed sources + (partial output redirection, control of generated whitespace + and #line directives). + o Optional support for #pragma message "..." has been added. + o This version also includes a number of bug fixes and usage + improvements. For a complete list of changes, see the + libraries change log. + Fixes in 1.34.1: + * Fixes for build on IBM pSeries for AIX and Linux + * gcc-4.2 atomicity.h location fixed + * [iostreams] zlib_compressor memory leaks in 1.34.0 + * filtering ostream problem... pushing zlib_compressor works in 1_33, + dies in 1_34 + * [doc] The "Getting Started" page mentions incorrect library names + * [filesystem] missing documentation or bad links + * add missing docs for boost.python API enhancements. + * Entire iostreams library outdated in 1.34.0 + * numeric_limits specializations in limits.hpp are incorrect + * Updated ICU support in Boost.Regex + * Make boost.python compatible with python 2.5 + * ::boost::detail::empty_base improved + * Fix failing uild of libs/python/example/quickstart. + * Fix problems when building Python modules on boost 1.34.0 + * Patches to allow boost 1.34.0 to compile with stricter warning + checking under mac OS and gcc + * Unable to compile Python example, tutorial, or quickstart with + Boost 1_34_0 + * Improper overflow handling in shortest paths algorithms + * Multiple include paths for Python + * Add documentation for the iter_find/split algorithms + * regex_token_iterator crashes + * regex_error exception when quantifying some non-capturing groups + * read_write_mutex docs don't clearly specify that the functionality + is not present +- Remove patches not needed anymore. +- Replace file dupes by symlinks. +- Add rpmlintrc to suppress rpmlint warnings for things that won't be + changed. * Sun Jul 15 2007 schwab@suse.de - Fix reference to atomicity.h. * Sat Mar 24 2007 aj@suse.de @@ -214,7 +471,7 @@ chmod -R u+rw,go+rX %{buildroot}%{_prefix} - Fix broken assembler constraints [#148429]. * Wed Jan 25 2006 mls@suse.de - converted neededforbuild to BuildRequires -* Tue Jan 17 2006 schwab@suse.de +* Wed Jan 18 2006 schwab@suse.de - Don't strip binaries. * Wed Dec 07 2005 pth@suse.de - Fix cases of type-punning in boost::python diff --git a/boost_1_33_1-gcc43.patch b/boost_1_33_1-gcc43.patch deleted file mode 100644 index cde85c4..0000000 --- a/boost_1_33_1-gcc43.patch +++ /dev/null @@ -1,113 +0,0 @@ ---- tools/wave/cpp.cpp.orig 2005-05-16 11:36:01.000000000 +0200 -+++ tools/wave/cpp.cpp 2006-05-11 16:14:31.000000000 +0200 -@@ -108,7 +108,7 @@ - - /////////////////////////////////////////////////////////////////////////////// - // forward declarations only --namespace cmd_line_utils -+namespace cmd_line_util - { - class include_paths; - } -@@ -116,7 +116,7 @@ - namespace boost { namespace program_options - { - void validate(boost::any &v, std::vector const &s, -- cmd_line_utils::include_paths *, int); -+ cmd_line_util::include_paths *, long); - }} // boost::program_options - - /////////////////////////////////////////////////////////////////////////////// -@@ -234,7 +234,7 @@ - namespace boost { namespace program_options { - - void validate(boost::any &v, std::vector const &s, -- cmd_line_util::include_paths *, int) -+ cmd_line_util::include_paths *, long) - { - cmd_line_util::include_paths::validate(v, s); - } ---- libs/wave/src/cpplexer/re2clex/aq.cpp.orig 2006-05-11 20:21:26.000000000 +0200 -+++ libs/wave/src/cpplexer/re2clex/aq.cpp 2006-05-11 20:21:33.000000000 +0200 -@@ -51,7 +51,7 @@ - if (q->tail <= q->head) /* tail has wrapped around */ - { - /* move the tail from the beginning to the end */ -- memcpy(q->queue + q->max_size, q->queue, -+ memmove(q->queue + q->max_size, q->queue, - (q->tail + 1) * sizeof(aq_stdelement)); - q->tail += q->max_size; - } ---- ./libs/regex/src/regex_raw_buffer.cpp.orig 2006-05-11 20:27:09.000000000 +0200 -+++ ./libs/regex/src/regex_raw_buffer.cpp 2006-05-11 20:27:17.000000000 +0200 -@@ -45,7 +45,7 @@ - // allocate and copy data: - register pointer ptr = static_cast(::operator new(newsize)); - BOOST_REGEX_NOEH_ASSERT(ptr) -- std::memcpy(ptr, start, datasize); -+ std::memmove(ptr, start, datasize); - - // get rid of old buffer: - ::operator delete(start); ---- ./boost/wave/util/flex_string.hpp.orig 2006-05-11 20:39:21.000000000 +0200 -+++ ./boost/wave/util/flex_string.hpp 2006-05-11 20:39:35.000000000 +0200 -@@ -123,7 +123,7 @@ - { - const std::size_t s = e - b; - using namespace std; -- memcpy(d, b, s * sizeof(*b)); -+ memmove(d, b, s * sizeof(*b)); - return d + s; - } - ---- libs/wave/src/cpplexer/re2clex/cpp_re.cpp.orig 2006-05-12 17:41:15.000000000 +0200 -+++ libs/wave/src/cpplexer/re2clex/cpp_re.cpp 2006-05-12 17:42:05.000000000 +0200 -@@ -187,7 +187,7 @@ - { - if (NULL == s->lim) - s->lim = s->top; -- memcpy(s->bot, s->tok, s->lim - s->tok); -+ memmove(s->bot, s->tok, s->lim - s->tok); - s->tok = s->bot; - s->ptr -= cnt; - cursor -= cnt; -@@ -211,7 +211,7 @@ - return cursor; - } - -- memcpy(buf, s->tok, s->lim - s->tok); -+ memmove(buf, s->tok, s->lim - s->tok); - s->tok = buf; - s->ptr = &buf[s->ptr - s->bot]; - cursor = &buf[cursor - s->bot]; -@@ -231,7 +231,7 @@ - cnt = s->last - s->act; - if (cnt > BSIZE) - cnt = BSIZE; -- memcpy(s->lim, s->act, cnt); -+ memmove(s->lim, s->act, cnt); - s->act += cnt; - if (cnt != BSIZE) - { ---- libs/wave/src/cpplexer/re2clex/cpp_re.cpp.orig 2006-05-15 13:29:00.000000000 +0200 -+++ libs/wave/src/cpplexer/re2clex/cpp_re.cpp 2006-05-15 13:31:59.000000000 +0200 -@@ -51,7 +50,7 @@ - #define YYCURSOR cursor - #define YYLIMIT limit - #define YYMARKER marker --#define YYFILL(n) {cursor = uchar_wrapper(fill(s, cursor), cursor.column);} -+#define YYFILL(n) {cursor = uchar_wrapper(fill(s, cursor), cursor.column); limit = uchar_wrapper (s->lim); } - - //#define RET(i) {s->cur = cursor; return (i);} - #define RET(i) \ - ---- boost/wave/util/flex_string.hpp.orig 2007-05-12 11:54:54.000000000 +0200 -+++ boost/wave/util/flex_string.hpp 2007-05-12 11:55:09.000000000 +0200 -@@ -83,6 +83,7 @@ - #include - #include - #include -+#include - - /////////////////////////////////////////////////////////////////////////////// - namespace boost { diff --git a/boost_1_33_1.tar.bz2 b/boost_1_33_1.tar.bz2 deleted file mode 100644 index cb40229..0000000 --- a/boost_1_33_1.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6232e93205acbc8c705f44f15977aae158550c99a384f41606cff26c16393be0 -size 11507161 diff --git a/boost_1_33_1_man.tar.bz2 b/boost_1_33_1_man.tar.bz2 new file mode 100644 index 0000000..d71fbb9 --- /dev/null +++ b/boost_1_33_1_man.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:800e67c4a489d54787eb91a5da56343b6f446cea2d36eb1f93c99ff019356f28 +size 78423 diff --git a/boost_1_34_1.tar.bz2 b/boost_1_34_1.tar.bz2 new file mode 100644 index 0000000..f84426e --- /dev/null +++ b/boost_1_34_1.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f866c75b025a4f1340117a106595cc0675f48ba1e5a9b5c221ec7f19e96ec4c +size 12986931 diff --git a/existing_extra_docs b/existing_extra_docs new file mode 100644 index 0000000..6e084fe --- /dev/null +++ b/existing_extra_docs @@ -0,0 +1,533 @@ +libs/algorithm/minmax/example/minmax_ex.cpp +libs/algorithm/minmax/example/minmax_timer.cpp +libs/assign/test/array.cpp +libs/assign/test/list_inserter.cpp +libs/assign/test/list_of.cpp +libs/assign/test/list_of_workaround.cpp +libs/assign/test/std.cpp +libs/bind/bind_as_compose.cpp +libs/bind/bind_visitor.cpp +libs/bind/test/bind_fastcall_mf_test.cpp +libs/bind/test/bind_fastcall_test.cpp +libs/bind/test/bind_stdcall_mf_test.cpp +libs/bind/test/bind_stdcall_test.cpp +libs/bind/test/bind_test.cpp +libs/bind/test/mem_fn_derived_test.cpp +libs/bind/test/mem_fn_fastcall_test.cpp +libs/bind/test/mem_fn_stdcall_test.cpp +libs/bind/test/mem_fn_test.cpp +libs/bind/test/mem_fn_void_test.cpp +libs/compatibility/generate_cpp_c_headers.py +libs/concept_check/bad_error_eg.cpp +libs/concept_check/stl_concept_check.cpp +libs/concept_check/stl_concept_covering.cpp +libs/config/test/limits_test.cpp +libs/config/tools/configure.in +libs/conversion/cast_test.cpp +libs/conversion/lexical_cast_test.cpp +libs/crc/crc_example.cpp +libs/crc/crc_test.cpp +libs/filesystem/build/Jamfile.v2 +libs/filesystem/example/simple_ls.cpp +libs/filesystem/test/fstream_test.cpp +libs/filesystem/test/operations_test.cpp +libs/filesystem/test/path_test.cpp +libs/filesystem/test/wide_test.cpp +libs/format/example/sample_advanced.cpp +libs/format/example/sample_formats.cpp +libs/format/example/sample_new_features.cpp +libs/format/example/sample_userType.cpp +libs/functional/function_test.cpp +libs/functional/hash/examples/books.cpp +libs/functional/hash/examples/point.cpp +libs/functional/hash/examples/portable.cpp +libs/function/test/allocator_test.cpp +libs/function/test/contains_test.cpp +libs/function/test/function_30.cpp +libs/function/test/function_arith_cxx98.cpp +libs/function/test/function_arith_portable.cpp +libs/function/test/function_n_test.cpp +libs/function/test/function_ref_cxx98.cpp +libs/function/test/function_ref_portable.cpp +libs/function/test/function_test.cpp +libs/function/test/function_test_fail1.cpp +libs/function/test/function_test_fail2.cpp +libs/function/test/lambda_test.cpp +libs/function/test/mem_fun_cxx98.cpp +libs/function/test/mem_fun_portable.cpp +libs/function/test/stateless_test.cpp +libs/function/test/std_bind_cxx98.cpp +libs/function/test/std_bind_portable.cpp +libs/function/test/sum_avg_cxx98.cpp +libs/function/test/sum_avg_portable.cpp +libs/graph/doc/iscope99.pdf +libs/graph/doc/isomorphism-impl.pdf +libs/graph/example/bfs.cpp +libs/graph/example/bfs-example2.cpp +libs/graph/example/bfs-example.cpp +libs/graph/example/biconnected_components.cpp +libs/graph/example/city_visitor.cpp +libs/graph/example/connected_components.cpp +libs/graph/example/csr-example.cpp +libs/graph/example/cuthill_mckee_ordering.cpp +libs/graph/example/dave.cpp +libs/graph/example/dfs-example.cpp +libs/graph/example/dfs_parenthesis.cpp +libs/graph/example/dijkstra-example.cpp +libs/graph/example/edmunds-karp-eg.cpp +libs/graph/example/family-tree-eg.cpp +libs/graph/example/file_dependencies.cpp +libs/graph/example/fr_layout.cpp +libs/graph/example/girth.cpp +libs/graph/example/graphviz.cpp +libs/graph/example/incremental_components.cpp +libs/graph/example/isomorphism.cpp +libs/graph/example/johnson-eg.cpp +libs/graph/example/kevin-bacon.cpp +libs/graph/example/king_ordering.cpp +libs/graph/example/kruskal-example.cpp +libs/graph/example/matching_example.cpp +libs/graph/example/max_flow.cpp +libs/graph/example/miles_span.cpp +libs/graph/example/minimum_degree_ordering.cpp +libs/graph/example/ordered_out_edges.cpp +libs/graph/example/quick_tour.cpp +libs/graph/example/reverse-graph-eg.cpp +libs/graph/example/roget_components.cpp +libs/graph/example/sloan_ordering.cpp +libs/graph/example/strong_components.cpp +libs/graph/example/transitive_closure.cpp +libs/graph/example/transpose-example.cpp +libs/graph/example/undirected.cpp +libs/graph/example/undirected_dfs.cpp +libs/graph/test/dominator_tree_test.cpp +libs/graph/test/graph.cpp +libs/integer/cstdint_test.cpp +libs/integer/integer_test.cpp +libs/integer/integer_traits_test.cpp +libs/integer/test/integer_mask_test.cpp +libs/integer/test/static_log2_test.cpp +libs/integer/test/static_min_max_test.cpp +libs/iostreams/doc/tree/tree.js +libs/iostreams/example/container_device.hpp +libs/iostreams/example/dictionary_filter.hpp +libs/iostreams/example/finite_state_filter.hpp +libs/iostreams/example/line_wrapping_filter.hpp +libs/iostreams/example/shell_comments_filter.hpp +libs/iostreams/example/tab_expanding_filter.hpp +libs/iostreams/example/unix2dos_filter.hpp +libs/iostreams/src/bzip2.cpp +libs/iostreams/src/file_descriptor.cpp +libs/iostreams/src/mapped_file.cpp +libs/iostreams/src/zlib.cpp +libs/iostreams/test/bzip2_test.cpp +libs/iostreams/test/file_descriptor_test.cpp +libs/iostreams/test/finite_state_filter_test.cpp +libs/iostreams/test/mapped_file_test.cpp +libs/iostreams/test/seekable_file_test.cpp +libs/io/test/ios_state_test.cpp +libs/iterator/doc/BidirectionalTraversal.rst +libs/iterator/doc/counting_iterator.pdf +libs/iterator/doc/counting_iterator.rst +libs/iterator/doc/facade-and-adaptor.pdf +libs/iterator/doc/facade-and-adaptor.rst +libs/iterator/doc/filter_iterator.pdf +libs/iterator/doc/filter_iterator.rst +libs/iterator/doc/ForwardTraversal.rst +libs/iterator/doc/function_output_iterator.pdf +libs/iterator/doc/function_output_iterator.rst +libs/iterator/doc/IncrementableIterator.rst +libs/iterator/doc/index.rst +libs/iterator/doc/indirect_iterator.pdf +libs/iterator/doc/indirect_iterator.rst +libs/iterator/doc/iterator_adaptor.pdf +libs/iterator/doc/iterator_adaptor.rst +libs/iterator/doc/iterator_archetypes.pdf +libs/iterator/doc/iterator_archetypes.rst +libs/iterator/doc/iterator_concepts.pdf +libs/iterator/doc/iterator_concepts.rst +libs/iterator/doc/iterator_facade.pdf +libs/iterator/doc/iterator_facade.rst +libs/iterator/doc/iterator_traits.pdf +libs/iterator/doc/iterator_traits.rst +libs/iterator/doc/LvalueIterator.rst +libs/iterator/doc/new-iter-concepts.pdf +libs/iterator/doc/new-iter-concepts.rst +libs/iterator/doc/permutation_iterator.pdf +libs/iterator/doc/permutation_iterator.rst +libs/iterator/doc/pointee.pdf +libs/iterator/doc/pointee.rst +libs/iterator/doc/RandomAccessTraversal.rst +libs/iterator/doc/ReadableIterator.rst +libs/iterator/doc/reverse_iterator.pdf +libs/iterator/doc/reverse_iterator.rst +libs/iterator/doc/SinglePassIterator.rst +libs/iterator/doc/SwappableIterator.rst +libs/iterator/doc/transform_iterator.pdf +libs/iterator/doc/transform_iterator.rst +libs/iterator/doc/WritableIterator.rst +libs/iterator/doc/zip_iterator.pdf +libs/iterator/doc/zip_iterator.rst +libs/iterator/example/counting_iterator_example.cpp +libs/iterator/example/filter_iterator_example.cpp +libs/iterator/example/indirect_iterator_example.cpp +libs/iterator/example/node_iterator1.cpp +libs/iterator/example/node_iterator2.cpp +libs/iterator/example/node_iterator2.hpp +libs/iterator/example/node_iterator3.cpp +libs/iterator/example/permutation_iter_example.cpp +libs/iterator/example/reverse_iterator_example.cpp +libs/iterator/example/transform_iterator_example.cpp +libs/logic/test/tribool_io_test.cpp +libs/logic/test/tribool_rename_test.cpp +libs/logic/test/tribool_test.cpp +libs/math/octonion/graphics/octonion_blurb17.jpeg +libs/math/octonion/octonion_test.cpp +libs/math/octonion/output_more.txt +libs/math/octonion/output.txt +libs/math/quaternion/HSO3.hpp +libs/math/quaternion/HSO3SO4.cpp +libs/math/quaternion/HSO4.hpp +libs/math/quaternion/output_more.txt +libs/math/quaternion/output.txt +libs/math/quaternion/quaternion_test.cpp +libs/math/quaternion/TQE_EA.pdf +libs/math/quaternion/TQE.pdf +libs/math/special_functions/graphics/special_functions_blurb15.jpeg +libs/math/special_functions/graphics/special_functions_blurb17.jpeg +libs/math/special_functions/graphics/special_functions_blurb18.jpeg +libs/math/special_functions/graphics/special_functions_blurb1.jpeg +libs/math/special_functions/graphics/special_functions_blurb20.jpeg +libs/math/special_functions/graphics/special_functions_blurb22.jpeg +libs/math/special_functions/graphics/special_functions_blurb5.jpeg +libs/math/special_functions/graphics/special_functions_blurb6.jpeg +libs/math/special_functions/graphics/special_functions_blurb7.jpeg +libs/math/special_functions/output_more.txt +libs/math/special_functions/output.txt +libs/math/special_functions/special_functions_test.cpp +libs/math/test/common_factor_test.cpp +libs/math/test/log1p_expm1_test.cpp +libs/mpl/doc/refmanual.pdf +libs/mpl/example/fsm/player1.cpp +libs/multi_array/test/access.cpp +libs/multi_array/test/assign.cpp +libs/multi_array/test/assign_to_array.cpp +libs/multi_array/test/compare.cpp +libs/multi_array/test/concept_checks.cpp +libs/multi_array/test/constructors.cpp +libs/multi_array/test/fail_cbracket.cpp +libs/multi_array/test/fail_cdata.cpp +libs/multi_array/test/fail_citerator.cpp +libs/multi_array/test/fail_cparen.cpp +libs/multi_array/test/fail_criterator.cpp +libs/multi_array/test/fail_csubarray2.cpp +libs/multi_array/test/fail_csubarray3.cpp +libs/multi_array/test/fail_csubarray.cpp +libs/multi_array/test/fail_cview2.cpp +libs/multi_array/test/fail_cview3.cpp +libs/multi_array/test/fail_cview.cpp +libs/multi_array/test/fail_ref_cbracket.cpp +libs/multi_array/test/fail_ref_cdata.cpp +libs/multi_array/test/fail_ref_citerator.cpp +libs/multi_array/test/fail_ref_cparen.cpp +libs/multi_array/test/fail_ref_criterator.cpp +libs/multi_array/test/fail_ref_csubarray2.cpp +libs/multi_array/test/fail_ref_csubarray3.cpp +libs/multi_array/test/fail_ref_csubarray.cpp +libs/multi_array/test/fail_ref_cview2.cpp +libs/multi_array/test/fail_ref_cview3.cpp +libs/multi_array/test/fail_ref_cview.cpp +libs/multi_array/test/generative_tests.hpp +libs/multi_array/test/idxgen1.cpp +libs/multi_array/test/index_bases.cpp +libs/multi_array/test/iterators.cpp +libs/multi_array/test/range1.cpp +libs/multi_array/test/reshape.cpp +libs/multi_array/test/resize.cpp +libs/multi_array/test/slice.cpp +libs/multi_array/test/stl_interaction.cpp +libs/multi_array/test/storage_order.cpp +libs/multi_index/example/basic.cpp +libs/multi_index/example/bimap.cpp +libs/multi_index/example/complex_structs.cpp +libs/multi_index/example/composite_keys.cpp +libs/multi_index/example/hashed.cpp +libs/multi_index/example/memfun_key.cpp +libs/multi_index/example/non_default_ctor.cpp +libs/multi_index/example/random_access.cpp +libs/multi_index/example/rearrange.cpp +libs/multi_index/example/sequenced.cpp +libs/multi_index/example/serialization.cpp +libs/multi_index/perf/test_perf.cpp +libs/multi_index/test/test_basic.cpp +libs/multi_index/test/test_capacity.cpp +libs/multi_index/test/test_comparison.cpp +libs/multi_index/test/test_composite_key.cpp +libs/multi_index/test/test_conv_iterators.cpp +libs/multi_index/test/test_copy_assignment.cpp +libs/multi_index/test/test_hash_ops.cpp +libs/multi_index/test/test_iterators.cpp +libs/multi_index/test/test_key_extractors.cpp +libs/multi_index/test/test_list_ops.cpp +libs/multi_index/test/test_modifiers.cpp +libs/multi_index/test/test_mpl_ops.cpp +libs/multi_index/test/test_observers.cpp +libs/multi_index/test/test_projection.cpp +libs/multi_index/test/test_range.cpp +libs/multi_index/test/test_rearrange.cpp +libs/multi_index/test/test_safe_mode.cpp +libs/multi_index/test/test_serialization1.cpp +libs/multi_index/test/test_serialization2.cpp +libs/multi_index/test/test_set_ops.cpp +libs/multi_index/test/test_special_set_ops.cpp +libs/multi_index/test/test_update.cpp +libs/preprocessor/doc/examples/array_arithmetic.c +libs/preprocessor/doc/examples/catch_builtin.cpp +libs/preprocessor/doc/examples/delay.c +libs/preprocessor/doc/examples/duffs_device.c +libs/preprocessor/doc/examples/is_integral.cpp +libs/preprocessor/doc/examples/linear_fib.c +libs/property_map/example1.cpp +libs/property_map/example3.cpp +libs/ptr_container/test/incomplete_type_test.cpp +libs/ptr_container/test/ptr_array.cpp +libs/ptr_container/test/simple_test.cpp +libs/ptr_container/test/tree_test.cpp +libs/ptr_container/test/view_example.cpp +libs/python/doc/building.rst +libs/python/doc/internals.rst +libs/python/doc/PyConDC_2003/bpl.pdf +libs/python/doc/v2/callbacks.txt +libs/python/example/quickstart/boost-build.jam +libs/python/example/quickstart/extending.cpp +libs/python/example/quickstart/Jamroot +libs/python/example/tutorial/Jamroot +libs/python/test/input_iterator.cpp +libs/python/test/iterator.cpp +libs/python/test/iterator.py +libs/python/test/map_indexing_suite.cpp +libs/python/test/map_indexing_suite.py +libs/python/test/pickle1.cpp +libs/python/test/pickle2.cpp +libs/python/test/pickle3.cpp +libs/python/test/pickle4.cpp +libs/python/test/vector_indexing_suite.cpp +libs/python/test/vector_indexing_suite.py +libs/random/nondet_random_speed.cpp +libs/random/random_demo.cpp +libs/random/random_speed.cpp +libs/random/random_test.cpp +libs/range/test/algorithm_example.cpp +libs/range/test/array.cpp +libs/range/test/iterator_pair.cpp +libs/range/test/iterator_range.cpp +libs/range/test/reversible_range.cpp +libs/range/test/std_container.cpp +libs/range/test/string.cpp +libs/range/test/sub_range.cpp +libs/rational/rational_example.cpp +libs/rational/rational_test.cpp +libs/regex/build/generic.mak +libs/regex/example/grep/grep.cpp +libs/regex/example/snippets/captures_example.cpp +libs/regex/example/snippets/credit_card_example.cpp +libs/regex/example/snippets/partial_regex_grep.cpp +libs/regex/example/snippets/partial_regex_match.cpp +libs/regex/example/snippets/regex_grep_example_1.cpp +libs/regex/example/snippets/regex_grep_example_2.cpp +libs/regex/example/snippets/regex_grep_example_3.cpp +libs/regex/example/snippets/regex_grep_example_4.cpp +libs/regex/example/snippets/regex_iterator_example.cpp +libs/regex/example/snippets/regex_match_example.cpp +libs/regex/example/snippets/regex_merge_example.cpp +libs/regex/example/snippets/regex_replace_example.cpp +libs/regex/example/snippets/regex_search_example.cpp +libs/regex/example/snippets/regex_split_example_1.cpp +libs/regex/example/snippets/regex_split_example_2.cpp +libs/regex/example/snippets/regex_token_iterator_eg_1.cpp +libs/regex/example/snippets/regex_token_iterator_eg_2.cpp +libs/regex/example/timer/regex_timer.cpp +libs/regex/test/captures/captures_test.cpp +libs/regex/test/concepts/concept_check.cpp +libs/regex/test/pathology/bad_expression_test.cpp +libs/regex/test/pathology/recursion_test.cpp +libs/regex/test/regress/basic_tests.cpp +libs/regex/test/regress/main.cpp +libs/regex/test/regress/test_deprecated.cpp +libs/serialization/example/demo_auto_ptr.cpp +libs/serialization/example/demo.cpp +libs/serialization/example/demo_exception.cpp +libs/serialization/example/demo_fast_archive.cpp +libs/serialization/example/demofile.txt +libs/serialization/example/demo_output.txt +libs/serialization/example/demo_pimpl_A.cpp +libs/serialization/example/demo_pimpl.cpp +libs/serialization/example/demo_polymorphic_A.cpp +libs/serialization/example/demo_polymorphic_A.hpp +libs/serialization/example/demo_polymorphic.cpp +libs/serialization/example/demo_portable_archive.cpp +libs/serialization/example/demo_save.xml +libs/serialization/example/demo_shared_ptr.cpp +libs/serialization/example/demo_xml.cpp +libs/serialization/example/demo_xml.hpp +libs/serialization/example/demo_xml_load.cpp +libs/serialization/example/demo_xml_save.cpp +libs/serialization/test/test_delete_pointer.cpp +libs/serialization/test/test_diamond.cpp +libs/serialization/test/test_no_rtti.cpp +libs/signals/example/doc_view.cpp +libs/signals/test/dead_slot_test.cpp +libs/signals/test/deletion_test.cpp +libs/signals/test/ordering_test.cpp +libs/signals/test/signal_n_test.cpp +libs/signals/test/signal_test.cpp +libs/signals/test/trackable_test.cpp +libs/smart_ptr/example/scoped_ptr_example.cpp +libs/smart_ptr/example/scoped_ptr_example.hpp +libs/smart_ptr/example/scoped_ptr_example_test.cpp +libs/smart_ptr/example/shared_ptr_example2.cpp +libs/smart_ptr/example/shared_ptr_example2.hpp +libs/smart_ptr/example/shared_ptr_example2_test.cpp +libs/smart_ptr/example/shared_ptr_example.cpp +libs/smart_ptr/smarttest.zip +libs/smart_ptr/test/pointer_cast_test.cpp +libs/smart_ptr/test/pointer_to_other_test.cpp +libs/smart_ptr/test/smart_ptr_test.cpp +libs/spirit/example/fundamental/ast_calc.cpp +libs/spirit/example/fundamental/bind.cpp +libs/spirit/example/fundamental/calc_debug.cpp +libs/spirit/example/fundamental/calc_plain.cpp +libs/spirit/example/fundamental/comments.cpp +libs/spirit/example/fundamental/distinct/distinct_parser.cpp +libs/spirit/example/fundamental/distinct/distinct_parser_dynamic.cpp +libs/spirit/example/fundamental/error_handling.cpp +libs/spirit/example/fundamental/file_parser.cpp +libs/spirit/example/fundamental/full_calc.cpp +libs/spirit/example/fundamental/functor_parser.cpp +libs/spirit/example/fundamental/list_parser.cpp +libs/spirit/example/fundamental/matching_tags.cpp +libs/spirit/example/fundamental/no_actions.cpp +libs/spirit/example/fundamental/number_list.cpp +libs/spirit/example/fundamental/parser_context.cpp +libs/spirit/example/fundamental/parse_tree_calc1.cpp +libs/spirit/example/fundamental/phoenix_calc.cpp +libs/spirit/example/fundamental/position_iterator/position_iterator.cpp +libs/spirit/example/fundamental/refactoring.cpp +libs/spirit/example/fundamental/regular_expression.cpp +libs/spirit/example/fundamental/roman_numerals.cpp +libs/spirit/example/fundamental/stuff_vector2.cpp +libs/spirit/example/fundamental/stuff_vector.cpp +libs/spirit/example/fundamental/subrule_calc.cpp +libs/spirit/example/fundamental/sum.cpp +libs/spirit/example/fundamental/thousand_separated.cpp +libs/spirit/example/intermediate/lazy_parser.cpp +libs/spirit/example/intermediate/parameters.cpp +libs/spirit/example/techniques/multiple_scanners.cpp +libs/spirit/example/techniques/nabialek.cpp +libs/spirit/example/techniques/no_rules/no_rule1.cpp +libs/spirit/example/techniques/no_rules/no_rule2.cpp +libs/spirit/example/techniques/no_rules/no_rule3.cpp +libs/spirit/example/techniques/typeof.cpp +libs/statechart/doc/rationale.pdf +libs/statechart/doc/reference.pdf +libs/statechart/doc/tutorial.pdf +libs/statechart/test/TuTest.cpp +libs/statechart/test/TuTest.hpp +libs/statechart/test/TuTestMain.cpp +libs/static_assert/static_assert_example_1.cpp +libs/static_assert/static_assert_example_2.cpp +libs/static_assert/static_assert_example_3.cpp +libs/static_assert/static_assert_test.cpp +libs/static_assert/static_assert_test_fail_1.cpp +libs/static_assert/static_assert_test_fail_2.cpp +libs/static_assert/static_assert_test_fail_3.cpp +libs/static_assert/static_assert_test_fail_4.cpp +libs/static_assert/static_assert_test_fail_5.cpp +libs/static_assert/static_assert_test_fail_6.cpp +libs/static_assert/static_assert_test_fail_7.cpp +libs/static_assert/static_assert_test_fail_8.cpp +libs/static_assert/static_assert_test_fail_9.cpp +libs/test/build/msvc71_proj/prg_exec_monitor_dll.vcproj +libs/test/build/msvc71_proj/prg_exec_monitor.vcproj +libs/test/build/msvc71_proj/unit_test_framework_dll.vcproj +libs/test/build/msvc71_proj/unit_test_framework.vcproj +libs/test/doc/tutorials/const_string.hpp +libs/test/doc/tutorials/const_string_test.cpp +libs/test/example/exec_mon_example.cpp +libs/test/example/prg_exec_example.cpp +libs/test/example/test_case_template_example.cpp +libs/test/example/unit_test_example_01.cpp +libs/test/example/unit_test_example_02.cpp +libs/test/example/unit_test_example_03.cpp +libs/test/example/unit_test_example_04.cpp +libs/test/example/unit_test_example_05.cpp +libs/test/src/compiler_log_formatter.cpp +libs/test/src/cpp_main.cpp +libs/test/src/exception_safety.cpp +libs/test/src/execution_monitor.cpp +libs/test/src/framework.cpp +libs/test/src/interaction_based.cpp +libs/test/src/logged_expectations.cpp +libs/test/src/plain_report_formatter.cpp +libs/test/src/progress_monitor.cpp +libs/test/src/results_collector.cpp +libs/test/src/results_reporter.cpp +libs/test/src/test_tools.cpp +libs/test/src/unit_test_log.cpp +libs/test/src/unit_test_main.cpp +libs/test/src/unit_test_monitor.cpp +libs/test/src/unit_test_parameters.cpp +libs/test/src/unit_test_suite.cpp +libs/test/src/xml_log_formatter.cpp +libs/test/src/xml_report_formatter.cpp +libs/test/test/custom_exception_test.cpp +libs/test/test/errors_handling_test.cpp +libs/test/test/minimal_test.cpp +libs/test/test/online_test.cpp +libs/test/test/output_test_stream_test.cpp +libs/test/test/parameterized_test_test.cpp +libs/test/test/prg_exec_fail1.cpp +libs/test/test/prg_exec_fail2.cpp +libs/test/test/prg_exec_fail3.cpp +libs/test/test/prg_exec_fail4.cpp +libs/test/test/result_report_test.cpp +libs/test/test/test_case_template_test.cpp +libs/test/test/test_files/errors_handling_test.pattern +libs/test/test/test_files/result_report_test.pattern +libs/test/test/test_fp_comparisons.cpp +libs/test/test/test_tools_test.cpp +libs/timer/timer_test.cpp +libs/type_traits/examples/copy_example.cpp +libs/type_traits/examples/fill_example.cpp +libs/type_traits/examples/iter_swap_example.cpp +libs/type_traits/examples/trivial_destructor_example.cpp +libs/utility/addressof_test.cpp +libs/utility/base_from_member_test.cpp +libs/utility/call_traits_test.cpp +libs/utility/iterators_test.cpp +libs/utility/noncopyable_test.cpp +libs/utility/operators_test.cpp +libs/utility/shared_iterator_example1.cpp +libs/utility/shared_iterator_example2.cpp +libs/utility/shared_iterator_example3.cpp +libs/wave/ChangeLog +LICENSE_1_0.txt +more/blanket-permission.txt +more/favicon.ico +more/lib_guide.htm +more/proposal.pdf +tools/build/v2/doc/userman.pdf +tools/build/v2/hacking.txt +tools/inspect/build/Jamfile.v2 +tools/inspect/inspect.cpp +tools/inspect/inspector.hpp +tools/inspect/link_check.cpp +tools/inspect/link_check.hpp +tools/inspect/long_name_check.cpp +tools/inspect/long_name_check.hpp +tools/inspect/tab_check.cpp +tools/inspect/tab_check.hpp +tools/quickbook/doc/quickbook.qbk +tools/regression/build/Jamfile.v2 +tools/regression/compiler_status.cpp +tools/regression/process_jam_log.cpp diff --git a/sp-counted-base-gcc-ppc.diff b/sp-counted-base-gcc-ppc.diff deleted file mode 100644 index 4f2bf3f..0000000 --- a/sp-counted-base-gcc-ppc.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- - boost/detail/sp_counted_base_gcc_ppc.hpp | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -Index: boost_1_33_1/boost/detail/sp_counted_base_gcc_ppc.hpp -=================================================================== ---- boost_1_33_1.orig/boost/detail/sp_counted_base_gcc_ppc.hpp 2005-08-24 19:15:49.000000000 +0200 -+++ boost_1_33_1/boost/detail/sp_counted_base_gcc_ppc.hpp 2008-01-16 02:09:40.000000000 +0100 -@@ -46,7 +46,7 @@ inline void atomic_increment( int * pw ) - "stwcx. %1, 0, %2\n\t" - "bne- 0b": - -- "=m"( *pw ), "=&b"( tmp ): -+ "+m"( *pw ), "=&b"( tmp ): - "r"( pw ): - "cc" - ); -@@ -68,9 +68,9 @@ inline int atomic_decrement( int * pw ) - "bne- 0b\n\t" - "isync": - -- "=m"( *pw ), "=&b"( rv ): -+ "+m"( *pw ), "=&b"( rv ): - "r"( pw ): -- "memory", "cc" -+ "cc" - ); - - return rv; -@@ -94,7 +94,7 @@ inline int atomic_conditional_increment( - "stwcx. %1, 0, %2\n\t" - "bne- 0b": - -- "=m"( *pw ), "=&b"( rv ): -+ "+m"( *pw ), "=&b"( rv ): - "r"( pw ): - "cc" - );