haskell / haskell/cabal

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

Open
#12,122 1 comment 1 reaction 0 assignees View on GitHub
type: bug
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.