Skip to content

Commit 98ff447

Browse files
committed
Collect dependencies from build-tool-depends too
1 parent 29ab859 commit 98ff447

2 files changed

Lines changed: 16 additions & 2 deletions

File tree

hackage-revdeps.cabal

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ library
4242
text >=2.0 && <2.2,
4343
time <1.17,
4444
zlib <0.8,
45-
Cabal-syntax >=3.8 && <3.17
45+
Cabal-syntax >=3.8 && <3.17,
46+
Cabal >=3.8 && <3.17
4647

4748
executable hackage-revdeps
4849
main-is: Main.hs

src/Hackage/RevDeps.hs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,15 @@ import Data.Text.Unsafe qualified as T
3131
import Data.Time (UTCTime)
3232
import Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds)
3333
import Distribution.Compat.Lens (toListOf)
34+
import Distribution.Compat.NonEmptySet qualified as NES (singleton)
35+
import Distribution.PackageDescription.Configuration (flattenPackageDescription)
3436
import Distribution.PackageDescription.Parsec (parseGenericPackageDescriptionMaybe)
37+
import Distribution.Simple.BuildToolDepends (getAllToolDependencies)
3538
import Distribution.Types.BuildInfo (targetBuildDepends)
3639
import Distribution.Types.BuildInfo.Lens qualified as Lens
3740
import Distribution.Types.Dependency (Dependency (..))
41+
import Distribution.Types.ExeDependency (ExeDependency (..))
42+
import Distribution.Types.LibraryName (LibraryName (..))
3843
import Distribution.Types.PackageName (PackageName, mkPackageName, unPackageName)
3944
import Distribution.Types.VersionRange (VersionRange)
4045
import Distribution.Version (Version, intersectVersionRanges, mkVersion, simplifyVersionRange)
@@ -201,7 +206,15 @@ extractAllDependencies = relevantDeps (const True) . extractDeps
201206
extractDeps :: ByteString -> [Dependency]
202207
extractDeps cnt = case parseGenericPackageDescriptionMaybe cnt of
203208
Nothing -> mempty
204-
Just descr -> foldMap targetBuildDepends $ toListOf Lens.traverseBuildInfos descr
209+
Just descr ->
210+
foldMap
211+
( \bi ->
212+
targetBuildDepends bi
213+
<> map
214+
(\(ExeDependency pkg _ ver) -> Dependency pkg ver (NES.singleton LMainLibName))
215+
(getAllToolDependencies (flattenPackageDescription descr) bi)
216+
)
217+
(toListOf Lens.traverseBuildInfos descr)
205218

206219
relevantDeps :: (PackageName -> Bool) -> [Dependency] -> Map PackageName VersionRange
207220
relevantDeps predicate =

0 commit comments

Comments
 (0)