fix: don’t expand aliases in develop stdenv setup #10688
Merged
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.
N.B.: I don't know anything about C++ so I'm ill equipped to judge the quality of this PR or write any tests for it. I don't even know how to cleanly reflow this now very long line. It's more of a POC to open the floor for discussion, than anything else, really.
Motivation
This fixes NixOS/nixpkgs#290775 by not expanding aliases when sourcing the stdenv setup script.
Context
The way bash handles aliases is to expand them when a function is defined, not when it is used. I.e.:
The problem is that ~/.bashrc is sourced before the stdenv setup, and bashrc commonly sets aliases for ‘cp’, ‘mv’ and ‘rm’ which you don’t want to take effect in the stdenv derivation builders. The original commit introducing this feature (5fd8cf7) even mentioned this very alias.
The only way to avoid this is to disable aliases entirely while sourcing the stdenv setup, and reenable them afterwards.
Example of this bug occurring in this very repo:
And now I have to confirm
cp
many many times to actually get anywhere.Priorities and Process
Add 👍 to pull requests you find important.
The Nix maintainer team uses a GitHub project board to schedule and track reviews.