diff --git a/Stackage/Build.hs b/Stackage/Build.hs index 58199e6a..bcc10868 100644 --- a/Stackage/Build.hs +++ b/Stackage/Build.hs @@ -21,7 +21,7 @@ defaultBuildSettings :: BuildSettings defaultBuildSettings = BuildSettings { sandboxRoot = "sandbox" , expectedFailuresBuild = defaultExpectedFailures - , extraArgs = ["-fnetwork23"] + , extraArgs = const ["-fnetwork23"] , testWorkerThreads = 4 } @@ -47,15 +47,12 @@ build settings' bp = do let installBuildTool tool = do putStrLn $ "Installing build tool: " ++ tool ec <- withBinaryFile "build-tools.log" WriteMode $ \handle -> do - let args = addCabalArgs settings + let args = addCabalArgs settings BSBuild $ "install" : ("--cabal-lib-version=" ++ libVersion) : "--build-log=logs-tools/$pkg.log" : "-j" - : concat - [ extraArgs settings - , [tool] - ] + : [tool] hPutStrLn handle ("cabal " ++ unwords (map (\s -> "'" ++ s ++ "'") args)) ph <- runCabal args handle waitForProcess ph @@ -71,14 +68,13 @@ build settings' bp = do putStrLn "Beginning Stackage build" ph <- withBinaryFile "build.log" WriteMode $ \handle -> do - let args = addCabalArgs settings + let args = addCabalArgs settings BSBuild $ "install" : ("--cabal-lib-version=" ++ libVersion) : "--build-log=logs/$pkg.log" : "-j" : concat - [ extraArgs settings - , bpPackageList bp + [ bpPackageList bp ] hPutStrLn handle ("cabal " ++ unwords (map (\s -> "'" ++ s ++ "'") args)) runCabal args handle diff --git a/Stackage/Test.hs b/Stackage/Test.hs index 88f3d39f..24b3f737 100644 --- a/Stackage/Test.hs +++ b/Stackage/Test.hs @@ -96,7 +96,7 @@ runTestSuite settings testdir (packageName, SelectedPackageInfo {..}) = do passed <- handle (\TestException -> return False) $ do getHandle WriteMode $ run "cabal" ["unpack", package] testdir - getHandle AppendMode $ run "cabal" (addCabalArgs settings ["configure", "--enable-tests"]) dir + getHandle AppendMode $ run "cabal" (addCabalArgs settings BSTest ["configure", "--enable-tests"]) dir when spiHasTests $ do getHandle AppendMode $ run "cabal" ["build"] dir getHandle AppendMode $ runGhcPackagePath "cabal" ["test"] dir diff --git a/Stackage/Types.hs b/Stackage/Types.hs index aa1828f0..41c57a52 100644 --- a/Stackage/Types.hs +++ b/Stackage/Types.hs @@ -110,9 +110,11 @@ data SelectSettings = SelectSettings , stablePackages :: Map PackageName (VersionRange, Maintainer) } +data BuildStage = BSBuild | BSTest + data BuildSettings = BuildSettings { sandboxRoot :: FilePath - , extraArgs :: [String] + , extraArgs :: BuildStage -> [String] , expectedFailuresBuild :: Set PackageName , testWorkerThreads :: Int -- ^ How many threads to spawn for running test suites. diff --git a/Stackage/Util.hs b/Stackage/Util.hs index 6cf89a7d..581532da 100644 --- a/Stackage/Util.hs +++ b/Stackage/Util.hs @@ -102,15 +102,15 @@ addCabalArgsOnlyGlobal rest : "--package-db=global" : rest -addCabalArgs :: BuildSettings -> [String] -> [String] -addCabalArgs settings rest +addCabalArgs :: BuildSettings -> BuildStage -> [String] -> [String] +addCabalArgs settings bs rest = addCabalArgsOnlyGlobal $ ("--package-db=" ++ packageDir settings) : ("--libdir=" ++ libDir settings) : ("--bindir=" ++ binDir settings) : ("--datadir=" ++ dataDir settings) : ("--docdir=" ++ docDir settings) - : extraArgs settings ++ rest + : extraArgs settings bs ++ rest -- | Modified environment that adds our sandboxed bin folder to PATH. getModifiedEnv :: BuildSettings -> IO [(String, String)]