Commit Graph

3412 Commits

Author SHA1 Message Date
Anatolii Kmetiuk c5e5e5f492
[1.x] fix dependency parsing for bsp (#9451) 2026-07-14 23:38:57 -04:00
BrianHotopp cb90a47ce8
[1.x] fix: Delegate JDK platform classes to the platform loader in console (#9327)
The console/consoleQuick REPL loader rejects JDK platform-module
classes: ClasspathFilter's post-check refuses classes whose code
source is a jrt: URL, so a top-down REPL reference to java.sql.* falls
through to the REPL's own classloader, which finds the bytes in the
runner-generated java9-rt-ext jar (via scala.ext.dirs) and dies in
defineClass:

  java.lang.SecurityException: Prohibited package name: java.sql

Wrap the REPL parent loader with a fallback that consults
ClassLoader.getPlatformClassLoader (reflectively; absent on JDK 8,
which has no platform loader) only after the existing chain misses,
so project classes keep winning and platform classes resolve instead
of being redefined. Linkage through the classpath loader (a JDBC
driver implementing java.sql.Driver) was already sound: the launcher's
topLoader delegates to the platform loader on JDK 9+; only the
top-down path through ClasspathFilter was broken.

Verified against sbt 1.11.7 (fails) and a patched 1.12.3-SNAPSHOT
(passes) with the original report's repro: java.sql.Timestamp,
a project class extending it, and DriverManager.getConnection with
the postgresql driver, which now reaches the network layer.

The console/* scripted group is added to CI; it was not in any
scripted glob, so the new test (and the pre-existing
console/project-compiler-bridge) never ran.

Fixes #4328 (still reproducible on 1.11.7 before this change).

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-13 01:54:58 -04:00
Zainab Ali 62a20201de [1.x] Add Test configuration to evictionWarningOptions (#9102)
* Add Test configuration to evictionWarningOptions
* Add Test configuration to default evictionWarningOptions
* Deduplicate eviction errors based on callers.
* Update eviction error test for semantic versioning.
* Group evictions by configuration and update test.
2026-04-24 03:25:47 -04:00
eugene yokota 872db3d817
[1.x] fix: Fixes managedScalaInstance false support (#9121) (#9123)
**Problem**
When managedScalaInstance is set to false, we stopped creating
ScalaInstance, but the documentation says the user can
pull in their own dependencies.

**Solution**
Attempt to construct a ScalaInstance from update report
even when managedScalaInstance is set to false.
2026-04-23 03:32:42 -04:00
eugene yokota 267880ad26
[1.x] Fixes the source dependency fix (#8974)
**Problem/Solution**
Run was missing cwd.
2026-03-24 12:29:18 -04:00
eugene yokota 34856b06ad
[1.x] Fix test format (#8969) 2026-03-24 00:01:10 -04:00
Anatolii Kmetiuk 3a474ab060 Allowlist-based approach to VCS string sanitization 2026-03-23 17:33:58 -04:00
Anatolii Kmetiuk 1ce945b6b7 Harden Windows VCS URI fragments against command injection
- Use Process(argv) for git/hg/svn without cmd /c on Windows
- Add VcsUriFragment.validate for fragments in clone/checkout/update
- Add tests
2026-03-23 17:31:37 -04:00
eugene yokota f5da35c092
Update semanticdbVersion in SemanticdbPlugin.scala (#8907)
Co-authored-by: kenji yoshida <6b656e6a69@gmail.com>
2026-03-15 04:55:00 -04:00
eugene yokota 97b69bba79
[1.x] Respect `scalaOrganization` in compiler bridge resolution (#8732) (#8799)
**Problem**
`scalaOrganization` was ignored during compiler bridge resolution because `ZincLmUtil.getDefaultBridgeModule` hard-coded `ScalaArtifacts.Organization` (`org.scala-lang`).

**Solution**
Add a `scalaOrganization` parameter to `ZincLmUtil` methods, and passing `scalaOrganization` value to those methods.

Generated-by: Claude Opus 4.6

Co-authored-by: Rikito Taniguchi <rikiriki1238@gmail.com>
2026-02-23 03:12:46 -05:00
eugene yokota c8b2b03f8a
[1.x] Print warning about scala-reflect not found (#8736)
**Problem**
scala-reflect not found issue is confusing.

**Solution**
Print out a specialized warning message.
2026-02-14 04:04:40 -05:00
calm 6b41a3d093 [2.x] fix: Restore Scala 2 artifact version unification (#8689) (#8700)
Commit 92b0564dc (fix for #8632) changed `csrSameVersions` so that Scala 2.13+ only aligned `scala-library` and `scala3-library`. This removed `scala-compiler` and `scala-reflect` from version
unification, so transitive dependencies pulling in an older `scala-compiler` (e.g. 2.13.15 via `refined_2.13`) were no longer evicted to match `scalaVersion` (e.g. 2.13.18).
2026-02-07 01:49:27 -05:00
eugene yokota 579e31752e
[1.x] fix: Fix scala-reflect not found problem (#8632) (#8633)
**Problem**
We enforce same-version policy for scala-reflect in Scala 2.13.
However due to sandwich dependency, the graph can bump
scala-library to 3.8.1, which is missing scala-reflect counterpart.

**Solution**
Drop the same-version policy.
2026-01-26 05:32:20 -05:00
eugene yokota 08ab372fa6
Merge pull request #8593 from calm329/fix/8357-transitive-update-invalidation-1.x
[1.x] fix: Invalidate update cache across commands when dependencies change
2026-01-20 18:00:48 -05:00
calm329 16cfc66152 fix: Invalidate update cache across commands when dependencies change 2026-01-20 14:18:05 -08:00
azdrojowa123 16cbaef475
[1.x] Fix missing `project` directory (#8583)
* create `project` directory if extra sbt files are added to the meta-build #8570
2026-01-20 10:03:51 -05:00
Eugene Yokota 0a15069e83 Show warnings when scalaVersion is missing
**Problem**
There's a disconnect between what is perceived to be the current
Scala version, and what sbt uses internally, and thus what it
chooses to be the default scalaVersion.

**Solution**
This displays a warning if scalaVersion setting is missing.
2026-01-04 15:23:05 -05:00
eugene yokota b536bc037d
Merge pull request #8359 from eed3si9n/wip/dependency-tree
[1.x] Use internal config for dependency tree (for Provided)
2025-12-19 01:08:44 -05:00
Aleksandra Zdrojowa 14f1839647 return build targets sources from `buildTarget/dependencySources` request #8403 2025-12-14 13:35:25 +01:00
xuwei-k 70960744e7 Scala 2.12.21 2025-12-09 17:28:03 +09:00
Hamza Remmal 531c5d18db
do not assume scala3_library to be a jar 2025-11-24 22:01:33 +01:00
Eugene Yokota 6daa99b2db fix: Parse with -Xsource:3
**Problem**
On IntelliJ the users are getting the hint to upgrade to -Xsource:3
style, however the supported syntax do not parse.

**Solution**
This adds -Xsource:3 to the parser. The metabuild compilation uses
-Xsource:3 since sbt 1.6.0.
2025-11-14 00:51:28 -05:00
Eugene Yokota 1254bd33e5 Use internal config for dependency tree (for Provided)
**Problem**
dependency-tree currently doesn't include Provided configuration,
because technically it isn't part of the Compile configuration,
however, Provided does become part of the Compile classpath during compilation.

**Solution**
This changes the implementation to use the internal configuration,
e.g. CompileInternal, which includes the auxilary configurations.

There's a tradeoff here since it means that we lose the tree view of
the platonic Compile configuration.
2025-11-08 14:33:47 -05:00
Eugene Yokota 840b851445 [1.x] Add Scala 3.8 REPL support
**Problem**
Scala 3.8 REPL won't work since they've split the repl artifact into another JAR.

**Solution**
This works around it by creating a yet-another sandbox configuration ScalaReplTool
(similar to ScalaTool and ScalaDocTool) and a separate scalaInstance for
console task, so when Zinc is invoked we'll be able to conjure the right array of JARs.
2025-11-01 21:06:32 -04:00
Eugene Yokota ed7da85ef0 Backport Compiler
Backport scala.internal.Compiler from sbt 2.x so we can merge easier.
2025-11-01 15:16:11 -04:00
xuwei-k 49c8306091 Update semanticdbVersion 2025-10-23 16:38:26 +09:00
xuwei-k 246e060e53 update sbt-giter8-resolver version 2025-09-29 07:37:05 +09:00
Eugene Yokota 3a8a891d71 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.
2025-09-02 03:53:58 -04:00
Aleksandra Zdrojowa 622994b40d use reverse topological order for configurations when resolving internal dependencies
- changes the classpath order for internal dependencies
- fix #8249
2025-09-01 16:47:44 +02:00
eugene yokota 0e4dcebe5f
Merge pull request #8219 from jeanmarc/1.11.x
[1.x] Include artifact name in Sona deployment
2025-08-23 16:48:42 -04:00
Eugene Yokota 724b8cebef scala-library 3.8.0 support
**Problem**
Scala 3.8.0 nightly and later in-sources the scala-library for the use by Scala 3, as opposed to using Scala-2.13-bound standard library.
This means that we will run into situations where scala-library should NOT align with scala-reflect, which might exist transitively.

**Solution**
Adjust the csrSameVersions rule for Scala 3.8 so it will only try to keep scala-library and scala3-library versions aligned.
2025-08-22 16:42:21 -04:00
JeanMarc van Leerdam da9dc644ee Include artifact name in Sona deployment 2025-08-20 08:41:06 +02:00
Eugene Yokota 699c970065 Fix sonaUploadRequestTimeout
**Problem/Solution**
sonaUploadRequestTimeout should be a global key.
2025-08-04 04:28:53 -04:00
Jules Ivanic 8c0010a086
Review: the new configurable request timeout value should be `10.minutes` and should only be used for upload 2025-07-04 16:40:52 +04:00
Jules Ivanic 084ca08f34
Allow users to configure the timeout when publishing to the Maven Central repo 2025-07-02 13:53:50 +04:00
Dmitrii Naumenko c3925c85ef fix: do not treat values "1.x" of "pluginCrossBuild/sbtBinaryVersion" as sbt 2 (fixes #8166)
As a consequence, this fixes artifact name contraction for maven style and thus fixes publishing to Sonatype when a cross-built sbt version is different from 1.0
2025-06-19 14:24:36 +02:00
Eugene Yokota 009efd6422 update to lm 1.11.2 and deprecate sonatypeOssSnapshots 2025-06-07 03:00:43 -04:00
Eugene Yokota 2036ce6836 fix: Default sbtPluginPublishLegacyMavenStyle to false
**Problem**
Central Portal no longer supports the legacy sbt plugin layout.

**Solution**
Make the default more friendly by setting sbtPluginPublishLegacyMavenStyle to false.
2025-06-01 22:43:43 -04:00
Roberto Tyley d97373454f
Add `sonaDeploymentName` to `excludeLintKeys`
sbt added the `sonaDeploymentName` key with https://github.com/sbt/sbt/pull/8126, released with https://github.com/sbt/sbt/releases/tag/v1.11.0 - in use, this seems to be getting lint warnings (as introduced by https://github.com/sbt/sbt/pull/5153):

```
[warn] there's a key that's not used by any other settings/tasks:
[warn]  
[warn] * scala-collection-plus / sonaDeploymentName
[warn]   +- /home/runner/work/scala-collection-plus/scala-collection-plus/build.sbt:3
[warn]  
[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
```

https://github.com/rtyley/scala-collection-plus/actions/runs/15326291872/job/43121748535#step:6:19

...https://github.com/sbt/sbt/pull/5153 does say that "notable exceptions are settings used exclusively by a command" - I _think_ that maybe `sonaDeploymentName` is only used by the commands `sonaRelease` & `sonaUpload`, so it's necessary to add it to `excludeLintKeys`?
2025-05-29 16:18:28 +01:00
Eugene Yokota eaf12caaa3 lm 1.11.0 2025-05-24 01:53:48 -04:00
Eugene Yokota 9e7a0fa136 fail on sonaRelease if the version is SNAPSHOT 2025-05-21 00:26:51 -04:00
Eugene Yokota 929b0bf525 fix: Fix Sonatype publishing
**Problem**
1. query string wasn't passed in, so sonaRelease wasn't working
2. deployment name should be human readable

**Solution**
This fixes the query string passing by hand-crafting the URL.

This also generates human readable deployment name.
2025-05-18 15:25:27 -04:00
Eugene Yokota 341cd9cf24 sonaBundle shouldn't aggregate 2025-05-15 22:33:43 -04:00
Eugene Yokota dc235777fe Implement environment variable support 2025-05-15 22:25:28 -04:00
Eugene Yokota d8813bc506 Sonatype Publish Portal support
**Problem**
Sonatype is sunsetting HTTP Rest endpoint OSSRH in June 2025.

**Solution**
This implements a built-in publishing mechanism.
Kudos to David Doyle who has spearheaded Sonatype Central support via sonatype-central-client etc.
2025-05-15 03:27:54 -04:00
kenji yoshida 1d7871233b
Revert "fix: BSP error status code in more cases" 2025-05-11 12:59:15 +09:00
Alec Theriault 5d81f2c3d1
fix: BSP error status code in more cases
Ensures that `buildTarget/compile` returns a `StatusCode.Error` instead
of a JSON-RPC error even when the compile error is buried deeper in the
`Incomplete` causes.

Fixes #8104
2025-05-07 06:16:27 -04:00
Eugene Yokota 1415b2efa4 fix: Fix incremental test with companion objects [merge-skip]
**Problem**
Incremental test (aka testQuick) has a bug when companion objects
depends on others since at some point it's failing to look up relationship from Zinc analysis.

**Solution**
This fixes the lookup.
2025-03-31 22:44:57 -04:00
Eugene Yokota 12d2cc8ef1 fix: Use Retry.io for compilation
**Problem**
sbt 1.10.10 still has retry problem with compilation.

**Solution**
Revert the retry logic back to the time when we only retried IOExceptions.
2025-03-16 21:43:01 -04:00
Eugene Yokota bd7bf73de5 fix: Fix SIP-51 message
**Problem**
The error message uses name, which may not match the actual project id
that the user can type into the shell.

**Solution**
Use displayBuildRelative to calculate the proper subproject id.
2025-03-16 14:58:23 -04:00