[GHC] #16228: ghc-pkg and ghc do not agree about package with internal libraries

GHC ghc-devs at haskell.org
Thu Jan 24 14:40:47 UTC 2019


#16228: ghc-pkg and ghc do not agree about package with internal libraries
--------------------------------------+---------------------------------
           Reporter:  michaelpj       |             Owner:  (none)
               Type:  bug             |            Status:  new
           Priority:  normal          |         Milestone:
          Component:  ghc-pkg         |           Version:  8.6.3
           Keywords:                  |  Operating System:  Linux
       Architecture:  x86_64 (amd64)  |   Type of failure:  None/Unknown
          Test Case:                  |        Blocked By:
           Blocking:                  |   Related Tickets:
Differential Rev(s):                  |         Wiki Page:
--------------------------------------+---------------------------------
 Initially I reported this to Cabal
 (https://github.com/haskell/cabal/issues/5857), but I think this is
 actually a GHC bug.

 Repro here: https://github.com/michaelpj/cabal-bug-package-db

 In particular, you can run the following.
 {{{
 $ cabal build
 $ ghc-pkg field test exposed -f dist/package.conf.inplace
 exposed: True
 $ ghc-pkg find-module Test -f dist/package.conf.inplace
 dist/package.conf.inplace
     test-0.1.0.0
 $ ghc -package-db dist/package.conf.inplace Use.hs
 [1 of 1] Compiling Use              ( Use.hs, Use.o )

 Use.hs:3:1: error:
     Could not load module ‘Test’
     It is a member of the hidden package ‘test-0.1.0.0’.
     You can run ‘:set -package test’ to expose it.
     (Note: this unloads all the modules in the current scope.)
     Use -v to see a list of the files searched for.
   |
 3 | import Test
   | ^^^^^^^^^^^
 $ ghc -package-db dist/package.conf.inplace -package test Use.hs
 [1 of 1] Compiling Use              ( Use.hs, Use.o )
 }}}

 That is:
 * `ghc-pkg` thinks the package is present, exposed, and contains the
 module in question.
 * `ghc` thinks the package is hidden, and will accept it when specified
 with `-package`.

 If you comment out the internal library this does not happen, but
 regardless it seems bad that there's a disagreement between `ghc-pkg` and
 `ghc`.

 I've also observed (although I don't have a small reproduction for this) a
 similar case where `ghc` does not even think the module is hidden, but
 again will accept it with `-package`.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16228>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list