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

Reply via email to