Use shell parsing for response files #116954
Closed
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.
It turns out that #116610 is inadequate, we actually need rustc to perform shell parsing on the lines in response files. This will require adding a dep to the compiler: https://crates.io/crates/shlex
Both clang and gcc do shlex parsing, so it seems reasonable to make rustc do the same. However this would technically be a breaking change if some build system was relying on being able to pass unquoted arguments with spaces in them in a response file and having rustc interpret them as a single arg. To me that scenario seems pretty unlikely, but I'd understand if people want to be more cautious.
How should we proceed? We could do any of:
-Z response_file_shlex
that enables this new behavior for all response files on the command line-Bstatic
/-Bdynamic
where they toggle it for any response files after the flag