mirror of
https://github.com/commercialhaskell/stackage.git
synced 2026-03-11 11:16:34 +01:00
Support build-tools in the dependency graph
This commit is contained in:
parent
6bf083c817
commit
466ecd3eea
@ -125,7 +125,7 @@ shakePlan env@Env{..} = do
|
|||||||
tests <- forM normalPackages $
|
tests <- forM normalPackages $
|
||||||
\(name,plan) ->
|
\(name,plan) ->
|
||||||
target (targetForTest envShake name (ppVersion plan)) $
|
target (targetForTest envShake name (ppVersion plan)) $
|
||||||
do need (haddockTargets <> [db, fetched])
|
do need haddockTargets
|
||||||
testTarget env name plan
|
testTarget env name plan
|
||||||
if pbEnableTests envPB
|
if pbEnableTests envPB
|
||||||
then want tests
|
then want tests
|
||||||
@ -409,11 +409,8 @@ packageDocs env@Env{..} plan name = do
|
|||||||
-- | Build, test and generate documentation for the package.
|
-- | Build, test and generate documentation for the package.
|
||||||
packageTarget :: Env -> PackageName -> PackagePlan -> Action ()
|
packageTarget :: Env -> PackageName -> PackagePlan -> Action ()
|
||||||
packageTarget env@Env{..} name plan = do
|
packageTarget env@Env{..} name plan = do
|
||||||
need $
|
need libraryDependencies
|
||||||
map (\(pname,pver) -> targetForPackage envShake pname pver) $
|
need toolDependencies
|
||||||
mapMaybe (\p -> find ((==p) . fst) versionMappings) $
|
|
||||||
filter (/= name) $
|
|
||||||
M.keys $ M.filter libAndExe $ sdPackages $ ppDesc plan
|
|
||||||
unpack env name version
|
unpack env name version
|
||||||
liftIO (do exists <- FP.isFile logFile
|
liftIO (do exists <- FP.isFile logFile
|
||||||
when exists (FP.removeFile logFile))
|
when exists (FP.removeFile logFile))
|
||||||
@ -431,14 +428,27 @@ packageTarget env@Env{..} name plan = do
|
|||||||
dir = pkgDir env name version
|
dir = pkgDir env name version
|
||||||
version = ppVersion plan
|
version = ppVersion plan
|
||||||
versionMappings = M.toList (M.map ppVersion (bpPackages (pbPlan envPB)))
|
versionMappings = M.toList (M.map ppVersion (bpPackages (pbPlan envPB)))
|
||||||
|
toolMappings = makeToolMap (bpPackages (pbPlan envPB))
|
||||||
|
libraryDependencies =
|
||||||
|
packagesToTargets $
|
||||||
|
filter (/= name) $
|
||||||
|
M.keys $ M.filter libAndExe $
|
||||||
|
sdPackages $ ppDesc plan
|
||||||
|
toolDependencies =
|
||||||
|
packagesToTargets $
|
||||||
|
filter (/= name) $
|
||||||
|
S.toList $ mconcat $
|
||||||
|
mapMaybe (\exename -> M.lookup exename toolMappings) $
|
||||||
|
M.keys $ M.filter libAndExe $ sdTools $ ppDesc plan
|
||||||
|
packagesToTargets =
|
||||||
|
map (\(pname,pver) -> targetForPackage envShake pname pver) .
|
||||||
|
mapMaybe (\p -> find ((==p) . fst) versionMappings)
|
||||||
|
|
||||||
-- | Build, test and generate documentation for the package.
|
-- | Build, test and generate documentation for the package.
|
||||||
testTarget :: Env -> PackageName -> PackagePlan -> Action ()
|
testTarget :: Env -> PackageName -> PackagePlan -> Action ()
|
||||||
testTarget env@Env{..} name plan = do
|
testTarget env@Env{..} name plan = do
|
||||||
need $
|
need libraryDependencies
|
||||||
map (\(pname,pver) -> targetForPackage envShake pname pver) $
|
need toolDependencies
|
||||||
mapMaybe (\p -> find ((==p) . fst) versionMappings) $
|
|
||||||
M.keys $ sdPackages $ ppDesc plan
|
|
||||||
unpack env name version
|
unpack env name version
|
||||||
liftIO (do exists <- FP.isFile logFile
|
liftIO (do exists <- FP.isFile logFile
|
||||||
when exists (FP.removeFile logFile))
|
when exists (FP.removeFile logFile))
|
||||||
@ -458,6 +468,18 @@ testTarget env@Env{..} name plan = do
|
|||||||
dir = pkgDir env name version
|
dir = pkgDir env name version
|
||||||
version = ppVersion plan
|
version = ppVersion plan
|
||||||
versionMappings = M.toList (M.map ppVersion (bpPackages (pbPlan envPB)))
|
versionMappings = M.toList (M.map ppVersion (bpPackages (pbPlan envPB)))
|
||||||
|
toolMappings = makeToolMap (bpPackages (pbPlan envPB))
|
||||||
|
libraryDependencies =
|
||||||
|
packagesToTargets $ M.keys $ sdPackages $ ppDesc plan
|
||||||
|
toolDependencies =
|
||||||
|
packagesToTargets $
|
||||||
|
S.toList $ mconcat $
|
||||||
|
mapMaybe (\exename ->
|
||||||
|
M.lookup exename toolMappings) $
|
||||||
|
M.keys $ sdTools $ ppDesc plan
|
||||||
|
packagesToTargets =
|
||||||
|
map (\(pname,pver) -> targetForPackage envShake pname pver) .
|
||||||
|
mapMaybe (\p -> find ((==p) . fst) versionMappings)
|
||||||
|
|
||||||
-- | Make sure all package archives have been fetched.
|
-- | Make sure all package archives have been fetched.
|
||||||
fetchedTarget :: Env -> Action ()
|
fetchedTarget :: Env -> Action ()
|
||||||
@ -475,18 +497,19 @@ fetchedTarget env@Env{..} = do
|
|||||||
unpack :: Env -> PackageName -> Version -> Action ()
|
unpack :: Env -> PackageName -> Version -> Action ()
|
||||||
unpack env@Env{..} name version = do
|
unpack env@Env{..} name version = do
|
||||||
unpacked <- liftIO $ FP.isFile $
|
unpacked <- liftIO $ FP.isFile $
|
||||||
pkgDir env name version <>
|
dir <>
|
||||||
FP.decodeString
|
FP.decodeString
|
||||||
(display name ++ ".cabal")
|
(display name ++ ".cabal")
|
||||||
unless unpacked $
|
unless unpacked $
|
||||||
do liftIO $ catch (FP.removeTree (pkgDir env name version)) $
|
do liftIO $ catch (FP.removeTree dir) $
|
||||||
\(_ :: IOException) -> return ()
|
\(e :: IOException) -> log env Normal ("Remove ex: " <> show e <> "\n")
|
||||||
cmd
|
cmd
|
||||||
(Cwd (FP.encodeString (envShake <> "packages")))
|
(Cwd (FP.encodeString (envShake <> "packages")))
|
||||||
"cabal"
|
"cabal"
|
||||||
"unpack"
|
"unpack"
|
||||||
(nameVer name version)
|
(nameVer name version)
|
||||||
"-v0"
|
"-v0"
|
||||||
|
where dir = pkgDir env name version
|
||||||
|
|
||||||
-- | Configure the given package.
|
-- | Configure the given package.
|
||||||
configure :: Env -> PackageName -> FilePath -> FilePath -> PackagePlan -> Bool -> Action ()
|
configure :: Env -> PackageName -> FilePath -> FilePath -> PackagePlan -> Bool -> Action ()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user