Repl started with --enable-multi-repl **and** _without_ passing the name of an executable in a project with the unnamed library stanza, inherits a different PATH than otherwise
- Dominant language
- Haskell
- Stars
- 1.7k
- Forks
- 750
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 28
Description
**Describe the bug**
Given a `foo.cabal` file with `library` and `executable exe` stanzas, the repl started with any of these 3 commands
- `cabal repl`,
- `cabal repl exe`,
- `cabal repl --enable-multi-repl exe`
inherits a different `PATH` than if it was started with this command:
- `cabal repl --enable-multi-repl`
**To Reproduce**
Create a project with this directory structure:
```
.
├── cabal.project
├── exe
│ └── Exe.hs
├── foo.cabal
└── lib
└── Lib.hs
3 directories, 4 files
```
where
- `cabal.project` contains
```cabal
packages: .
```
- `foo.cabal` contains
```cabal
cabal-version: 3.4
name: foo
version: 0
library
build-depends: base
exposed-modules: Lib
hs-source-dirs: lib
executable exe
build-depends: base
hs-source-dirs: exe
main-is: Exe.hs
```
- `Lib.hs` contains
```haskell
module Lib () where
```
- and `Exe.hs` contains
```haskell
main :: IO ()
main = putStrLn "Hello World"
```
With the above, start the repl via these 3 commands
- `cabal repl`,
- `cabal repl exe`,
- `cabal repl --enable-multi-repl exe`
and in each of the repls, issue both `:! echo $PATH` and `:! ghc --version`.
The latter command reports the GHC version selected in GHCup at that moment, as expected.
Now, run this 4th command:
- `cabal repl --enable-multi-repl`
and issue both `:! echo $PATH` and `:! ghc --version`.
The output will be different, and in particular `:! ghc --version` reports - unexpectedly to me - GHC 9.6.6.
Why is that?
**Expected behavior**
All 4 `cabal repl ...` commands should inherit the same `PATH`.
**System information**
- up-to-date ArchLinux
- XMonad installed via `pacman`
- this brings in the dependency on the `ghc`, version 9.6.6
- `cabal` 3.16.1.0 installed via GHCup 0.2.6.2,
- `ghc` 9.14.1 and 9.12.2 installed via GHCup 0.2.6.2
**Additional context**
[I've searched, but haven't found anything that strikes me as the same issue.](https://github.com/haskell/cabal/issues?q=%22PATH%22%20%22--enable-multi-repl%22)
Contributor guide
Research direction
Reproduce the issue using the described foo.cabal and cabal.project files, then run each listed cabal repl command and compare :! echo $PATH with :! ghc --version. Start at the cabal repl handling for the unnamed library stanza and --enable-multi-repl behavior. Done means all four commands inherit the same PATH and select the expected GHC version.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- build-system, cli
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100