diff --git a/Stackage/Build.hs b/Stackage/Build.hs index f70ab76a..ff621a67 100644 --- a/Stackage/Build.hs +++ b/Stackage/Build.hs @@ -48,11 +48,18 @@ build settings' bp = do -- First install build tools so they can be used below. let installBuildTool tool = do + let toolsDir = packageDir settings ++ "-tools" + rm_r toolsDir + ecInit <- rawSystem "ghc-pkg" ["init", toolsDir] + unless (ecInit == ExitSuccess) $ do + putStrLn "Unable to create package database via ghc-pkg init" + exitWith ecInit + putStrLn $ "Installing build tool: " ++ tool ec <- withBinaryFile "build-tools.log" WriteMode $ \handle -> do hSetBuffering handle NoBuffering - let args = addCabalArgs settings BSBuild + let args = addCabalArgs settings BSTools $ "install" : ("--cabal-lib-version=" ++ libVersion) : "--build-log=logs-tools/$pkg.log" @@ -69,6 +76,7 @@ build settings' bp = do ] exitWith ec putStrLn $ tool ++ " built" + rm_r toolsDir mapM_ installBuildTool $ bpTools bp putStrLn "Beginning Stackage build" diff --git a/Stackage/Types.hs b/Stackage/Types.hs index a3fa9369..853f4c88 100644 --- a/Stackage/Types.hs +++ b/Stackage/Types.hs @@ -122,7 +122,7 @@ data SelectSettings = SelectSettings , selectGhcVersion :: GhcMajorVersion } -data BuildStage = BSBuild | BSTest +data BuildStage = BSTools | BSBuild | BSTest data BuildSettings = BuildSettings { sandboxRoot :: FilePath diff --git a/Stackage/Util.hs b/Stackage/Util.hs index bc25eea7..209095fb 100644 --- a/Stackage/Util.hs +++ b/Stackage/Util.hs @@ -115,12 +115,17 @@ addCabalArgsOnlyGlobal rest addCabalArgs :: BuildSettings -> BuildStage -> [String] -> [String] addCabalArgs settings bs rest = addCabalArgsOnlyGlobal - $ ("--package-db=" ++ packageDir settings) - : ("--libdir=" ++ libDir settings) + $ ("--package-db=" ++ packageDir settings ++ toolsSuffix) + : ("--libdir=" ++ libDir settings ++ toolsSuffix) : ("--bindir=" ++ binDir settings) : ("--datadir=" ++ dataDir settings) - : ("--docdir=" ++ docDir settings) + : ("--docdir=" ++ docDir settings ++ toolsSuffix) : extraArgs settings bs ++ rest + where + toolsSuffix = + case bs of + BSTools -> "-tools" + _ -> "" -- | Modified environment that adds our sandboxed bin folder to PATH. getModifiedEnv :: BuildSettings -> IO [(String, String)]