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@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/devel Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct