cc-wrapper: Use response files for cc #35102
Closed
+120
−34
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
@Ericson2314, can you please take a look at this. I have managed
to get webkitgtk building on macOS with the latest nixpkgs
but only if I use this change to work around the command line
argument limits.
Motivation for this change
This works around issues on OS that has a limited on the number of
arguments that can be passed to a process.
Things done
This change will passes all arguments in a temporary response file,
but only if we were able to expand response params with
expandResponseParams (that way we can safely assume there are
no unexpanded response params).
It also treats -L and -l linker options passed to cc-wrapper.sh
specially. It puts these in a response file and adds that file to
the list of options with
-Wl,@...
. This helps avoid issues whenthe wrapped cc binary itself calls the linker.
Finally because ld cannot handle response files it shrinks the -L
options in macos-sierra-reexport-hack.bash using temporary local
symlinks with short names.
build-use-sandbox
innix.conf
on non-NixOS)nix-shell -p nox --run "nox-review wip"
./result/bin/
)