Build system idea

Roman Leshchinskiy rl at cse.unsw.edu.au
Thu Aug 28 11:19:53 EDT 2008


On 28/08/2008, at 23:59, Simon Marlow wrote:

> The important thing about Cabal's way of specifying dependencies is  
> that they can be made sound with not much difficulty.  If I say that  
> my package depends on base==3.0 and network==1.0, then I can  
> guarantee that as long as those dependencies are present then my  
> package will build.  ("but but but..." I hear you say - don't touch  
> that keyboard yet!)
>
> Suppose you used autoconf tests instead.  You might happen to know  
> that Network.Socket.blah was added at some point and write a test  
> for that, but alas if you didn't also write a test for  
> Network.Socket.foo (which your code uses but ends up getting removed  
> in network-1.1) then your code breaks.  Autoconf doesn't help you  
> make your configuration sound, and you get no prior guarantee that  
> your code will build.

Cabal doesn't give this guarantee, either, since it allows you to  
depend on just network or on network>x. To be perfectly honest, I  
think neither autoconf's approach (free-form feature tests) nor  
Cabal's (version-based dependencies) really work for all important use  
cases. And I have to disagree with what you write below - I think both  
systems are fundamentally flawed.

As I said before, what does (mostly) work IMO is depending on  
interfaces which are independent of packages. Being required to  
specify the exact interface you depend on solves the problem you  
describe above. It also solves the problem of name clashes with  
functions defined in later versions of a package. And it is still  
nicely declarative.

> Both systems are flawed, but neither fundamentally.  For Cabal I  
> think it would be interesting to look into using more precise  
> dependencies (module.identifier::type, rather than package-version)  
> and have them auto-generated.  But this has difficult implications:  
> implementing cabal-install's installation plans becomes much harder,  
> for example.

Interesting. From our previous discussion I got the impression that  
you wouldn't like something like this. :-)

Roman




More information about the Glasgow-haskell-users mailing list