mirror of
https://github.com/commercialhaskell/stackage.git
synced 2026-03-11 03:06:35 +01:00
shake: Re-jig dir positions
This commit is contained in:
parent
1abef8ff44
commit
1d4b4268b3
@ -78,9 +78,7 @@ shakePlan haddockFiles registerLock pb shakeDir = do
|
|||||||
target (targetForDocs shakeDir name (ppVersion plan)) $
|
target (targetForDocs shakeDir name (ppVersion plan)) $
|
||||||
do need [targetForPackage shakeDir name (ppVersion plan)]
|
do need [targetForPackage shakeDir name (ppVersion plan)]
|
||||||
packageDocs haddockFiles shakeDir pb plan name
|
packageDocs haddockFiles shakeDir pb plan name
|
||||||
if True
|
want haddockTargets
|
||||||
then want haddockTargets
|
|
||||||
else want packageTargets
|
|
||||||
where versionMappings = M.toList (M.map ppVersion (bpPackages (pbPlan pb)))
|
where versionMappings = M.toList (M.map ppVersion (bpPackages (pbPlan pb)))
|
||||||
corePackages = M.keys $ siCorePackages $ bpSystemInfo $ pbPlan pb
|
corePackages = M.keys $ siCorePackages $ bpSystemInfo $ pbPlan pb
|
||||||
normalPackages = filter (not . (`elem` corePackages) . fst) $
|
normalPackages = filter (not . (`elem` corePackages) . fst) $
|
||||||
@ -104,7 +102,7 @@ packageDocs haddockFiles shakeDir pb plan name = do
|
|||||||
where haddocksFlag = pcHaddocks $ ppConstraints plan
|
where haddocksFlag = pcHaddocks $ ppConstraints plan
|
||||||
defaultEnv pwd = [( "HASKELL_PACKAGE_SANDBOX"
|
defaultEnv pwd = [( "HASKELL_PACKAGE_SANDBOX"
|
||||||
, pwd <//> buildDatabase shakeDir) | pbGlobalInstall pb]
|
, pwd <//> buildDatabase shakeDir) | pbGlobalInstall pb]
|
||||||
pkgDir = shakeDir <//> nameVer
|
pkgDir = shakeDir <//> "packages" <//> nameVer
|
||||||
nameVer = display name ++
|
nameVer = display name ++
|
||||||
"-" ++
|
"-" ++
|
||||||
display (ppVersion plan)
|
display (ppVersion plan)
|
||||||
@ -139,7 +137,7 @@ packageTarget haddockFiles registerLock pb shakeDir name plan = do
|
|||||||
M.keys $ M.filter libAndExe $ sdPackages $ ppDesc plan
|
M.keys $ M.filter libAndExe $ sdPackages $ ppDesc plan
|
||||||
pwd <- liftIO getCurrentDirectory
|
pwd <- liftIO getCurrentDirectory
|
||||||
env <- liftIO (fmap (Env . (++ defaultEnv pwd)) getEnvironment)
|
env <- liftIO (fmap (Env . (++ defaultEnv pwd)) getEnvironment)
|
||||||
unpack shakeDir nameVer
|
unpack shakeDir name nameVer
|
||||||
configure shakeDir pkgDir env pb plan
|
configure shakeDir pkgDir env pb plan
|
||||||
() <- cmd cwd env "cabal" "build" "--ghc-options=-O0"
|
() <- cmd cwd env "cabal" "build" "--ghc-options=-O0"
|
||||||
register pkgDir env registerLock
|
register pkgDir env registerLock
|
||||||
@ -148,7 +146,7 @@ packageTarget haddockFiles registerLock pb shakeDir name plan = do
|
|||||||
cwd = Cwd pkgDir
|
cwd = Cwd pkgDir
|
||||||
defaultEnv pwd = [( "HASKELL_PACKAGE_SANDBOX"
|
defaultEnv pwd = [( "HASKELL_PACKAGE_SANDBOX"
|
||||||
, pwd <//> buildDatabase shakeDir) | pbGlobalInstall pb]
|
, pwd <//> buildDatabase shakeDir) | pbGlobalInstall pb]
|
||||||
pkgDir = shakeDir <//> nameVer
|
pkgDir = shakeDir <//> "packages" <//> nameVer
|
||||||
nameVer = display name ++
|
nameVer = display name ++
|
||||||
"-" ++
|
"-" ++
|
||||||
display (ppVersion plan)
|
display (ppVersion plan)
|
||||||
@ -166,20 +164,19 @@ fetchedTarget shakeDir pb = do
|
|||||||
makeFile (targetForFetched shakeDir)
|
makeFile (targetForFetched shakeDir)
|
||||||
|
|
||||||
-- | Unpack the package.
|
-- | Unpack the package.
|
||||||
unpack :: FilePath -> String -> Action ()
|
unpack :: FilePath -> PackageName -> String -> Action ()
|
||||||
unpack shakeDir nameVer = do
|
unpack shakeDir name nameVer = do
|
||||||
unpacked <- liftIO (doesDirectoryExist pkgDir)
|
unpacked <- liftIO (doesFileExist (pkgDir <//> display name ++ ".cabal"))
|
||||||
unless unpacked $
|
unless unpacked $
|
||||||
cmd (Cwd shakeDir) "cabal" "unpack" nameVer
|
do liftIO (catch (removeDirectoryRecursive pkgDir)
|
||||||
where pkgDir = shakeDir <//> nameVer
|
(\(_ :: IOException) -> return ()))
|
||||||
|
cmd (Cwd (shakeDir <//> "packages")) "cabal" "unpack" nameVer
|
||||||
|
where pkgDir = shakeDir <//> "packages" <//> nameVer
|
||||||
|
|
||||||
-- | Configure the given package.
|
-- | Configure the given package.
|
||||||
configure :: FilePath -> FilePath -> CmdOption -> PerformBuild -> PackagePlan -> Action ()
|
configure :: FilePath -> FilePath -> CmdOption -> PerformBuild -> PackagePlan -> Action ()
|
||||||
configure shakeDir pkgDir env pb plan = do
|
configure shakeDir pkgDir env pb plan = do
|
||||||
configured <- liftIO $ doesFileExist $ pkgDir <//> "dist" <//>
|
pwd <- liftIO getCurrentDirectory
|
||||||
"setup-config"
|
|
||||||
unless configured $
|
|
||||||
do pwd <- liftIO getCurrentDirectory
|
|
||||||
cmd
|
cmd
|
||||||
(Cwd pkgDir)
|
(Cwd pkgDir)
|
||||||
env
|
env
|
||||||
@ -287,12 +284,12 @@ buildDatabase shakeDir = shakeDir <//> "pkgdb"
|
|||||||
-- pre-fetched.
|
-- pre-fetched.
|
||||||
targetForFetched :: FilePath -> FilePath
|
targetForFetched :: FilePath -> FilePath
|
||||||
targetForFetched shakeDir =
|
targetForFetched shakeDir =
|
||||||
shakeDir <//> "fetched"
|
shakeDir <//> "packages-fetched"
|
||||||
|
|
||||||
-- | Get the target file for a package.
|
-- | Get the target file for a package.
|
||||||
targetForPackage :: FilePath -> PackageName -> Version -> FilePath
|
targetForPackage :: FilePath -> PackageName -> Version -> FilePath
|
||||||
targetForPackage shakeDir name version =
|
targetForPackage shakeDir name version =
|
||||||
shakeDir <//> "packages" <//> nameVer
|
shakeDir <//> "packages" <//> nameVer <//> "dist" <//> "shake-build"
|
||||||
where nameVer = display name ++
|
where nameVer = display name ++
|
||||||
"-" ++
|
"-" ++
|
||||||
display version
|
display version
|
||||||
@ -300,7 +297,7 @@ targetForPackage shakeDir name version =
|
|||||||
-- | Get the target file for a package.
|
-- | Get the target file for a package.
|
||||||
targetForDocs :: FilePath -> PackageName -> Version -> FilePath
|
targetForDocs :: FilePath -> PackageName -> Version -> FilePath
|
||||||
targetForDocs shakeDir name version =
|
targetForDocs shakeDir name version =
|
||||||
shakeDir <//> "docs" <//> nameVer
|
shakeDir <//> "packages" <//> nameVer <//> "dist" <//> "shake-docs"
|
||||||
where nameVer = display name ++
|
where nameVer = display name ++
|
||||||
"-" ++
|
"-" ++
|
||||||
display version
|
display version
|
||||||
@ -308,7 +305,7 @@ targetForDocs shakeDir name version =
|
|||||||
-- | Get a package database path.
|
-- | Get a package database path.
|
||||||
targetForDb :: FilePath -> FilePath
|
targetForDb :: FilePath -> FilePath
|
||||||
targetForDb shakeDir =
|
targetForDb shakeDir =
|
||||||
shakeDir <//> "pkgdb-built"
|
shakeDir <//> "pkgdb-initialized"
|
||||||
|
|
||||||
-- | Declare a target, returning the target name.
|
-- | Declare a target, returning the target name.
|
||||||
target :: FilePattern -> Action () -> Rules FilePattern
|
target :: FilePattern -> Action () -> Rules FilePattern
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user