Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Types for the Distribution.Client.ProjectBuilding
Moved out to avoid module cycles.
Synopsis
- type BuildStatusMap = Map UnitId BuildStatus
- data BuildStatus
- buildStatusRequiresBuild :: BuildStatus -> Bool
- buildStatusToString :: BuildStatus -> String
- data BuildStatusRebuild
- data BuildReason
- data MonitorChangedReason a
- type BuildOutcomes = Map UnitId BuildOutcome
- type BuildOutcome = Either BuildFailure BuildResult
- data BuildResult = BuildResult {}
- data BuildFailure = BuildFailure {}
- data BuildFailureReason
Pre-build status
type BuildStatusMap = Map UnitId BuildStatus Source #
The BuildStatus
of every package in the ElaboratedInstallPlan
.
This is used as the result of the dry-run of building an install plan.
data BuildStatus Source #
The build status for an individual package is the state that the package is in prior to initiating a (re)build.
This should not be confused with a BuildResult
which is the result
after successfully building a package.
It serves two purposes:
- For dry-run output, it lets us explain to the user if and why a package is going to be (re)built.
- It tell us what step to start or resume building from, and carries enough information for us to be able to do so.
BuildStatusPreExisting | The package is in the |
BuildStatusInstalled | The package is in the |
BuildStatusDownload | The package has not been downloaded yet, so it will have to be downloaded, unpacked and built. |
BuildStatusUnpack FilePath | The package has not been unpacked yet, so it will have to be unpacked and built. |
BuildStatusRebuild FilePath BuildStatusRebuild | The package exists in a local dir already, and just needs building
or rebuilding. So this can only happen for |
BuildStatusUpToDate BuildResult | The package exists in a local dir already, and is fully up to date.
So this package can be put into the |
buildStatusRequiresBuild :: BuildStatus -> Bool Source #
Which BuildStatus
values indicate we'll have to do some build work of
some sort. In particular we use this as part of checking if any of a
package's deps have changed.
buildStatusToString :: BuildStatus -> String Source #
This is primarily here for debugging. It's not actually used anywhere.
data BuildStatusRebuild Source #
For a package that is going to be built or rebuilt, the state it's in now.
So again, this tells us why a package needs to be rebuilt and what build
phases need to be run. The MonitorChangedReason
gives us details like
which file changed, which is mainly for high verbosity debug output.
BuildStatusConfigure (MonitorChangedReason ()) | The package configuration changed, so the configure and build phases needs to be (re)run. |
BuildStatusBuild (Maybe (Maybe InstalledPackageInfo)) BuildReason | The configuration has not changed but the build phase needs to be rerun. We record the reason the (re)build is needed. The optional registration info here tells us if we've registered the
package already, or if we still need to do that after building.
|
data BuildReason Source #
BuildReasonDepsRebuilt | The dependencies of this package have been (re)built so the build phase needs to be rerun. |
BuildReasonFilesChanged (MonitorChangedReason ()) | Changes in files within the package (or first run or corrupt cache) |
BuildReasonExtraTargets (Set ComponentName) | An important special case is that no files have changed but the set of components the user asked to build has changed. We track the set of components we have built, which of course only grows (until some other change resets it). The |
BuildReasonEphemeralTargets | Although we're not going to build any additional targets as a whole, we're going to build some part of a component or run a repl or any other action that does not result in additional persistent artifacts. |
data MonitorChangedReason a Source #
What kind of change checkFileMonitorChanged
detected.
MonitoredFileChanged FilePath | One of the files changed (existence, file type, mtime or file
content, depending on the |
MonitoredValueChanged a | The pure input value changed. The previous cached key value is also returned. This is sometimes
useful when using a |
MonitorFirstRun | There was no saved monitor state, cached value etc. Ie the file
for the |
MonitorCorruptCache | There was existing state, but we could not read it. This typically
happens when the code has changed compared to an existing |
Instances
Functor MonitorChangedReason Source # | |
Defined in Distribution.Client.FileMonitor fmap :: (a -> b) -> MonitorChangedReason a -> MonitorChangedReason b # (<$) :: a -> MonitorChangedReason b -> MonitorChangedReason a # | |
Show a => Show (MonitorChangedReason a) Source # | |
Defined in Distribution.Client.FileMonitor showsPrec :: Int -> MonitorChangedReason a -> ShowS # show :: MonitorChangedReason a -> String # showList :: [MonitorChangedReason a] -> ShowS # | |
Eq a => Eq (MonitorChangedReason a) Source # | |
Defined in Distribution.Client.FileMonitor (==) :: MonitorChangedReason a -> MonitorChangedReason a -> Bool # (/=) :: MonitorChangedReason a -> MonitorChangedReason a -> Bool # |
Build outcomes
type BuildOutcomes = Map UnitId BuildOutcome Source #
A summary of the outcome for building a whole set of packages.
type BuildOutcome = Either BuildFailure BuildResult Source #
A summary of the outcome for building a single package: either success or failure.
data BuildResult Source #
Information arising from successfully building a single package.
Instances
Show BuildResult Source # | |
Defined in Distribution.Client.ProjectBuilding.Types showsPrec :: Int -> BuildResult -> ShowS # show :: BuildResult -> String # showList :: [BuildResult] -> ShowS # |
data BuildFailure Source #
Information arising from the failure to build a single package.
Instances
Exception BuildFailure Source # | |
Defined in Distribution.Client.ProjectBuilding.Types | |
Show BuildFailure Source # | |
Defined in Distribution.Client.ProjectBuilding.Types showsPrec :: Int -> BuildFailure -> ShowS # show :: BuildFailure -> String # showList :: [BuildFailure] -> ShowS # |
data BuildFailureReason Source #
Detail on the reason that a package failed to build.
Instances
Show BuildFailureReason Source # | |
Defined in Distribution.Client.ProjectBuilding.Types showsPrec :: Int -> BuildFailureReason -> ShowS # show :: BuildFailureReason -> String # showList :: [BuildFailureReason] -> ShowS # |