| Safe Haskell | Safe-Inferred |
|---|---|
| Language | GHC2021 |
Stack.GhcPkg
Description
Functions for the GHC package database.
Synopsis
- createDatabase :: (HasProcessContext env, HasTerm env) => GhcPkgExe -> Path Abs Dir -> RIO env ()
- findGhcPkgField :: (HasProcessContext env, HasTerm env) => GhcPkgExe -> [Path Abs Dir] -> String -> Text -> RIO env (Maybe Text)
- getGlobalDB :: (HasProcessContext env, HasTerm env) => GhcPkgExe -> RIO env (Path Abs Dir)
- ghcPkg :: (HasProcessContext env, HasTerm env) => GhcPkgExe -> [Path Abs Dir] -> [String] -> RIO env (Either SomeException ByteString)
- ghcPkgPathEnvVar :: WhichCompiler -> Text
- mkGhcPackagePath :: Bool -> Path Abs Dir -> Path Abs Dir -> [Path Abs Dir] -> Path Abs Dir -> Text
- unregisterGhcPkgIds :: (HasCompiler env, HasProcessContext env, HasTerm env) => Bool -> GhcPkgExe -> Path Abs Dir -> NonEmpty (Either PackageIdentifier GhcPkgId) -> RIO env ()
Documentation
createDatabase :: (HasProcessContext env, HasTerm env) => GhcPkgExe -> Path Abs Dir -> RIO env () Source #
Create a package database in the given directory, if it doesn't exist.
Arguments
| :: (HasProcessContext env, HasTerm env) | |
| => GhcPkgExe | |
| -> [Path Abs Dir] | package databases |
| -> String | package identifier, or GhcPkgId |
| -> Text | |
| -> RIO env (Maybe Text) |
Get the value of a field of the package.
getGlobalDB :: (HasProcessContext env, HasTerm env) => GhcPkgExe -> RIO env (Path Abs Dir) Source #
Get the global package database
ghcPkg :: (HasProcessContext env, HasTerm env) => GhcPkgExe -> [Path Abs Dir] -> [String] -> RIO env (Either SomeException ByteString) Source #
Run the ghc-pkg executable
ghcPkgPathEnvVar :: WhichCompiler -> Text Source #
Get the environment variable to use for the package DB paths.
mkGhcPackagePath :: Bool -> Path Abs Dir -> Path Abs Dir -> [Path Abs Dir] -> Path Abs Dir -> Text Source #
Get the value for GHC_PACKAGE_PATH
Arguments
| :: (HasCompiler env, HasProcessContext env, HasTerm env) | |
| => Bool | Report pretty exceptions as warnings? |
| -> GhcPkgExe | |
| -> Path Abs Dir | package database |
| -> NonEmpty (Either PackageIdentifier GhcPkgId) | |
| -> RIO env () |
unregister list of package ghcids, batching available from GHC 8.2.1, see https://github.com/commercialhaskell/stack/issues/2662#issuecomment-460342402 using GHC package id where available (from GHC 7.9)
The version of the ghc-pkg executable supplied with GHCs published before
28 August 2023 does not efficiently bulk unregister. Until an efficient
ghc-pkg is available, this function no longer uses:
eres <- ghcPkg pkgexe [pkgDb] args
where
args = "unregister" : "--user" : "--force" :
map packageIdentifierString idents ++
if null gids then [] else "--ipid" : map ghcPkgIdString gidsbut uses:
globalDb <- view $ compilerPathsL.to cpGlobalDB
eres <- tryAny $ liftIO $
ghcPkgUnregisterUserForce globalDb pkgDb hasIpid pkgarg_strs