$(eval $(call all-target,library_doc_index,libraries/index.html))
INSTALL_LIBRARY_DOCS += libraries/*.html libraries/*.gif libraries/*.css libraries/*.js
+ifeq "$(CHECK_PACKAGES)" "YES"
+all: check_packages
+endif
+
# -----------------------------------------------------------------------------
# Bootstrapping libraries
all_$$($1_$2_GROUP): all_$1_$2
endif
+ifneq "$$(CHECKED_$1)" "YES"
+CHECKED_$1 = YES
+check_packages: check_$1
+.PHONY: check_$1
+check_$1: $$(GHC_CABAL_INPLACE)
+ $$(GHC_CABAL_INPLACE) check $1
+endif
+
distclean : clean_$1_$2_config
maintainer-clean : distclean
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
import qualified Distribution.InstalledPackageInfo as Installed
import qualified Distribution.Simple.PackageIndex as PackageIndex
+import Data.List
import Data.Maybe
import System.IO
import System.Directory
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
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