summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2008-08-18 11:24:34 +0000
committerSimon Marlow <marlowsd@gmail.com>2008-08-18 11:24:34 +0000
commit082089d195345e5c367df82b599e2c0848fb9d0b (patch)
tree99e3ea09048569aa67ea7659e582f795f6f381fb /utils
parentee7fcd7239ebb5b301e075034a8ff700cd5f40c9 (diff)
downloadhaskell-082089d195345e5c367df82b599e2c0848fb9d0b.tar.gz
Test for and reject duplicate dependencies (#2330)
Diffstat (limited to 'utils')
-rw-r--r--utils/ghc-pkg/Main.hs17
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) /= []