Commit Graph

18105 Commits

Author SHA1 Message Date
Anatolii Kmetiuk 1d7b0d66c3
Fix #9358: preserve --allow-empty and --sbt-create in sbtArguments (#9370) 2026-06-23 15:03:21 +09:00
dependabot[bot] d5e9888db9
[2.x] ci: bump actions/checkout from 6 to 7 (#9366)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [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/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-22 01:10:42 -04:00
eugene yokota f468735c9f
[2.x] sbtn 2.0.0-2932685e (#9363) 2026-06-21 14:41:45 -04:00
eugene yokota 2932685ed2
[2.x] ipcsocket 1.7.0 (#9361) 2026-06-21 01:31:40 -04:00
eugene yokota d8929ad8d7
[2.x] ci: sbt-salad-days (#9360) 2026-06-21 01:08:31 -04:00
kenji yoshida f3d1090350
[2.x] test: Update sbt.version in launcher-package/citest2 (#9357) 2026-06-19 22:11:30 -04:00
Jozef Koval 73d164fa84
[2.x] fix: Substitute [organisation] literally by defaulting Patterns.isMavenCompatible to false (#9344)
**Problem**

In an Ivy resolver pattern, the [organisation]/[organization] token has its dots rewritten to slashes (org.example → org/example), behaving like Ivy's [orgPath] token rather than being literal. Per the [Apache Ivy spec](http://ant.apache.org/ivy/history/latest-milestone/concept.html), [organisation] should be substituted literally and [orgPath] is the slash-separated form.

Root cause: Patterns.isMavenCompatible defaulted to true, which sbt forwards to Apache Ivy as setM2compatible(true); with m2-compatibility on, Ivy rewrites the [organisation] token to slash form. A user supplying a custom Ivy pattern (e.g. for an SFTP/SSH resolver) inherited that default and got the wrong paths, with no obvious indication why. The only workaround was the non-obvious withIsMavenCompatible(false).

**Solution**

Flip the default of Patterns.isMavenCompatible from true to false, so a hand-written Patterns keeps [organisation] literal by default — matching the Ivy spec.
2026-06-15 23:54:28 -04:00
kenji yoshida c33b795c78
[2.x] ci: Update version and ivy tests (#9342) 2026-06-15 12:28:14 -04:00
kenji yoshida 29f2c8648f
[2.x] ci: Update mimaPreviousArtifacts (#9341) 2026-06-15 12:26:58 -04:00
eugene yokota 183ed46375
[2.x] sbtn 2.0.0-f0d2fae4 (#9333) 2026-06-14 01:32:02 -04:00
BrianHotopp f0d2fae4d8
[2.x] feat: Resolve dependencies in parallel under the super shell (#9295)
Building on #9270 (which parallelized resolution in non-interactive runs by
narrowing the lm-coursier lock to only fire while coursier renders its
interactive progress bar), this makes `update` resolve in parallel under the
interactive super shell as well.

Count distinct non-checksum urls instead and drop the module claim.
Report the elapsed time of the current burst so the super shell renders
a live counter rather than a frozen "0s". Tests now encode coursier's
per-session call pattern.

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 15:17:03 -04:00
eugene yokota bb981d7e02
[2.x] fix: Fixes console / javaOptions (#9322)
**Problem**
console / javaOptions is ignored.

**Solution**
1. This enables forked console even for sbt --server mode.
2. This includes console / javaOptions to the forkOptions.
2026-06-10 12:23:43 -04:00
kenji yoshida ad6c7a35a8
Update mimaPreviousArtifacts (#9308) 2026-06-09 14:21:18 -04:00
eugene yokota 75f1d15a81
[2.x] fix: Fixes chunked upload/download (#9318)
**Problem**
Chunked upload/download doesn't work.

**Solution**
1. This fixes the SERVICE_NAME shading.
2. This fixes the resource name.
3. This fixes download stream processing.
2026-06-09 21:48:07 +09:00
kenji yoshida 4950462abb
[2.x] Remove type ascription in Continuous (#9314) 2026-06-09 05:22:09 -04:00
kenji yoshida 5310381bb4
[2.x] Avoid dollars in name (#9313) 2026-06-08 23:39:10 -04:00
eugene yokota 81ecab120a
[2.x] fix: Fixes cross build caching (#9305)
**Problem**
We can get into a situation where CompileInputs2 become identical for Scala 3.x and 2.13, which breaks the recovery of Zinc analysis.

**Solution**
This includes Scala version into CompileInput2 to workaround this issue.
2026-06-07 23:49:02 -04:00
eugene yokota b9e98b9e8a
[2.x] Update to Scala 3.8.4 (#9302) 2026-06-07 20:52:13 -04:00
eugene yokota ac320c7fd0
[2.x] fix: ByteStream chunked upload/download (#9298)
**Problem**

BatchUpdateBlobsRequest suffers from gRPC's message size limitation.

**Solution**

For larger files, we switch to using the ByteStream API, chunked to 1MB at a time.
2026-06-07 15:17:20 -04:00
Ali Rashid 3b097cc3cc
[2.x] fix: Fixes publishing platform-specific artifacts (like Scala Native)
**Problem**
Platform suffix is absent in published artifacts.
#9118 partially solved this. It didn't touch publish-side naming though, so the published files still drop the suffix in three places.

**Solution**
This fixes
- ivyless publication names - CoursierArtifactsTasks.coursierPublicationsTask
- ivyless POM <artifactId> (the coordinate written inside the .pom) - PomGenerator.crossVersionDep
- Ivy backend (useIvy := true) - CrossVersion.substituteCross via IvyActions
2026-06-03 21:07:02 -04:00
kenji yoshida e27f3df021
[2.x] ci: Remove duplicate scalaVersion setting (#9297) 2026-06-03 10:40:44 -04:00
kenji yoshida 7b73bd1f44
Update mima setting (#9294) 2026-06-01 23:26:07 -04:00
eugene yokota fcd247e7c6
[2.x] fix: Avoid updateFull (#9290)
**Problem**
updateFull is called in no-op compile.

**Solution**
Avoid it for the default dependency mode.
2026-06-01 07:00:21 -04:00
eugene yokota 25cb2f3e60
[2.x] fix: Add warning about trainsient key (#9288)
**Problem**
Transient key is silently excluded from caching.

**Solution**
Add a warning.
2026-06-01 06:29:44 -04:00
eugene yokota b34323c39e
Merge pull request #9282 from eed3si9n/wip/bump-sjsonnew
[2.x] sjson-new 0.15.0 + Contraband 0.9.0
2026-06-01 02:20:16 -04:00
eugene yokota 619e034ec9
[2.x] perf: Improve incremental test stamper (#9257)
**Problem**
Incremental stamper is still causing perf issue.

**Solution**
This further avoids SHA-256 calls to calculate the stamp.
2026-06-01 02:17:39 -04:00
Eugene Yokota f327ef14d0 [2.x] sjson-new 0.15.0 2026-06-01 01:52:50 -04:00
Eugene Yokota c1219702d5 Contraband 0.9.0 2026-06-01 01:52:50 -04:00
eugene yokota 5dd886e243
Merge pull request #9278 from eed3si9n/wip/access
[2.x] Reimplement FarmHash
2026-05-31 18:19:28 -04:00
Eugene Yokota 0bab2066df [2.x] Reimplement FarmHash
**Problem**
sbtn and server uses FarmHash.

**Solution**
This reimplements FarmHash using Scala.
2026-05-31 16:07:28 -04:00
Eugene Yokota e8a358373c Refactor VarHandle to Access typeclass 2026-05-31 16:07:28 -04:00
eugene yokota 315202181c
[2.x] ci: Scalafmt 3.11.1 (#9279)
Apply Scalafmt
2026-05-31 16:01:15 -04:00
kenji yoshida 7b0c87b7c0
[2.x] fix: Fixes backtick-quoted project handling (#9277) 2026-05-30 22:09:46 -04:00
BrianHotopp d4f54fd5b6
[2.x] fix: Report a missing input file clearly instead of an opaque SerializationException (#9271)
When a file referenced by a task's inputs/outputs (e.g. Compile / resources +=
file("nope.txt")) does not exist, hashing the task's cache key threw a
NoSuchFileException deep inside sjsonnew serialization. It surfaced as an opaque
sjsonnew.SerializationException that dumped the entire input list, with the real
cause buried several `Caused by:` levels down, so users routinely mistook it for
a corrupt cache and reached for `clean`.

ActionCache.mkInput now catches the hashing failure, detects a NoSuchFileException
anywhere in the cause chain (ActionCache.findMissingFile), and throws a
MessageOnlyException naming the file:

    [error] file referenced by the build does not exist: nope.txt

util-cache gains a dependency on util-control (a leaf module, no cycle) for
MessageOnlyException.

Fixes #9217.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 19:29:41 -04:00
eugene yokota ffa8c14ca6
[2.x] Migrate FarmHash usage to xxhash64 (#9267)
Problem
ZAHa, which we use for FarmHash, uses Unsafe.

Solution
This ports xxhash64 to Scala.
2026-05-30 19:14:53 -04:00
Anatolii Kmetiuk c70b86d5c9
[2.x] Opt bspBuildTargetOutputPathsItem out of caching (#9272)
Opt bspBuildTargetOutputPathsItem out of caching
2026-05-30 00:10:05 +09:00
BrianHotopp 0ee7323110
[2.x] fix: Parallelize dependency resolution when no progress bar is rendered (#9270)
update held a process-global lock around coursier resolution and artifact
fetching whenever a logger was set OR coursier was not in fallback mode. That
lock exists only to serialize coursier's interactive progress bar, which is
rendered solely when no custom logger is supplied and coursier is not in
fallback mode. The loggerOpt.nonEmpty clause therefore over-serialized the
common non-interactive case (IntelliJ re-imports, CI, any non-TTY run, where
sbt supplies a quiet debug-only logger), making update scale with the number
of modules rather than the number of distinct artifacts.

Fixes #5508.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-28 15:31:38 -04:00
Anatolii Kmetiuk 4ca516fd5f
[2.x] Fix duplicate autoplugins packageBin mappings (#9255)
Deduplicate executable jar package entries. In the issue, the duplicate was something like:

(resource_managed/.../sbt/sbt.autoplugins, "sbt/sbt.autoplugins")
(classes/.../sbt/sbt.autoplugins,          "sbt/sbt.autoplugins")

This is because copyResources copied autoplugin metadata to the classes directory.

Solution: when composing the packageBinMappings, differentiate between artifacts that come from class directory and from outside of it. If there is a duplicate, prefer resource that comes from outside of it.
2026-05-28 12:19:40 -04:00
kenji yoshida 9583a97e89
[2.x] test: Add test for issue 2188 (#9264) 2026-05-24 16:46:07 -04:00
BrianHotopp 5e4d2744a1
[2.x] fix: Make custom-scala-org scripted test hermetic (#9260)
The original fixture pinned
  scalaOrganization := "io.github.scala-wasm"
  scalaVersion := "3.8.3-RC1-wasm-bin-SNAPSHOT"
and ran compile. The wasm fork never published a release of
scala3-library_3 -- only a snapshot to Sonatype's central-snapshots
repo, which has ~90-day retention. #8732 merged 2026-02-21; the
snapshot was GC'd ~2026-05-22 and develop CI began failing
deterministically.

Fixes #9259.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 14:18:40 -04:00
BrianHotopp b71319a153
[2.x] fix: Apply dependencyMode filtering to internal project deps (#9250)
Fixes #9009.

dependencyMode := DependencyMode.PlusOne strips every internal
project dependency from the compile classpath, even direct ones --
LibA/compile fails with Not found: CoreClass despite
LibA.dependsOn(Core). Direct mode happens to work today, but only by
accident (filterByDirectDeps matches against allDependencies, which
includes projectDependencies -- the bug surface is one step removed).

Root cause: ClasspathImpl.filterByPlusOne resolves the
direct-dep key set from UpdateReport, which only contains externally
resolved (LM) modules. Internal project refs never appear there, so
resolvedDirectKeys is empty for internal entries; plusOneKeys is
likewise empty; the final filter strips every internal classpath
entry whose moduleIDStr identifies an internal project. Diagnosis on
the issue by eureka0928.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 23:20:56 -04:00
Anatolii Kmetiuk 03965281df
Improve deprecation UX for watchSources (#9247) 2026-05-20 09:44:51 +09:00
Anatolii Kmetiuk 696626e195
[2.x] fix: Add regression test (#9246) 2026-05-19 10:57:23 -04:00
BrianHotopp 3eeac9deae
[2.x] fix: Collapse duplicate subtrees in dependency tree rendering (#9226)
Fixes #6886.

dependencyTree, dependencyBrowseTree, and inspect tree re-explore
the same node once per incoming edge. In a DAG with N levels and M
children per node the rendered output is O(M^N) -- the OP needed
>16 GB heap, #7360 has a 6 GB heap dump, and Friendseeker's analysis
on the issue showed the exponential re-traversal directly.

Fix: track a visited set across the renderer's recursion. The first
time a node is encountered it is rendered in full; on subsequent
visits the entry collapses to a one-line +- <id> (*) (ASCII) or a
<id> (*) leaf (JSON), matching Maven's dependency:tree (*)
convention. Cycle detection (separate parents set, (cycle) marker)
is unchanged.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 19:15:47 -04:00
kenji yoshida 536e676481
[2.x] refactor: format launcherPackageIntegrationTest (#9245) 2026-05-18 14:41:52 -04:00
kenji yoshida 96bb1848da
[2.x] Update mimaSettings (#9242) 2026-05-17 18:59:44 -04:00
eugene yokota 2488e973db
[2.x] Update sbtn to 2.0.0-RC14 for timeout fix (#9240) 2026-05-17 14:12:57 -04:00
eugene yokota df038e78a7
[2.x] fix: Catch timeout on sbtn exit (#9239)
**Problem**
sbtn tries to wait on a thread on exit, and times out.

**Solution**
Shorten the timeout and catch it.
2026-05-17 05:44:40 -04:00
eugene yokota 46f0b89642
[2.x] Add runner support for execution log (#9237)
**Problem/Solution**
This adds runner commandline option experimental_execution_log.
2026-05-17 03:01:12 -04:00
kenji yoshida 6a1222ad06
[2.x] fix: Remove explicit equals and hashCode in LabeledFunctions (#9228) 2026-05-16 23:57:41 -04:00