From c6ea401438567e0ab359402530cd06342698a66d Mon Sep 17 00:00:00 2001 From: Francesco Gazzetta Date: Fri, 20 May 2022 13:49:55 +0200 Subject: [PATCH] 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 --- pkgs/development/compilers/gcc/11/default.nix | 7 +++++-- pkgs/top-level/all-packages.nix | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/pkgs/development/compilers/gcc/11/default.nix b/pkgs/development/compilers/gcc/11/default.nix index 607c9eeac2f..1dc9ed0a267 100644 --- a/pkgs/development/compilers/gcc/11/default.nix +++ b/pkgs/development/compilers/gcc/11/default.nix @@ -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; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0d763d9f5d1..d8c618f5226 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -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;