exposed packages and cabal depends

Isaac Jones ijones at
Fri Apr 8 18:40:45 EDT 2005

(removing some CCs)

"S. Alexander Jacobson" <alex at> writes:

> Simon,
> The -hide-all-packages option would make sense only if there were real
> flexibility in selecting which packages to use in implementing the
> modules imported into your program. 

I disagree.  The basic system will be:

- the users add build-depends to their .cabal files

- their software, is built (by cabal) with the -hide-all-packages, and
  cabal adds -package flag for each explicit dependency, so:

- if there is any dependency on a package not mentioned in the .cabal
  file, the program will fail to build with cabal.

- (Previously[1], the user could fail to mention dependencies for
  "exposed" packages and not get an error.)

So the -hide-all-packages makes a great deal of sense and provides
value.  I don't think that your characterization of it is
constructive.  It works with the packaging system that exists today in
GHC.  Most of the infrastructure is outside of the compiler[2].  There
are pros and cons to that, but that's the reality of every compiler I
know of.



[1] That is, currently.

[2] The "packaging system" bits that include cabal, hackage, and
ghc-pkg are all external to the compiler.  The compiler only does the
relatively small job of knowing how to find the modules when given a
-package flag (or when a package is exposed).

More information about the Libraries mailing list