Hi Simon, The direct answer to your particular problem is that cabal-install-3.10.1 (which you're using) does not add `base` in the package environment created by `install --lib` by default. So, to fix the problem you'd need to say `cabal install --lib base hashtables primitive` instead. Better yet, you could upgrade your cabal-install to version 3.10.3 (recommended by GHCup), where this behavior was reversed (base is added by default).
To add to how brittle `install --lib` is: the 3.10.1 behavior (no base by default) bothered people [1] and was changed in 3.10.3 [2]. But the 3.10.3 behavior (add base by default) also bothers people [3]! And note that although you have an easy way to solve your issue (add base in the list of libraries in the call to install --lib), the users of 3.10.3 who don't want base added by default don't have such an easy way. (By easy I mean using only cabal CLI and don't edit env files manually, for example.) More general, I think, it's possible to develop a mental model for today's `install --lib` (either 3.10.1 or 3.10.3, doesn't matter in the grand scheme), and use it effectively for "little experiments" as advocated by Richard in the above-mentioned issue [4] (note that the issue was solved since!). The prerequisite for that is to understand GHC environment files and that `install --lib` is mostly a (n incomplete) CLI interface to them. Yet, people argue for a more holistic "environment" experience, see, e.g., the above mentioned [5] (*the* cabal-env issue) or a very recent push from the old cabal sandboxes perspective: https://github.com/haskell/cabal/issues/10098 or this thread :-) Also, (much in the spirit of *Carthago delenda est*) I try to conclude my every reply about install --lib with what's already mentioned by Tom: *always* use `cabal install --lib` with `--package-env=.` It will save you a bunch of pain related to the "global state" (not all of it, perhaps). -- Best, Artem [1]: https://github.com/haskell/cabal/issues/8894 [2]: https://github.com/haskell/cabal/pull/8903 [3]: https://github.com/haskell/cabal/issues/9672 [4]: https://github.com/haskell/cabal/issues/7832 [5]: https://github.com/haskell/cabal/issues/6481 On Tue, Jul 9, 2024 at 4:58 AM Simon Peyton Jones < simon.peytonjo...@gmail.com> wrote: > Friends > > I'm trying to repro #25064 with my development build of GHC. The test > case depends on packages `primitive` and `hashtables`. So I try this (see > below). > > Alas, apparently after the `cabal install`, it can't find Prelude. > > What should I do? I tried removing the "environments" file, whatever that > is, which then meant it could find Prelude -- but the libraries were no > longer installed. > > I lack a decent model of what is going on with installing packages for my > development builds. Is there a write up anywhere? > > Thanks > > Simon > > > bash$ cabal install --lib hashtables primitive --with-compiler > $HOME/code/HEAD/$s2 > Warning: Unknown/unsupported 'ghc' version detected (Cabal 3.10.1.0 > supports > 'ghc' version < 9.8): /home/simonpj/code/HEAD/_build/stage1/bin/ghc is > version > 9.11.20240517 > Warning: Unknown/unsupported 'ghc' version detected (Cabal 3.10.1.0 > supports > 'ghc' version < 9.8): /home/simonpj/code/HEAD/_build/stage1/bin/ghc is > version > 9.11.20240517 > Resolving dependencies... > bash$ ~/code/HEAD/$s2 -c T25064.hs > Loaded package environment from > T25064.hs:1:8: error: [ ]8;;https://errors.haskell.org/messages/GHC-87110 > \GHC-87110 ]8;; \] > Could not load module ‘Prelude’. > It is a member of the hidden package ‘base-4.20.0.0’. > Use -v to see a list of the files searched for. > | > 1 | module Bug where > | ^^^ > > bash$ rm /home/simonpj/.ghc/x86_64-linux-9.11.20240517/environments/default > bash$ ~/code/HEAD/$s2 -c T25064.hs > T25064.hs:3:1: error: [ ]8;;https://errors.haskell.org/messages/GHC-61948 > \GHC-61948 ]8;; \] > Could not find module ‘Control.Monad.Primitive’. > Perhaps you meant Control.Monad.Writer (from mtl-2.3.1) > Use -v to see a list of the files searched for. > | > 3 | import Control.Monad.Primitive > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > T25064.hs:4:1: error: [ ]8;;https://errors.haskell.org/messages/GHC-87110 > \GHC-87110 ]8;; \] > Could not find module ‘Data.HashTable.ST.Basic’. > Use -v to see a list of the files searched for. > | > 4 | import qualified Data.HashTable.ST.Basic as H > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > > _______________________________________________ > ghc-devs mailing list > ghc-devs@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs