Closed xnox closed 6 years ago
Dear Dimitri,
Thanks for letting me know.
It indeed smells like a Boost regression. I'll try to debug this, but it may be difficult as one needs to understand Boost intricacies.
Regards, Thibaut.
Le 16/11/2017 à 15:59, Dimitri John Ledkov a écrit :
Gyoto started to fail to build from source in Ubuntu with boost 1.65.1
I don't think it's a gyoto issue, but a boost upstream one, but I'm failing to disect that. Thus maybe it is a gyoto issue with e.g. some templates missing initialisation...
I'm struggling to understand how come boost::array of int/double/unsigned is not initialized (with a friend class?) to have serialize method any more.
|In file included from /usr/include/boost/serialization/extended_type_info_typeid.hpp:37:0, from /usr/include/boost/archive/detail/oserializer.hpp:39, from /usr/include/boost/mpi/detail/mpi_datatype_oarchive.hpp:14, from /usr/include/boost/mpi/detail/mpi_datatype_cache.hpp:13, from /usr/include/boost/mpi/datatype.hpp:27, from /usr/include/boost/mpi/communicator.hpp:22, from ../include/GyotoScenery.h:46, from Scenery.C:21: /usr/include/boost/serialization/access.hpp: In instantiation of ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_oarchive; T = boost::array<long unsigned int, 2>]’: /usr/include/boost/serialization/serialization.hpp:68:22: required from ‘void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_oarchive; T = boost::array<long unsigned int, 2>]’ /usr/include/boost/serialization/serialization.hpp:126:14: required from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_oarchive; T = boost::array<long unsigned int, 2>]’ /usr/include/boost/archive/detail/oserializer.hpp:150:40: required from ‘void boost::archive::detail::oserializer<Archive, T>::save_object_data(boost::archive::detail::basic_oarchive&, const void) const [with Archive = boost::mpi::packed_oarchive; T = boost::array<long unsigned int, 2>]’ /usr/include/boost/archive/detail/oserializer.hpp:103:1: required from ‘class boost::archive::detail::oserializer<boost::mpi::packed_oarchive, boost::array<long unsigned int, 2> >’ /usr/include/boost/archive/detail/oserializer.hpp:255:13: required from ‘static void boost::archive::detail::save_non_pointer_type
::save_standard::invoke(Archive&, const T&) [with T = boost::array<long unsigned int, 2>; Archive = boost::mpi::packed_oarchive]’ /usr/include/boost/archive/detail/oserializer.hpp:310:22: [ skipping 3 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/mpi/packed_oarchive.hpp:97:69: required from ‘void boost::mpi::packed_oarchive::saveoverride(const T&, mpl::false) [with T = boost::array<long unsigned int, 2>; mpl::false = mpl::bool_ ) const [with Archive = boost::mpi::packed_oarchive; T = boost::array<double, 2>]’ /usr/include/boost/archive/detail/oserializer.hpp:103:1: required from ‘class boost::archive::detail::oserializer<boost::mpi::packed_oarchive, boost::array<double, 2> >’ /usr/include/boost/archive/detail/oserializer.hpp:255:13: required from ‘static void boost::archive::detail::save_non_pointer_type]’ /usr/include/boost/mpi/packed_oarchive.hpp:112:5: required from ‘void boost::mpi::packed_oarchive::save_override(const T&) [with T = boost::array<long unsigned int, 2>]’ /usr/include/boost/archive/detail/interface_oarchive.hpp:70:9: required from ‘Archive& boost::archive::detail::interface_oarchive ::operator<<(const T&) [with T = boost::array<long unsigned int, 2>; Archive = boost::mpi::packed_oarchive]’ /usr/include/boost/mpi/communicator.hpp:1176:6: required from ‘void boost::mpi::communicator::sendimpl(int, int, const T&, mpl::false) const [with T = boost::array<long unsigned int, 2>; mpl::false = mpl::bool_ ]’ /usr/include/boost/mpi/communicator.hpp:1185:3: required from ‘void boost::mpi::communicator::send(int, int, const T&) const [with T = boost::array<long unsigned int, 2>]’ Scenery.C:498:40: required from here /usr/include/boost/serialization/access.hpp:116:11: error: ‘class boost::array<long unsigned int, 2>’ has no member named ‘serialize’ t.serialize(ar, file_version); ^~~ /usr/include/boost/serialization/access.hpp: In instantiation of ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_oarchive; T = boost::array<double, 2>]’: /usr/include/boost/serialization/serialization.hpp:68:22: required from ‘void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_oarchive; T = boost::array<double, 2>]’ /usr/include/boost/serialization/serialization.hpp:126:14: required from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_oarchive; T = boost::array<double, 2>]’ /usr/include/boost/archive/detail/oserializer.hpp:150:40: required from ‘void boost::archive::detail::oserializer<Archive, T>::save_object_data(boost::archive::detail::basic_oarchive&, const void::save_standard::invoke(Archive&, const T&) [with T = boost::array<double, 2>; Archive = boost::mpi::packed_oarchive]’ /usr/include/boost/archive/detail/oserializer.hpp:310:22: [ skipping 3 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/mpi/packed_oarchive.hpp:97:69: required from ‘void boost::mpi::packed_oarchive::saveoverride(const T&, mpl::false) [with T = boost::array<double, 2>; mpl::false = mpl::bool_ ]’ /usr/include/boost/mpi/packed_oarchive.hpp:112:5: required from ‘void boost::mpi::packed_oarchive::save_override(const T&) [with T = boost::array<double, 2>]’ /usr/include/boost/archive/detail/interface_oarchive.hpp:70:9: required from ‘Archive& boost::archive::detail::interface_oarchive ::operator<<(const T&) [with T = boost::array<double, 2>; Archive = boost::mpi::packed_oarchive]’ /usr/include/boost/mpi/communicator.hpp:1176:6: required from ‘void boost::mpi::communicator::sendimpl(int, int, const T&, mpl::false) const [with T = boost::array<double, 2>; mpl::false = mpl::bool_ ]’ /usr/include/boost/mpi/communicator.hpp:1185:3: required from ‘void boost::mpi::communicator::send(int, int, const T&) const [with T = boost::array<double, 2>]’ Scenery.C:501:39: required from here /usr/include/boost/serialization/access.hpp:116:11: error: ‘class boost::array<double, 2>’ has no member named ‘serialize’ /usr/include/boost/serialization/access.hpp: In instantiation of ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive; T = boost::array<long unsigned int, 2>]’: /usr/include/boost/serialization/serialization.hpp:68:22: required from ‘void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive; T = boost::array<long unsigned int, 2>]’ /usr/include/boost/serialization/serialization.hpp:126:14: required from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive; T = boost::array<long unsigned int, 2>]’ /usr/include/boost/archive/detail/iserializer.hpp:188:40: required from ‘void boost::archive::detail::iserializer<Archive, T>::load_object_data(boost::archive::detail::basic_iarchive&, void, unsigned int) const [with Archive = boost::mpi::packed_iarchive; T = boost::array<long unsigned int, 2>]’ /usr/include/boost/archive/detail/iserializer.hpp:120:1: required from ‘class boost::archive::detail::iserializer<boost::mpi::packed_iarchive, boost::array<long unsigned int, 2> >’ /usr/include/boost/archive/detail/iserializer.hpp:410:13: required from ‘static void boost::archive::detail::load_non_pointer_type ::load_standard::invoke(Archive&, const T&) [with T = boost::array<long unsigned int, 2>; Archive = boost::mpi::packed_iarchive]’ /usr/include/boost/archive/detail/iserializer.hpp:462:22: [ skipping 3 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/mpi/packed_iarchive.hpp:99:69: required from ‘void boost::mpi::packed_iarchive::loadoverride(T&, mpl::false) [with T = boost::array<long unsigned int, 2>; mpl::false = mpl::bool_ , unsigned int) const [with Archive = boost::mpi::packed_iarchive; T = boost::array<double, 2>]’ /usr/include/boost/archive/detail/iserializer.hpp:120:1: required from ‘class boost::archive::detail::iserializer<boost::mpi::packed_iarchive, boost::array<double, 2> >’ /usr/include/boost/archive/detail/iserializer.hpp:410:13: required from ‘static void boost::archive::detail::load_non_pointer_type]’ /usr/include/boost/mpi/packed_iarchive.hpp:116:5: required from ‘void boost::mpi::packed_iarchive::load_override(T&) [with T = boost::array<long unsigned int, 2>]’ /usr/include/boost/archive/detail/interface_iarchive.hpp:68:9: required from ‘Archive& boost::archive::detail::interface_iarchive ::operator>>(T&) [with T = boost::array<long unsigned int, 2>; Archive = boost::mpi::packed_iarchive]’ /usr/include/boost/mpi/communicator.hpp:1268:6: required from ‘boost::mpi::status boost::mpi::communicator::recvimpl(int, int, T&, mpl::false) const [with T = boost::array<long unsigned int, 2>; mpl::false = mpl::bool_ ]’ /usr/include/boost/mpi/communicator.hpp:1278:66: required from ‘boost::mpi::status boost::mpi::communicator::recv(int, int, T&) const [with T = boost::array<long unsigned int, 2>]’ Scenery.C:571:44: required from here /usr/include/boost/serialization/access.hpp:116:11: error: ‘class boost::array<long unsigned int, 2>’ has no member named ‘serialize’ /usr/include/boost/serialization/access.hpp: In instantiation of ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive; T = boost::array<double, 2>]’: /usr/include/boost/serialization/serialization.hpp:68:22: required from ‘void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive; T = boost::array<double, 2>]’ /usr/include/boost/serialization/serialization.hpp:126:14: required from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive; T = boost::array<double, 2>]’ /usr/include/boost/archive/detail/iserializer.hpp:188:40: required from ‘void boost::archive::detail::iserializer<Archive, T>::load_object_data(boost::archive::detail::basic_iarchive&, void ::load_standard::invoke(Archive&, const T&) [with T = boost::array<double, 2>; Archive = boost::mpi::packed_iarchive]’ /usr/include/boost/archive/detail/iserializer.hpp:462:22: [ skipping 3 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/mpi/packed_iarchive.hpp:99:69: required from ‘void boost::mpi::packed_iarchive::loadoverride(T&, mpl::false) [with T = boost::array<double, 2>; mpl::false = mpl::bool_ ]’ /usr/include/boost/mpi/packed_iarchive.hpp:116:5: required from ‘void boost::mpi::packed_iarchive::load_override(T&) [with T = boost::array<double, 2>]’ /usr/include/boost/archive/detail/interface_iarchive.hpp:68:9: required from ‘Archive& boost::archive::detail::interface_iarchive ::operator>>(T&) [with T = boost::array<double, 2>; Archive = boost::mpi::packed_iarchive]’ /usr/include/boost/mpi/communicator.hpp:1268:6: required from ‘boost::mpi::status boost::mpi::communicator::recvimpl(int, int, T&, mpl::false) const [with T = boost::array<double, 2>; mpl::false = mpl::bool_ ]’ /usr/include/boost/mpi/communicator.hpp:1278:66: required from ‘boost::mpi::status boost::mpi::communicator::recv(int, int, T&) const [with T = boost::array<double, 2>]’ Scenery.C:573:43: required from here /usr/include/boost/serialization/access.hpp:116:11: error: ‘class boost::array<double, 2>’ has no member named ‘serialize’ Makefile:732: recipe for target 'Scenery.lo' failed make[3]: [Scenery.lo] Error 1 make[3]: Leaving directory '/< >/lib' Makefile:955: recipe for target 'lib' failed make[2]: [lib] Error 2 make[2]: Leaving directory '/<>' debian/rules:67: recipe for target 'override_dh_auto_build-arch' failed make[1]: [override_dh_auto_build-arch] Error 2 make[1]: Leaving directory '/< >' debian/rules:40: recipe for target 'build' failed make: [build] Error 2 dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2 |— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/gyoto/Gyoto/issues/5, or mute the thread https://github.com/notifications/unsubscribe-auth/AAl5Go82LYUrJMM8-YJv1EPZ_plcB77vks5s3E3egaJpZM4QgnpK.
--
Dear Dimitri,
I've uploaded to Debian version 1.2.0-4 that fixes it. The issue is that boost/serialization/array.hpp has been split into several pieces in Boost 1.64. I will also apply the same patch to Gyoto proper soon.
Regards, Thibaut.
Damn! I was close, but not enough. I have been adding these includes, but further down in the build, hence it looked like a never-ending rabbit hole. Oh well, was not obvious at all from the error messages! Thanks a lot! will sync back to ubuntu when available.
Thanks to you. Indeed I would have prefered to put those includes in Scenery.C but it does not work, no idea why.
Regards, Thibaut.
Builds fine everywhere in ubuntu now!
Gyoto started to fail to build from source in Ubuntu with boost 1.65.1
I don't think it's a gyoto issue, but a boost upstream one, but I'm failing to disect that. Thus maybe it is a gyoto issue with e.g. some templates missing initialisation...
I'm struggling to understand how come boost::array of int/double/unsigned is not initialized (with a friend class?) to have serialize method any more.