Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
cabal-install CLI command: build
Synopsis
- installCommand :: CommandUI (NixStyleFlags ClientInstallFlags)
- installAction :: NixStyleFlags ClientInstallFlags -> [String] -> GlobalFlags -> IO ()
- selectPackageTargets :: TargetSelector -> [AvailableTarget k] -> Either TargetProblem' [k]
- selectComponentTarget :: SubComponentTarget -> AvailableTarget k -> Either TargetProblem' k
- establishDummyDistDirLayout :: Verbosity -> ProjectConfig -> FilePath -> IO DistDirLayout
- establishDummyProjectBaseContext :: Verbosity -> ProjectConfig -> DistDirLayout -> [PackageSpecifier UnresolvedSourcePackage] -> CurrentCommand -> IO ProjectBaseContext
The build
CLI and action
installAction :: NixStyleFlags ClientInstallFlags -> [String] -> GlobalFlags -> IO () Source #
The install
command actually serves four different needs. It installs:
* exes:
For example a program from hackage. The behavior is similar to the old
install command, except that now conflicts between separate runs of the
command are impossible thanks to the store.
Exes are installed in the store like a normal dependency, then they are
symlinked/copied in the directory specified by --installdir.
To do this we need a dummy projectBaseContext containing the targets as
extra packages and using a temporary dist directory.
* libraries
Libraries install through a similar process, but using GHC environment
files instead of symlinks. This means that 'v2-install'ing libraries
only works on GHC >= 8.0.
For more details on how this works, see the module Distribution.Client.ProjectOrchestration
Internals exposed for testing
selectPackageTargets :: TargetSelector -> [AvailableTarget k] -> Either TargetProblem' [k] Source #
This defines what a TargetSelector
means for the bench
command.
It selects the AvailableTarget
s that the TargetSelector
refers to,
or otherwise classifies the problem.
For the build
command select all components except non-buildable
and disabled tests/benchmarks, fail if there are no such
components
selectComponentTarget :: SubComponentTarget -> AvailableTarget k -> Either TargetProblem' k Source #
For a TargetComponent
TargetSelector
, check if the component can be
selected.
For the build
command we just need the basic checks on being buildable etc.
Internals exposed for CmdRepl + CmdRun
establishDummyProjectBaseContext Source #
:: Verbosity | |
-> ProjectConfig | Project configuration including the global config if needed |
-> DistDirLayout | Where to put the dist directory |
-> [PackageSpecifier UnresolvedSourcePackage] | The packages to be included in the project |
-> CurrentCommand | |
-> IO ProjectBaseContext |
Create a dummy project context, without a .cabal or a .cabal.project file (a place where to put a temporary dist directory is still needed)