Cabal package description sytax

ross at soi.city.ac.uk ross at soi.city.ac.uk
Tue Dec 7 19:31:01 EST 2004


On Tue, Dec 07, 2004 at 09:50:58AM -0800, Isaac Jones wrote:
> My hope is to eventually just have the exposed modules list on there
> (and available to layered tools) and have it determine the
> dependencies.  Same with the main modules for executables.  It would
> be nice if the exposed modules list were available to the tools, but
> that's not a requirement.

Another possibility is to have Exposed-Modules in the package description,
and a field in the build info listing modules from that list to be
excluded from a build on this system.

> What I mean is that you can have two files, Setup.description, and
> yourgenerateddescription.in.  The former has the required fields and
> the later has the build information, then main would be something like
> this:
> 
> main = do e <- doesFileExist "yourgenerateddescription"
>           when (not e) (system "autoconf yourgenerateddescription.in")
>           desc <- readPackageDescription "yourgenerateddescription"
>           defaultMainNoRead desc

How about using optional files as the hooks, something like

configure pkg_descr ... =
        configureExists <- fileExists "configure.lhs"
        when configureExists $ rawSystem "runhaskell" ["configure.lhs"]
        buildInfoExists <- fileExists "yourgenerateddescription"
        buildInfo <- if buildInfoExists
                then readBuildInfo "yourgenerateddescription"
                else return (defaultBuildInfo pkg_descr)
        ...

(You'd probably also want some way for configure.lhs to indicate failure.)
I'd also like Setup.lhs itself to be optional, defaulting to the simple one,
which can be precompiled.

> So the only issue here is that you have a bit of a configure step no
> matter what commands they use.  It would indeed be nice to have hooks
> for the commands.  I'm a bit worried about making the
> Distribution.Simple interface complex, but I wanted to add hooks for
> "test" and "postinst" anyway.  The problem is, do we need all of:
> {pre,post}{configure,build,install}, test?

There can be different tests before and after installation, too,
and the test would need some way of indicating success or failure.
I imagine you have a plan to have Hackage plug into an autobuilder
so the package list can show what versions of what compilers a
package works with -- that would be very useful, not least in flagging
abandoned packages.

> BTW, I was toying with the idea of using the config file parser from
> John Goerzen's MissingH in the Cabal, and provide it for Setup.lhs
> authors to write and parser their own configuration-related files.

I'd be keener to have specified file formats with corresponding parsers in
the library.  Lengthy Setup.lhs scripts will be a maintainance headache,
I think.


More information about the Libraries mailing list