-
Notifications
You must be signed in to change notification settings - Fork 695
Stable Interfaces
benmachine edited this page Apr 2, 2013
·
2 revisions
Imported from Trac wiki; be wary of outdated information or markup mishaps.
Possibly obsoleted by the Stability of Cabal Interfaces section of the user guide
This is backwards compatible and mostly forwards compatible. New fields can be added without breaking older versions of Cabal. Fields can be deprecated without breaking older packages.
-
./setup configure
- --prefix
- --user
- --ghc, --hugs
- --verbose
-
./setup build
-
./setup install
- defaultMain
- defaultMainWithHooks defaultUserHooks
- but regular defaultMainWithHooks isn't stable since userHooks changes.
- UserHooks The hooks api will change in the future.
- Distribution.* is mostly declarative information about packages and is somewhat stable.
To what extent should the rest of the API be stabalized? Sometimes utility functions are useful to layered tools, either to find out where stuff is in the build tree, or to compute something like the package name, given the package identifier.
- Various utility functions
- Everything under Distribution.Simple.* has no stability guarantee
- index format is a partly stable interface. It consists of a tar.gz file that contains directories with .cabal files in. In future it may contain more kinds of files so do not assume every file is a .cabal file. Incompatible revisions to the format would involve bumping the name of the index file, ie 00-index.tar.gz, 01-index.tar.gz etc.