diff --git a/Stackage/Build.hs b/Stackage/Build.hs index dad2f38a..b1c6f597 100644 --- a/Stackage/Build.hs +++ b/Stackage/Build.hs @@ -26,6 +26,7 @@ defaultBuildSettings version = BuildSettings , testWorkerThreads = 4 , buildDocs = True , tarballDir = "patching/tarballs" + , cabalFileDir = Nothing } build :: BuildSettings -> BuildPlan -> IO () diff --git a/Stackage/Test.hs b/Stackage/Test.hs index 9f3f63fd..7030b47a 100644 --- a/Stackage/Test.hs +++ b/Stackage/Test.hs @@ -12,7 +12,8 @@ import qualified Data.Set as Set import Data.Typeable (Typeable) import Stackage.Types import Stackage.Util -import System.Directory (createDirectory, removeFile) +import System.Directory (copyFile, createDirectory, + createDirectoryIfMissing, removeFile) import System.Exit (ExitCode (ExitSuccess)) import System.FilePath ((<.>), ()) import System.IO (IOMode (WriteMode, AppendMode), @@ -99,6 +100,15 @@ runTestSuite settings testdir (packageName, SelectedPackageInfo {..}) = do passed <- handle (\TestException -> return False) $ do package' <- replaceTarball (tarballDir settings) package getHandle WriteMode $ run "cabal" ["unpack", package'] testdir + case cabalFileDir settings of + Nothing -> return () + Just cfd -> do + let PackageName name = packageName + basename = name ++ ".cabal" + src = dir basename + dst = cfd basename + createDirectoryIfMissing True cfd + copyFile src dst getHandle AppendMode $ run "cabal" (addCabalArgs settings BSTest ["configure", "--enable-tests"]) dir when spiHasTests $ do getHandle AppendMode $ run "cabal" ["build"] dir diff --git a/Stackage/Types.hs b/Stackage/Types.hs index 401b7863..2902d420 100644 --- a/Stackage/Types.hs +++ b/Stackage/Types.hs @@ -136,6 +136,8 @@ data BuildSettings = BuildSettings -- ^ Build docs as part of the test procedure. , tarballDir :: FilePath -- ^ Directory containing replacement tarballs. + , cabalFileDir :: Maybe FilePath + -- ^ Directory to place cabal files in } -- | A wrapper around a @Map@ providing a better @Monoid@ instance.