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