@@ -279,7 +279,9 @@ parsePackagesOrFail dirs = do
279 | _cabalPackageInfo_buildable packageInfo -> Right packageInfo
279 | _cabalPackageInfo_buildable packageInfo -> Right packageInfo
280 _ -> Left dir
280 _ -> Left dir
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))
282− let packagesByName = Map.fromListWith (<>) [(_cabalPackageInfo_packageName p, p NE.:| []) | p <- packageInfos']
284+ $ Map.fromListWith (<>) [(_cabalPackageInfo_packageName p, p NE.:| []) | p <- packageInfos']
283 unambiguous <- ifor packagesByName $ \packageName ps -> case ps of
285 unambiguous <- ifor packagesByName $ \packageName ps -> case ps of
284 p NE.:| [] -> pure p -- No ambiguity here
286 p NE.:| [] -> pure p -- No ambiguity here
285 p NE.:| _ -> do
287 p NE.:| _ -> do