On 15 jun 2007, at 14.09, Neil Mitchell wrote:
Hi
I thought we'd all agreed that a library package should always export
the same modules (and class, functions, type signatures etc), so
that if
foo depends on bar and you have bar installed then you know that
you can
build foo.
In fact, I thought you were one of the people arguing in favour of
this
for the base package!
I was, for the base package. I want other people to obey these rules,
but occasionally I want to violate them :)
I'm not sure if in general it should be possible to change the export
list. Perhaps we can rely on a large number of evil stares to stop
this being common practice, and yet permit it occasionally.
One thing I would like is given a package _data, which provides a data
type, and a package _class which provides a class and various
instances, I'd like to write in the _class cabal file:
#if has _data
module Class.InstanceForData
#endif
Perhaps configurations can support that?
You mean like this?
Name: demo
Cabal-version: >= 1.3
Description: This is a test file
with a description longer than two lines.
flag Debug {
Description: Enable debug information
Default: False
}
library {
build-depends: blub
exposed-modules: Demo.Main, Demo
if flag(debug) {
build-depends: hunit
ghc-options: -DDEBUG
exposed-modules: Demo.Internal
}
}
executable foo-bar {
Main-is: Foo.hs
}
Of course in this case we'd need to add some flags to the version
number, to indicate, that tho installed version has a certain feature
enabled.
This could be solved with a different package name of course, but I
think it should be easy to add tags to a package version number:
if flag(debug) {
build-depends: hunit
ghc-options: -DDEBUG
tag: debug
exposed-modules: Demo.Internal
}
Testing for the tag is (almost) already supported:
build-depends: demo >= 1.1-debug,
It should be used often, but it could if necessary.
_______________________________________________
cabal-devel mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cabal-devel