This checks that hackage would accept the packages.
Currently warnings are printed, but don't result in failure.
$(eval $(call all-target,library_doc_index,libraries/index.html))
INSTALL_LIBRARY_DOCS += libraries/*.html libraries/*.gif libraries/*.css libraries/*.js
$(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
# -----------------------------------------------------------------------------
# Bootstrapping libraries
#
GhcLibsWithUnix=@GhcLibsWithUnix@
#
GhcLibsWithUnix=@GhcLibsWithUnix@
# ----------------------------------------------------------------------------
# Options for GHC's RTS
# ----------------------------------------------------------------------------
# Options for GHC's RTS
ifeq "$(ValidateHpc)" "YES"
GhcStage2HcOpts += -fhpc -hpcdir $(TOP)/testsuite/hpc_output/
endif
ifeq "$(ValidateHpc)" "YES"
GhcStage2HcOpts += -fhpc -hpcdir $(TOP)/testsuite/hpc_output/
endif
all_$$($1_$2_GROUP): all_$1_$2
endif
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
distclean : clean_$1_$2_config
maintainer-clean : distclean
import qualified Distribution.ModuleName as ModuleName
import Distribution.PackageDescription
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 Distribution.PackageDescription.Configuration
import Distribution.PackageDescription.Parse
import Distribution.Simple
import qualified Distribution.InstalledPackageInfo as Installed
import qualified Distribution.Simple.PackageIndex as PackageIndex
import qualified Distribution.InstalledPackageInfo as Installed
import qualified Distribution.Simple.PackageIndex as PackageIndex
import Data.Maybe
import System.IO
import System.Directory
import Data.Maybe
import System.IO
import System.Directory
case args of
"haddock" : distDir : dir : args' ->
runHaddock distDir dir args'
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
"install" : ghcpkg : ghcpkgconfig : directory : distDir
: myDestDir : myPrefix : myLibdir : myDocdir : args' ->
doInstall ghcpkg ghcpkgconfig directory distDir
userHooks :: UserHooks
userHooks = autoconfUserHooks
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
runHaddock :: FilePath -> FilePath -> [String] -> IO ()
runHaddock distdir directory args
= withCurrentDirectory directory