on master help sign in
Don't let build tools dependencies seep into environments
18df8d1Michael Snoyman
Stackage/Build.hs+9−1
@@ -48,11 +48,18 @@ build settings' bp = do
48
48
49 -- First install build tools so they can be used below.
49 -- First install build tools so they can be used below.
50 let installBuildTool tool = do
50 let installBuildTool tool = do
51+ let toolsDir = packageDir settings ++ "-tools"
52+ rm_r toolsDir
53+ ecInit <- rawSystem "ghc-pkg" ["init", toolsDir]
54+ unless (ecInit == ExitSuccess) $ do
55+ putStrLn "Unable to create package database via ghc-pkg init"
56+ exitWith ecInit
57+
51 putStrLn $ "Installing build tool: " ++ tool
58 putStrLn $ "Installing build tool: " ++ tool
52 ec <- withBinaryFile "build-tools.log" WriteMode $ \handle -> do
59 ec <- withBinaryFile "build-tools.log" WriteMode $ \handle -> do
53 hSetBuffering handle NoBuffering
60 hSetBuffering handle NoBuffering
54
61
55− let args = addCabalArgs settings BSBuild
62+ let args = addCabalArgs settings BSTools
56 $ "install"
63 $ "install"
57 : ("--cabal-lib-version=" ++ libVersion)
64 : ("--cabal-lib-version=" ++ libVersion)
58 : "--build-log=logs-tools/$pkg.log"
65 : "--build-log=logs-tools/$pkg.log"
@@ -69,6 +76,7 @@ build settings' bp = do
69 ]
76 ]
70 exitWith ec
77 exitWith ec
71 putStrLn $ tool ++ " built"
78 putStrLn $ tool ++ " built"
79+ rm_r toolsDir
72 mapM_ installBuildTool $ bpTools bp
80 mapM_ installBuildTool $ bpTools bp
73
81
74 putStrLn "Beginning Stackage build"
82 putStrLn "Beginning Stackage build"
Stackage/Types.hs+1−1
@@ -122,7 +122,7 @@ data SelectSettings = SelectSettings
122 , selectGhcVersion :: GhcMajorVersion
122 , selectGhcVersion :: GhcMajorVersion
123 }
123 }
124
124
125−data BuildStage = BSBuild | BSTest
125+data BuildStage = BSTools | BSBuild | BSTest
126
126
127data BuildSettings = BuildSettings
127data BuildSettings = BuildSettings
128 { sandboxRoot :: FilePath
128 { sandboxRoot :: FilePath
Stackage/Util.hs+8−3
@@ -115,12 +115,17 @@ addCabalArgsOnlyGlobal rest
115addCabalArgs :: BuildSettings -> BuildStage -> [String] -> [String]
115addCabalArgs :: BuildSettings -> BuildStage -> [String] -> [String]
116addCabalArgs settings bs rest
116addCabalArgs settings bs rest
117 = addCabalArgsOnlyGlobal
117 = addCabalArgsOnlyGlobal
118− $ ("--package-db=" ++ packageDir settings)
118+ $ ("--package-db=" ++ packageDir settings ++ toolsSuffix)
119− : ("--libdir=" ++ libDir settings)
119+ : ("--libdir=" ++ libDir settings ++ toolsSuffix)
120 : ("--bindir=" ++ binDir settings)
120 : ("--bindir=" ++ binDir settings)
121 : ("--datadir=" ++ dataDir settings)
121 : ("--datadir=" ++ dataDir settings)
122− : ("--docdir=" ++ docDir settings)
122+ : ("--docdir=" ++ docDir settings ++ toolsSuffix)
123 : extraArgs settings bs ++ rest
123 : extraArgs settings bs ++ rest
124+ where
125+ toolsSuffix =
126+ case bs of
127+ BSTools -> "-tools"
128+ _ -> ""
124
129
125-- | Modified environment that adds our sandboxed bin folder to PATH.
130-- | Modified environment that adds our sandboxed bin folder to PATH.
126getModifiedEnv :: BuildSettings -> IO [(String, String)]
131getModifiedEnv :: BuildSettings -> IO [(String, String)]