OBS User unknown 2008-10-11 22:56:50 +00:00 committed by Git OBS Bridge
parent 81cef8cd36
commit b2c100b632
20 changed files with 601 additions and 965 deletions

2
README Normal file
View File

@ -0,0 +1,2 @@
This package is only needed for updating from an older version of
openSUSE.

View File

@ -1,702 +0,0 @@
--- boost/function/function_base.hpp
+++ boost/function/function_base.hpp
@@ -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
--- boost/function/function_template.hpp
+++ boost/function/function_template.hpp
@@ -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

View File

@ -1,46 +0,0 @@
--- 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<re_alt*>(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)(?(?<a", perl);
+
+ TEST_INVALID_REGEX("(?(?!#?)+)", perl);
+ TEST_INVALID_REGEX("(?(?=:-){0})", perl);
+ TEST_INVALID_REGEX("(?(123){1})", perl);
+ TEST_INVALID_REGEX("(?(?<=A)*)", perl);
+ TEST_INVALID_REGEX("(?(?<=A)+)", perl);
+
+ TEST_INVALID_REGEX("(?<!*|^)", perl);
+ TEST_INVALID_REGEX("(?<!*|A)", perl);
+ TEST_INVALID_REGEX("(?<=?|A)", perl);
+ TEST_INVALID_REGEX("(?<=*|\\B)", perl);
}

View File

@ -1,43 +0,0 @@
--- 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)

View File

@ -1,14 +1,3 @@
--- 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.</p>
<p>See
- <a href="file:///C|/boost/site/libs/filesystem/doc/operations.htm#complete_note">
+ <a href="file://operations.htm#complete_note">
<i>complete()</i> note</a> for usage suggestions. <i>-- end note</i>]</p>
</blockquote>
<pre>errno_type <a name="to_errno">to_errno</a>( system_error_type code );</pre>
--- libs/test/doc/components/prg_exec_monitor/compilation.html
+++ libs/test/doc/components/prg_exec_monitor/compilation.html
@@ -42,13 +42,13 @@

View File

@ -1,11 +0,0 @@
--- libs/bind/bind.html
+++ libs/bind/bind.html
@@ -341,7 +341,7 @@
{
public:
- <A href="../function/index.html" >boost::function</A>&lt;void&gt; onClick;
+ <A href="../function/index.html" >boost::function</A>&lt;void()&gt; onClick;
};
class player

View File

@ -85,6 +85,16 @@
#include <boost/spirit/phoenix/actor.hpp>
#include <boost/spirit/phoenix/composite.hpp>
#include <boost/config.hpp>
--- boost/spirit/tree/impl/tree_to_xml.ipp
+++ boost/spirit/tree/impl/tree_to_xml.ipp
@@ -13,6 +13,7 @@
#include <cstdio>
#include <cstdarg>
+#include <cstring>
#include <locale>
#include <map>
--- boost/test/test_tools.hpp
+++ boost/test/test_tools.hpp
@@ -45,6 +45,8 @@

View File

@ -1,38 +0,0 @@
--- 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 <climits> // UINT_MAX
#include <cstddef> // std::size_t
#include <boost/config.hpp>
@@ -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 <climits> // UINT_MAX
#include <cstddef> // size_t
#include <string>
@@ -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

View File

