Skip to content

Commit 836d6b6

Browse files
committed
Pinpointing in which modules the packages couldn't be found
1 parent a63fe9b commit 836d6b6

File tree

3 files changed

+12
-13
lines changed

3 files changed

+12
-13
lines changed

cabal-install/src/Distribution/Client/Init/Interactive/Command.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -455,4 +455,4 @@ dependenciesPrompt
455455
-> InitFlags
456456
-> m [Dependency]
457457
dependenciesPrompt pkgIx flags = getDependencies flags $
458-
retrieveDependencies flags [fromString "Prelude"] pkgIx
458+
retrieveDependencies flags [(fromString "Prelude", fromString "Prelude")] pkgIx

cabal-install/src/Distribution/Client/Init/NonInteractive/Command.hs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -442,12 +442,11 @@ dependenciesHeuristics flags fp pkgIx = getDependencies flags $ do
442442
Flag x -> x
443443
NoFlag -> map moduleName sources
444444

445-
retrieveDependencies flags
446-
( nub -- skips duplicates
447-
( fromString "Prelude" -- gets base as dependency
448-
: (filter (`notElem` mods) -- skips modules from this own package
449-
. concatMap imports $ sources)))
450-
pkgIx
445+
groupedDeps = concatMap (\s -> map (\i -> (moduleName s, i)) (imports s)) sources
446+
filteredDeps = filter ((`notElem` mods) . snd) groupedDeps
447+
preludeNub = nubBy (\a b -> snd a == snd b) $ (fromString "Prelude", fromString "Prelude") : filteredDeps
448+
449+
retrieveDependencies flags preludeNub pkgIx
451450

452451
-- | Retrieve the list of extensions
453452
otherExtsHeuristics :: Interactive m => InitFlags -> FilePath -> m [Extension]

cabal-install/src/Distribution/Client/Init/Utils.hs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -213,15 +213,15 @@ isSourceFile :: Maybe [FilePath] -> SourceFileEntry -> Bool
213213
isSourceFile Nothing sf = isSourceFile (Just ["."]) sf
214214
isSourceFile (Just srcDirs) sf = any (equalFilePath (relativeSourcePath sf)) srcDirs
215215

216-
retrieveDependencies :: Interactive m => InitFlags -> [ModuleName] -> InstalledPackageIndex -> m [P.Dependency]
216+
retrieveDependencies :: Interactive m => InitFlags -> [(ModuleName, ModuleName)] -> InstalledPackageIndex -> m [P.Dependency]
217217
retrieveDependencies flags mods' pkgIx = do
218218
let mods = mods'
219219

220220
modMap :: M.Map ModuleName [InstalledPackageInfo]
221221
modMap = M.map (filter exposed) $ moduleNameIndex pkgIx
222222

223-
modDeps :: [(ModuleName, Maybe [InstalledPackageInfo])]
224-
modDeps = map (\mn -> (mn, M.lookup mn modMap)) mods
223+
modDeps :: [(ModuleName, ModuleName, Maybe [InstalledPackageInfo])]
224+
modDeps = map (\(mn, ds) -> (mn, ds, M.lookup ds modMap)) mods
225225
-- modDeps = map (id &&& flip M.lookup modMap) mods
226226

227227
message (fromFlagOrDefault silent $ initVerbosity flags) "\nGuessing dependencies..."
@@ -233,9 +233,9 @@ retrieveDependencies flags mods' pkgIx = do
233233
chooseDep
234234
:: Interactive m
235235
=> InitFlags
236-
-> (ModuleName, Maybe [InstalledPackageInfo])
236+
-> (ModuleName, ModuleName, Maybe [InstalledPackageInfo])
237237
-> m (Maybe P.Dependency)
238-
chooseDep flags (m, mipi) = case mipi of
238+
chooseDep flags (importer, m, mipi) = case mipi of
239239
-- We found some packages: group them by name.
240240
Just ps@(_:_) ->
241241
case NE.groupBy (\x y -> P.pkgName x == P.pkgName y) $ map P.packageId ps of
@@ -268,7 +268,7 @@ chooseDep flags (m, mipi) = case mipi of
268268
return Nothing
269269

270270
_ -> do
271-
message v ("\nWarning: no package found providing " ++ prettyShow m ++ ".")
271+
message v ("\nWarning: no package found providing " ++ prettyShow m ++ " in " ++ prettyShow importer ++ ".")
272272
return Nothing
273273

274274
where

0 commit comments

Comments
 (0)