gdc: match gcc version

Programs compiled with gdc (such as tumiki-fighters and torus-trooper)
that depend on c++ libraries were failing with errors such as

/nix/store/3fqi6nigj8dkbvjnw8y4dy59gkq8vsj4-binutils-2.38/bin/ld: /nix/store/36960p41h83cwkcs2vpzg8ni39w4sc5m-bulletml-0.0.6/lib/libbulletml.so: undefined reference to `std::__throw_bad_array_new_length()@GLIBCXX_3.4.29'

because of the mismatch with the gcc version used to compile the
libraries.

This commit unpins the gcc version gdc is based on, so they are kept in
sync.

gdc9 was removed since no other package depends specifically on that
version
This commit is contained in:
Francesco Gazzetta 2022-05-20 13:49:55 +02:00
parent 8c6deb650a
commit c6ea401438
2 changed files with 8 additions and 4 deletions

View file

@ -3,6 +3,7 @@
, langAda ? false
, langObjC ? stdenv.targetPlatform.isDarwin
, langObjCpp ? stdenv.targetPlatform.isDarwin
, langD ? false
, langGo ? false
, reproducibleBuild ? true
, profiledCompiler ? false
@ -71,6 +72,7 @@ let majorVersion = "11";
sha256 = ""; # TODO: uncomment and check hash when available.
}) */
++ optional langAda ../gnat-cflags-11.patch
++ optional langD ../libphobos.patch
++ optional langFortran ../gfortran-driving.patch
++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch
@ -220,6 +222,7 @@ stdenv.mkDerivation ({
enableShared
langC
langD
langCC
langFortran
langAda
@ -260,14 +263,14 @@ stdenv.mkDerivation ({
inherit
(import ../common/extra-target-flags.nix {
inherit lib stdenv crossStageStatic libcCross threadsCross;
inherit lib stdenv crossStageStatic langD libcCross threadsCross;
})
EXTRA_FLAGS_FOR_TARGET
EXTRA_LDFLAGS_FOR_TARGET
;
passthru = {
inherit langC langCC langObjC langObjCpp langAda langFortran langGo version;
inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version;
isGNU = true;
};

View file

@ -12976,8 +12976,9 @@ with pkgs;
gcc-arm-embedded-10 = callPackage ../development/compilers/gcc-arm-embedded/10 {};
gcc-arm-embedded = gcc-arm-embedded-10;
gdc = gdc9;
gdc9 = wrapCC (gcc9.cc.override {
# Has to match the default gcc so that there are no linking errors when
# using C/C++ libraries in D packages
gdc = wrapCC (gcc.cc.override {
name = "gdc";
langCC = false;
langC = false;