PATCH: Re: graphics/rawtherapee: r342622 crashes on HEAD

Rainer Hurling rhurlin at gwdg.de
Wed Feb 12 06:32:19 UTC 2014



Am 11.02.2014 23:02 (UTC+1) schrieb Matthias Andree:
> Am 11.02.2014 10:46, schrieb Rainer Hurling:
> 
>> I just recognized another issue, what I think is not intended.
>>
>> Newest graphics/rawtherapee installs and uses devel/libc++. This wanted
>> behaviour is included in the ports Makefile for OpenMP reasons.
>>
>> As a side effect, other ports with c++ usage also seem to grab
>> devel/libc++, even if devel/libc++ is not mentioned in the ports
>> Makefile. You can try this by rebuilding and reinstalling e.g.
>> graphics/darktable. This leads to
> 
> I think that is an artifact of the same library being installed in two
> places.  As far as I understood bapt@ (Cc'd), the idea is that the port
> mirrors the c++ library we have in the base system, and both are
> compatible, and particularly, they have the same ABI.  Basically we need
> the libc++ headers to make use of libc++'s inline namespace so that
> rawtherapee references libc++'s symbols (in the std::__1:: namespace)
> rather than libstdc++ (in the std:: namespace).
> 
> If you are willing to experiment, you should be able to deinstall libc++
> now, and both darktable and rawtherapee should continue to work with the
> base libc++.

Yes, this presumption is right. After 'pkg delete -f libc++-200683
libcxxrt-20131225_1' I am able to use rawtherapee furthermore. So ports
like RawTherapee would also work, when devel/libc++ and devel/libcxxrt
would be deinstalled right after successfull installation of the port.


My problem is more the other side around: Why do ports like e.g.
graphics/darktable pick up the headers from devel/libc++ instead of the
base ones? In darktable there is no devel/libc++ dependency specified.
Installing graphics/darktable, while devel/libc++ is already installed,
creates a dependency.

This will jumble up the dependency list in ports/packages and should not
happen. Only ports with a declared dependency on devel/libc++ should use
this port.

> 
>> #pkg info -r libc++-200683
>> libc++-200683:
>> 	rawtherapee-4.0.12_1
>> 	darktable-1.2.3_3
>>
>> #ldd /usr/local/bin/darktable | grep c++
>> 	libc++.so.1 => /usr/local/lib/libc++.so.1 (0x4690e000)
> 


More information about the freebsd-ports mailing list