X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=libraries%2Fcabal-bin.hs;h=664480f5a2d5a088ce599294dcd48db26f27c5df;hb=988bfabb5e8a3a743d03e57f2f25ca1008c6e6f1;hp=1ecba50a3d768061d103e98316cb98043d6bac50;hpb=79b4f894215ae098c26cfe8fb7bc7f89008e8420;p=ghc-hetmet.git diff --git a/libraries/cabal-bin.hs b/libraries/cabal-bin.hs index 1ecba50..664480f 100644 --- a/libraries/cabal-bin.hs +++ b/libraries/cabal-bin.hs @@ -1,6 +1,7 @@ module Main (main) where +import Control.Monad import Data.Maybe import Distribution.PackageDescription import Distribution.PackageDescription.Parse @@ -22,12 +23,12 @@ main = do unprocessedArgs <- getArgs let verbosity = verbose case unprocessedArgs of - ghc : packageConf : args -> - doit verbosity ghc packageConf args + ghc : packageConf : useCabalVersion : args -> + doit verbosity ghc packageConf useCabalVersion args _ -> die "Bad args" -doit :: Verbosity -> FilePath -> FilePath -> [String] -> IO () -doit verbosity ghc packageConf args = do +doit :: Verbosity -> FilePath -> FilePath -> String -> [String] -> IO () +doit verbosity ghc packageConf useCabalVersion args = do exists <- doesFileExist setupProg if exists then rawSystemExit verbosity setupProg args else do @@ -41,11 +42,21 @@ doit verbosity ghc packageConf args = do _ | packageName pd == PackageName "Cabal" -> -- Cabal is special...*sigh* Simple.defaultMainArgs args - | otherwise -> runSetup verbosity ghc packageConf args - -runSetup :: Verbosity -> FilePath -> FilePath -> [String] -> IO () -runSetup verbosity ghc packageConf args = do - rawSystemExit verbosity ghc ["-package-conf", packageConf, - "--make", "Setup", "-o", "Setup"] + | otherwise -> + runSetup verbosity ghc packageConf useCabalVersion args + +runSetup :: Verbosity -> FilePath -> FilePath -> String -> [String] -> IO () +runSetup verbosity ghc packageConf useCabalVersion args = do + -- Don't bother building Setup if we are cleaning. If we need to + -- build Setup in order to build, and Setup isn't built already, + -- then there shouldn't be anything to clean anyway. + unless cleaning $ + rawSystemExit verbosity ghc ["-package-conf", packageConf, + "--make", "Setup", + "-package", "Cabal-" ++ useCabalVersion, + "-o", "Setup"] rawSystemExit verbosity "./Setup" args + where cleaning = case args of + "clean" : _ -> True + _ -> False