RE: irrelevant package

On 13 June 2005 14:34, Serge D. Mechveliani wrote:
I am testing packages in ghc-6.4. I set docon.cabal,
which declares dependence on `data': build-depends: data The attempt to build docon by
cd $doconSource runhaskell Setup.hs configure --ghc --prefix=$doconSource/inst runhaskell Setup.hs build
produces
configuring ... compiling ... ... DPrelude.hs:1:0: Module `DPrelude' is a member of package dumatel-1.2.6.4. To compile this module, please use -ignore-package dumatel-1.2.6.4.
These does exist a package dumatel-1.2.6.4, and both the above packages have DPrelude among the module names. But why does Cabal look into irrelevant package? The dependence is set: only `data'.
This is "fixed" in newer versions of Cabal. However, you are heading for problems here. When you install a package P that includes a module M, you prevent the user from having any modules called M unless they say '-hide-package P' (see previous discussions on this subject). For this reason, we strongly recommend using hierarchical module names. At the moment, Cabal "exposes" all the packages it imports. Perhaps we should have an option to install an unexposed package, to allow installation of packages that contain non-hierarchical module names. Isaac - what do you think? Cheers, Simon

On Mon, 2005-06-13 at 16:06 +0100, Simon Marlow wrote:
This is "fixed" in newer versions of Cabal.
However, you are heading for problems here. When you install a package P that includes a module M, you prevent the user from having any modules called M unless they say '-hide-package P' (see previous discussions on this subject).
For this reason, we strongly recommend using hierarchical module names.
At the moment, Cabal "exposes" all the packages it imports. Perhaps we should have an option to install an unexposed package, to allow installation of packages that contain non-hierarchical module names. Isaac - what do you think?
But remember that any exposed dependent package of P effectively exposes package P anyway. So it's not the case that you can install an unexposed package and assume that it'll all be ok. Any package installed later can come along and expose your package and you're back to the problem that no programs/libs with your module M can now be complied (without several -hide-package flags). Duncan
participants (2)
-
Duncan Coutts
-
Simon Marlow