I haven't totally followed this whole thread, so apologies if this
isn't entirely relevant, but I use shake for building, and cabal for
dependencies. The shakefile has the list of packages and required
versions, and generates the .cabal file, which is used with
--only-dependencies to get dependencies.
I think it works well. I can't do builds in cabal anyway since it
can't handle anything complicated, but even if I had a simple build
I'd prefer shake since it's so much nicer. Since it's in haskell,
it's flexible but can't be analyzed, though I can't think of why you'd
want to analyze it.
Meanwhile, cabal is just fine at expressing packages and versions, and
is basically just a way to tell cabal-install what to download and
install. Since I generate it, I don't care much about the format, but
the existing one seems perfectly adequate.
Haskell-community mailing list