diff options
author | Simon Marlow <marlowsd@gmail.com> | 2008-08-18 11:24:34 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2008-08-18 11:24:34 +0000 |
commit | 082089d195345e5c367df82b599e2c0848fb9d0b (patch) | |
tree | 99e3ea09048569aa67ea7659e582f795f6f381fb /utils | |
parent | ee7fcd7239ebb5b301e075034a8ff700cd5f40c9 (diff) | |
download | haskell-082089d195345e5c367df82b599e2c0848fb9d0b.tar.gz |
Test for and reject duplicate dependencies (#2330)
Diffstat (limited to 'utils')
-rw-r--r-- | utils/ghc-pkg/Main.hs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/utils/ghc-pkg/Main.hs b/utils/ghc-pkg/Main.hs index a9cb9f3c68..d7431939f1 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) /= [] |