@ -1,11 +1,11 @@
--- boost/iostreams/filter/regex.hpp
+++ boost/iostreams/filter/regex.hpp
@@ -57,7 +57,7 @@
@@ -58,7 +58,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
- const Ch* suffix = 0;
+ const Ch* suffix = &src[0];
for (; first != last; ++first) {
dest.insert( dest.end(),
first->prefix().first,

View File

@ -1,11 +0,0 @@
--- 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;

View File

@ -9,15 +9,15 @@
BUILD=""
PREFIX=/usr/local
EPREFIX=
@@ -318,6 +318,7 @@
@@ -339,6 +339,7 @@
cat > Makefile <<EOF
BJAM=$BJAM
BJAM_CONFIG=$BJAM_CONFIG
+BJAM_TARGET=$BJAM_TARGET
PREFIX=$PREFIX
EPREFIX=$EPREFIX
LIBDIR=$LIBDIR
@@ -325,9 +326,9 @@
prefix=$PREFIX
exec_prefix=$EPREFIX
libdir=$LIBDIR
@@ -346,9 +347,9 @@
LIBS=$LIBS
all: .dummy

View File

@ -1,6 +1,6 @@
--- boost/detail/sp_counted_base_gcc_ppc.hpp
+++ boost/detail/sp_counted_base_gcc_ppc.hpp
@@ -41,14 +41,13 @@ inline void atomic_increment( int * pw )
@@ -41,14 +41,13 @@
__asm__
(
"0:\n\t"
@ -19,7 +19,7 @@
);
}
@@ -62,14 +61,13 @@ inline int atomic_decrement( int * pw )
@@ -62,14 +61,13 @@
(
"sync\n\t"
"0:\n\t"
@ -37,7 +37,7 @@
"memory", "cc"
);
@@ -86,17 +84,16 @@ inline int atomic_conditional_increment(
@@ -86,17 +84,16 @@
__asm__
(
"0:\n\t"

View File

@ -1,11 +0,0 @@
--- boost/python/detail/def_helper.hpp
+++ boost/python/detail/def_helper.hpp
@@ -155,7 +155,7 @@
, T3 const&
, T4 const&
, default_call_policies
- , keywords<0>
+ , detail::keywords<0>
, char const*
, void(not_specified::*)() // A function pointer type which is never an
// appropriate default implementation

View File

@ -1,13 +0,0 @@
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<CharT> string_type;
typedef CharT char_type;
typedef boost::date_time::period_parser<date_type, CharT> period_parser_type;
- typedef special_values_parser<date_type,CharT> special_values_parser_type;
+ typedef boost::date_time::special_values_parser<date_type,CharT> special_values_parser_type;
typedef std::vector<std::basic_string<CharT> > input_collection_type;
typedef format_date_parser<date_type, CharT> format_date_parser_type;
// date_generators stuff goes here

View File

@ -1,11 +1,11 @@
--- tools/build/v2/tools/gcc.jam
+++ tools/build/v2/tools/gcc.jam
@@ -677,7 +677,7 @@
@@ -770,7 +770,7 @@
}
case * :
{
- flags gcc OPTIONS <threading>multi : -pthread ;
+ flags gcc OPTIONS <threading>multi : -pthread -D_REENTRANT ;
flags gcc FINDLIBS-SA <threading>multi : rt ;
flags gcc FINDLIBS-SA : rt ;
}
}

View File

@ -1,38 +1,58 @@
--- tools/build/v2/tools/builtin.jam
+++ tools/build/v2/tools/builtin.jam
@@ -91,7 +91,7 @@
feature runtime-debugging : on off : propagated ;
@@ -83,17 +83,17 @@
feature.set-default target-os : [ default-host-os ] ;
-feature optimization : off speed space : propagated ;
+feature optimization : off speed space rpm : propagated ;
feature profiling : off on : propagated ;
feature inlining : off on full : propagated ;
-feature.feature toolset : : implicit propagated symmetric ;
-feature.feature stdlib : native : propagated composite ;
-feature.feature link : shared static : propagated ;
-feature.feature runtime-link : shared static : propagated ;
-feature.feature runtime-debugging : on off : propagated ;
-feature.feature optimization : off speed space : propagated ;
-feature.feature profiling : off on : propagated ;
-feature.feature inlining : off on full : propagated ;
-feature.feature threading : single multi : propagated ;
-feature.feature rtti : on off : propagated ;
-feature.feature exception-handling : on off : propagated ;
+feature.feature toolset : : implicit propagated symmetric ;
+feature.feature stdlib : native : propagated composite ;
+feature.feature link : shared static : propagated ;
+feature.feature runtime-link : shared static : propagated ;
+feature.feature runtime-debugging : on off : propagated ;
+feature.feature optimization : off speed space rpm : propagated ;
+feature.feature profiling : off on : propagated ;
+feature.feature inlining : off on full : propagated ;
+feature.feature threading : single multi : propagated ;
+feature.feature rtti : on off : propagated ;
+feature.feature exception-handling : on off : 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 : <optimization>speed <debug-symbols>off <inlining>full
# Whether there is support for asynchronous EH (e.g. catching SEGVs).
feature.feature asynch-exceptions : off on : propagated ;
@@ -101,7 +101,7 @@
# Whether all extern "C" functions are considered nothrow by default.
feature.feature extern-c-nothrow : off on : propagated ;
-feature.feature debug-symbols : on off : propagated ;
+feature.feature debug-symbols : on off rpm : propagated ;
feature.feature define : : free ;
feature.feature undef : : free ;
feature.feature "include" : : free path ; #order-sensitive ;
@@ -342,6 +342,7 @@
variant release : <optimization>speed <debug-symbols>off <inlining>full
<runtime-debugging>off <define>NDEBUG ;
variant profile : release : <profiling>on <debug-symbols>on ;
+variant rpm : <optimization>rpm <debug-symbols>rpm <inlining>full <runtime-debugging>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 <optimization>off : -O0 ;
@@ -290,6 +290,7 @@
flags gcc.compile OPTIONS <optimization>off : -O0 ;
flags gcc.compile OPTIONS <optimization>speed : -O3 ;
flags gcc.compile OPTIONS <optimization>space : -Os ;
+flags gcc.compile OPTIONS <optimization>rpm : "$RPM_OPT_FLAGS" ;
flags gcc.compile OPTIONS <inlining>off : -fno-inline ;
flags gcc.compile OPTIONS <inlining>on : -Wno-inline ;
flags gcc.compile OPTIONS <inlining>off : -fno-inline ;
flags gcc.compile OPTIONS <inlining>on : -Wno-inline ;

View File

@ -1,3 +1,114 @@
-------------------------------------------------------------------
Tue Sep 2 12:14:27 CEST 2008 - pth@suse.de
- Split off runtime libraries into their own packages.
- Update to 1.36.0:
New Libraries
* Accumulators: Framework for incremental calculation, and
collection of statistical accumulators.
* Exception: A library for transporting of arbitrary data in
exception objects, and transporting of exceptions
between threads.
* Units: Zero-overhead dimensional analysis and unit/quantity
manipulation and conversion.
* Unordered: Unordered associative containers.
Updated Libraries
* Asio:
o Added support for serial ports.
o Added support for UNIX domain sockets.
o Added support for raw sockets and ICMP.
o Added wrappers for POSIX stream-oriented file descriptors
(excluding regular files).
o Added support for reactor-style operations using a new
null_buffers type.
o Added an iterator type for bytewise traversal of buffer
sequences.
o Added new read_until() and async_read_until() overloads that
take a user-defined function object for locating message
boundaries.
o Added an experimental two-lock queue (enabled by defining
BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE) that may provide better
io_service scalability across many processors.
o Various fixes, performance improvements, and more complete
coverage of the custom memory allocation support.
* Assign:list_of() (and its variants) now has overloaded comparison
operators. This allows you to write test code such as
BOOST_CHECK_EQUAL(my_container,list_of(2)(3)(4)(5));.
* Foreach:BOOST_FOREACH macro for easily iterating over the elements
of a sequence.
o New BOOST_REVERSE_FOREACH macro for iterating over a sequence
in reverse.
* Function:
o Improved allocator support.
* Hash: Minor updates and fixes, for more info see the change log.
* Interprocess:
o Added anonymous shared memory for UNIX systems.
o Fixed missing move semantics on managed memory classes.
o Added copy_on_write and open_read_only options for shared
memory and mapped file managed classes.
o shared_ptr is movable and supports aliasing.
* Intrusive:
o Added linear<> and cache_last<> options to singly linked lists.
o Added optimize_multikey<> option to unordered container hooks.
o Optimized unordered containers when store_hash option is used
in the hook.
o Implementation changed to avoid explicit use of try-catch
blocks and be compilable with exceptions disabled.
* Math:
o Added new non-central Chi-Square, Beta, F and T distributions.
o Added Exponential Integral and Zeta special functions.
o Added Rounding, Truncation, and Unit-in-the-last-place
functions.
o Added support for compile time powers of a runtime base.
o Added a few SSE2 based optimisations for the Lanczos
approximations.
* MPI:
o Added support for non-blocking operations in Python
o Added support for graph topologies.
* Multi-index Containers: Minor additions and maintenance fixes.
Consult the library release notes for
further information.
* PtrContainer: Support for a few more containers, and addition
of insert iterators. For details see upgrading
details.
* Spirit: Integrated the "Classic" Spirit V1.8.x code base with
Spirit V2, "The New Generation". See Change Log.
* Thread:
o New generic lock and try_lock functions for locking multiple
mutexes at once.
o Rvalue reference support for move semantics where the
compilers supports it.
o A few bugs fixed and missing functions added (including
the serious win32 condition variable bug).
o scoped_try_lock types are now backwards-compatible with
Boost 1.34.0 and previous releases.
o Support for passing function arguments to the thread
function by supplying additional arguments to the thread
constructor.
o Backwards-compatibility overloads added for timed_lock and
timed_wait functions to allow use of xtime for timeouts.
* Wave:
o Wave V2.0 is a new major release introducing some breaking
API changes, preventing it to be used with Boost versions
earlier than V1.36.0. Mainly, the API and hook interface
have been streamlined for more consistency.
o Fixed a couple of bugs, improved regression test system to
include testing of the preporcessing hooks interface
(for details see: Changelog).
* Xpressive:
o 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.
o skip() for specifying which parts of the input sequence
to ignore when matching it against a regex.
o regex_replace() accepts formatter objects and formatter
expressions in addition to format strings.
o Range-based regex_replace() algorithm.
o Fix crash when semantic actions are placed in look-aheads,
look-behinds or independent sub-expressions.
-------------------------------------------------------------------
Mon Jun 23 14:32:35 CEST 2008 - pth@suse.de

View File

@ -1,10 +1,17 @@
#
# spec file for package boost (Version 1.34.1)
# spec file for package boost (Version 1.36.0)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
@ -12,10 +19,11 @@
Name: boost
%define file_version 1_34_1
%define file_version 1_36_0
%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
BuildRequires: boost-jam >= 3.1.16 dos2unix gcc-c++ libbz2-devel libicu-devel python-devel xorg-x11-devel
BuildRequires: libexpat-devel openmpi-devel
%if 0%suse_version > 1020
BuildRequires: fdupes
%endif
@ -24,12 +32,13 @@ License: BSD 3-Clause
Group: Development/Libraries/C and C++
Summary: Boost C++ Libraries
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Version: 1.34.1
Release: 45
Version: 1.36.0
Release: 2
Source0: %{name}_%{file_version}.tar.bz2
Source1: boost-rpmlintrc
Source2: boost_%{man_file_version}_man.tar.bz2
Source3: existing_extra_docs
Source4: README
Patch0: boost-threading.patch
Patch1: boost-thread.patch
Patch2: boost-no_type_punning.patch
@ -38,18 +47,19 @@ 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
Patch17: boost-ppc-asm.patch
Patch18: boost-qualify_keywords.patch
Requires: libboost_date_time2
Requires: libboost_filesystem2
Requires: libboost_iostreams2
Requires: libboost_test2
Requires: libboost_program_options2
Requires: libboost_python2
Requires: libboost_regex2
Requires: libboost_serialization2
Requires: libboost_signals2
Requires: libboost_thread2
Requires: boost-license
%define _prefix /usr
%description
@ -65,13 +75,14 @@ Although Boost was begun by members of the C++ Standards Committee
Library Working Group, membership has expanded to include nearly two
thousand members of the C++ community at large.
This package contains the dynamic libraries. For development using
Boost, you also need the boost-devel package. For documentation, see
the boost-doc package.
This package is mainly needed for updating from a prior version, the
dynamic libraries are found in their respective packge. For development
using Boost, you also need the boost-devel package. For documentation,
see the boost-doc package.
%package devel
%package devel
License: BSD 3-Clause
Summary: Development package for Boost C++
Group: Development/Libraries/C and C++
@ -85,11 +96,22 @@ the package boost-doc.
%package license
License: BSD 3-Clause
Summary: Boost License
Group: Development/Libraries/C and C++
AutoReqProv: on
%description license
This package contains the license boost is provided under.
%package doc
License: BSD 3-Clause
Summary: Documentation for the Boost C++ Libraries
Group: Development/Libraries/C and C++
Requires: %{name}-devel = %{version}
Requires: %{name}-license = %{version}
AutoReqProv: on
%description doc
@ -97,6 +119,186 @@ This package contains documentation about the boost dynamic libraries.
%package -n libboost_date_time2
License: BSD 3-Clause
Summary: Boost::Date.Time Runtime libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_date_time2
This package contains the Boost Date.Time runtime libraries.
%package -n libboost_filesystem2
License: BSD 3-Clause
Summary: Boost::Filesystem Runtime Libraries
Group: System/Localization
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_filesystem2
This package contains the Boost::Filesystem libraries.
%package -n libboost_graph2
License: BSD 3-Clause
Summary: Boost::Graph Runtime Libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_graph2
This package contains the Boost::Graph Runtime libraries.
%package -n libboost_iostreams2
License: BSD 3-Clause
Summary: Boost::IOStreams Runtime Libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_iostreams2
This package contains the Boost::IOStreams Runtime libraries.
%package -n libboost_math2
License: BSD 3-Clause
Summary: Boost::Math Runtime Libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_math2
This package contains the Boost::Math Runtime libraries.
%package -n libboost_mpi2
License: BSD 3-Clause
Summary: Boost::MPI Runtime libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_mpi2
This package contains the Boost::MPI Runtime libraries.
%package -n libboost_test2
License: BSD 3-Clause
Summary: Boost::Test Runtime Libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_test2
This package contains the Boost::Test runtime libraries.
%package -n libboost_program_options2
License: BSD 3-Clause
Summary: Boost::ProgramOptions Runtime libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_program_options2
This package contains the Boost::ProgramOptions Runtime libraries.
%package -n libboost_python2
License: BSD 3-Clause
Summary: Boost::Python Runtime Libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_python2
This package contains the Boost::Python Runtime libraries.
%package -n libboost_serialization2
License: BSD 3-Clause
Summary: Boost::Serialization Runtime Libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_serialization2
This package contains the Boost::Serialization Runtime libraries.
%package -n libboost_signals2
License: BSD 3-Clause
Summary: Boost::Signals Runtime Libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_signals2
This package contains the Boost::Signals Runtime libraries.
%package -n libboost_system2
License: BSD 3-Clause
Summary: Boost::System Runtime Libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_system2
This package contains the Boost::System runtime libraries.
%package -n libboost_thread2
License: BSD 3-Clause
Summary: Boost::Thread Runtime Libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_thread2
This package contains the Boost::Thread runtime libraries.
%package -n libboost_wave2
License: BSD 3-Clause
Summary: Boost::Wave Runtime Libraries
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_wave2
This package contains the Boost::Wave runtime libraries.
%package -n libboost_regex2
License: BSD 3-Clause
Summary: The Boost::Regex runtime library
Group: System/Libraries
Requires: %{name}-license = %{version}
AutoReqProv: on
%description -n libboost_regex2
This package contains the Boost::Regex runtime library.
%prep
%setup -q -n %{name}_%{file_version} -a 2
find -name .cvsignore -exec rm -f {} +
@ -107,19 +309,8 @@ find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl \) -exec chmod -x {}
%patch2
%patch4
%patch5
%patch6
%patch7
%patch8
%patch9
%patch10
%patch11
%patch12
%patch13
%patch14
%patch15
%patch16
%patch17
%patch18
chmod +x configure
#stupid build machinery copies .orig files
find . -name \*.orig -exec rm {} +
@ -132,9 +323,10 @@ BUILD_FLAGS="--with-toolset=gcc --prefix=%{buildroot}/usr --libdir=%{buildroot}%
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"
export EXPAT_INCLUDE=/usr/include EXPAT_LIBPATH=%{_libdir}
BJAM_CONFIG="%bjam_config" ./configure $BUILD_FLAGS $PYTHON_FLAGS $REGEX_FLAGS
echo "using mpi ;" >> user-config.jam
#export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-deprecated"
make all
%install
@ -183,12 +375,11 @@ 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 -
find . -name \*.htm\* -o -name \*.gif -o -name \*.css -o -name \*.jpg -o -name \*.png -o -name \*.ico | tar --files-from=%{S:3} -cf - --files-from=- | 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
@ -205,9 +396,90 @@ find %{buildroot}%{_docdir}/boost-%{version} -name \*.py -exec chmod -x {} +
%files
%defattr(-, root, root, -)
%doc LICENSE_1_0.txt README
%{_libdir}/*.so.%{version}
%{_libdir}/*.so.2
%doc README
%files license
%defattr(-, root, root, -)
%doc LICENSE_1_0.txt
%files -n libboost_date_time2
%defattr(-, root, root, -)
%{_libdir}/libboost_date_time*.so.%{version}
%{_libdir}/libboost_date_time*.so.2
%files -n libboost_filesystem2
%defattr(-, root, root, -)
%{_libdir}/libboost_filesystem*.so.%{version}
%{_libdir}/libboost_filesystem*.so.2
%files -n libboost_graph2
%defattr(-, root, root, -)
%{_libdir}/libboost_graph*.so.%{version}
%{_libdir}/libboost_graph*.so.2
%files -n libboost_iostreams2
%defattr(-, root, root, -)
%{_libdir}/libboost_iostreams*.so.%{version}
%{_libdir}/libboost_iostreams*.so.2
%files -n libboost_math2
%defattr(-, root, root, -)
%{_libdir}/libboost_math_*.so.%{version}
%{_libdir}/libboost_math*.so.2
%files -n libboost_mpi2
%defattr(-, root, root, -)
%{_libdir}/libboost_mpi*.so.%{version}
%{_libdir}/libboost_mpi*.so.2
%{_libdir}/mpi*.so.%{version}
%{_libdir}/mpi*.so.2
%files -n libboost_test2
%defattr(-, root, root, -)
%{_libdir}/libboost_prg_exec_monitor*.so.%{version}
%{_libdir}/libboost_prg_exec_monitor*.so.2
%{_libdir}/libboost_unit_test_framework*.so.%{version}
%{_libdir}/libboost_unit_test_framework*.so.2
%files -n libboost_program_options2
%defattr(-, root, root, -)
%{_libdir}/libboost_program_options*.so.%{version}
%{_libdir}/libboost_program_options*.so.2
%files -n libboost_python2
%defattr(-, root, root, -)
%{_libdir}/libboost_python*.so.%{version}
%{_libdir}/libboost_python*.so.2
%files -n libboost_serialization2
%defattr(-, root, root, -)
%{_libdir}/libboost_*serialization*.so.%{version}
%{_libdir}/libboost_*serialization*.so.2
%files -n libboost_signals2
%defattr(-, root, root, -)
%{_libdir}/libboost_signals*.so.%{version}
%{_libdir}/libboost_signals*.so.2
%files -n libboost_system2
%defattr(-, root, root, -)
%{_libdir}/libboost_system*.so.%{version}
%{_libdir}/libboost_system*.so.2
%files -n libboost_thread2
%defattr(-, root, root, -)
%{_libdir}/libboost_thread*.so.%{version}
%{_libdir}/libboost_thread*.so.2
%files -n libboost_wave2
%defattr(-, root, root, -)
%{_libdir}/libboost_wave*.so.%{version}
%{_libdir}/libboost_wave*.so.2
%files -n libboost_regex2
%defattr(-, root, root, -)
%{_libdir}/libboost_regex*.so.%{version}
%{_libdir}/libboost_regex*.so.2
%files devel
%defattr(-, root, root, -)
@ -222,6 +494,113 @@ find %{buildroot}%{_docdir}/boost-%{version} -name \*.py -exec chmod -x {} +
%doc %{_mandir}/man7/*.7.gz
%changelog
* Tue Sep 02 2008 pth@suse.de
- Split off runtime libraries into their own packages.
- Update to 1.36.0:
New Libraries
* Accumulators: Framework for incremental calculation, and
collection of statistical accumulators.
* Exception: A library for transporting of arbitrary data in
exception objects, and transporting of exceptions
between threads.
* Units: Zero-overhead dimensional analysis and unit/quantity
manipulation and conversion.
* Unordered: Unordered associative containers.
Updated Libraries
* Asio:
o Added support for serial ports.
o Added support for UNIX domain sockets.
o Added support for raw sockets and ICMP.
o Added wrappers for POSIX stream-oriented file descriptors
(excluding regular files).
o Added support for reactor-style operations using a new
null_buffers type.
o Added an iterator type for bytewise traversal of buffer
sequences.
o Added new read_until() and async_read_until() overloads that
take a user-defined function object for locating message
boundaries.
o Added an experimental two-lock queue (enabled by defining
BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE) that may provide better
io_service scalability across many processors.
o Various fixes, performance improvements, and more complete
coverage of the custom memory allocation support.
* Assign:list_of() (and its variants) now has overloaded comparison
operators. This allows you to write test code such as
BOOST_CHECK_EQUAL(my_container,list_of(2)(3)(4)(5));.
* Foreach:BOOST_FOREACH macro for easily iterating over the elements
of a sequence.
o New BOOST_REVERSE_FOREACH macro for iterating over a sequence
in reverse.
* Function:
o Improved allocator support.
* Hash: Minor updates and fixes, for more info see the change log.
* Interprocess:
o Added anonymous shared memory for UNIX systems.
o Fixed missing move semantics on managed memory classes.
o Added copy_on_write and open_read_only options for shared
memory and mapped file managed classes.
o shared_ptr is movable and supports aliasing.
* Intrusive:
o Added linear<> and cache_last<> options to singly linked lists.
o Added optimize_multikey<> option to unordered container hooks.
o Optimized unordered containers when store_hash option is used
in the hook.
o Implementation changed to avoid explicit use of try-catch
blocks and be compilable with exceptions disabled.
* Math:
o Added new non-central Chi-Square, Beta, F and T distributions.
o Added Exponential Integral and Zeta special functions.
o Added Rounding, Truncation, and Unit-in-the-last-place
functions.
o Added support for compile time powers of a runtime base.
o Added a few SSE2 based optimisations for the Lanczos
approximations.
* MPI:
o Added support for non-blocking operations in Python
o Added support for graph topologies.
* Multi-index Containers: Minor additions and maintenance fixes.
Consult the library release notes for
further information.
* PtrContainer: Support for a few more containers, and addition
of insert iterators. For details see upgrading
details.
* Spirit: Integrated the "Classic" Spirit V1.8.x code base with
Spirit V2, "The New Generation". See Change Log.
* Thread:
o New generic lock and try_lock functions for locking multiple
mutexes at once.
o Rvalue reference support for move semantics where the
compilers supports it.
o A few bugs fixed and missing functions added (including
the serious win32 condition variable bug).
o scoped_try_lock types are now backwards-compatible with
Boost 1.34.0 and previous releases.
o Support for passing function arguments to the thread
function by supplying additional arguments to the thread
constructor.
o Backwards-compatibility overloads added for timed_lock and
timed_wait functions to allow use of xtime for timeouts.
* Wave:
o Wave V2.0 is a new major release introducing some breaking
API changes, preventing it to be used with Boost versions
earlier than V1.36.0. Mainly, the API and hook interface
have been streamlined for more consistency.
o Fixed a couple of bugs, improved regression test system to
include testing of the preporcessing hooks interface
(for details see: Changelog).
* Xpressive:
o 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.
o skip() for specifying which parts of the input sequence
to ignore when matching it against a regex.
o regex_replace() accepts formatter objects and formatter
expressions in addition to format strings.
o Range-based regex_replace() algorithm.
o Fix crash when semantic actions are placed in look-aheads,
look-behinds or independent sub-expressions.
* Mon Jun 23 2008 pth@suse.de
- Qualify name to avoid clash (bnc#401964)
* Fri Jun 20 2008 schwab@suse.de

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0f866c75b025a4f1340117a106595cc0675f48ba1e5a9b5c221ec7f19e96ec4c
size 12986931

3
boost_1_36_0.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9a4a0cfbbd227c20a13519a2c41f2e707dc0d89e518a3c7bfcd381f7b7fbcdef
size 28839275