From 082089d195345e5c367df82b599e2c0848fb9d0b Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Mon, 18 Aug 2008 11:24:34 +0000 Subject: [PATCH] Test for and reject duplicate dependencies (#2330) --- utils/ghc-pkg/Main.hs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/utils/ghc-pkg/Main.hs b/utils/ghc-pkg/Main.hs index a9cb9f3..d743193 100644 --- a/utils/ghc-pkg/Main.hs +++ b/utils/ghc-pkg/Main.hs @@ -43,13 +43,7 @@ import System.Exit ( exitWith, ExitCode(..) ) import System.Environment ( getArgs, getProgName, getEnv ) import System.IO import System.IO.Error (try) -import Data.List ( isPrefixOf, isSuffixOf, intersperse, sortBy, nub, - unfoldr, break, partition ) -#if __GLASGOW_HASKELL__ > 604 -import Data.List ( isInfixOf ) -#else -import Data.List ( tails ) -#endif +import Data.List import Control.Concurrent #ifdef mingw32_HOST_OS @@ -849,6 +843,7 @@ validatePackageConfig pkg db_stack auto_ghci_libs update force = do checkPackageId pkg checkDuplicates db_stack pkg update force mapM_ (checkDep db_stack force) (depends pkg) + checkDuplicateDepends force (depends pkg) mapM_ (checkDir force) (importDirs pkg) mapM_ (checkDir force) (libraryDirs pkg) mapM_ (checkDir force) (includeDirs pkg) @@ -916,6 +911,14 @@ checkDep db_stack force pkgid all_pkgs = allPackagesInStack db_stack pkgids = map package all_pkgs +checkDuplicateDepends :: Force -> [PackageIdentifier] -> IO () +checkDuplicateDepends force deps + | null dups = return () + | otherwise = dieOrForceAll force ("package has duplicate dependencies: " ++ + unwords (map display dups)) + where + dups = [ p | (p:_:_) <- group (sort deps) ] + realVersion :: PackageIdentifier -> Bool realVersion pkgid = versionBranch (pkgVersion pkgid) /= [] -- 1.7.10.4