
On 29.10 14:56, Duncan Coutts wrote:
We do have to bear in mind how hard it'll be for cabal-get to be able to do dependency analysis. The decisions we make about optional configurations has a big impact on this. It also has a big effect on how easy it is to make 'native' packages for distros which typically don't have extremely sophisticated dependency systems.
Why not simply use a single file like: cabal-get.conf that contains flags for packages like: syntax = line+ line = PACKAGE-REGEXP ':' flags flags = <empty> | ['!'] flag flags I don't think there is a sensible way for enabling random flags without the user asking for them. Normally packages should just be built with defaults.
There's also the important issue of binary packages. We're all used to building from source which gives us a lot of flexibility, but most users expect binary packages. For example Debian and most other commercial distros and Windows of course. It is important that we be able to make sensible binary packages. If the configuration language encourages package authors to go too crazy and one would need 2^n different binary packages then I'd say that we've failed.
This is no different than from configure switches for autotools packages - and they don't lead to 2^n different binaries - and there is no technical measure preventing packagers to do evil things depending on the flags with autotools.
Remember that the main use case of configurations is just to cope with minor things like modules moving from one package to another or slight differences in the way things are implemented on different platforms or Haskell implementations.
Yes, and we should concentrate on making it simple and intuitive to do right. Trying to ban the bad ways of doing things seems to complicate things. - Einar Karttunen