Test Cases for Configurations

Thomas Schilling nominolo at googlemail.com
Fri Jun 15 09:06:07 EDT 2007


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.



More information about the cabal-devel mailing list