openbmc/phosphor-host-ipmid

phosphor-host-ipmid fails when pulled in as a depenency in CI

geissonator opened this issue · 2 comments

Running CI directly against phosphor-host-ipmid runs fine but when another repository brings in phosphor-host-ipmid as a dependency, it fails to compile with the following:

FAILED: libdynamiccmds.so.0.1.p/dbus-sdr_sensorcommands.cpp.o 
c++ -Ilibdynamiccmds.so.0.1.p -I. -I.. -Iinclude -I../include -I/usr/local/include -fdiagnostics-color=never -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c++23 -O2 -g -DGET_DBUS_ACTIVE_SOFTWARE -DUSING_ENTITY_MANAGER_DECORATORS -Wno-psabi -Wno-missing-field-initializers -Wno-pedantic -Wno-non-virtual-dtor -fPIC -DBOOST_ASIO_DISABLE_THREADS -DBOOST_ALL_NO_LIB -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_COROUTINES_NO_DEPRECATION_WARNING -MD -MQ libdynamiccmds.so.0.1.p/dbus-sdr_sensorcommands.cpp.o -MF libdynamiccmds.so.0.1.p/dbus-sdr_sensorcommands.cpp.o.d -o libdynamiccmds.so.0.1.p/dbus-sdr_sensorcommands.cpp.o -c ../dbus-sdr/sensorcommands.cpp
In file included from /usr/include/c++/13/bits/uses_allocator_args.h:38,
                 from /usr/include/c++/13/bits/memory_resource.h:41,
                 from /usr/include/c++/13/string:58,
                 from /usr/local/include/boost/algorithm/string/std/string_traits.hpp:15,
                 from /usr/local/include/boost/algorithm/string/std_containers_traits.hpp:19,
                 from /usr/local/include/boost/algorithm/string.hpp:18,
                 from ../include/dbus-sdr/sdrutils.hpp:17,
                 from ../include/dbus-sdr/sensorcommands.hpp:18,
                 from ../dbus-sdr/sensorcommands.cpp:19:
In constructor ‘constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(std::_Tuple_impl<_Idx, _Head>&&) [with long unsigned int _Idx = 1; _Head = std::optional<unsigned char>]’,
    inlined from ‘constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(std::_Tuple_impl<_Idx, _UHead, _UTails ...>&&) [with _UHead = std::shared_ptr<ipmi::Context>&; _UTails = {std::optional<unsigned char>}; long unsigned int _Idx = 0; _Head = std::shared_ptr<ipmi::Context>; _Tail = {std::optional<unsigned char>}]’ at /usr/include/c++/13/tuple:317:57,
    inlined from ‘constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_U1, _U2>&&) [with _U1 = std::shared_ptr<ipmi::Context>&; _U2 = std::optional<unsigned char>; typename std::enable_if<std::_TupleConstraints<true, _T1, _T2>::__is_implicitly_constructible<_U1, _U2>(), bool>::type <anonymous> = true; _T1 = std::shared_ptr<ipmi::Context>; _T2 = std::optional<unsigned char>]’ at /usr/include/c++/13/tuple:1372:60,
    inlined from ‘constexpr void std::_Construct(_Tp*, _Args&& ...) [with _Tp = tuple<shared_ptr<ipmi::Context>, optional<unsigned char> >; _Args = {tuple<shared_ptr<ipmi::Context>&, optional<unsigned char> >}]’ at /usr/include/c++/13/bits/stl_construct.h:119:7,
    inlined from ‘constexpr void std::_Optional_payload_base<_Tp>::_M_construct(_Args&& ...) [with _Args = {std::tuple<std::shared_ptr<ipmi::Context>&, std::optional<unsigned char> >}; _Tp = std::tuple<std::shared_ptr<ipmi::Context>, std::optional<unsigned char> >]’ at /usr/include/c++/13/optional:278:19,
    inlined from ‘constexpr void std::_Optional_base_impl<_Tp, _Dp>::_M_construct(_Args&& ...) [with _Args = {std::tuple<std::shared_ptr<ipmi::Context>&, std::optional<unsigned char> >}; _Tp = std::tuple<std::shared_ptr<ipmi::Context>, std::optional<unsigned char> >; _Dp = std::_Optional_base<std::tuple<std::shared_ptr<ipmi::Context>, std::optional<unsigned char> >, false, false>]’ at /usr/include/c++/13/optional:457:52,
    inlined from ‘constexpr std::enable_if_t<is_constructible_v<_Tp, _Args ...>, _Tp&> std::optional<_Tp>::emplace(_Args&& ...) [with _Args = {std::tuple<std::shared_ptr<ipmi::Context>&, std::optional<unsigned char> >}; _Tp = std::tuple<std::shared_ptr<ipmi::Context>, std::optional<unsigned char> >]’ at /usr/include/c++/13/optional:918:22,
    inlined from ‘ipmi::message::Response::ptr ipmi::IpmiHandler<Handler>::executeCallback(ipmi::message::Request::ptr) [with Handler = std::tuple<unsigned char, std::optional<std::tuple<unsigned char, unsigned char, unsigned int> > > (&)(std::shared_ptr<ipmi::Context>, std::optional<unsigned char>)]’ at ../include/ipmid/handler.hpp:240:38:
/usr/include/c++/13/tuple:529:41: error: ‘*(unsigned char*)((char*)&unpackArgs + offsetof(std::UnpackArgsType, std::tuple<std::optional<unsigned char> >::<unnamed>.std::_Tuple_impl<0, std::optional<unsigned char> >::<unnamed>.std::_Head_base<0, std::optional<unsigned char>, false>::_M_head_impl.std::optional<unsigned char>::<unnamed>.std::_Optional_base<unsigned char, true, true>::<unnamed>))’ may be used uninitialized [-Werror=maybe-uninitialized]
  529 |       : _Base(static_cast<_Base&&>(__in))
      |                                         ^
In file included from ../include/ipmid/api.hpp:28,
                 from ../include/dbus-sdr/sdrutils.hpp:20:
../include/ipmid/handler.hpp: In member function ‘ipmi::message::Response::ptr ipmi::IpmiHandler<Handler>::executeCallback(ipmi::message::Request::ptr) [with Handler = std::tuple<unsigned char, std::optional<std::tuple<unsigned char, unsigned char, unsigned int> > > (&)(std::shared_ptr<ipmi::Context>, std::optional<unsigned char>)]’:
../include/ipmid/handler.hpp:195:24: note: ‘*(unsigned char*)((char*)&unpackArgs + offsetof(std::UnpackArgsType, std::tuple<std::optional<unsigned char> >::<unnamed>.std::_Tuple_impl<0, std::optional<unsigned char> >::<unnamed>.std::_Head_base<0, std::optional<unsigned char>, false>::_M_head_impl.std::optional<unsigned char>::<unnamed>.std::_Optional_base<unsigned char, true, true>::<unnamed>))’ was declared here
  195 |         UnpackArgsType unpackArgs{};
      |                        ^~~~~~~~~~
cc1plus: all warnings being treated as errors

So the issue is probably a missing meson flag, or maybe the compiler used(?) when PHI is built directly vs. as a dependency.

Any repo with a dependency on PHI is going to fail like the above. https://jenkins.openbmc.org/job/ci-repository/74047/console is a recent example.