diff options
author | Gabriella Gonzalez <GenuineGabriella@gmail.com> | 2023-02-23 17:05:18 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-23 17:05:18 -0800 |
commit | 79484b17078c06763dafd4dcaab67aebc129dfd9 (patch) | |
tree | 3cfdfff7ff426694b50ba169c575a95c3549bd0f /pkgs/build-support/bintools-wrapper/ld-wrapper.sh | |
parent | 55aecca307e6ea87d6bfa7ff3c31fc56a42d967e (diff) |
bintools: Add response file support to `ld-wrapper` (#213831)
The motivation behind this is to alleviate the problem described in https://github.com/NixOS/nixpkgs/issues/41340. I'm not sure if this completely fixes the problem, but it eliminates one more area where we can exceed command line length limits. This is essentially the same change as in #112449, except for `ld-wrapper.sh` instead of `cc-wrapper.sh`. However, that change alone was not enough; on macOS the `ld` provided by `darwin.cctools` fails if you use process substitution to generate the response file, so I put up a PR to fix that: https://github.com/tpoechtrager/cctools-port/pull/131 … and I included a patch referencing that fix so that the new `ld-wrapper` still works on macOS.
Diffstat (limited to 'pkgs/build-support/bintools-wrapper/ld-wrapper.sh')
-rw-r--r-- | pkgs/build-support/bintools-wrapper/ld-wrapper.sh | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/pkgs/build-support/bintools-wrapper/ld-wrapper.sh b/pkgs/build-support/bintools-wrapper/ld-wrapper.sh index 86a7416022010..cb1160f9bbf71 100644 --- a/pkgs/build-support/bintools-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/bintools-wrapper/ld-wrapper.sh @@ -250,10 +250,18 @@ fi PATH="$path_backup" # Old bash workaround, see above. -@prog@ \ - ${extraBefore+"${extraBefore[@]}"} \ - ${params+"${params[@]}"} \ - ${extraAfter+"${extraAfter[@]}"} + +if (( "${NIX_LD_USE_RESPONSE_FILE:-@use_response_file_by_default@}" >= 1 )); then + @prog@ @<(printf "%q\n" \ + ${extraBefore+"${extraBefore[@]}"} \ + ${params+"${params[@]}"} \ + ${extraAfter+"${extraAfter[@]}"}) +else + @prog@ \ + ${extraBefore+"${extraBefore[@]}"} \ + ${params+"${params[@]}"} \ + ${extraAfter+"${extraAfter[@]}"} +fi if [ -e "@out@/nix-support/post-link-hook" ]; then source @out@/nix-support/post-link-hook |