mirror of
https://github.com/commercialhaskell/stackage.git
synced 2026-03-11 11:16:34 +01:00
Move db target directories
This commit is contained in:
parent
77f1ea3789
commit
579f0dfd7e
@ -70,7 +70,7 @@ nightlySettings :: Text -- ^ day
|
|||||||
-> Settings
|
-> Settings
|
||||||
nightlySettings day plan' = Settings
|
nightlySettings day plan' = Settings
|
||||||
{ planFile = nightlyPlanFile day
|
{ planFile = nightlyPlanFile day
|
||||||
, buildDir = fpFromText $ "builds/stackage-nightly-" ++ day
|
, buildDir = fpFromText $ "nightly"
|
||||||
, logDir = fpFromText $ "logs/stackage-nightly-" ++ day
|
, logDir = fpFromText $ "logs/stackage-nightly-" ++ day
|
||||||
, title = \ghcVer -> concat
|
, title = \ghcVer -> concat
|
||||||
[ "Stackage Nightly "
|
[ "Stackage Nightly "
|
||||||
|
|||||||
@ -60,13 +60,14 @@ performBuild pb' = do
|
|||||||
cur <- FP.getWorkingDirectory
|
cur <- FP.getWorkingDirectory
|
||||||
let shakeDir = cur <> "shake/"
|
let shakeDir = cur <> "shake/"
|
||||||
FP.createTree shakeDir
|
FP.createTree shakeDir
|
||||||
|
FP.createTree (buildDatabase pb')
|
||||||
haddockFiles <- liftIO (newTVarIO mempty)
|
haddockFiles <- liftIO (newTVarIO mempty)
|
||||||
registerLock <- liftIO (newMVar ())
|
registerLock <- liftIO (newMVar ())
|
||||||
pkgs <- getRegisteredPackages (buildDatabase shakeDir)
|
|
||||||
let !pb = pb'
|
let !pb = pb'
|
||||||
{ pbInstallDest = cur <> pbInstallDest pb'
|
{ pbInstallDest = cur <> pbInstallDest pb'
|
||||||
}
|
}
|
||||||
!env = Env
|
pkgs <- getRegisteredPackages (buildDatabase pb)
|
||||||
|
let !env = Env
|
||||||
{ envCur = cur
|
{ envCur = cur
|
||||||
, envShake = shakeDir
|
, envShake = shakeDir
|
||||||
, envHaddocks = haddockFiles
|
, envHaddocks = haddockFiles
|
||||||
@ -136,7 +137,7 @@ targetForBuild pb = Target $ (pbInstallDest pb) <> "shake-built"
|
|||||||
|
|
||||||
-- | Get a package database path.
|
-- | Get a package database path.
|
||||||
targetForDb :: Env -> Target
|
targetForDb :: Env -> Target
|
||||||
targetForDb Env{..} = Target $ envShake <> "pkgdb-initialized"
|
targetForDb Env{..} = Target $ (pbInstallDest envPB) <> "pkgdb-initialized"
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Locations, names and environments used. Just to avoid "magic
|
-- Locations, names and environments used. Just to avoid "magic
|
||||||
@ -147,15 +148,15 @@ nameVer :: PackageName -> Version -> String
|
|||||||
nameVer name version = display name ++ "-" ++ display version
|
nameVer name version = display name ++ "-" ++ display version
|
||||||
|
|
||||||
-- | Default environment for running commands.
|
-- | Default environment for running commands.
|
||||||
defaultEnv :: PerformBuild -> FilePath -> FilePath -> [(String, String)]
|
defaultEnv :: PerformBuild -> FilePath -> [(String, String)]
|
||||||
defaultEnv pb shakeDir pwd =
|
defaultEnv pb pwd =
|
||||||
[( "HASKELL_PACKAGE_SANDBOX"
|
[( "HASKELL_PACKAGE_SANDBOX"
|
||||||
, FP.encodeString (pwd <> buildDatabase shakeDir))
|
, FP.encodeString (pwd <> buildDatabase pb))
|
||||||
| pbGlobalInstall pb]
|
| pbGlobalInstall pb]
|
||||||
|
|
||||||
-- | Database location.
|
-- | Database location.
|
||||||
buildDatabase :: FilePath -> FilePath
|
buildDatabase :: PerformBuild -> FilePath
|
||||||
buildDatabase shakeDir = shakeDir <> "pkgdb"
|
buildDatabase pb = (pbInstallDest pb) <> "pkgdb"
|
||||||
|
|
||||||
-- | The directory for the package's docs.
|
-- | The directory for the package's docs.
|
||||||
pkgDocDir :: Env -> PackageName -> Version -> FilePath
|
pkgDocDir :: Env -> PackageName -> Version -> FilePath
|
||||||
@ -216,7 +217,7 @@ data PurgeReason
|
|||||||
cleanOldPackages :: Env -> IO ()
|
cleanOldPackages :: Env -> IO ()
|
||||||
cleanOldPackages env@Env{..} = do
|
cleanOldPackages env@Env{..} = do
|
||||||
putStrLn "Collecting garbage"
|
putStrLn "Collecting garbage"
|
||||||
pkgs <- getRegisteredPackages (buildDatabase envShake)
|
pkgs <- getRegisteredPackages (buildDatabase envPB)
|
||||||
let toRemove = mapMaybe
|
let toRemove = mapMaybe
|
||||||
(\(PackageIdentifier name version) ->
|
(\(PackageIdentifier name version) ->
|
||||||
case M.lookup name versions of
|
case M.lookup name versions of
|
||||||
@ -244,7 +245,7 @@ cleanOldPackages env@Env{..} = do
|
|||||||
version
|
version
|
||||||
(Replaced newVersion)
|
(Replaced newVersion)
|
||||||
Nothing -> purgePackage env name version NoLongerIncluded
|
Nothing -> purgePackage env name version NoLongerIncluded
|
||||||
broken <- getBrokenPackages (buildDatabase envShake)
|
broken <- getBrokenPackages (buildDatabase envPB)
|
||||||
unless (null broken)
|
unless (null broken)
|
||||||
(putStrLn ("There are " ++ show (length broken) ++ " broken packages to be purged."))
|
(putStrLn ("There are " ++ show (length broken) ++ " broken packages to be purged."))
|
||||||
when (length broken > 0)
|
when (length broken > 0)
|
||||||
@ -260,7 +261,7 @@ cleanOldPackages env@Env{..} = do
|
|||||||
purgePackage :: Env -> PackageName -> Version -> PurgeReason -> IO ()
|
purgePackage :: Env -> PackageName -> Version -> PurgeReason -> IO ()
|
||||||
purgePackage env name version reason = do
|
purgePackage env name version reason = do
|
||||||
putStr $ "Purging package: " ++ ident ++ " (" ++ showReason ++ ") ... "
|
putStr $ "Purging package: " ++ ident ++ " (" ++ showReason ++ ") ... "
|
||||||
unregisterPackage (buildDatabase (envShake env)) name
|
unregisterPackage (buildDatabase (envPB env)) name
|
||||||
remove
|
remove
|
||||||
putStrLn "done."
|
putStrLn "done."
|
||||||
where showReason =
|
where showReason =
|
||||||
@ -284,18 +285,18 @@ databaseTarget env = do
|
|||||||
if pbGlobalInstall (envPB env)
|
if pbGlobalInstall (envPB env)
|
||||||
then return ()
|
then return ()
|
||||||
else do
|
else do
|
||||||
liftIO (FP.removeTree dir)
|
|
||||||
liftIO (FP.createTree dir)
|
liftIO (FP.createTree dir)
|
||||||
|
liftIO (FP.removeTree dir)
|
||||||
() <- cmd "ghc-pkg" "init" (FP.encodeString dir)
|
() <- cmd "ghc-pkg" "init" (FP.encodeString dir)
|
||||||
liftIO $ copyBuiltInHaddocks $ pbDocDir (envPB env)
|
liftIO $ copyBuiltInHaddocks $ pbDocDir (envPB env)
|
||||||
makeTargetFile (targetForDb env)
|
makeTargetFile (targetForDb env)
|
||||||
where dir = buildDatabase (envShake env)
|
where dir = buildDatabase (envPB env)
|
||||||
|
|
||||||
-- | Generate haddock docs for the package.
|
-- | Generate haddock docs for the package.
|
||||||
packageDocs :: Env -> PackagePlan -> PackageName -> Action ()
|
packageDocs :: Env -> PackagePlan -> PackageName -> Action ()
|
||||||
packageDocs env@Env{..} plan name = do
|
packageDocs env@Env{..} plan name = do
|
||||||
pwd <- liftIO FP.getWorkingDirectory
|
pwd <- liftIO FP.getWorkingDirectory
|
||||||
envmap <- liftIO (fmap (Shake.Env . (++ defaultEnv envPB envShake pwd)) getEnvironment)
|
envmap <- liftIO (fmap (Shake.Env . (++ defaultEnv envPB pwd)) getEnvironment)
|
||||||
when (haddocksFlag /= Don'tBuild &&
|
when (haddocksFlag /= Don'tBuild &&
|
||||||
not (S.null $ sdModules $ ppDesc plan)) $
|
not (S.null $ sdModules $ ppDesc plan)) $
|
||||||
generateHaddocks
|
generateHaddocks
|
||||||
@ -318,7 +319,7 @@ packageTarget env@Env{..} name plan = do
|
|||||||
filter (/= name) $
|
filter (/= name) $
|
||||||
M.keys $ M.filter libAndExe $ sdPackages $ ppDesc plan
|
M.keys $ M.filter libAndExe $ sdPackages $ ppDesc plan
|
||||||
pwd <- liftIO FP.getWorkingDirectory
|
pwd <- liftIO FP.getWorkingDirectory
|
||||||
envmap <- liftIO (fmap (Shake.Env . (++ defaultEnv envPB envShake pwd)) getEnvironment)
|
envmap <- liftIO (fmap (Shake.Env . (++ defaultEnv envPB pwd)) getEnvironment)
|
||||||
unpack env name version
|
unpack env name version
|
||||||
configure env dir envmap plan
|
configure env dir envmap plan
|
||||||
() <- cmd cwd envmap "cabal" "build" "--ghc-options=-O0"
|
() <- cmd cwd envmap "cabal" "build" "--ghc-options=-O0"
|
||||||
@ -370,7 +371,7 @@ configure Env{..} pdir env plan =
|
|||||||
, "--datadir=" ++ FP.encodeString (pbDataDir envPB)
|
, "--datadir=" ++ FP.encodeString (pbDataDir envPB)
|
||||||
, "--docdir=" ++ FP.encodeString (pbDocDir envPB)
|
, "--docdir=" ++ FP.encodeString (pbDocDir envPB)
|
||||||
, "--flags=" ++ planFlags] ++
|
, "--flags=" ++ planFlags] ++
|
||||||
["--package-db=" ++ FP.encodeString (buildDatabase envShake)
|
["--package-db=" ++ FP.encodeString (buildDatabase envPB)
|
||||||
| not (pbGlobalInstall envPB)]
|
| not (pbGlobalInstall envPB)]
|
||||||
planFlags = unwords $
|
planFlags = unwords $
|
||||||
map go $ M.toList (pcFlagOverrides (ppConstraints plan))
|
map go $ M.toList (pcFlagOverrides (ppConstraints plan))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user