GHC packages inputs leak in guix shell

  • Open
  • quality assurance status badge
Details
One participant
  • Simon Tournier
Owner
unassigned
Submitted by
Simon Tournier
Severity
normal
S
S
Simon Tournier wrote on 4 Oct 2023 20:26
(address . bug-guix@gnu.org)
87jzs2z1ka.fsf@gmail.com
Hi,

Consider this:

Toggle snippet (9 lines)
$ guix shell -C ghc-esqueleto ghc gcc-toolchain -- ghci
GHCi, version 9.2.5: https://www.haskell.org/ghc/ :? for help
ghci> import Data.ByteString.Base64.URL.Lazy
ghci> :t encode
encode
:: Data.ByteString.Lazy.Internal.ByteString
-> Data.ByteString.Lazy.Internal.ByteString

The package ghc-base64-bytestring should not be visible and instead, the
user should see:

<no location info>: error:
Could not find module `Data.ByteString.Base64.URL.Lazy'
It is not a module in the current program, or in any known package.

See discussion for more details if needed.

GHC packages' inputs leak in guix shell
Saku Laesvuori <saku@laesvuori.fi>
Tue, 15 Aug 2023 09:51:50 +0300
id:20230815065150.5joaxyts646mnpex@X-kone


As reported in the discussion above, cabal is not exposing the package
required as dependency.

Toggle snippet (18 lines)
$ guix shell -CN cabal-install coreutils zlib -D ghc-old-time
$ cabal update
$ env -u GHC_PACKAGE_PATH cabal install --lib esqueleto
$ ghci
ghci> import Database.Esqueleto.Experimental
ghci> :t encode

<interactive>:1:1: error: Variable not in scope: encode
ghci> import Data.ByteString.Base64.URL.Lazy

<no location info>: error:
Could not load module `Data.ByteString.Base64.URL.Lazy'
It is a member of the hidden package `base64-bytestring-1.2.1.0'.
You can run `:set -package base64-bytestring' to expose it.
(Note: this unloads all the modules in the current scope.)


Cheers,
simon
?