stack-0.1.0.0: The Haskell Tool Stack

Safe HaskellNone
LanguageHaskell2010

Stack.BuildPlan

Description

Resolving a build plan for a set of packages in a given Stackage snapshot.

Synopsis

Documentation

data MiniPackageInfo Source

Information on a single package for the MiniBuildPlan.

Constructors

MiniPackageInfo 

Fields

mpiVersion :: !Version
 
mpiFlags :: !(Map FlagName Bool)
 
mpiPackageDeps :: !(Set PackageName)
 
mpiToolDeps :: !(Set ByteString)

Due to ambiguity in Cabal, it is unclear whether this refers to the executable name, the package name, or something else. We have to guess based on what's available, which is why we store this is an unwrapped ByteString.

mpiExes :: !(Set ExeName)

Executables provided by this package

mpiHasLibrary :: !Bool

Is there a library present?

data Snapshots Source

Most recent Nightly and newest LTS version per major release.

Constructors

Snapshots 

Instances

getSnapshots :: (MonadThrow m, MonadIO m, MonadReader env m, HasHttpManager env, HasStackRoot env, HasConfig env) => m Snapshots Source

Download the Snapshots value from stackage.org.

loadMiniBuildPlan :: (MonadIO m, MonadThrow m, MonadLogger m, MonadReader env m, HasHttpManager env, HasConfig env, MonadBaseControl IO m, MonadCatch m) => SnapName -> m MiniBuildPlan Source

Load up a MiniBuildPlan, preferably from cache

resolveBuildPlan Source

Arguments

:: (MonadThrow m, MonadIO m, MonadReader env m, HasBuildConfig env, MonadLogger m, HasHttpManager env, MonadBaseControl IO m, MonadCatch m) 
=> EnvOverride 
-> MiniBuildPlan 
-> (PackageName -> Bool)

is it shadowed by a local package?

-> Map PackageName (Set PackageName)

required packages, and users of it

-> m (Map PackageName (Version, Map FlagName Bool), Map PackageName (Set PackageName)) 

Determine the necessary packages to install to have the given set of packages available.

This function will not provide test suite and benchmark dependencies.

This may fail if a target package is not present in the BuildPlan.

findBuildPlan :: (MonadIO m, MonadCatch m, MonadLogger m, MonadReader env m, HasHttpManager env, HasConfig env, MonadBaseControl IO m) => [GenericPackageDescription] -> [SnapName] -> m (Maybe (SnapName, Map PackageName (Map FlagName Bool))) Source

Find a snapshot and set of flags that is compatible with the given GenericPackageDescription. Returns Nothing if no such snapshot is found.

type ToolMap = Map ByteString (Set PackageName) Source

Look up with packages provide which tools.

getToolMap :: MiniBuildPlan -> Map ByteString (Set PackageName) Source

Map from tool name to package providing it