Optionally copy all cabal files to a directory

This commit is contained in:
Michael Snoyman 2013-10-02 12:47:33 +03:00
parent 3d41543645
commit 502e0d1ae8
3 changed files with 14 additions and 1 deletions

View File

@ -26,6 +26,7 @@ defaultBuildSettings version = BuildSettings
, testWorkerThreads = 4 , testWorkerThreads = 4
, buildDocs = True , buildDocs = True
, tarballDir = "patching/tarballs" , tarballDir = "patching/tarballs"
, cabalFileDir = Nothing
} }
build :: BuildSettings -> BuildPlan -> IO () build :: BuildSettings -> BuildPlan -> IO ()

View File

@ -12,7 +12,8 @@ import qualified Data.Set as Set
import Data.Typeable (Typeable) import Data.Typeable (Typeable)
import Stackage.Types import Stackage.Types
import Stackage.Util import Stackage.Util
import System.Directory (createDirectory, removeFile) import System.Directory (copyFile, createDirectory,
createDirectoryIfMissing, removeFile)
import System.Exit (ExitCode (ExitSuccess)) import System.Exit (ExitCode (ExitSuccess))
import System.FilePath ((<.>), (</>)) import System.FilePath ((<.>), (</>))
import System.IO (IOMode (WriteMode, AppendMode), import System.IO (IOMode (WriteMode, AppendMode),
@ -99,6 +100,15 @@ runTestSuite settings testdir (packageName, SelectedPackageInfo {..}) = do
passed <- handle (\TestException -> return False) $ do passed <- handle (\TestException -> return False) $ do
package' <- replaceTarball (tarballDir settings) package package' <- replaceTarball (tarballDir settings) package
getHandle WriteMode $ run "cabal" ["unpack", package'] testdir 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 getHandle AppendMode $ run "cabal" (addCabalArgs settings BSTest ["configure", "--enable-tests"]) dir
when spiHasTests $ do when spiHasTests $ do
getHandle AppendMode $ run "cabal" ["build"] dir getHandle AppendMode $ run "cabal" ["build"] dir

View File

@ -136,6 +136,8 @@ data BuildSettings = BuildSettings
-- ^ Build docs as part of the test procedure. -- ^ Build docs as part of the test procedure.
, tarballDir :: FilePath , tarballDir :: FilePath
-- ^ Directory containing replacement tarballs. -- ^ Directory containing replacement tarballs.
, cabalFileDir :: Maybe FilePath
-- ^ Directory to place cabal files in
} }
-- | A wrapper around a @Map@ providing a better @Monoid@ instance. -- | A wrapper around a @Map@ providing a better @Monoid@ instance.