-
Notifications
You must be signed in to change notification settings - Fork 710
Fix PATH changes not triggering REPL reconfiguration (#2015) #10817
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
530f1f8
to
faff622
Compare
faff622
to
9fd36c6
Compare
Is this ready for review? If so, could you please add the label? |
Any reviewers? @ulysses4ever ? 1 week without movement, so I am happy to just merge it if no-one wishes to review. |
Sorry for slow progress here: everyone was busy with the release. I'll try to take a look today. I don't think it's possible to merge anything without reviews. Unless you're going to change repository settings, which is a big change for the project and should be discussed on a meeting. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd suggest that you mention in the commit message why adding a new field, seemingly unused anywhere, changes the behaviour (it's because of the Generic business afaiu).
@mpickering: would you like to respond and then set the merge label maybe? |
906f0f6
to
9efbc01
Compare
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 the `programOverrideEnv` field of a ConfiguredProgram. These `ConfiguredProgram`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 detecting `PATH` changes, the `dryRunLocalPkg` function examines `ElaboratedConfiguredPackage` and incorrectly determines that nothing has changed that would require reconfiguration. This decision is incorrect because `setup-config` now contains a stale reference to the original `PATH` value, which no longer matches the current environment. To fix this problem, we need to store the `ConfiguredProgram`s directly in `ElaboratedConfiguredPackage`. This approach will ensure that when `PATH` changes, the `ConfiguredProgram`s will also change, properly triggering reconfiguration. While this solution will cause more recompilations when `PATH` 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
9efbc01
to
cf4083b
Compare
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.