Fix PATH changes not triggering REPL reconfiguration (#2015) #10817
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.
When a user's PATH environment variable changes between Cabal commands, the environment in the REPL becomes incorrect. This occurs because during initial package configuration, the current PATH is captured via
programSearchPathAsPATHVar
and then stored in theprogramOverrideEnv
field of a ConfiguredProgram. TheseConfiguredProgram
s are subsequently serialized into the setup-config file, effectively baking in the PATH environment from the time of configuration.The issue manifests when
PATH
is updated after initial configuration. Although the solver re-runs when detectingPATH
changes, thedryRunLocalPkg
function examinesElaboratedConfiguredPackage
and incorrectly determines that nothing has changed that would require reconfiguration. This decision is incorrect becausesetup-config
now contains a stale reference to the originalPATH
value, which no longer matches the current environment.To fix this problem, we need to store the
ConfiguredProgram
s directly inElaboratedConfiguredPackage
. This approach will ensure that whenPATH
changes, theConfiguredProgram
s will also change, properly triggering reconfiguration. While this solution will cause more recompilations whenPATH
changes, it guarantees that the correct environment is always used during builds and REPL sessions.An alternative approach would be to stop baking the
PATH
variable into the environment of programs, but this would require more substantial changes to how Cabal manages environment variables.Fixes #2015
Please read Github PR Conventions and then fill in one of these two templates.
Template Α: This PR modifies behaviour or interface
Include the following checklist in your PR:
significance: significant
in the changelog file.