boost libstdc++ issue (was libvisio error)

su_v suv at sunrise.ch
Mon Sep 7 03:47:30 PDT 2015


On 2015-09-07 11:20 (+0200), David Evans wrote:
> On 9/7/15 12:44 AM, su_v wrote:
>> On 2015-09-07 09:14 (+0200), David Evans wrote:
>>> I wonder if you could run the clang++ test again first with -stdlib=libstdc++ appended to configure's own CXXFLAGS
>>> as MacPorts does in the libvisio case and secondly with -stdlib=libc++ to see if that makes any difference.
>>
>> Attached are the 'user.hpp' files created with these commands:
>>
>> $ CXX='/usr/bin/clang++' CXXFLAGS='-stdlib=libstdc++' sh ./configure
>> $ CXX='/usr/bin/clang++' CXXFLAGS='-stdlib=libc++' sh ./configure

> Ok, this says that clang++ on Lion passes boost's test for rvalue reference support. This may be true. If so, then
> disabling boost's support for it is not the right thing to do.
> 
> Going back to review the situation from the beginning, I looked at git master for libcdr and libvisio again.  I see that
> the most recent commit in each claims to be a build fix for boost 1.59.  V, are you sure that your fix is required with
> this most recent commit in place?  It uses a different set of boost defines.

Yes, it is required for git master of libvisio and libcdr too, at least
when compiling on OS X 10.7.5 with boost 1.59.

I redid the tests I had already done earlier after seeing the latest
commits upstream wrt boost 1.59 (i.e. comment out all boost-related
workarounds in the two devel portfiles, update port to latest git master
and build).


Tests with libvisio from git master:
====================================

1) all boost-related workarounds in portfile commented out:

build fails with:
> :info:build ./VSDXMLTokenMap.h:14:10: fatal error: 'tokens.h' file not found

(AFAICT 'tokens.h' is a generated file, which apparently is not
generated after the latest upstream commit - I don't know why. I also
tested variations of that commit, adding only
'-DBOOST_ERROR_CODE_HEADER_ONLY' or '-DBOOST_SYSTEM_NO_DEPRECATED' to
the CPPFLAGS in 'src/lib/Makefile.am': either way 'tokens.h' fails to be
generated.)


2) all boost-related workarounds in portfile commented out, last
upstream commit which claims to fix build with boost 1.59 reverted:

build fails with:
> :info:build ${prefix}/include/boost/thread/detail/move.hpp:31:10: fatal error: 'type_traits' file not found


3) enabling workaround '-DBOOST_NO_CXX11_RVALUE_REFERENCES',  last
upstream commit which claims to fix build with boost 1.59 reverted:

build fails with:
> :info:build Undefined symbols for architecture x86_64:
> :info:build   "boost::system::system_category()", referenced from:
> :info:build       __GLOBAL__I_a in VSDContentCollector.o
> :info:build       __GLOBAL__I_a in VSDXMLParserBase.o
> :info:build   "boost::system::generic_category()", referenced from:
> :info:build       __GLOBAL__I_a in VSDContentCollector.o
> :info:build       __GLOBAL__I_a in VSDXMLParserBase.o
> :info:build ld: symbol(s) not found for architecture x86_64
> :info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)


4) enabling both workarounds for boost in the portfile, last upstream
commit which claims to fix build with boost 1.59 reverted:

build succeeds.


Tests with libcdr from git master:
==================================

1) all boost-related workarounds in portfile commented out:

build fails with:
> :info:build ${prefix}/include/boost/thread/detail/move.hpp:31:10: fatal error: 'type_traits' file not found


2) enabling workaround '-DBOOST_NO_CXX11_RVALUE_REFERENCES':

buld fails with:
> :info:build Undefined symbols for architecture x86_64:
> :info:build   "boost::system::system_category()", referenced from:
> :info:build       __GLOBAL__I_a in libcdr-internal.a(CDRParser.o)
> :info:build   "boost::system::generic_category()", referenced from:
> :info:build       __GLOBAL__I_a in libcdr-internal.a(CDRParser.o)
> :info:build ld: symbol(s) not found for architecture x86_64
> :info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)


3) enabling both workarounds for boost in the portfile:

build succeeds.


More information about the macports-users mailing list