Build system idea

Sean Leather leather at cs.uu.nl
Thu Sep 4 19:08:35 EDT 2008


> > cabal-install: it does not work well with packages that have flags
> > because it does not know what flags to use when building dependencies.
> >  Really, packages with conditionals are different packages in one
> > cabal file.
>
> Packages are not supposed to expose different APIs with different flags
> so I don't think that's right. Under that assumption cabal-install can
> in principle resolve everything fine. I'm not claiming the current
> resolution algorithm is very clever when it comes to picking flags
> (though it should always pick ones that give an overall valid solution)
> but there is certainly scope for a cleverer one. Also, the user can
> always specify what features they want, which is what systems like
> Gentoo do.
>
> Do you have any specific test cases where the current algorithm is less
> than ideal? It'd be useful to report those for the next time someone
> hacks on the resolver.
>

I have a package that builds a library and a test executable. The test
executable uses QuickCheck 2, but I don't want to force random Jane who
cabal-installs my package to install QuickCheck 2. One, it's not packaged
up, and two, it's not necessary for using the library. The cleanest way I
found to deal with this is to use a flag for hiding the build-depends of the
test executable for the flag-less build.

if flag(test)
  build-depends: QuickCheck >= 2.0
else
  buildable: False

Sean
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/glasgow-haskell-users/attachments/20080905/98a08727/attachment-0001.htm


More information about the Glasgow-haskell-users mailing list