This is an automated email from the ASF dual-hosted git repository.

pjfanning pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pekko-http.git


The following commit(s) were added to refs/heads/main by this push:
     new f5c2bb560 build: replace external dependency graph plugin #452 (#1307)
f5c2bb560 is described below

commit f5c2bb560218c502b5e02fedab8dcb0d51691e1b
Author: Matthias Kurz <[email protected]>
AuthorDate: Fri Sep 18 17:56:02 2026 +0200

    build: replace external dependency graph plugin #452 (#1307)
    
    Motivation:
    The legacy sbt-dependency-graph plugin is no longer needed because 
dependency-tree support is available in sbt itself.
    
    Modification:
    Use addDependencyTreePlugin and derive PR validation module IDs directly 
from public UpdateReport data instead of legacy plugin graph types.
    
    Result:
    The build uses sbt 1.13 dependency-tree support while preserving PR impact 
analysis without obsolete plugin APIs.
    
    Tests:
    - sbt -batch "show sbtVersion" (passed; meta-build compiled with sbt 1.13.0)
    - Test suites not run per request.
    
    References:
    Fixes #452
---
 project/ValidatePullRequest.scala | 28 ++++++++++++++--------------
 project/plugins.sbt               |  3 ++-
 2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/project/ValidatePullRequest.scala 
b/project/ValidatePullRequest.scala
index 9d8ddddc4..87bd4c41f 100644
--- a/project/ValidatePullRequest.scala
+++ b/project/ValidatePullRequest.scala
@@ -14,8 +14,6 @@
 import java.io._
 
 import MimaWithPrValidation.{ MimaResult, NoErrors, Problems }
-import net.virtualvoid.sbt.graph.ModuleGraph
-import net.virtualvoid.sbt.graph.backend.SbtUpdateReport
 import org.kohsuke.github.GHIssueComment
 import org.kohsuke.github.GitHubBuilder
 import sbt.Keys._
@@ -113,17 +111,17 @@ object ValidatePullRequest extends AutoPlugin {
   val BuildFilesAndDirectories = Set("project", "build.sbt", ".github")
 
   def changedDirectoryIsDependency(changedDirs: Set[String], name: String,
-      graphsToTest: Seq[(Configuration, ModuleGraph)])(log: Logger): Boolean = 
{
+      dependenciesToTest: Seq[(Configuration, Seq[ModuleID])])(log: Logger): 
Boolean = {
     val dirsOrExperimental = changedDirs.flatMap(dir => Set(dir, 
s"$dir-experimental"))
-    graphsToTest.exists { case (ivyScope, deps) =>
+    dependenciesToTest.exists { case (ivyScope, dependencies) =>
       log.debug(s"Analysing [$ivyScope] scoped dependencies...")
 
-      deps.nodes.foreach { m => log.debug(" -> " + m.id) }
+      dependencies.foreach { module => log.debug(" -> " + module) }
 
       // if this project depends on a modified module, we must test it
-      deps.nodes.exists { m =>
+      dependencies.exists { module =>
         // match just by name, we'd rather include too much than too little
-        val dependsOnModule = dirsOrExperimental.find(m.id.name contains _)
+        val dependsOnModule = dirsOrExperimental.find(module.name contains _)
         val depends = dependsOnModule.isDefined
         if (depends) log.info(s"Project [$name] must be verified, because 
depends on [${dependsOnModule.get}]")
         depends
@@ -226,19 +224,21 @@ object ValidatePullRequest extends AutoPlugin {
 
       val thisProjectId = CrossVersion(scalaVersion.value, 
scalaBinaryVersion.value)(projectID.value)
 
-      def graphFor(updateReport: UpdateReport, config: Configuration): 
(Configuration, ModuleGraph) =
-        config -> 
SbtUpdateReport.fromConfigurationReport(updateReport.configuration(config).get, 
thisProjectId)
+      def dependenciesFor(updateReport: UpdateReport, config: Configuration): 
(Configuration, Seq[ModuleID]) = {
+        val dependencies = 
updateReport.configuration(config).get.details.flatMap(_.modules).map(_.module)
+        config -> (thisProjectId +: dependencies)
+      }
 
       def isDependency: Boolean = {
         changedDirectoryIsDependency(
           changedDirs,
           name.value,
           Seq(
-            graphFor((Compile / updateFull).value, Compile),
-            graphFor((Test / updateFull).value, Test),
-            graphFor((Runtime / updateFull).value, Runtime),
-            graphFor((Provided / updateFull).value, Provided),
-            graphFor((Optional / updateFull).value, Optional)))(log)
+            dependenciesFor((Compile / updateFull).value, Compile),
+            dependenciesFor((Test / updateFull).value, Test),
+            dependenciesFor((Runtime / updateFull).value, Runtime),
+            dependenciesFor((Provided / updateFull).value, Provided),
+            dependenciesFor((Optional / updateFull).value, Optional)))(log)
       }
 
       if (githubCommandEnforcedBuildAll.isDefined)
diff --git a/project/plugins.sbt b/project/plugins.sbt
index cab6ca19d..bf8193d6a 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -9,6 +9,8 @@
 
 resolvers += Classpaths.sbtPluginReleases
 
+addDependencyTreePlugin
+
 addSbtPlugin("com.github.sbt" % "sbt-multi-jvm" % "0.7.0")
 addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.2.0")
 addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.6.2")
@@ -16,7 +18,6 @@ addSbtPlugin("com.github.sbt" % "sbt-dynver" % "5.1.1")
 addSbtPlugin("com.github.sbt" % "sbt-unidoc" % "0.6.1")
 addSbtPlugin("com.thoughtworks.sbt-api-mappings" % "sbt-api-mappings" % 
"3.0.3")
 addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.8")
-addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.10.0-RC1") // 
for advanced PR validation features
 addSbtPlugin("com.github.sbt" % "sbt-boilerplate" % "0.8.1")
 addSbtPlugin("com.lightbend.sbt" % "sbt-bill-of-materials" % "1.1.1")
 addSbtPlugin("com.github.sbt" % "sbt-license-report" % "1.10.0")


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to