On Fri, Jul 1, 2016 at 5:51 AM, David Knezevic <david.kneze...@akselos.com> wrote:
> On Fri, Jul 1, 2016 at 2:32 AM, John Peterson <jwpeter...@gmail.com> > wrote: > >> >> >> On Thu, Jun 30, 2016 at 10:15 PM, David Knezevic < >> david.kneze...@akselos.com> wrote: >> >>> I have a libMesh app (which has been working fine for a long time) that >>> has: >>> >>> #include <boost/property_tree/json_parser.hpp> >>> >>> I just updated to the git HEAD, and now I get boost compilation errors >>> for >>> this app, e.g.: >>> >>> >>> /home/dknez/software/libmesh_install/opt_real/libmesh/include/boost/type_traits/aligned_storage.hpp:29:1: >>> error: redefinition of ‘const size_t >>> boost::detail::aligned_storage::alignment_of_max_align’ >>> BOOST_STATIC_CONSTANT( >>> ^ >>> >>> /home/dknez/software/libmesh_install/opt_real/libmesh/include/boost/aligned_storage.hpp:33:1: >>> error: ‘const size_t >>> boost::detail::aligned_storage::alignment_of_max_align’ previously >>> defined >>> here >>> BOOST_STATIC_CONSTANT( >>> ^ >>> >>> I guess this is related to the recent boost refresh? Any suggestions on >>> the >>> right fix? >>> >> >> Hmm... the error message is a little strange, I would have expected a >> "file not found" error caused by us forgetting a necessary header. I guess >> could you try compiling libmesh with an external boost 1.61 instead of its >> internal one? If that works, then it's some issue with our subset of >> boost. If that doesn't work, then you might need to update your app to >> work with newer versions of boost somehow. >> > > > I've been using boost provided by Ubuntu 14.04 (which is boost 1.54), to > provide extra functionality that I need (e.g. the JSON parser, referred to > in the header above). If I add --with-boost to my libMesh configure line, > then it still uses the boost in contrib because it requires 1.61 or higher. > libmesh currently requires boost 1.57 and higher, but prior to that it should have been requiring 1.55 and higher... so I'm not sure how you were able to previously use a boost 1.54 from Ubuntu? I suppose if: 1.) /usr/include is in your compiler path, and 2.) your boost is installed in /usr/include/boost, and 3.) you #include a header like json_parser.hpp that is not in our boost subset, then libmesh would think you were using its internal boost subset but in reality you would be mixing boost versions. If I update my external boost package to 1.61 then I guess it'd work fine, > but I'd rather not do that right now... I'm not clear on why I'm getting a > "previously defined" error, though... is it because by external boost > library (from Ubuntu) is clashing with the boost in contrib? > It sounds like the above is what is happening, i.e you've been mixing Boost versions 1.54 and 1.55 for a while now in your app, and it used to work fine until the recent upgrade. The best fix would be to not allow this (mixing of boost versions) to happen, but I'm not sure that's even possible, because we can't control every include path set by the user. Other fixes: 1.) You could try relaxing the minimum version of boost required by libmesh to 1.54. This should allow your --with-boost configure flag to work, but I'm not sure it would work with the Howard Hinnant unique_ptr.hpp header we use (this was what initially drove the 1.55 requirement IIRC). 2.) We could add json_parser.hpp (and its required headers) to the boost subset in libmesh. I'm hesitant to do this, though, since we are not actually using it in the library anywhere. 3.) You could keep using an older version of libmesh that still works with this app 4.) You could build and install a new (>=1.57) version of boost somewhere on your system and use that instead, ignoring the Ubuntu-provided one. I guess none of these is really ideal, but that is one of the pitfalls of relying on Boost I guess... -- John ------------------------------------------------------------------------------ Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San Francisco, CA to explore cutting-edge tech and listen to tech luminaries present their vision of the future. This family event has something for everyone, including kids. Get more information and register today. http://sdm.link/attshape _______________________________________________ Libmesh-users mailing list Libmesh-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmesh-users