Commit Graph

2490 Commits

Author SHA1 Message Date
Eugene Yokota c37b7a1555 feat: Non-blocking run
**Problem**
`run` currently blocks all other commands, such as BSP commands.

**Solution**
`run` no longer blocks the command execution loop.
Instead it pauses the prompt on the current command channel.
2024-09-20 04:00:03 -04:00
Eugene Yokota 2a3ea0837b feat: Rename testQuick to test
**Problem**
We have incremental testing, but it's not used by default.

**Solution**
This renames testQuick to test, and test to testFull.
2024-09-18 22:57:47 -04:00
Adrien Piquerez f08f272d23 [2.x] Fix scripted cache tests 2024-09-18 10:28:11 +02:00
eugene yokota 733b526ac5
Merge pull request #7681 from adpi2/sbt-projectmatrix
[2.x] Merge sbt-projectmatrix
2024-09-17 18:28:35 -04:00
eugene yokota 97823b18b0
[2.x] fix: Invalidate testQuick on test argument changes (#7680)
**Problem**
testQuick currently does not invalidate on argument changes.

**Solution**
This includes test argument digests.

---------

Co-authored-by: adpi2 <adrien.piquerez@gmail.com>
2024-09-17 17:48:53 -04:00
adpi2 6a2c4e56ea
Merge branch 'develop' into sbt-projectmatrix 2024-09-17 17:03:20 +02:00
Adrien Piquerez b59856bcba Merge sbt-projectmatrix 2024-09-17 17:02:30 +02:00
Adrien Piquerez 7c01636efa Move sources from sbt-projectmatrix 2024-09-17 17:00:04 +02:00
eugene yokota cb9a455915
Merge pull request #7676 from eed3si9n/wip/invalidate-on-resource
[2.x] fix: Invalidate testQuick on resource file changes
2024-09-17 10:26:15 -04:00
Eugene Yokota 803e575b8a feat: Use _sbt2_3 suffix
**Problem**
The extra attribute is a vestige from the days when sbt plugins were published on Ivy repos.

**Solution**
This uses normal suffix system.
2024-09-16 00:51:00 -04:00
Eugene Yokota c13c25fdff fix: Invalidate testQuick on resource file changes
**Problem**
testQuick currently does not invalidate on resource file changes.

**Solution**
This includes resource digests into the input.
2024-09-15 18:13:56 -04:00
Eugene Yokota 4af0024238 refactor: Move scripted-sbt-redux back to scripted-sbt
**Problem**
During sbt 1.x we created scripted-sbt-redux for package name change.

**Solution**
We can move the module back to scripted-sbt, which simplifies things.
2024-09-15 01:58:23 -04:00
Eugene Yokota c8de828830 refactor: Remove unused tasks
**Problem/Solution**
Unused setting ends up showing warnings on startup.
This removes the unused settings from sbt 1.x remote cache.
2024-09-14 23:33:13 -04:00
Eugene Yokota a58950e65e Comment out cleanEvalClasses
**Problem**
reload currently causes NoClassDefFoundError.

**Solution**
Comment out cleanEvalClasses.
2024-09-13 02:03:42 -04:00
eugene yokota a0597e9935
Merge branch 'develop' into wip/testquick 2024-09-12 08:15:04 -04:00
Eugene Yokota e9c04108bd Add extraTestDigests key 2024-09-12 02:23:25 -04:00
Adrien Piquerez 5c200d6258 Optimize ScopeFilter 2024-09-10 11:39:40 +02:00
Eugene Yokota 947ae1e8eb Implement remote test caching 2024-09-08 15:50:26 -04:00
Eugene Yokota f12cbcb450 Include classesDirectory into the digest 2024-09-08 12:56:49 -04:00
Eugene Yokota 0021c3a0bd Refactor to definedTestDigests task 2024-09-08 12:54:36 -04:00
Eugene Yokota 721f202ae5 Hermetic incremental test
**Problem**
Current implementation of testQuick depends on the concept of timestamp,
which probably won't work well with the new consistent analysis store or
the idea of remote caching.

**Solution**
This is a step towards cached testing by making the incrementality hermetic
(no longer depends on the timestamp). Instead this calculates the aggregated
SHA-256 of the class files involved in the test.
2024-09-08 12:50:45 -04:00
Adrien Piquerez b1564d4888 Add cachePath to CompileInputs2 to fix dependency-management/test-artifact
We cannot recover compilation after the path of the Zinc cache changed
2024-08-27 16:02:27 +02:00
Adrien Piquerez 47c60bab2e Fix cleaning packed dir
`clean` should delete the packed dir. If it does not,
the next `compileIncremental`, which is a cache hit, will see that
the packed dir is already there and will not unpack it.
2024-08-26 16:29:21 +02:00
Eugene Yokota b7e037adbb Use VirtualFileRef of the classes directory 2024-08-22 01:49:49 -04:00
Eugene Yokota d9e3bb52b3 Remove unnecessary settings 2024-08-18 12:57:29 -04:00
Eugene Yokota e0f0550276 Migrate cachedCompileIncrementalTask to dir caching 2024-08-18 12:57:29 -04:00
Eugene Yokota 3ef3a605c2 Merge branch '1.10.x' into wip/merge-1.10.x 2024-08-18 12:37:24 -04:00
Eugene Yokota 4752e180fd Update lm 2024-06-09 17:56:17 -04:00
Adrien Piquerez 3ec8bd2269 Fix fetching Scala 2.13.12 bridges 2024-06-06 17:41:20 +02:00
Adrien Piquerez 64a8d5ff31 Fix Defaults 2024-06-06 10:36:29 +02:00
Adrien Piquerez 492cd2c091 Fix compilation 2024-06-06 10:36:29 +02:00
adpi2 586e0a752c
Merge pull request #7568 from adpi2/fix-bsp-internal-dep-configs
[1.10.x] Fix declaring `Optional` inter-project dependency in BSP
2024-05-23 08:50:43 +02:00
Adrien Piquerez 9a3c4a6f53 Fix dependency-management/force-update-period 2024-05-21 16:54:14 +02:00
Adrien Piquerez f990bd2d8d [BSP] Fix importing Optional project dependency 2024-05-21 15:56:37 +02:00
Eugene Yokota c81d269ed2 Merge branch '1.10.x' into wip/merge-1.10.x 2024-05-07 04:39:25 -04:00
Eugene Yokota bc4d5830e9 Banner for sbt 1.10.0 2024-05-05 22:38:05 -04:00
Eugene Yokota ae1f829f9f Include universal macOS sbtn 2024-05-05 22:34:58 -04:00
Eugene Yokota aac79df4a3 Fix old Dotty plugin compat
**Problem**
https://github.com/scala/scala3/pull/20157 identified that
`sbt-dotty/dotty-knowledge.i17` scripted test fails on sbt 1.10.0-RC2.
The regression happened in https://github.com/sbt/sbt/pull/7480/files#diff-6d9589bfb3f1247d2eace99bab7e928590337680d1aebd087d9da286586fba77L739-L740
where global setting was removed, and moved to project level.

**Solution**
This restores the global setting that is apparently referenced by
now defunct Dotty plugin.
2024-05-05 01:55:32 -04:00
Adrien Piquerez 2e439cab1e [2.x] report cache errors
Report a cache error if the output file of a task is not cacheable
2024-04-24 10:41:56 +02:00
Adrien Piquerez 7c51ba2f64 Revert "Use fileConverter in cacheStore" 2024-04-17 09:30:44 +02:00
Adrien Piquerez 1472ac287f [2.x] Fix dependency-management/force-update-period 2024-04-16 15:23:40 +02:00
eugene yokota 422d9e735f
Fix typo 2024-04-15 10:44:17 -04:00
Eugene Yokota b1a43f9adc Consistent Analysis
See also https://github.com/sbt/zinc/pull/1326

This adds a new setting `enableConsistentCompileAnalysis`,
which enables the new "Consistent" Analysis format,
which is faster and more repeatable than the status quo.
This is initialized to `true` by default.
It can be opted out either by the setting or using
`-Dsbt.analysis2024=false`.
2024-04-14 23:17:04 -04:00
Eugene Yokota b19a54a1ef Improve the SIP-51 error message 2024-04-14 21:18:15 -04:00
eugene yokota 0e67131beb
Update main/src/main/scala/sbt/Defaults.scala
Co-authored-by: adpi2 <adrien.piquerez@gmail.com>
2024-04-11 10:45:51 -04:00
Eugene Yokota 33d50e2f47 Success log change fix 2024-04-11 13:55:29 +02:00
Eugene Yokota 86cf7c3a0c Remote caching support
This implements Bazel-compat remote caching support via a plugin.
2024-04-11 13:55:29 +02:00
Philippus Baalman f89505bb03
Remove superfluous space 2024-04-11 07:21:26 +02:00
Adrien Piquerez 8865565004 Fix classloader-cache/resources 2024-04-10 15:32:50 +02:00
Adrien Piquerez eda67a05fc Use fileConverter in cacheStore
Otherwise the store cannot sync files that are not in the out folder.
2024-04-09 16:09:44 +02:00
Adrien Piquerez 9e6612a3f8 Fix hashing of incrementalCompile 2024-04-09 15:33:22 +02:00
Adrien Piquerez ab1aa6d001 Fix todos in actions/compile-clean 2024-04-09 15:33:22 +02:00
Adrien Piquerez e1cf43c6bd Add jar file to compileOutputs 2024-04-09 15:33:22 +02:00
Adrien Piquerez 85fcb014f0 Fix data race to remote cache on classpath analyses
The attributed classpath should point to the existing analysis file in the target folder to avoid data racing to the remote cache.
2024-04-08 16:34:18 +02:00
Adrien Piquerez 1c03463e19 Fix test-quick 2024-04-08 10:05:52 +02:00
Adrien Piquerez b0f3cb0a8e Fix actions/completions
When loading a scripted test, sbt creates a jar file and loads it.
The path of the jar file is the same for all the batched tests.
We must prevent the JDK from caching this jar file to force a reload after each test.
Otherwise sbt tries to load the auto-plugins of a previous test and fails.
2024-04-08 10:05:52 +02:00
eugene yokota ec02bf3dc2
Merge pull request #7480 from lrytz/lib-unfreeze-m
Add support for SIP-51 (unfreezing the Scala library)
2024-04-08 01:10:05 -04:00
Adrien Piquerez 129b38f55b Fix tests/serial 2024-04-02 17:49:12 +02:00
Adrien Piquerez d9b024cf91 fix project1/ignore-hidden-build-files 2024-04-02 17:49:12 +02:00
Adrien Piquerez 4a946a68cd Fix project1/extra 2024-04-02 17:49:12 +02:00
Adrien Piquerez 222410009b fix no-scala-tool 2024-04-02 17:49:12 +02:00
Adrien Piquerez e2c7a294f8 minor change 2024-03-27 14:41:24 +01:00
Adrien Piquerez 453ccc6805 Uncomment pending tests 2024-03-26 10:12:29 +01:00
Adrien Piquerez 627bd6bea1 Fix checkTargets 2024-03-25 10:52:15 +01:00
Adrien Piquerez b5afcf8a0c Fix server completion tests 2024-03-19 17:06:09 +01:00
Adrien Piquerez 03ca5365f5 Fix BuildServerTest 2024-03-19 17:06:09 +01:00
Adrien Piquerez 924150851c Port server tests to scalatest and fix 2024-03-19 17:06:09 +01:00
Adrien Piquerez e62984846b Re-implement BuildServerEvalReporter 2024-03-19 17:06:09 +01:00
Seth Tisue 735214afd0 Scala 2.12.19 (was 2.12.18), scala-xml 2.2.0 (was 2.1.0) 2024-03-16 11:39:55 +01:00
Adrien Piquerez 7ca6ad5fec Fix resolution of bridge using Coursier 2024-03-06 16:40:41 +01:00
Adrien Piquerez 12e9267e1e Remove more unused 2024-03-05 15:25:25 +01:00
Adrien Piquerez 0458e8063d Adapt -Wunused 2024-03-05 11:23:00 +01:00
Adrien Piquerez c15a4031a9 Fix or mute warnings 2024-03-05 10:39:00 +01:00
Lukas Rytz f0afeff4d9 Set locale for f interpolator decimal character
dependency-graph/toFileSubTask failed for me locally
2024-02-27 10:56:30 +01:00
Lukas Rytz b9375f5e6b Update scala-library in scala-tool configuration for Scala 3
When a macro was compiled against a new scala-library (say 2.13.15),
the runtime classpath of the Scala compiler should not contain an older
scala-library. Otherwise the macro can cause a NoSuchMethodException
during expansion.

This commit updates scala-library in the scalaInstance to the version
on the projects dependency classpath.
2024-02-27 10:56:30 +01:00
Lukas Rytz 951d1c4ae4 Add new `csrSameVersions` setting, use it for Scala artifacts
The `csrSameVersions` setting can be used to keep dependencies at the
same version.

By default it's used for Scala artifacts. They need to be kept at the
same version because the compiler / reflect are built with
cross-artifact inlining enabled.

`csrSameVersions := Seq(Set(scala-library, scala-reflect, scala-compiler, scalap))`

Users can make use of the new setting in the following way:
  - `csrSameVersions += Set[InclExclRule]("com.corp" % "lib", "com.corp" % "lub")`
  - `csrSameVersions += Set[InclExclRule]("com.corp" % "lib-family-*")`
2024-02-27 10:56:30 +01:00
Lukas Rytz 4c74358707 Fail the build if 2.13 scalaVersion < scala artifact on classpath
When expanding a macro compiled against a new Scala library, the
runtime classpath of the compiler should not contain an older library.
Otherwise a NoSuchMethodException can occur.

A similar issue is present when running the Scala repl through sbt.
An input line compiled against a new library could fail to run if
the repl's runtime classpath is on an old version.
2024-02-26 13:49:04 +01:00
Lukas Rytz 35bc07bd9e Use scala library from classpath in sbt run class loader 2024-02-26 13:49:04 +01:00
Lukas Rytz 893997d1b6 Update scala libraries according to dependency graph
There are a couple of settings / configs that affect this, summary
below. The change in this PR seems to be the most narrow.

`scalaModuleInfo.value.overrideScalaVersion` in sbt
  - affects how sbt to sets coursier's `forceScalaVersion` (see below)
  - used by librarymanagement.ivy. If true, add a OverrideScalaMediator
    See sbt/sbt#2634. Probably not relevant when using coursier.

`autoScalaLibrary` setting in sbt
  - automatically add `scala-library` (or `scala3-library`) as a project
    dependency
  - also used for `forceScalaVersion` (see below)

`CoursierConfiguration.autoScalaLibrary`
  - if `true` then Coursier `ResolutionParams.forceScalaVersion` is set
    to to `true`
  - initialized by sbt to
    `autoScalaLibrary.value &&
     !ScalaArtifacts.isScala3(sv) &&
     !Classpaths.isScala213(sv) &&        // added in this commit
     scalaModuleInfo.forall(_.overrideScalaVersion)`

coursier `ResolutionParams.forceScalaVersion`
  - if true, `scala-library` / `scala-reflect` / `scala-compiler` /
    `scalap` are forced to the scala version, not actually resolved
  - for Scala 3, the `scala3-library` and `scala3-compiler` versions
    are forced
2024-02-26 13:49:04 +01:00
Lukas Rytz d8d2b02e7e Use the ordinary compiler classpath for scala-library
No longer pass `-bootclasspath /path/to/scala-library.jar` to the Scala
compiler, put the library on the ordinary classpath.
2024-02-26 13:49:04 +01:00
Adrien Piquerez eadf1117f6 Store bootServerSocket in state 2024-02-15 16:18:54 +01:00
Adrien Piquerez 02df82840a add noOp field in BSP compile report 2024-02-15 15:50:02 +01:00
Adrien Piquerez 5425e066a0 Fix SbtRefactorings 2024-02-13 14:01:26 +01:00
Adrien Piquerez 739dedb017 Remove usage of Manifest in Structure.scala 2024-02-12 15:22:09 +01:00
adpi2 64be877549
Merge pull request #7491 from adpi2/misc-cleanup
[2.x] Miscellaneous cleanup
2024-02-08 17:42:35 +01:00
Eugene Yokota 63ba90d198 Migrate postfix ops
**Problem**
There are a few places in the code that's using postfix ops.

**Solution**
This rewrites the expressions to use normal dot notaiton.
2024-02-07 11:40:45 -05:00
eugene yokota ecca26175e
[sbt 2.x] remote cache (#7464)
For the details about this PR, please see the blog post https://eed3si9n.com/sbt-remote-cache/.

* Add cache basics
* Refactor Attributed to use StringAttributeMap, which is Map[StringAttributeKey, String]
* Implement disk cache
* Rename Package to Pkg
* Virtualize packageBin
* Use HashedVirtualFileRef for packageBin
* Virtualize compile task
2024-02-07 10:34:06 -05:00
Adrien Piquerez e18ddb1666 Fix resolution of * on String 2024-02-07 11:47:22 +01:00
Adrien Piquerez 7ac3cd321d Remove the unused ~> 2024-02-07 11:12:43 +01:00
Martin Duhem 6679067bcb
Resolve `scripted-sbt-redux` to run scripted
Previously, in sbt 2, the Scripted plugin was not resolving any module
that would provide it with the `ScriptedTests` object, and could
therefore not run scripted tests.

With this patch, `scripted-sbt-redux` will be resolved and added to the
classloader that's used to load `sbt.scriptedtest.ScriptedTests`.
2024-02-02 14:28:56 +01:00
Tammo Steffens 053c7cc8bd Use the publisher interface for publishing as default 2024-01-17 21:39:39 +01:00
friendseeker e4ab56e444 Include managedSources in packageSrc 2024-01-01 20:58:39 -08:00
friendseeker eadb5b3786
fix compile error in VirtualFileValueCache 2024-01-01 19:47:08 -08:00
Adrien Piquerez 7ea0506736 Introduce TaskId to reduce abstraction around Execute 2023-11-28 14:26:52 +01:00
Eugene Yokota 08966370b1 Update to lm 2.0.0-alpha13 for sjson-new 2023-11-25 21:01:04 -05:00
Eugene Yokota bde26f6c51 Communicate narrowing by adding case 2023-11-25 20:50:34 -05:00
Eugene Yokota e87e1d6e0d Update to Scalafmt 3.7.14 2023-11-25 01:08:17 -05:00
Aleksandra Zdrojowa f9f47620d0 pass classifiersModule configurations to ModuleDescriptorConfiguration 2023-11-21 15:57:59 +01:00
Adrien Piquerez b189d49968 Refactoring 2023-10-25 14:19:03 +02:00
unknown 3d1319efea Use sourcePositionMappers in BuildServerReporter 2023-10-25 11:40:18 +02:00