RFC: Cabal-Configurations patch(es)
Thomas Schilling
nominolo at googlemail.com
Sun Jun 24 06:41:32 EDT 2007
Hi,
you just received a longish patch bundle, that together implement
Cabal configurations. I realized too late that there's a way to
combine this mail with the actual patch, so consider this an addendum.
The implementation can read all old Cabal-files (and should do the
same), but unfortunately, I had to change the interface of the
confHook function, which I assume will break some setup files. The
documentation states, that you shouldn't depend on that interface,
but then again do people have to use them if they have special
requirements.
The most important change is, that Cabal files are now parsed to
'PreparedPackageDescription' which requires a run of
'finalizePackageDescription' to get to the actual
'PackageDescription'. This resolving process is potentially very
slow (exponential in the number of flags), especially if there is no
possible flag assignment. I plan to correct this by adding some
minimum SAT solving capabilities, which will however still be
exponential in the worst case. For now, the current implementation
should be sufficient, though.
My testing is far from exhaustive, as I haven't yet found a good way
of setting up a suitable test environment without endangering to
break my current setup. I am setting up a ghc-HEAD installation, but
there is currently a build error stopping me from it. Incidentally,
Cabal itself now needs configurations to build with ghc-head as well
as ghc-6.6.1.
That said, I'd like to ask you to review the patches and possibly
also test it on your projects. A preliminary HOWTO is at:
http://hackage.haskell.org/trac/hackage/wiki/CabalConfigurations
Thanks,
/ Thomas
More information about the cabal-devel
mailing list