On 31/07/15 14:49 +0100, Richard W.M. Jones wrote:
Ceph failed to build with some impenetrable C++ error:

In file included from /usr/include/boost/optional/optional.hpp:28:0,
                from /usr/include/boost/optional/optional_io.hpp:19,
                from ./include/encoding.h:289,
                from ./include/uuid.h:8,
                from ./include/types.h:21,
                from mon/OSDMonitor.h:28,
                from mon/OSDMonitor.cc:21:
/usr/include/boost/variant/get.hpp: In instantiation of 'typename boost::add_reference<const U>::type 
boost::strict_get(const boost::variant<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, 
T18, T19>&) [with U = int; T0 = std::__cxx11::basic_string<char>; T1 = bool; T2 = long long int; T3 = double; 
T4 = std::vector<std::__cxx11::basic_string<char> >; T5 = boost::detail::variant::void_; T6 = 
boost::detail::variant::void_; T7 = boost::detail::variant::void_; T8 = boost::detail::variant::void_; T9 = 
boost::detail::variant::void_; T10 = boost::detail::variant::void_; T11 = boost::detail::variant::void_; T12 = 
boost::detail::variant::void_; T13 = boost::detail::variant::void_; T14 = boost::detail::variant::void_; T15 = 
boost::detail::variant::void_; T16 = boost::detail::variant::void_; T17 = boost::detail::variant::void_; T18 = 
boost::detail::variant::void_; T19 = boost::detail::variant::void_; typename boost::add_reference<const U>::type = 
const int&]':
/usr/include/boost/variant/get.hpp:299:25:   required from 'typename boost::add_reference<const U>::type 
boost::get(const boost::variant<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, 
T19>&) [with U = int; T0 = std::__cxx11::basic_string<char>; T1 = bool; T2 = long long int; T3 = double; T4 = 
std::vector<std::__cxx11::basic_string<char> >; T5 = boost::detail::variant::void_; T6 = 
boost::detail::variant::void_; T7 = boost::detail::variant::void_; T8 = boost::detail::variant::void_; T9 = 
boost::detail::variant::void_; T10 = boost::detail::variant::void_; T11 = boost::detail::variant::void_; T12 = 
boost::detail::variant::void_; T13 = boost::detail::variant::void_; T14 = boost::detail::variant::void_; T15 = 
boost::detail::variant::void_; T16 = boost::detail::variant::void_; T17 = boost::detail::variant::void_; T18 = 
boost::detail::variant::void_; T19 = boost::detail::variant::void_; typename boost::add_reference<const U>::type = 
const int&]'
./common/cmdparse.h:47:26:   required from 'bool cmd_getval(CephContext*, const cmdmap_t&, std::__cxx11::string, T&) 
[with T = int; cmdmap_t = std::map<std::__cxx11::basic_string<char>, 
boost::variant<std::__cxx11::basic_string<char>, bool, long long int, double, 
std::vector<std::__cxx11::basic_string<char> > > >; std::__cxx11::string = 
std::__cxx11::basic_string<char>]'
mon/OSDMonitor.cc:3002:54:   required from here
/usr/include/boost/variant/get.hpp:195:5: error: invalid application of 'sizeof' to 
incomplete type 'boost::STATIC_ASSERTION_FAILURE<false>'
    BOOST_STATIC_ASSERT_MSG(
    ^
Makefile:15876: recipe for target 'mon/OSDMonitor.lo' failed

----------------------------------------------------------------------

Any ideas on that one?  This blocks qemu and all the rest of the virt
stack.

It's a static assertion failure. Line 195 in boost/variant/get.hpp is

   BOOST_STATIC_ASSERT_MSG(
       (boost::detail::variant::holds_element<boost::variant< 
BOOST_VARIANT_ENUM_PARAMS(T) >, const U >::value),
       "boost::variant does not contain specified type U, "
       "call to boost::get<U>(const boost::variant<T...>*) will always return 
NULL"
   );

Which is pretty descriptive.

It's the same problem as described at
https://lists.fedoraproject.org/pipermail/devel/2015-July/212789.html
i.e. caused by the breaking change to Boost.Variant, which can be
fixed by changing the source or defining a macro to use relaxed_get()
intstead of strict_get().


--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Reply via email to