7import Control.Monad (unless)
8import Prelude hiding (pi)
9import Stackage.CheckCabalVersion (checkCabalVersion)
11import Stackage.InstallInfo
14import System.Exit (ExitCode (ExitSuccess), exitWith)
15import System.IO (IOMode (WriteMode), hPutStrLn,
17import System.Process (rawSystem, runProcess,
20defaultBuildSettings :: BuildSettings
21defaultBuildSettings = BuildSettings
22 { sandboxRoot = "sandbox"
23 , expectedFailuresBuild = defaultExpectedFailures
24 , extraArgs = const ["-fnetwork23"]
25 , testWorkerThreads = 4
29build :: BuildSettings -> BuildPlan -> IO ()
30build settings' bp = do
31 libVersion <- checkCabalVersion
33 putStrLn "Wiping out old sandbox folder"
34 rm_r $ sandboxRoot settings'
36 settings <- fixBuildSettings settings'
38 putStrLn "Creating new package database"
39 ec1 <- rawSystem "ghc-pkg" ["init", packageDir settings]
40 unless (ec1 == ExitSuccess) $ do
41 putStrLn "Unable to create package database via ghc-pkg init"
44 menv <- fmap Just $ getModifiedEnv settings
45 let runCabal args handle = runProcess "cabal" args Nothing menv Nothing (Just handle) (Just handle)
47 -- First install build tools so they can be used below.
48 let installBuildTool tool = do
49 putStrLn $ "Installing build tool: " ++ tool
50 ec <- withBinaryFile "build-tools.log" WriteMode $ \handle -> do
51 let args = addCabalArgs settings BSBuild
53 : ("--cabal-lib-version=" ++ libVersion)
54 : "--build-log=logs-tools/$pkg.log"
57 hPutStrLn handle ("cabal " ++ unwords (map (\s -> "'" ++ s ++ "'") args))
58 ph <- runCabal args handle
60 unless (ec == ExitSuccess) $ do
64 , " failed, please see build-tools.log"
67 putStrLn $ tool ++ " built"
68 mapM_ installBuildTool $ bpTools bp
70 putStrLn "Beginning Stackage build"
71 ph <- withBinaryFile "build.log" WriteMode $ \handle -> do
72 let args = addCabalArgs settings BSBuild
74 : ("--cabal-lib-version=" ++ libVersion)
75 : "--build-log=logs/$pkg.log"
80 hPutStrLn handle ("cabal " ++ unwords (map (\s -> "'" ++ s ++ "'") args))
82 ec <- waitForProcess ph
83 unless (ec == ExitSuccess) $ do
84 putStrLn "Build failed, please see build.log"
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list