Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sbt-dotty: the binary version is 3 for Scala >= 3.0.0 #11952

Merged
merged 4 commits into from
Apr 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions community-build/src/scala/dotty/communitybuild/projects.scala
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,12 @@ lazy val sbtPluginFilePath: String =
def log(msg: String) = println(Console.GREEN + msg + Console.RESET)

/** Executes shell command, returns false in case of error. */
def exec(projectDir: Path, binary: String, arguments: String*): Int =
def exec(projectDir: Path, binary: String, arguments: Seq[String], environment: Map[String, String]): Int =
import collection.JavaConverters._
val command = binary +: arguments
log(command.mkString(" "))
val builder = new ProcessBuilder(command: _*).directory(projectDir.toFile).inheritIO()
builder.environment.putAll(environment.asJava)
val process = builder.start()
val exitCode = process.waitFor()
exitCode
Expand All @@ -41,6 +43,7 @@ sealed trait CommunityProject:
val binaryName: String
val runCommandsArgs: List[String] = Nil
val requiresExperimental: Boolean
val environment: Map[String, String] = Map.empty

final val projectDir = communitybuildDir.resolve("community-projects").resolve(project)

Expand All @@ -55,7 +58,7 @@ sealed trait CommunityProject:
log(s"Publishing $project")
if publishCommand eq null then
throw RuntimeException(s"Publish command is not specified for $project. Project details:\n$this")
val exitCode = exec(projectDir, binaryName, (runCommandsArgs :+ publishCommand): _*)
val exitCode = exec(projectDir, binaryName, (runCommandsArgs :+ publishCommand), environment)
if exitCode != 0 then
throw RuntimeException(s"Publish command exited with code $exitCode for project $project. Project details:\n$this")
published = true
Expand All @@ -70,11 +73,11 @@ sealed trait CommunityProject:
log(s"Documenting $project")
if docCommand eq null then
throw RuntimeException(s"Doc command is not specified for $project. Project details:\n$this")
val exitCode = exec(projectDir, binaryName, (runCommandsArgs :+ docCommand): _*)
val exitCode = exec(projectDir, binaryName, (runCommandsArgs :+ docCommand), environment)
if exitCode != 0 then
throw RuntimeException(s"Doc command exited with code $exitCode for project $project. Project details:\n$this")

final def build(): Int = exec(projectDir, binaryName, buildCommands: _*)
final def build(): Int = exec(projectDir, binaryName, buildCommands, environment)

final def buildCommands = runCommandsArgs :+ testCommand

Expand All @@ -94,6 +97,7 @@ final case class MillCommunityProject(
// uncomment once mill is released
// if ignoreDocs then null else s"$baseCommand.docJar"
override val runCommandsArgs = List("-i", "-D", s"dottyVersion=$compilerVersion")
override val environment = Map("MILL_VERSION" -> "0.9.6-16-a5da34")

final case class SbtCommunityProject(
project: String,
Expand Down
5 changes: 4 additions & 1 deletion project/Build.scala
Original file line number Diff line number Diff line change
Expand Up @@ -1248,9 +1248,12 @@ object Build {
baseDirectory.value / "../language-server/src/dotty/tools/languageserver/config",
sbtTestDirectory := baseDirectory.value / "sbt-test",

// ensure that sbt-dotty is built on sbt 1.4
// ensure that sbt-dotty is built with sbt 1.4
pluginCrossBuild / sbtVersion := "1.4.9",

// scritped tests are run with current sbt version
scriptedSbt := sbtVersion.value,

// The batch mode accidentally became the default with no way to disable
// it in sbt 1.4 (https://github.com/sbt/sbt/issues/5913#issuecomment-716003195).
// We enable it explicitly here to make it clear that we're using it.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
## This failing test is pending because it will be solved by removing sbt-dotty

## Case 1: value class as parameter of method
$ copy-file changes/A0.scala src/main/scala/A.scala
$ copy-file changes/B0.scala src/main/scala/B.scala
Expand Down
9 changes: 4 additions & 5 deletions sbt-dotty/src/dotty/tools/sbtplugin/DottyPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -269,11 +269,10 @@ object DottyPlugin extends AutoPlugin {
scalaBinaryVersion := {
scalaVersion.value.split("[\\.-]").toList match {
case "0" :: minor :: _ => s"0.$minor"
case "3" :: minor :: patch :: suffix =>
s"3.$minor.$patch" + (suffix match {
case milestone :: _ => s"-$milestone"
case Nil => ""
})
case "3" :: "0" :: "0" :: milestone :: _ =>
s"3.0.0-$milestone"
case "3" :: _ =>
"3"
case _ => scalaBinaryVersion.value
}
},
Expand Down