stack-1.1.2: 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

checkSnapBuildPlan :: (MonadIO m, MonadMask m, MonadLogger m, MonadReader env m, HasHttpManager env, HasConfig env, HasGHCVariant env, MonadBaseControl IO m) => [GenericPackageDescription] -> Maybe (Map PackageName (Map FlagName Bool)) -> SnapName -> m BuildPlanCheck #

Check a set of GenericPackageDescriptions and a set of flags against a given snapshot. Returns how well the snapshot satisfies the dependencies of the packages.

data MiniBuildPlan #

A simplified version of the BuildPlan + cabal file.

Instances

Eq MiniBuildPlan # 
Show MiniBuildPlan # 
Generic MiniBuildPlan # 

Associated Types

type Rep MiniBuildPlan :: * -> * #

Binary MiniBuildPlan # 
NFData MiniBuildPlan # 

Methods

rnf :: MiniBuildPlan -> () #

HasStructuralInfo MiniBuildPlan # 

Methods

structuralInfo :: Proxy * MiniBuildPlan -> StructuralInfo

HasSemanticVersion MiniBuildPlan # 

Associated Types

type SemanticVersion MiniBuildPlan :: Nat

type Rep MiniBuildPlan # 
type Rep MiniBuildPlan = D1 (MetaData "MiniBuildPlan" "Stack.Types.BuildPlan" "stack-1.1.2-49dhs7u8deFCRPHWDHyZQB" False) (C1 (MetaCons "MiniBuildPlan" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "mbpCompilerVersion") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 CompilerVersion)) (S1 (MetaSel (Just Symbol "mbpPackages") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Map PackageName MiniPackageInfo)))))
type SemanticVersion MiniBuildPlan # 
type SemanticVersion MiniBuildPlan = 0

data MiniPackageInfo #

Information on a single package for the MiniBuildPlan.

Constructors

MiniPackageInfo 

Fields

Instances

Eq MiniPackageInfo # 
Show MiniPackageInfo # 
Generic MiniPackageInfo # 
Binary MiniPackageInfo # 
NFData MiniPackageInfo # 

Methods

rnf :: MiniPackageInfo -> () #

HasStructuralInfo MiniPackageInfo # 

Methods

structuralInfo :: Proxy * MiniPackageInfo -> StructuralInfo

type Rep MiniPackageInfo # 

loadResolver :: (MonadIO m, MonadLogger m, MonadReader env m, HasHttpManager env, HasConfig env, HasGHCVariant env, MonadBaseControl IO m, MonadMask m) => Maybe (Path Abs File) -> Resolver -> m (MiniBuildPlan, LoadedResolver) #

loadMiniBuildPlan :: (MonadIO m, MonadLogger m, MonadReader env m, HasHttpManager env, HasConfig env, HasGHCVariant env, MonadBaseControl IO m, MonadMask m) => SnapName -> m MiniBuildPlan #

Load up a MiniBuildPlan, preferably from cache

resolveBuildPlan #

Arguments

:: (MonadThrow m, MonadIO m, MonadReader env m, HasBuildConfig env, MonadLogger m, HasHttpManager env, MonadBaseControl IO m, MonadCatch m) 
=> 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.

selectBestSnapshot :: (MonadIO m, MonadMask m, MonadLogger m, MonadReader env m, HasHttpManager env, HasConfig env, HasGHCVariant env, MonadBaseControl IO m) => [GenericPackageDescription] -> NonEmpty SnapName -> m (SnapName, BuildPlanCheck) #

Find a snapshot and set of flags that is compatible with and matches as best as possible with the given GenericPackageDescriptions.

getToolMap :: MiniBuildPlan -> Map Text (Set PackageName) #

Map from tool name to package providing it

showItems :: Show a => [a] -> Text #

parseCustomMiniBuildPlan #

Arguments

:: (MonadIO m, MonadMask m, MonadLogger m, MonadReader env m, HasHttpManager env, HasConfig env, HasGHCVariant env, MonadBaseControl IO m) 
=> Maybe (Path Abs File)

Root directory for when url is a filepath

-> Text 
-> m (MiniBuildPlan, SnapshotHash)