@@ -279,7 +279,9 @@ parsePackagesOrFail dirs = do
279279 | _cabalPackageInfo_buildable packageInfo -> Right packageInfo
280280 _ -> Left dir
281281
282− let packagesByName = Map.fromListWith (<>) [(_cabalPackageInfo_packageName p, p NE.:| []) | p <- packageInfos']
282+ -- Sort duplicate packages such that we prefer shorter paths, but fall back to alphabetical ordering.
283+ let packagesByName = Map.map (NE.sortBy $ comparing $ \p -> let n = _cabalPackageInfo_packageFile p in (length n, n))
284+ $ Map.fromListWith (<>) [(_cabalPackageInfo_packageName p, p NE.:| []) | p <- packageInfos']
283285 unambiguous <- ifor packagesByName $ \packageName ps -> case ps of
284286 p NE.:| [] -> pure p -- No ambiguity here
285287 p NE.:| _ -> do