From a77d0eb81915997170a1e4b4c7d4c7ac4fcd5320 Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Thu, 10 Oct 2024 16:59:52 -0400 Subject: [PATCH] gcc: fix `extraLDFlags` logic after undoing staging-next workaroud The original logic was prepending to the array, but this one prepends the array to itself, which breaks the x86_64-linux stdenv bootstrap. The correct thing to do is build up the arguments in a temporary array and prepend it like the original code was doing. --- pkgs/development/compilers/gcc/common/builder.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/development/compilers/gcc/common/builder.nix b/pkgs/development/compilers/gcc/common/builder.nix index e7e3891780ce..874a43a75f82 100644 --- a/pkgs/development/compilers/gcc/common/builder.nix +++ b/pkgs/development/compilers/gcc/common/builder.nix @@ -58,12 +58,13 @@ originalAttrs: (stdenv.mkDerivation (finalAttrs: originalAttrs // { extraLDFlags=("-L/usr/lib64" "-L/usr/lib") libc_libdir="/usr/lib" fi - extraLDFlags=("-L$libc_libdir") + declare -a prefixExtraLDFlags=() + prefixExtraLDFlags=("-L$libc_libdir") nixDontSetRpathVar=NIX_DONT_SET_RPATH''${post} if test "''${!nixDontSetRpathVar-}" != "1"; then - extraLDFlags+=("-rpath" "$libc_libdir") + prefixExtraLDFlags+=("-rpath" "$libc_libdir") fi - extraLDFlags+=("''${extraLDFlags[@]}") + extraLDFlags=("''${prefixExtraLDFlags[@]}" "''${extraLDFlags[@]}") for i in "''${extraLDFlags[@]}"; do declare -g EXTRA_LDFLAGS''${post}+=" -Wl,$i" done