From 9efe80463f33b89b0a02d3bca91bacf1753fbff5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Aug 2025 21:15:41 +0000 Subject: [PATCH 1/7] [1.x] Bump actions/checkout from 4 to 5 Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 8 ++++---- .github/workflows/dependency-graph.yml | 2 +- .github/workflows/nightly.yml | 8 ++++---- .github/workflows/server-test.yml | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ff6952991..47377eee8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,21 +48,21 @@ jobs: SPARK_LOCAL_IP: "127.0.0.1" steps: - name: Checkout sbt/sbt - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Checkout sbt/io - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: sbt/io ref: develop path: io - name: Checkout sbt/librarymanagement - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: sbt/librarymanagement ref: develop path: librarymanagement - name: Checkout sbt/zinc - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: sbt/zinc ref: 1.10.x diff --git a/.github/workflows/dependency-graph.yml b/.github/workflows/dependency-graph.yml index 387a2a275..cbad57297 100644 --- a/.github/workflows/dependency-graph.yml +++ b/.github/workflows/dependency-graph.yml @@ -12,6 +12,6 @@ jobs: name: Submit Dependency Graph runs-on: ubuntu-latest # or windows-latest, or macOS-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: sbt/setup-sbt@v1 - uses: scalacenter/sbt-dependency-submission@v3 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index ec469bebd..a4aa1fd19 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -21,21 +21,21 @@ jobs: JAVA_OPTS: -Xms800M -Xmx800M -Xss6M -XX:ReservedCodeCacheSize=128M -server -Dsbt.io.virtual=false -Dfile.encoding=UTF-8 steps: - name: Checkout sbt/sbt - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Checkout sbt/io - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: sbt/io ref: develop path: io - name: Checkout sbt/librarymanagement - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: sbt/librarymanagement ref: develop path: librarymanagement - name: Checkout sbt/zinc - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: sbt/zinc ref: 1.10.x diff --git a/.github/workflows/server-test.yml b/.github/workflows/server-test.yml index 23a80b1a2..f5a0902c8 100644 --- a/.github/workflows/server-test.yml +++ b/.github/workflows/server-test.yml @@ -14,7 +14,7 @@ jobs: JVM_OPTS: -Xms800M -Xmx2G -Xss6M -XX:ReservedCodeCacheSize=128M -server -Dsbt.io.virtual=false -Dfile.encoding=UTF-8 SBT_ETC_FILE: $HOME/etc/sbt/sbtopts steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Setup JDK uses: actions/setup-java@v5 with: From 622994b40db194db0951331b277a4a654dd02634 Mon Sep 17 00:00:00 2001 From: Aleksandra Zdrojowa Date: Mon, 1 Sep 2025 16:47:44 +0200 Subject: [PATCH 2/7] use reverse topological order for configurations when resolving internal dependencies - changes the classpath order for internal dependencies - fix #8249 --- .../src/main/scala/sbt/internal/util/Dag.scala | 9 +++++++++ main/src/main/scala/sbt/internal/ClasspathImpl.scala | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/internal/util-collection/src/main/scala/sbt/internal/util/Dag.scala b/internal/util-collection/src/main/scala/sbt/internal/util/Dag.scala index 25bab8f8f..c1d87e693 100644 --- a/internal/util-collection/src/main/scala/sbt/internal/util/Dag.scala +++ b/internal/util-collection/src/main/scala/sbt/internal/util/Dag.scala @@ -17,6 +17,15 @@ object Dag { import scala.collection.{ mutable, JavaConverters } import JavaConverters.asScalaSetConverter + /** + * Returns a reverse topological ordering of the graph rooted at `root`. + * In this ordering, each node appears before all of its ancestors (i.e., children are listed before their parents). + * + * @see [[https://github.com/sbt/sbt/issues/8249]] + */ + def reverseTopologicalSort[T](root: T)(dependencies: T => Iterable[T]): List[T] = + topologicalSort(root)(dependencies).reverse + def topologicalSort[T](root: T)(dependencies: T => Iterable[T]): List[T] = topologicalSort(root :: Nil)(dependencies) diff --git a/main/src/main/scala/sbt/internal/ClasspathImpl.scala b/main/src/main/scala/sbt/internal/ClasspathImpl.scala index d7531ce53..dc7e10e5d 100644 --- a/main/src/main/scala/sbt/internal/ClasspathImpl.scala +++ b/main/src/main/scala/sbt/internal/ClasspathImpl.scala @@ -406,7 +406,7 @@ private[sbt] object ClasspathImpl { private def trim(a: Array[String]): List[String] = a.toList.map(_.trim) def allConfigs(conf: Configuration): Seq[Configuration] = - Dag.topologicalSort(conf)(_.extendsConfigs) + Dag.reverseTopologicalSort(conf)(_.extendsConfigs) def getConfigurations(p: ResolvedReference, data: Settings[Scope]): Seq[Configuration] = (p / ivyConfigurations).get(data).getOrElse(Nil) From cbecbadd2cfca37383aef82176e3297a2e3c16cf Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 2 Sep 2025 01:32:19 -0400 Subject: [PATCH 3/7] [1.x] Building sbtn locally for Aarch64 --- DEVELOPING.md | 35 ++++++++++++----------------------- build.sbt | 7 +++++++ 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/DEVELOPING.md b/DEVELOPING.md index a56641dd0..60fe3f73e 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -34,6 +34,18 @@ $ sbt sbt:sbtRoot> publishLocal ``` +### Instruction to build sbtn + +```bash +$ sbt nativeImage +``` + +On macOS, the following can be used to target ARM64: + +```bash +$ ARCHS=arm64 sbt nativeImage +``` + ### Instruction to build all modules from source When working on a change that requires changing one or more sub modules, the source code for these modules can be pulled in by running the following script @@ -71,29 +83,6 @@ $ sbt > compile ``` -### Nightly builds - -_Note: The following section may require an update._ - -The latest development versions are available as nightly builds on sbt-maven-snapshots () repo, which is a redirect proxy whose underlying repository is subject to change it could be Bintray, Linux box, etc. - -To use a nightly build: - -1. Find out a version from [/org/scala-sbt/sbt/](https://repo.scala-sbt.org/scalasbt/maven-snapshots/org/scala-sbt/sbt/). -2. Put the version, for example `sbt.version=1.5.0-bin-20201121T081131` in `project/build.properties`. - -sbt launcher will resolve the specified sbt core artifacts. Because of the aforementioned redirection, this resolution is going to be very slow for the first time you run sbt, and then it should be ok for subsequent runs. - -Unless you're debugging the `sbt` script or the launcher JAR, you should be able to use any recent stable version of sbt installation as the launcher following the [Setup][Setup] instructions first. - -If you're overriding the repositories via `~/.sbt/repositories`, make sure that there's a following entry: - -``` -[repositories] - ... - sbt-maven-snapshots: https://repo.scala-sbt.org/scalasbt/maven-snapshots/, bootOnly -``` - ### Clearing out boot and local cache sbt consists of lots of JAR files. When running sbt locally, these JAR artifacts are cached in the `boot` directory under `$HOME/.sbt/boot/scala-2.12.6/org.scala-sbt/sbt/1.$MINOR.$PATCH-SNAPSHOT` directory. diff --git a/build.sbt b/build.sbt index b6524d72d..55fd9ff33 100644 --- a/build.sbt +++ b/build.sbt @@ -1193,6 +1193,13 @@ lazy val sbtClientProj = (project in file("client")) } outputDir.resolve("sbtn").toFile }, + nativeImageCommand := { + val orig = nativeImageCommand.value + sys.env.get("ARCHS") match { + case Some(a) => Seq("arch", s"-$a") ++ orig + case None => orig + } + }, nativeImageOptions ++= Seq( "--no-fallback", s"--initialize-at-run-time=sbt.client", From 3a8a891d714bad8010a7b5d758dc7e2aa7f1205e Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Tue, 2 Sep 2025 03:51:01 -0400 Subject: [PATCH 4/7] fix: Fixes client-side run **Problem** Client-side run currently fails on JDK 8 because sbtn creates args file even though JDK 8 does not support it. This is likely because sbtn is compiled using GraalVM on a modern JDK. **Solution** This adds a new fork option canUseArgumentsFile to delegate the args file decision to the server, and default to false if the value is missing. This retroactively fixes sbt 2.x client-side run. --- main/src/main/scala/sbt/Defaults.scala | 6 ++++- .../contraband-scala/sbt/ForkOptions.scala | 25 +++++++++++++------ run/src/main/contraband/run.contra | 3 +++ run/src/main/scala/sbt/Fork.scala | 8 +++--- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 6c53b78b5..fd49fdcc3 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -1460,6 +1460,9 @@ object Defaults extends BuildCommon { } def forkOptionsTask: Initialize[Task[ForkOptions]] = Def.task { + val canUseArgumentsFile = sys.props + .getOrElse("java.vm.specification.version", "1") + .toFloat >= 9.0 ForkOptions( javaHome = javaHome.value, outputStrategy = outputStrategy.value, @@ -1468,7 +1471,8 @@ object Defaults extends BuildCommon { workingDirectory = Some(baseDirectory.value), runJVMOptions = javaOptions.value.toVector, connectInput = connectInput.value, - envVars = envVars.value + envVars = envVars.value, + canUseArgumentsFile = Some(canUseArgumentsFile) ) } diff --git a/run/src/main/contraband-scala/sbt/ForkOptions.scala b/run/src/main/contraband-scala/sbt/ForkOptions.scala index 6f083bc93..ec1009c58 100644 --- a/run/src/main/contraband-scala/sbt/ForkOptions.scala +++ b/run/src/main/contraband-scala/sbt/ForkOptions.scala @@ -17,6 +17,7 @@ package sbt * @param connectInput If true, the standard input of the forked process is connected to the standard input of this process. Otherwise, it is connected to an empty input stream. Connecting input streams can be problematic, especially on versions before Java 7. * @param envVars The environment variables to provide to the forked process. By default, none are provided. + * @param canUseArgumentsFile Use arguments file */ final class ForkOptions private ( val javaHome: Option[java.io.File], @@ -25,22 +26,24 @@ final class ForkOptions private ( val workingDirectory: Option[java.io.File], val runJVMOptions: Vector[String], val connectInput: Boolean, - val envVars: scala.collection.immutable.Map[String, String]) extends Serializable { + val envVars: scala.collection.immutable.Map[String, String], + val canUseArgumentsFile: Option[Boolean]) extends Serializable { - private def this() = this(None, None, Vector(), None, Vector(), false, Map()) + private def this() = this(None, None, Vector(), None, Vector(), false, Map(), None) + private def this(javaHome: Option[java.io.File], outputStrategy: Option[sbt.OutputStrategy], bootJars: Vector[java.io.File], workingDirectory: Option[java.io.File], runJVMOptions: Vector[String], connectInput: Boolean, envVars: scala.collection.immutable.Map[String, String]) = this(javaHome, outputStrategy, bootJars, workingDirectory, runJVMOptions, connectInput, envVars, None) override def equals(o: Any): Boolean = this.eq(o.asInstanceOf[AnyRef]) || (o match { - case x: ForkOptions => (this.javaHome == x.javaHome) && (this.outputStrategy == x.outputStrategy) && (this.bootJars == x.bootJars) && (this.workingDirectory == x.workingDirectory) && (this.runJVMOptions == x.runJVMOptions) && (this.connectInput == x.connectInput) && (this.envVars == x.envVars) + case x: ForkOptions => (this.javaHome == x.javaHome) && (this.outputStrategy == x.outputStrategy) && (this.bootJars == x.bootJars) && (this.workingDirectory == x.workingDirectory) && (this.runJVMOptions == x.runJVMOptions) && (this.connectInput == x.connectInput) && (this.envVars == x.envVars) && (this.canUseArgumentsFile == x.canUseArgumentsFile) case _ => false }) override def hashCode: Int = { - 37 * (37 * (37 * (37 * (37 * (37 * (37 * (37 * (17 + "sbt.ForkOptions".##) + javaHome.##) + outputStrategy.##) + bootJars.##) + workingDirectory.##) + runJVMOptions.##) + connectInput.##) + envVars.##) + 37 * (37 * (37 * (37 * (37 * (37 * (37 * (37 * (37 * (17 + "sbt.ForkOptions".##) + javaHome.##) + outputStrategy.##) + bootJars.##) + workingDirectory.##) + runJVMOptions.##) + connectInput.##) + envVars.##) + canUseArgumentsFile.##) } override def toString: String = { - "ForkOptions(" + javaHome + ", " + outputStrategy + ", " + bootJars + ", " + workingDirectory + ", " + runJVMOptions + ", " + connectInput + ", " + envVars + ")" + "ForkOptions(" + javaHome + ", " + outputStrategy + ", " + bootJars + ", " + workingDirectory + ", " + runJVMOptions + ", " + connectInput + ", " + envVars + ", " + canUseArgumentsFile + ")" } - private[this] def copy(javaHome: Option[java.io.File] = javaHome, outputStrategy: Option[sbt.OutputStrategy] = outputStrategy, bootJars: Vector[java.io.File] = bootJars, workingDirectory: Option[java.io.File] = workingDirectory, runJVMOptions: Vector[String] = runJVMOptions, connectInput: Boolean = connectInput, envVars: scala.collection.immutable.Map[String, String] = envVars): ForkOptions = { - new ForkOptions(javaHome, outputStrategy, bootJars, workingDirectory, runJVMOptions, connectInput, envVars) + private[this] def copy(javaHome: Option[java.io.File] = javaHome, outputStrategy: Option[sbt.OutputStrategy] = outputStrategy, bootJars: Vector[java.io.File] = bootJars, workingDirectory: Option[java.io.File] = workingDirectory, runJVMOptions: Vector[String] = runJVMOptions, connectInput: Boolean = connectInput, envVars: scala.collection.immutable.Map[String, String] = envVars, canUseArgumentsFile: Option[Boolean] = canUseArgumentsFile): ForkOptions = { + new ForkOptions(javaHome, outputStrategy, bootJars, workingDirectory, runJVMOptions, connectInput, envVars, canUseArgumentsFile) } def withJavaHome(javaHome: Option[java.io.File]): ForkOptions = { copy(javaHome = javaHome) @@ -72,10 +75,18 @@ final class ForkOptions private ( def withEnvVars(envVars: scala.collection.immutable.Map[String, String]): ForkOptions = { copy(envVars = envVars) } + def withCanUseArgumentsFile(canUseArgumentsFile: Option[Boolean]): ForkOptions = { + copy(canUseArgumentsFile = canUseArgumentsFile) + } + def withCanUseArgumentsFile(canUseArgumentsFile: Boolean): ForkOptions = { + copy(canUseArgumentsFile = Option(canUseArgumentsFile)) + } } object ForkOptions { def apply(): ForkOptions = new ForkOptions() def apply(javaHome: Option[java.io.File], outputStrategy: Option[sbt.OutputStrategy], bootJars: Vector[java.io.File], workingDirectory: Option[java.io.File], runJVMOptions: Vector[String], connectInput: Boolean, envVars: scala.collection.immutable.Map[String, String]): ForkOptions = new ForkOptions(javaHome, outputStrategy, bootJars, workingDirectory, runJVMOptions, connectInput, envVars) def apply(javaHome: java.io.File, outputStrategy: sbt.OutputStrategy, bootJars: Vector[java.io.File], workingDirectory: java.io.File, runJVMOptions: Vector[String], connectInput: Boolean, envVars: scala.collection.immutable.Map[String, String]): ForkOptions = new ForkOptions(Option(javaHome), Option(outputStrategy), bootJars, Option(workingDirectory), runJVMOptions, connectInput, envVars) + def apply(javaHome: Option[java.io.File], outputStrategy: Option[sbt.OutputStrategy], bootJars: Vector[java.io.File], workingDirectory: Option[java.io.File], runJVMOptions: Vector[String], connectInput: Boolean, envVars: scala.collection.immutable.Map[String, String], canUseArgumentsFile: Option[Boolean]): ForkOptions = new ForkOptions(javaHome, outputStrategy, bootJars, workingDirectory, runJVMOptions, connectInput, envVars, canUseArgumentsFile) + def apply(javaHome: java.io.File, outputStrategy: sbt.OutputStrategy, bootJars: Vector[java.io.File], workingDirectory: java.io.File, runJVMOptions: Vector[String], connectInput: Boolean, envVars: scala.collection.immutable.Map[String, String], canUseArgumentsFile: Boolean): ForkOptions = new ForkOptions(Option(javaHome), Option(outputStrategy), bootJars, Option(workingDirectory), runJVMOptions, connectInput, envVars, Option(canUseArgumentsFile)) } diff --git a/run/src/main/contraband/run.contra b/run/src/main/contraband/run.contra index 0cb61c7c3..a38e6df11 100644 --- a/run/src/main/contraband/run.contra +++ b/run/src/main/contraband/run.contra @@ -27,4 +27,7 @@ type ForkOptions { ## The environment variables to provide to the forked process. By default, none are provided. envVars: StringStringMap! = raw"Map()" @since("0.1.0") + + ## Use arguments file + canUseArgumentsFile: Boolean @since("1.11.6") } diff --git a/run/src/main/scala/sbt/Fork.scala b/run/src/main/scala/sbt/Fork.scala index 07fc33924..cb4f664d0 100644 --- a/run/src/main/scala/sbt/Fork.scala +++ b/run/src/main/scala/sbt/Fork.scala @@ -49,7 +49,9 @@ final class Fork(val commandName: String, val runnerClass: Option[String]) { val (classpathEnv, options) = Fork.fitClasspath(preOptions) val command = executable +: options val jpb = - if (Fork.shouldUseArgumentsFile(options)) + if (config.canUseArgumentsFile.getOrElse(false) && + Fork.booleanOpt("sbt.argsfile").getOrElse(true) && + Fork.shouldUseArgumentsFile(options)) new JProcessBuilder(executable, Fork.createArgumentsFile(options)) else new JProcessBuilder(command.toArray: _*) @@ -137,9 +139,7 @@ object Fork { * - the command line length would exceed MaxConcatenatedOptionLength */ private def shouldUseArgumentsFile(options: Seq[String]): Boolean = - (sys.props.getOrElse("java.vm.specification.version", "1").toFloat >= 9.0) && - booleanOpt("sbt.argsfile").getOrElse(true) && - (options.mkString.length > MaxConcatenatedOptionLength) + options.mkString.length > MaxConcatenatedOptionLength /** * Create an arguments file from a sequence of command line arguments From 4b1239fceeaa9a543fc42a1fdd0104ac6b9fd54d Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 6 Sep 2025 17:59:53 -0400 Subject: [PATCH 5/7] Launcher 1.5.0 --- project/Dependencies.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 4f4e185ed..e78542aa8 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -22,7 +22,7 @@ object Dependencies { private val libraryManagementCore = "org.scala-sbt" %% "librarymanagement-core" % lmVersion private val libraryManagementIvy = "org.scala-sbt" %% "librarymanagement-ivy" % lmVersion - val launcherVersion = "1.4.4" + val launcherVersion = "1.5.0" val launcherInterface = "org.scala-sbt" % "launcher-interface" % launcherVersion val rawLauncher = "org.scala-sbt" % "launcher" % launcherVersion val testInterface = "org.scala-sbt" % "test-interface" % "1.0" From 9186f23839b6adbf2d3c9e69a2f4c03c836fc1b6 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 6 Sep 2025 18:42:39 -0400 Subject: [PATCH 6/7] sbt 1.11.6 --- build.sbt | 2 +- launcher-package/build.sbt | 2 +- sbt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build.sbt b/build.sbt index 55fd9ff33..70ed6f40f 100644 --- a/build.sbt +++ b/build.sbt @@ -11,7 +11,7 @@ import scala.util.Try // ThisBuild settings take lower precedence, // but can be shared across the multi projects. ThisBuild / version := { - val v = "1.11.5-SNAPSHOT" + val v = "1.11.7-SNAPSHOT" nightlyVersion.getOrElse(v) } ThisBuild / version2_13 := "2.0.0-SNAPSHOT" diff --git a/launcher-package/build.sbt b/launcher-package/build.sbt index a05cca34a..a65414f16 100755 --- a/launcher-package/build.sbt +++ b/launcher-package/build.sbt @@ -121,7 +121,7 @@ val root = (project in file(".")). file }, // update sbt.sh at root - sbtnVersion := "1.11.5", + sbtnVersion := "1.11.6", sbtnJarsBaseUrl := "https://github.com/sbt/sbtn-dist/releases/download", sbtnJarsMappings := { val baseUrl = sbtnJarsBaseUrl.value diff --git a/sbt b/sbt index 001388620..ea6860fe6 100755 --- a/sbt +++ b/sbt @@ -1,7 +1,7 @@ #!/usr/bin/env bash set +e -declare builtin_sbt_version="1.11.5" +declare builtin_sbt_version="1.11.6" declare -a residual_args declare -a java_args declare -a scalac_args @@ -25,7 +25,7 @@ declare use_sbtn= declare use_jvm_client= declare no_server= declare sbtn_command="$SBTN_CMD" -declare sbtn_version="1.11.5" +declare sbtn_version="1.11.6" declare use_colors=1 declare is_this_dir_sbt="" From 1e2efaeadf4584b88ed49d7c71e254ade72894da Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 13 Sep 2025 15:36:09 -0400 Subject: [PATCH 7/7] deps: Launcher 1.5.1 --- .github/workflows/client-test.yml | 4 +++- project/Dependencies.scala | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/client-test.yml b/.github/workflows/client-test.yml index 10f514d35..3443f5cca 100644 --- a/.github/workflows/client-test.yml +++ b/.github/workflows/client-test.yml @@ -36,6 +36,8 @@ jobs: java-version: "8" cache: sbt - uses: sbt/setup-sbt@v1 + with: + sbt-runner-version: 1.11.5 - name: Set up Python 3.12 uses: actions/setup-python@v5 with: @@ -70,7 +72,7 @@ jobs: # test launcher script cd launcher-package bin/coursier resolve - ../sbt -Dsbt.build.version=$TEST_SBT_VER integrationTest/test + sbt -Dsbt.build.version=$TEST_SBT_VER integrationTest/test # This fails due to the JLine issue # cd citest && ./test.sh - name: Client test (Windows) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index e78542aa8..6cb8988e9 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -22,7 +22,7 @@ object Dependencies { private val libraryManagementCore = "org.scala-sbt" %% "librarymanagement-core" % lmVersion private val libraryManagementIvy = "org.scala-sbt" %% "librarymanagement-ivy" % lmVersion - val launcherVersion = "1.5.0" + val launcherVersion = "1.5.1" val launcherInterface = "org.scala-sbt" % "launcher-interface" % launcherVersion val rawLauncher = "org.scala-sbt" % "launcher" % launcherVersion val testInterface = "org.scala-sbt" % "test-interface" % "1.0"