Build system idea

Sterling Clover s.clover at gmail.com
Thu Aug 28 22:00:29 EDT 2008


We do have, although not with easy access, an additional declarative  
layer "built in" 90% of the time as configuration as type signature.

An autoconf style approach to this where each type signature  
dependency is declared seperately would be needlessly complex and  
painful. However, there is room for a fruitful middle ground. Thanks  
to Hackage, at least for those packages that build properly and  
haddock on it, we have, although not in the best format, information  
on the type signatures of the functions of packages, across various  
package versions. So if I, when writing a cabal script, don't  
particularly want to figure out the exact range of, e.g., Network,  
packages that provide the correct API, it would be fairly reasonable  
to statically determine which functions from the Network package that  
are called, and which versions of Network on hackage provide them,  
and with the appropriate types no less. Thus, given that we need  
"Network," a tool could determine what the correct allowable range of  
versions is, and thus avoid both over- and under- specification.

This same tool could be run over existing .cabal files on hackage,  
statically determining when they are likely to either over- or under-  
specify, and alerting package maintainers to this.

--Sterl.

On Aug 28, 2008, at 10:02 AM, Simon Peyton-Jones wrote:

> | Yes this means that Cabal is less general than autoconf.  It was  
> quite a
> | revelation when we discovered this during the design of Cabal -  
> originally
> | we were going to have everything done programmatically in the  
> Setup.hs
> | file, but then we realised that having the package configuration  
> available
> | *as data* gave us a lot more scope for automation, albeit at the  
> expense of
> | some generality.
>
> Now there's a useful insight for the paper I hope Duncan (or  
> someone) is going to write
>
>         configuration as code [autoconf]
> vs
>         configuration as data [cabal]
>
> Simon
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users



More information about the Glasgow-haskell-users mailing list