brainstorming ways to stabalize Cabal interface?

Isaac Jones ijones at syntaxpolice.org
Thu Jan 19 01:57:57 EST 2006


Greetings.  I'm keen to try to stabalize more of the Cabal interface,
but I'm not sure the best way to go about that.  I started a wiki page
to start to document what is stable and what is not.  Eventually this
should move into the end-user documentation:

http://hackage.haskell.org/trac/hackage/wiki/StableInterfaces

Does anyone have clever ideas for how to go about pushing these
interfaces toward stability?  Do we just need to declare that certain
things are unstable for the near-term (and possibly implement the
eternal compatibility in theory idea[1]) and continue to experiment
with them until they seem done enough?  Do we stare at them very hard?

Below[2] are my thoughts about what we _know_ to be stable, and the
types for the new hooks interface.


peace,

  isaac



[1] http://www.haskell.org/tmrwiki/EternalCompatibilityInTheory 

[2] Here's a summary of the bits of interface that need to be
    stabalized, or are already stabalized.

Stable Commands

    * ./setup configure
          o --prefix
          o --user
          o --ghc, --hugs
          o --verbose 
    * ./setup build
    * ./setup install 

Unstable Commands
    * everything else.  well, they're really _pretty_ stable.

Stable functions

    * defaultMain
    * defaultMainWithHooks defaultUserHooks
          o but regular defaultMainWithHooks isn't stable since userHooks changes. 

Unstable functions

    * Various utility functions 
    * UserHooks

runTests :: Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ExitCode, -- ^Used for @.\/setup test@
readDesc :: IO (Maybe PackageDescription), -- ^Read the description file
hookedPreProcessors :: [ PPSuffixHandler ],
   -- ^Custom preprocessors in addition to and overriding 'knownSuffixHandlers'.
hookedPrograms :: [Program],
   -- ^These programs are detected at configure time.  Arguments for them are added to the configure command.
  -- |Hook to run before configure command
preConf  :: Args -> ConfigFlags -> IO HookedBuildInfo,
-- |Over-ride this hook to get different behavior during configure.
confHook :: PackageDescription -> ConfigFlags -> IO LocalBuildInfo,
 -- |Hook to run after configure command
postConf :: Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ExitCode,
...
   * Everything else

peace,

  isaac


More information about the Libraries mailing list