On 9 Mar 2017, at 09:29, Dag-Erling Smørgrav <d...@des.no> wrote: ... > 1) > > | I discovered that lang/gcc48 (and presumably the other gcc ports as > | well) not only have /usr/local/include in their default include path, > | but actually place it ahead of /usr/include. This is causing me no end > | of grief with software that uses iconv, because GNU libiconv's <iconv.h> > | f*s up your namespace so the build fails unless you explicitly link with > | GNU libiconv instead of using the libc version. [...] > > 2) > > | [...] I realized over the weekend that the > | situation is even worse than I initially thought. Basically, ports gcc > | is unusable for any other purpose than to build ports which don't > | support clang. Let me explain with a hypothetical scenario: > | > | You are developing a library which is important enough that you need to > | have the stable version installed on your development system. It is > | installed in /usr/local as usual. You've been working on fixing a bug, > | and have written a unit test which exercises the relevant code and > | verified that it can deterministically trigger the bug. You fix the bug > | and 'make check' again, all green. Then you clean out your working > | copy, re-run configure with CC=gcc and 'make check' again. Your tests > | fail. > | > | What happened is that when you built your code with gcc, the tests were > | linked and run with the stable version of the library, where the bug is > | not fixed. You can build with LDFLAGS=-L$(top_builddir)/lib, you can > | even specify the full path to the library in LDADD for each individual > | test, it doesn't matter. It will *always* pick the installed version > | first. The only way to get your tests to pass is to not have the > | library installed.
Please pin this email for re-use the next time a discussion is started about adding /usr/local to the default include and library paths for the base system compiler... It's been more than a year now, so I expect it to be regurgitated any time soon. :) -Dimitry
signature.asc
Description: Message signed with OpenPGP