From d68a5e3f1717f5b7ea78e5dcc2e35a76f292667a Mon Sep 17 00:00:00 2001 From: Heinz Wiesinger Date: Tue, 11 May 2010 22:22:23 +0200 Subject: development/boost: Updated for version 1.36.0 --- development/boost/README | 4 +- .../boost/boost-1_34_1-function-bugfix.diff | 704 --------------------- development/boost/boost.SlackBuild | 58 +- development/boost/boost.info | 10 +- development/boost/patches/changeset_r48141.diff | 31 + development/boost/patches/changeset_r48192.diff | 36 ++ development/boost/patches/changeset_r48374.diff | 18 + development/boost/patches/changeset_r48377.diff | 337 ++++++++++ development/boost/patches/changeset_r48462.diff | 16 + 9 files changed, 482 insertions(+), 732 deletions(-) delete mode 100644 development/boost/boost-1_34_1-function-bugfix.diff create mode 100644 development/boost/patches/changeset_r48141.diff create mode 100644 development/boost/patches/changeset_r48192.diff create mode 100644 development/boost/patches/changeset_r48374.diff create mode 100644 development/boost/patches/changeset_r48377.diff create mode 100644 development/boost/patches/changeset_r48462.diff (limited to 'development') diff --git a/development/boost/README b/development/boost/README index 34d6af4c6d..a940c5faab 100644 --- a/development/boost/README +++ b/development/boost/README @@ -4,5 +4,5 @@ Library. One goal is to establish "existing practice" and provide reference implementations so that the Boost libraries are suitable for eventual standardization. -If you do not want to build with icu4c support, than you'll need -to pass ICU="NO" to the build-script. +If you want to build with icu4c support, than you'll need +to pass ICU="YES" to the build-script. diff --git a/development/boost/boost-1_34_1-function-bugfix.diff b/development/boost/boost-1_34_1-function-bugfix.diff deleted file mode 100644 index 200e6c79fc..0000000000 --- a/development/boost/boost-1_34_1-function-bugfix.diff +++ /dev/null @@ -1,704 +0,0 @@ -diff -U 3 -H -d -r -N -- boost_1_34_1/boost/function/function_base.hpp boost_1_34_1-patched/boost/function/function_base.hpp ---- boost_1_34_1/boost/function/function_base.hpp 2006-10-13 16:29:45.000000000 +0200 -+++ boost_1_34_1-patched/boost/function/function_base.hpp 2007-12-22 10:21:10.000000000 +0100 -@@ -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 -diff -U 3 -H -d -r -N -- boost_1_34_1/boost/function/function_template.hpp boost_1_34_1-patched/boost/function/function_template.hpp ---- boost_1_34_1/boost/function/function_template.hpp 2006-09-29 19:23:28.000000000 +0200 -+++ boost_1_34_1-patched/boost/function/function_template.hpp 2007-12-21 10:03:05.000000000 +0100 -@@ -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/development/boost/boost.SlackBuild b/development/boost/boost.SlackBuild index 0bfd537a99..cc6604d06d 100644 --- a/development/boost/boost.SlackBuild +++ b/development/boost/boost.SlackBuild @@ -3,7 +3,7 @@ # Slackware build script for boost # Copyright 2007-2008 Eric Hameleers -# Copyright 2007 Heinz Wiesinger +# Copyright 2007-2008 Heinz Wiesinger # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -29,22 +29,25 @@ # -- no additional license terms and no copyright PRGNAM=boost -VERSION=1_34_1 +VERSION=1_36_0 ARCH=${ARCH:-i486} -BUILD=${BUILD:-3} +BUILD=${BUILD:-2} TAG=${TAG:-_SBo} + CWD=$(pwd) TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} -ICU=${ICU:-YES} +ICU=${ICU:-no} PKG_VERSION=$(echo $VERSION | tr '_' '.') # Leave this alone if [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" fi set -e @@ -62,20 +65,23 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; -if [ "$ICU" = "YES" ]; then - do_icu="-sICU_PATH=/usr" +# Apply Hotfixes from http://svn.boost.org/trac/boost/wiki/ReleasePractices/HotFixes +patch -p2 -i $CWD/patches/changeset_r48141.diff +patch -p2 -i $CWD/patches/changeset_r48192.diff +patch -p2 -i $CWD/patches/changeset_r48374.diff +patch -p2 -i $CWD/patches/changeset_r48377.diff +patch -p2 -i $CWD/patches/changeset_r48462.diff + +if [ "$ICU" = "no" ]; then + ICU_FLAGS="" else - do_icu="" + ICU_FLAGS="-sICU_PATH=/usr" fi # This is the python we build against: PYTHON_VERSION=$(python -c 'import sys; print sys.version[:3]') PYTHON_FLAGS="-sPYTHON_ROOT=/usr -sPYTHON_VERSION=$PYTHON_VERSION" -# This fixes a critical bug that affects the construction of Boost.Function -# objects in a multi-threaded context. -patch -p1 < $CWD/boost-1_34_1-function-bugfix.diff - # First build bjam, the boost build system: cd tools/jam/src CFLAGS="$SLKCFLAGS -fno-strict-aliasing" CC=gcc ./build.sh cc @@ -83,46 +89,56 @@ cd - BJAM=$(find tools/jam/src/ -name bjam -a -type f) +# Change the build options from 'minimal' to what we want +FLAGS="multi single speed full" + +sed -i "s/ multi/ $FLAGS/" Jamroot + +# disable static libraries +sed -i "s/shared static/shared/" Jamroot + # Create build subdirectory mkdir obj # Next, we build boost using bjam -$BJAM \ + $BJAM \ release \ - "-sBUILD=speed full single/multi" \ "-sNO_COMPRESSION=0" \ "-sZLIB_INCLUDE=/usr/include" \ "-sZLIB_LIBPATH=/usr/lib" \ "-sBZIP2_INCLUDE=/usr/include" \ "-sBZIP2_LIBPATH=/usr/lib" \ + "-sEXPAT_INCLUDE=/usr/include" \ + "-sEXPAT_LIBPATH=/usr/lib" \ --toolset=gcc \ --layout=system \ --builddir=obj \ --prefix=/usr \ + --build-type=minimal \ $PYTHON_FLAGS \ - $do_icu \ - stage + $ICU_FLAGS # And then install boost.. mkdir -p $PKG/usr/{lib,include} $BJAM \ release \ + "-sEXPAT_INCLUDE=/usr/include" \ + "-sEXPAT_LIBPATH=/usr/lib" \ --toolset=gcc \ --layout=system \ --builddir=obj \ --prefix=$PKG/usr \ + --build-type=minimal \ $PYTHON_FLAGS \ - $do_icu \ + $ICU_FLAGS \ install -( cd $PKG - find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null - find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null -) +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true mkdir -p $PKG/usr/doc/$PRGNAM-$PKG_VERSION -cp -a LICENSE_1_0.txt README $PKG/usr/doc/$PRGNAM-$PKG_VERSION +cp -a LICENSE_1_0.txt INSTALL $PKG/usr/doc/$PRGNAM-$PKG_VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$PKG_VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install diff --git a/development/boost/boost.info b/development/boost/boost.info index 1d739be417..3f24282c4a 100644 --- a/development/boost/boost.info +++ b/development/boost/boost.info @@ -1,8 +1,8 @@ PRGNAM="boost" -VERSION="1.34.1" +VERSION="1.36.0" HOMEPAGE="http://www.boost.org/" -DOWNLOAD="http://downloads.sourceforge.net/boost/boost_1_34_1.tar.bz2" -MD5SUM="2d938467e8a448a2c9763e0a9f8ca7e5" +DOWNLOAD="http://downloads.sourceforge.net/boost/boost_1_36_0.tar.bz2" +MD5SUM="328bfec66c312150e4c2a78dcecb504b" MAINTAINER="ppr:kut" -EMAIL="HMWiesinger@gmx.at" -APPROVED="rworkman,alien" +EMAIL="pprkut@liwjatan.at" +APPROVED="rworkman" diff --git a/development/boost/patches/changeset_r48141.diff b/development/boost/patches/changeset_r48141.diff new file mode 100644 index 0000000000..06ce73995e --- /dev/null +++ b/development/boost/patches/changeset_r48141.diff @@ -0,0 +1,31 @@ +Index: /trunk/boost/xpressive/detail/utility/hash_peek_bitset.hpp +=================================================================== +--- /trunk/boost/xpressive/detail/utility/hash_peek_bitset.hpp (revision 43799) ++++ /trunk/boost/xpressive/detail/utility/hash_peek_bitset.hpp (revision 48141) +@@ -105,5 +105,8 @@ + void set_bitset(hash_peek_bitset const &that) + { +- this->bset_ |= that.bset_; ++ if(this->test_icase_(that.icase())) ++ { ++ this->bset_ |= that.bset_; ++ } + } + +Index: /trunk/libs/xpressive/test/regress.txt +=================================================================== +--- /trunk/libs/xpressive/test/regress.txt (revision 47901) ++++ /trunk/libs/xpressive/test/regress.txt (revision 48141) +@@ -3739,2 +3739,12 @@ + br0=c + [end] ++ ++[nocasealternate] ++str=common HighLight and Blow this ++pat=highlight|blow ++flg=ig ++sub=$& ++res=common HighLight and Blow this ++br0=HighLight ++br1=Blow ++[end] diff --git a/development/boost/patches/changeset_r48192.diff b/development/boost/patches/changeset_r48192.diff new file mode 100644 index 0000000000..fc76a94bb6 --- /dev/null +++ b/development/boost/patches/changeset_r48192.diff @@ -0,0 +1,36 @@ +Index: /trunk/boost/filesystem/operations.hpp +=================================================================== +--- /trunk/boost/filesystem/operations.hpp (revision 47181) ++++ /trunk/boost/filesystem/operations.hpp (revision 48192) +@@ -1021,10 +1021,16 @@ + void replace_filename( const string_type & s, + file_status st, file_status symlink_st ) +- { +- m_path.remove_filename(); +- m_path /= s; +- m_status = st; +- m_symlink_status = symlink_st; +- } ++ { ++ m_path.remove_filename(); ++ m_path /= s; ++ m_status = st; ++ m_symlink_status = symlink_st; ++ } ++ ++# ifndef BOOST_FILESYSTEM_NO_DEPRECATED ++ void replace_leaf( const string_type & s, ++ file_status st, file_status symlink_st ) ++ { replace_filename( s, st, symlink_st ); } ++# endif + + const Path & path() const { return m_path; } +@@ -1040,4 +1046,8 @@ + // deprecated functions preserve common use cases in legacy code + typename Path::string_type filename() const ++ { ++ return path().filename(); ++ } ++ typename Path::string_type leaf() const + { + return path().filename(); diff --git a/development/boost/patches/changeset_r48374.diff b/development/boost/patches/changeset_r48374.diff new file mode 100644 index 0000000000..9d6122118b --- /dev/null +++ b/development/boost/patches/changeset_r48374.diff @@ -0,0 +1,18 @@ +Index: /trunk/boost/filesystem/path.hpp +=================================================================== +--- /trunk/boost/filesystem/path.hpp (revision 47923) ++++ /trunk/boost/filesystem/path.hpp (revision 48374) +@@ -230,4 +230,6 @@ + string_type leaf() const { return filename(); } + basic_path branch_path() const { return parent_path(); } ++ bool has_leaf() const { return !m_path.empty(); } ++ bool has_branch_path() const { return !parent_path().empty(); } + # endif + +@@ -238,5 +240,5 @@ + bool has_root_directory() const; + bool has_relative_path() const { return !relative_path().empty(); } +- bool has_filename() const { return !m_path.empty(); } ++ bool has_filename() const { return !m_path.empty(); } + bool has_parent_path() const { return !parent_path().empty(); } + diff --git a/development/boost/patches/changeset_r48377.diff b/development/boost/patches/changeset_r48377.diff new file mode 100644 index 0000000000..621d216dc4 --- /dev/null +++ b/development/boost/patches/changeset_r48377.diff @@ -0,0 +1,337 @@ +Index: /trunk/boost/filesystem/operations.hpp +=================================================================== +--- /trunk/boost/filesystem/operations.hpp (revision 48192) ++++ /trunk/boost/filesystem/operations.hpp (revision 48377) +@@ -122,8 +122,4 @@ + namespace detail + { +- // singular object used only as a tag; thus initialization and +- // thread-safety are not issues +- BOOST_FILESYSTEM_DECL extern system::error_code throws; +- + typedef std::pair< system::error_code, bool > + query_pair; +@@ -235,5 +231,8 @@ + + template +- unsigned long remove_all_aux( const Path & ph ); ++ bool remove_aux( const Path & ph, file_status f ); ++ ++ template ++ unsigned long remove_all_aux( const Path & ph, file_status f ); + + } // namespace detail +@@ -475,17 +474,22 @@ + } + +- BOOST_FS_FUNC(void) remove( const Path & ph, system::error_code & ec = detail::throws ) +- { +- system::error_code error( detail::remove_api(ph.external_file_string()) ); +- if ( error && &ec == &detail::throws ) +- boost::throw_exception( basic_filesystem_error( +- "boost::filesystem::remove", ph, error ) ); +- ec = error; ++ BOOST_FS_FUNC(bool) remove( const Path & ph ) ++ { ++ system::error_code ec; ++ file_status f = symlink_status( ph, ec ); ++ if ( ec ) ++ boost::throw_exception( basic_filesystem_error( ++ "boost::filesystem::remove", ph, ec ) ); ++ return detail::remove_aux( ph, f ); + } + + BOOST_FS_FUNC(unsigned long) remove_all( const Path & ph ) + { +- return exists( ph )|| is_symlink( ph ) +- ? detail::remove_all_aux( ph ) : 0; ++ system::error_code ec; ++ file_status f = symlink_status( ph, ec ); ++ if ( ec ) ++ boost::throw_exception( basic_filesystem_error( ++ "boost::filesystem::remove_all", ph, ec ) ); ++ return exists( f ) ? detail::remove_all_aux( ph, f ) : 0; + } + +@@ -713,6 +717,8 @@ + { return create_symlink( to_ph, from_ph, ec ); } + +- inline void remove( const path & ph ) { remove( ph ); } +- inline void remove( const wpath & ph ) { remove( ph ); } ++ inline bool remove( const path & ph ) ++ { return remove( ph ); } ++ inline bool remove( const wpath & ph ) ++ { return remove( ph ); } + + inline unsigned long remove_all( const path & ph ) +@@ -763,18 +769,37 @@ + { + template +- unsigned long remove_all_aux( const Path & ph ) ++ bool remove_aux( const Path & ph, file_status f ) ++ { ++ if ( exists( f ) ) ++ { ++ system::error_code ec = remove_api( ph.external_file_string() ); ++ if ( ec ) ++ boost::throw_exception( basic_filesystem_error( ++ "boost::filesystem::remove", ph, ec ) ); ++ return true; ++ } ++ return false; ++ } ++ ++ template ++ unsigned long remove_all_aux( const Path & ph, file_status f ) + { + static const boost::filesystem::basic_directory_iterator end_itr; + unsigned long count = 1; +- if ( !boost::filesystem::is_symlink( ph ) // don't recurse symbolic links +- && boost::filesystem::is_directory( ph ) ) ++ if ( !boost::filesystem::is_symlink( f ) // don't recurse symbolic links ++ && boost::filesystem::is_directory( f ) ) + { + for ( boost::filesystem::basic_directory_iterator itr( ph ); + itr != end_itr; ++itr ) + { +- count += remove_all_aux( itr->path() ); ++ boost::system::error_code ec; ++ boost::filesystem::file_status fn = boost::filesystem::symlink_status( itr->path(), ec ); ++ if ( ec ) ++ boost::throw_exception( basic_filesystem_error( ++ "boost::filesystem:remove_all", ph, ec ) ); ++ count += remove_all_aux( itr->path(), fn ); + } + } +- boost::filesystem::remove( ph ); ++ remove_aux( ph, f ); + return count; + } +Index: /trunk/libs/filesystem/test/operations_test.cpp +=================================================================== +--- /trunk/libs/filesystem/test/operations_test.cpp (revision 47181) ++++ /trunk/libs/filesystem/test/operations_test.cpp (revision 48377) +@@ -777,8 +777,8 @@ + BOOST_CHECK( fs::exists( file_ph ) ); + BOOST_CHECK( !fs::is_directory( file_ph ) ); +- fs::remove( file_ph ); ++ BOOST_CHECK( fs::remove( file_ph ) ); + BOOST_CHECK( !fs::exists( file_ph ) ); +- fs::remove( "no-such-file" ); +- fs::remove( "no-such-directory/no-such-file" ); ++ BOOST_CHECK( !fs::remove( "no-such-file" ) ); ++ BOOST_CHECK( !fs::remove( "no-such-directory/no-such-file" ) ); + + // remove() directory +@@ -791,5 +791,5 @@ + bad_remove_dir = dir; + BOOST_CHECK( CHECK_EXCEPTION( bad_remove, ENOTEMPTY ) ); +- fs::remove( d1 ); ++ BOOST_CHECK( fs::remove( d1 ) ); + BOOST_CHECK( !fs::exists( d1 ) ); + +@@ -798,5 +798,5 @@ + // remove() dangling symbolic link + fs::path link( "dangling_link" ); +- fs::remove( link ); ++ fs::remove( link ); // remove any residue from past tests + BOOST_CHECK( !fs::is_symlink( link ) ); + BOOST_CHECK( !fs::exists( link ) ); +@@ -804,14 +804,14 @@ + BOOST_CHECK( !fs::exists( link ) ); + BOOST_CHECK( fs::is_symlink( link ) ); +- fs::remove( link ); ++ BOOST_CHECK( fs::remove( link ) ); + BOOST_CHECK( !fs::is_symlink( link ) ); + + // remove() self-refering symbolic link + link = "link_to_self"; +- fs::remove( link ); ++ fs::remove( link ); // remove any residue from past tests + BOOST_CHECK( !fs::is_symlink( link ) ); + BOOST_CHECK( !fs::exists( link ) ); + fs::create_symlink( link, link ); +- fs::remove( link ); ++ BOOST_CHECK( fs::remove( link ) ); + BOOST_CHECK( !fs::exists( link ) ); + BOOST_CHECK( !fs::is_symlink( link ) ); +@@ -820,12 +820,12 @@ + link = "link_to_a"; + fs::path link2( "link_to_b" ); +- fs::remove( link ); +- fs::remove( link2 ); ++ fs::remove( link ); // remove any residue from past tests ++ fs::remove( link2 ); // remove any residue from past tests + BOOST_CHECK( !fs::is_symlink( link ) ); + BOOST_CHECK( !fs::exists( link ) ); + fs::create_symlink( link, link2 ); + fs::create_symlink( link2, link ); +- fs::remove( link ); +- fs::remove( link2 ); ++ BOOST_CHECK( fs::remove( link ) ); ++ BOOST_CHECK( fs::remove( link2 ) ); + BOOST_CHECK( !fs::exists( link ) ); + BOOST_CHECK( !fs::exists( link2 ) ); +@@ -834,5 +834,5 @@ + // remove() symbolic link to file + file_ph = "link_target"; +- fs::remove( file_ph ); ++ fs::remove( file_ph ); // remove any residue from past tests + BOOST_CHECK( !fs::exists( file_ph ) ); + create_file( file_ph, "" ); +@@ -846,9 +846,9 @@ + BOOST_CHECK( fs::is_regular_file( link ) ); + BOOST_CHECK( fs::is_symlink( link ) ); +- fs::remove( link ); ++ BOOST_CHECK( fs::remove( link ) ); + BOOST_CHECK( fs::exists( file_ph ) ); + BOOST_CHECK( !fs::exists( link ) ); + BOOST_CHECK( !fs::is_symlink( link ) ); +- fs::remove( file_ph ); ++ BOOST_CHECK( fs::remove( file_ph ) ); + BOOST_CHECK( !fs::exists( file_ph ) ); + } +Index: /trunk/libs/filesystem/test/msvc/fstream_test/fstream_test.vcproj +=================================================================== +--- /trunk/libs/filesystem/test/msvc/fstream_test/fstream_test.vcproj (revision 46750) ++++ /trunk/libs/filesystem/test/msvc/fstream_test/fstream_test.vcproj (revision 48377) +@@ -87,5 +87,5 @@ + +@@ -164,4 +164,6 @@ + + +Index: /trunk/libs/filesystem/test/msvc/operations_test/operations_test.vcproj +=================================================================== +--- /trunk/libs/filesystem/test/msvc/operations_test/operations_test.vcproj (revision 46750) ++++ /trunk/libs/filesystem/test/msvc/operations_test/operations_test.vcproj (revision 48377) +@@ -87,5 +87,5 @@ + +@@ -164,4 +164,6 @@ + + +Index: /trunk/libs/filesystem/test/msvc/large_file_support_test/large_file_support_test.vcproj +=================================================================== +--- /trunk/libs/filesystem/test/msvc/large_file_support_test/large_file_support_test.vcproj (revision 46750) ++++ /trunk/libs/filesystem/test/msvc/large_file_support_test/large_file_support_test.vcproj (revision 48377) +@@ -87,5 +87,5 @@ + +@@ -164,4 +164,6 @@ + + +Index: /trunk/libs/filesystem/test/msvc/simple_ls/simple_ls.vcproj +=================================================================== +--- /trunk/libs/filesystem/test/msvc/simple_ls/simple_ls.vcproj (revision 46750) ++++ /trunk/libs/filesystem/test/msvc/simple_ls/simple_ls.vcproj (revision 48377) +@@ -87,4 +87,6 @@ + + +@@ -162,4 +164,6 @@ + + +Index: /trunk/libs/filesystem/test/msvc/wide_test/wide_test.vcproj +=================================================================== +--- /trunk/libs/filesystem/test/msvc/wide_test/wide_test.vcproj (revision 46750) ++++ /trunk/libs/filesystem/test/msvc/wide_test/wide_test.vcproj (revision 48377) +@@ -87,5 +87,5 @@ + +@@ -164,4 +164,6 @@ + + +Index: /trunk/libs/filesystem/test/msvc/mbcopy/mbcopy.vcproj +=================================================================== +--- /trunk/libs/filesystem/test/msvc/mbcopy/mbcopy.vcproj (revision 46750) ++++ /trunk/libs/filesystem/test/msvc/mbcopy/mbcopy.vcproj (revision 48377) +@@ -87,4 +87,6 @@ + + +@@ -162,4 +164,6 @@ + + +Index: /trunk/libs/filesystem/test/msvc/convenience_test/convenience_test.vcproj +=================================================================== +--- /trunk/libs/filesystem/test/msvc/convenience_test/convenience_test.vcproj (revision 46750) ++++ /trunk/libs/filesystem/test/msvc/convenience_test/convenience_test.vcproj (revision 48377) +@@ -87,5 +87,5 @@ + +@@ -164,4 +164,6 @@ + + +Index: /trunk/libs/filesystem/test/msvc/path_test/path_test.vcproj +=================================================================== +--- /trunk/libs/filesystem/test/msvc/path_test/path_test.vcproj (revision 46750) ++++ /trunk/libs/filesystem/test/msvc/path_test/path_test.vcproj (revision 48377) +@@ -87,5 +87,5 @@ + +@@ -164,4 +164,6 @@ + + diff --git a/development/boost/patches/changeset_r48462.diff b/development/boost/patches/changeset_r48462.diff new file mode 100644 index 0000000000..5cd2302fff --- /dev/null +++ b/development/boost/patches/changeset_r48462.diff @@ -0,0 +1,16 @@ +Index: /trunk/boost/filesystem/convenience.hpp +=================================================================== +--- /trunk/boost/filesystem/convenience.hpp (revision 47181) ++++ /trunk/boost/filesystem/convenience.hpp (revision 48462) +@@ -95,4 +95,5 @@ + { return create_directories(ph); } + ++# ifndef BOOST_FILESYSTEM_NO_DEPRECATED + inline std::string extension(const path& ph) + { return extension(ph); } +@@ -109,4 +110,5 @@ + inline wpath change_extension( const wpath & ph, const std::wstring& new_ex ) + { return change_extension( ph, new_ex ); } ++# endif + + # endif -- cgit v1.2.3