summaryrefslogtreecommitdiff
path: root/development/boost
diff options
context:
space:
mode:
authorHeinz Wiesinger <pprkut@liwjatan.at>2010-05-11 22:22:23 +0200
committerRobby Workman <rworkman@slackbuilds.org>2010-05-11 22:22:23 +0200
commitd68a5e3f1717f5b7ea78e5dcc2e35a76f292667a (patch)
treeb0040a26b328fea8e6aa5a6534980eb58c42d925 /development/boost
parentdd32db5be824aec1e73297baacb077b016b29177 (diff)
downloadslackbuilds-d68a5e3f1717f5b7ea78e5dcc2e35a76f292667a.tar.gz
development/boost: Updated for version 1.36.0
Diffstat (limited to 'development/boost')
-rw-r--r--development/boost/README4
-rw-r--r--development/boost/boost-1_34_1-function-bugfix.diff704
-rw-r--r--development/boost/boost.SlackBuild58
-rw-r--r--development/boost/boost.info10
-rw-r--r--development/boost/patches/changeset_r48141.diff31
-rw-r--r--development/boost/patches/changeset_r48192.diff36
-rw-r--r--development/boost/patches/changeset_r48374.diff18
-rw-r--r--development/boost/patches/changeset_r48377.diff337
-rw-r--r--development/boost/patches/changeset_r48462.diff16
9 files changed, 482 insertions, 732 deletions
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 <memory>
- #include <new>
- #include <typeinfo>
-+#include <functional> // unary_function, binary_function
- #include <boost/config.hpp>
- #include <boost/assert.hpp>
- #include <boost/type_traits/is_integral.hpp>
-@@ -30,6 +31,20 @@
- #endif
- #include <boost/function_equal.hpp>
-
-+#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<const std::type_info*>(out_buffer.const_obj_ptr);
-+ const BOOST_FUNCTION_STD_NS::type_info& check_type =
-+ *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(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<const std::type_info*>(out_buffer.const_obj_ptr);
-+ const BOOST_FUNCTION_STD_NS::type_info& check_type =
-+ *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(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<functor_type*>(&out_buffer.data)->~Functor();
- } else /* op == check_functor_type_tag */ {
-- const std::type_info& check_type =
-- *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
-+ const BOOST_FUNCTION_STD_NS::type_info& check_type =
-+ *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(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<const std::type_info*>(out_buffer.const_obj_ptr);
-+ const BOOST_FUNCTION_STD_NS::type_info& check_type =
-+ *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(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<functor_type>::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<const std::type_info*>(type.const_obj_ptr);
-+ return *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(type.const_obj_ptr);
- }
-
- template<typename Functor>
-@@ -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 <boost/function/detail/prologue.hpp>
-
-+#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<MemberPtr*>(&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<MemberPtr*>(&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<R>::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<typename Tag>
-+ struct BOOST_FUNCTION_GET_INVOKER { };
-+
-+ /* Retrieve the invoker for a function pointer. */
-+ template<>
-+ struct BOOST_FUNCTION_GET_INVOKER<function_ptr_tag>
-+ {
-+ template<typename FunctionPtr,
-+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
-+ typename Allocator>
-+ struct apply
-+ {
-+ typedef typename BOOST_FUNCTION_GET_FUNCTION_INVOKER<
-+ FunctionPtr,
-+ R BOOST_FUNCTION_COMMA
-+ BOOST_FUNCTION_TEMPLATE_ARGS
-+ >::type
-+ invoker_type;
-+
-+ typedef functor_manager<FunctionPtr, Allocator> manager_type;
-+ };
-+ };
-+
-+#if BOOST_FUNCTION_NUM_ARGS > 0
-+ /* Retrieve the invoker for a member pointer. */
-+ template<>
-+ struct BOOST_FUNCTION_GET_INVOKER<member_ptr_tag>
-+ {
-+ template<typename MemberPtr,
-+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
-+ typename Allocator>
-+ struct apply
-+ {
-+ typedef typename BOOST_FUNCTION_GET_MEMBER_INVOKER<
-+ MemberPtr,
-+ R BOOST_FUNCTION_COMMA
-+ BOOST_FUNCTION_TEMPLATE_ARGS
-+ >::type
-+ invoker_type;
-+
-+ typedef functor_manager<MemberPtr, Allocator> manager_type;
-+ };
-+ };
-+#endif
-+
-+ /* Retrieve the invoker for a function object. */
-+ template<>
-+ struct BOOST_FUNCTION_GET_INVOKER<function_obj_tag>
-+ {
-+ template<typename FunctionObj,
-+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
-+ typename Allocator>
-+ 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<FunctionObj, Allocator> manager_type;
-+ };
-+ };
-+
-+ /* Retrieve the invoker for a reference to a function object. */
-+ template<>
-+ struct BOOST_FUNCTION_GET_INVOKER<function_obj_ref_tag>
-+ {
-+ template<typename RefWrapper,
-+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
-+ typename Allocator>
-+ 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<typename RefWrapper::type> manager_type;
-+ };
-+ };
-+
- /**
- * vtable for a specific boost::function instance.
- */
- template<typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
- typename Allocator>
-- 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<typename F>
-- BOOST_FUNCTION_VTABLE(F f) : vtable_base(), invoker(0)
-- {
-- init(f);
-- }
--
-- template<typename F>
-- bool assign_to(F f, function_buffer& functor)
-+ bool assign_to(const F& f, function_buffer& functor) const
- {
- typedef typename get_function_tag<F>::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<typename F>
-- void init(F f)
-- {
-- typedef typename get_function_tag<F>::type tag;
-- init(f, tag());
-- }
--
-+#endif
- // Function pointers
- template<typename FunctionPtr>
-- 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<FunctionPtr, Allocator>::manage;
-- }
--
-- template<typename FunctionPtr>
- 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<typename MemberPtr>
-- 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<typename MemberPtr>
-- 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<typename FunctionObj>
-- 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<FunctionObj, Allocator>::manage;
-- }
--
- // Assign to a function object using the small object optimization
- template<typename FunctionObj>
- 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<typename FunctionObj>
- 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<FunctionObj>::other
-@@ -400,7 +513,8 @@
-
- template<typename FunctionObj>
- 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<typename FunctionObj>
-- void
-- init(const reference_wrapper<FunctionObj>& /*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<FunctionObj>::get;
-- }
--
-- template<typename FunctionObj>
- bool
- assign_to(const reference_wrapper<FunctionObj>& 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<T0,R>
-+
-+#elif BOOST_FUNCTION_NUM_ARGS == 2
-+
-+ , public std::binary_function<T0,T1,R>
-+
-+#endif
-+
- {
- public:
- #ifndef BOOST_NO_VOID_RETURNS
-@@ -537,7 +648,7 @@
- if (this->empty())
- boost::throw_exception(bad_function_call());
-
-- return static_cast<vtable_type*>(vtable)->invoker
-+ return reinterpret_cast<const vtable_type*>(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_type*>(vtable)->clear(this->functor);
-+ reinterpret_cast<const vtable_type*>(vtable)->clear(this->functor);
- vtable = 0;
- }
- }
-@@ -650,10 +769,24 @@
- }
-
- template<typename Functor>
-- 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<Functor>::type tag;
-+ typedef detail::function::BOOST_FUNCTION_GET_INVOKER<tag> get_invoker;
-+ typedef typename get_invoker::
-+ template apply<Functor, R BOOST_FUNCTION_COMMA
-+ BOOST_FUNCTION_TEMPLATE_ARGS, Allocator>
-+ 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_type*>(vtable)->invoker
-+ return reinterpret_cast<const vtable_type*>(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 <alien@slackware.com>
-# Copyright 2007 Heinz Wiesinger
+# Copyright 2007-2008 Heinz Wiesinger <pprkut@liwjatan.at>
# 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="<threading>multi <threading>single <optimization>speed <inlining>full"
+
+sed -i "s/ <threading>multi/ $FLAGS/" Jamroot
+
+# disable static libraries
+sed -i "s/<link>shared <link>static/<link>shared/" Jamroot
+
# Create build subdirectory
mkdir obj
# Next, we build boost using bjam
-$BJAM \
+ $BJAM \
release \
- "-sBUILD=<optimization>speed <inlining>full <threading>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<Char> 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=<b>$&</b>
++res=common <b>HighLight</b> and <b>Blow</b> 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<class Path>
+- unsigned long remove_all_aux( const Path & ph );
++ bool remove_aux( const Path & ph, file_status f );
++
++ template<class Path>
++ 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<Path>(
+- "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<Path>(
++ "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<Path>(
++ "boost::filesystem::remove_all", ph, ec ) );
++ return exists( f ) ? detail::remove_all_aux( ph, f ) : 0;
+ }
+
+@@ -713,6 +717,8 @@
+ { return create_symlink<wpath>( to_ph, from_ph, ec ); }
+
+- inline void remove( const path & ph ) { remove<path>( ph ); }
+- inline void remove( const wpath & ph ) { remove<wpath>( ph ); }
++ inline bool remove( const path & ph )
++ { return remove<path>( ph ); }
++ inline bool remove( const wpath & ph )
++ { return remove<wpath>( ph ); }
+
+ inline unsigned long remove_all( const path & ph )
+@@ -763,18 +769,37 @@
+ {
+ template<class Path>
+- 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<Path>(
++ "boost::filesystem::remove", ph, ec ) );
++ return true;
++ }
++ return false;
++ }
++
++ template<class Path>
++ unsigned long remove_all_aux( const Path & ph, file_status f )
+ {
+ static const boost::filesystem::basic_directory_iterator<Path> 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<Path> 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<Path>(
++ "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 @@
+ <Tool
+ Name="VCPostBuildEventTool"
+- Description="Auto test run"
++ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+@@ -164,4 +164,6 @@
+ <Tool
+ Name="VCPostBuildEventTool"
++ Description="run test"
++ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+ </Configuration>
+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 @@
+ <Tool
+ Name="VCPostBuildEventTool"
+- Description="Auto test run"
++ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+@@ -164,4 +164,6 @@
+ <Tool
+ Name="VCPostBuildEventTool"
++ Description="run test"
++ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+ </Configuration>
+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 @@
+ <Tool
+ Name="VCPostBuildEventTool"
+- Description="Auto test run"
++ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+@@ -164,4 +164,6 @@
+ <Tool
+ Name="VCPostBuildEventTool"
++ Description="run test"
++ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+ </Configuration>
+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 @@
+ <Tool
+ Name="VCPostBuildEventTool"
++ Description=""
++ CommandLine=""
+ />
+ </Configuration>
+@@ -162,4 +164,6 @@
+ <Tool
+ Name="VCPostBuildEventTool"
++ Description=""
++ CommandLine=""
+ />
+ </Configuration>
+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 @@
+ <Tool
+ Name="VCPostBuildEventTool"
+- Description="Auto test run"
++ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+@@ -164,4 +164,6 @@
+ <Tool
+ Name="VCPostBuildEventTool"
++ Description="run test"
++ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+ </Configuration>
+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 @@
+ <Tool
+ Name="VCPostBuildEventTool"
++ Description="run test"
++ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+ </Configuration>
+@@ -162,4 +164,6 @@
+ <Tool
+ Name="VCPostBuildEventTool"
++ Description="run test"
++ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+ </Configuration>
+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 @@
+ <Tool
+ Name="VCPostBuildEventTool"
+- Description="Auto test run"
++ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+@@ -164,4 +164,6 @@
+ <Tool
+ Name="VCPostBuildEventTool"
++ Description="run test"
++ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+ </Configuration>
+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 @@
+ <Tool
+ Name="VCPostBuildEventTool"
+- Description="Auto test run"
++ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+@@ -164,4 +164,6 @@
+ <Tool
+ Name="VCPostBuildEventTool"
++ Description="run test"
++ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
+ />
+ </Configuration>
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<wpath>(ph); }
+
++# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ inline std::string extension(const path& ph)
+ { return extension<path>(ph); }
+@@ -109,4 +110,5 @@
+ inline wpath change_extension( const wpath & ph, const std::wstring& new_ex )
+ { return change_extension<wpath>( ph, new_ex ); }
++# endif
+
+ # endif