X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=utils%2Fghc-cabal%2Fghc-cabal.hs;h=8c9612f0ffe5ede3bc6e0b8314824003f30efd64;hb=d4f9480c7e7bf8167a97ff964f9d85400398c5c4;hp=7d2f52295919ff9b783ce66e6833ed2dec95a011;hpb=b0e1adc337081e7736adf4ba37e58832d87cc45d;p=ghc-hetmet.git diff --git a/utils/ghc-cabal/ghc-cabal.hs b/utils/ghc-cabal/ghc-cabal.hs index 7d2f522..8c9612f 100644 --- a/utils/ghc-cabal/ghc-cabal.hs +++ b/utils/ghc-cabal/ghc-cabal.hs @@ -3,6 +3,7 @@ module Main (main) where import qualified Distribution.ModuleName as ModuleName import Distribution.PackageDescription +import Distribution.PackageDescription.Check hiding (doesFileExist) import Distribution.PackageDescription.Configuration import Distribution.PackageDescription.Parse import Distribution.Simple @@ -12,13 +13,12 @@ import Distribution.Simple.Program import Distribution.Simple.Utils (defaultPackageDesc, writeFileAtomic) import Distribution.Simple.Build (writeAutogenFiles) import Distribution.Simple.Register -import Distribution.Simple.PackageIndex import Distribution.Text import Distribution.Verbosity import qualified Distribution.InstalledPackageInfo as Installed import qualified Distribution.Simple.PackageIndex as PackageIndex -import Control.Monad +import Data.List import Data.Maybe import System.IO import System.Directory @@ -31,6 +31,8 @@ main = do args <- getArgs case args of "haddock" : distDir : dir : args' -> runHaddock distDir dir args' + "check" : dir : [] -> + doCheck dir "install" : ghcpkg : ghcpkgconfig : directory : distDir : myDestDir : myPrefix : myLibdir : myDocdir : args' -> doInstall ghcpkg ghcpkgconfig directory distDir @@ -66,6 +68,20 @@ withCurrentDirectory directory io userHooks :: UserHooks userHooks = autoconfUserHooks +doCheck :: FilePath -> IO () +doCheck directory + = withCurrentDirectory directory + $ do let verbosity = normal + gpdFile <- defaultPackageDesc verbosity + gpd <- readPackageDescription verbosity gpdFile + case partition isFailure $ checkPackage gpd Nothing of + ([], []) -> return () + ([], warnings) -> mapM_ print warnings + (errs, _) -> do mapM_ print errs + exitWith (ExitFailure 1) + where isFailure (PackageDistSuspicious {}) = False + isFailure _ = True + runHaddock :: FilePath -> FilePath -> [String] -> IO () runHaddock distdir directory args = withCurrentDirectory directory @@ -126,7 +142,7 @@ doInstall ghcpkg ghcpkgconf directory distDir myDestDir myPrefix myLibdir myDocd idts' = idts { prefix = toPathTemplate myPrefix, libdir = toPathTemplate myLibdir, libsubdir = toPathTemplate "$pkgid", - docdir = toPathTemplate (myDocdir "$pkgid"), + docdir = toPathTemplate (myDocdir "$pkg"), htmldir = toPathTemplate "$docdir" } progs = withPrograms lbi prog = ConfiguredProgram {