Skip to content

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 #12122

Description

@Aster89

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
    packages: .
  • foo.cabal contains
    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
    module Lib () where
  • and Exe.hs contains
    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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions