DMD travis-ci problems with new GDC toolchains
Martin Nowak via Digitalmars-d
digitalmars-d at puremagic.com
Mon Dec 26 20:17:31 PST 2016
On Sunday, 25 December 2016 at 19:25:40 UTC, Johannes Pfau wrote:
This is not place to post bug reports. It was only by chance that
I read it.
Better file a Bugzilla Ticket, and notify the author of related
tools/scripts. Since noone can monitor everything surrounding D,
mailing the author would be appropriate if you can't fix the
problem yourself and are stuck.
> When DMD then compiles the C++ tests it uses the never C++
> compiler shipped with the GDC toolchain. This compiler
> internally uses a new libstdc++ shippped in a toolchain
> subfolder. But when running the C++ programm it'll load the
> stdc++ library from /usr/lib and therefore complain about
> missing symbols.
>
> This now happens even with the old GCC 4.9 so we have to
> downgrade travis-ci to GCC 4.8 based compilers for now. Looking
> at https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html it
> is just coincidence that GCC 4.8 works and 4.9.3 used to work
> before. As soon as we start testing more complicated C++
> features the newer g++ is more likely to need a symbol not
> available in the old system stdc++ library.
>
> Possible solutions include:
> * Install a newer system GCC from a PPA. This will also update
> stdc++.
> * Append the toolchain location to PATH instead of prepending
The goal of the activate scripts is to switch the current
compiler, that includes hiding a system wide installation of dmd,
so this wouldn't work.
> * Add the location to the toolchain libstdc++ to LD_LIBRARY_PATH
Sounds like a reasonable solution to me, link with what you use
for compiling.
We're already setting up LIBRARY_PATH and LD_LIBRARY_PATH for the
selected version.
https://github.com/dlang/installer/blob/92315cdf58b32178f2c4865db87123d433f45406/script/install.sh#L575
In fact this looks like an incompatibility of the install.sh
scripts with your new multilib gdc (using lib32/lib64 instead of
lib).
Other solutions.
* We could hide g++/gcc/c++/cc from the gdc binary folder (or use
a different folder containing only gdc/gdmd symlinks). But since
gcc uses plenty of other tools, such as collect, gprof, et.al. it
would ask for troubles.
* We could teach the dmd testsuite to use a specific c++/cc
compiler, there is already HOST_CC (the c++/cc driver used for
linking). The C++ compiler used for testing can be set here
https://github.com/dlang/dmd/blob/dfde61a5b0d206b22be9fa72df7ac14826271eff/test/d_do_test.d#L31.
More information about the Digitalmars-d
mailing list