From d6e6d28f87617e2bf554e30a98042e9951d7f405 Mon Sep 17 00:00:00 2001 From: kenji yoshida <6b656e6a69@gmail.com> Date: Thu, 12 Mar 2026 03:40:49 +0900 Subject: [PATCH] Delete checkPluginCross task. Add sourceGenerators for PluginCross (#8897) --- build.sbt | 19 ++++++++++++------- main/src/main/scala/sbt/PluginCross.scala | 4 ++-- project/Dependencies.scala | 1 - 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/build.sbt b/build.sbt index 897acbcd0..e59dd0485 100644 --- a/build.sbt +++ b/build.sbt @@ -53,7 +53,6 @@ val excludeLint = SettingKey[Set[Def.KeyedInitialize[?]]]("excludeLintKeys") Global / excludeLint := (Global / excludeLint).?.value.getOrElse(Set.empty) Global / excludeLint += Utils.componentID Global / excludeLint += scriptedBufferLog -Global / excludeLint += checkPluginCross Global / excludeLint += nativeImageJvm Global / excludeLint += nativeImageVersion @@ -709,12 +708,18 @@ lazy val mainProj = (project in file("main")) .settings( testedBaseSettings, name := "Main", - checkPluginCross := { - val sv = scalaVersion.value - val f = baseDirectory.value / "src" / "main" / "scala" / "sbt" / "PluginCross.scala" - if (sv.startsWith("2.12") && !IO.readLines(f).exists(_.contains(s""""$sv""""))) { - sys.error(s"PluginCross.scala does not match up with the scalaVersion $sv") - } + Compile / sourceGenerators += task { + val f = (Compile / sourceManaged).value / "sbt" / "PluginCrossExtra.scala" + IO.write( + f, + s"""|package sbt + | + |private[sbt] trait PluginCrossExtra { self: PluginCross.type => + | def scala3: String = "${Dependencies.scala3}" + |} + |""".stripMargin + ) + Seq(f) }, libraryDependencies ++= Seq( diff --git a/main/src/main/scala/sbt/PluginCross.scala b/main/src/main/scala/sbt/PluginCross.scala index 71ee214f7..c13bfe79b 100644 --- a/main/src/main/scala/sbt/PluginCross.scala +++ b/main/src/main/scala/sbt/PluginCross.scala @@ -24,7 +24,7 @@ import ProjectExtra.{ extract, setProject } /** * Module responsible for plugin cross building. */ -private[sbt] object PluginCross { +private[sbt] object PluginCross extends PluginCrossExtra { lazy val pluginSwitch: Command = { def switchParser(state: State): Parser[(String, String)] = { lazy val switchArgs = token(NotSpace.examples()) ~ (token( @@ -102,7 +102,7 @@ private[sbt] object PluginCross { case VersionNumber(Seq(0, 12, _*), _, _) => "2.9.2" case VersionNumber(Seq(0, 13, _*), _, _) => "2.10.7" case VersionNumber(Seq(1, 0, _*), _, _) => "2.12.21" - case VersionNumber(Seq(2, _*), _, _) => "3.8.2" + case VersionNumber(Seq(2, _*), _, _) => scala3 case _ => sys.error(s"Unsupported sbt binary version: $sv") } } diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 5a1924066..4e45ea09a 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -6,7 +6,6 @@ object Dependencies { val scala213 = "2.13.16" val scala3 = "3.8.2" val scala212 = "2.12.21" - val checkPluginCross = settingKey[Unit]("Make sure scalaVersion match up") val baseScalaVersion = scala3 def nightlyVersion: Option[String] = sys.env.get("BUILD_VERSION") orElse sys.props.get("sbt.build.version")