Commit Graph

8934 Commits

Author SHA1 Message Date
eugene yokota 9400225fe9
Merge pull request #5338 from eed3si9n/wip/aggregate
add aggregate projects for lower utils and upper modules
2019-12-27 01:45:28 -05:00
Eugene Yokota 80aeb7eed9 add aggregate project for lower utils and upper modules 2019-12-27 00:24:03 -05:00
eugene yokota cba3843965
Merge pull request #5329 from eatkins/cross-serial
Run cross commands (with `+`) in parallel when possible
2019-12-24 12:56:25 -05:00
Ethan Atkins d445590d9d Fix cross multi command performance
In 53788ba356, I changed the cross multi
parser to issue all of the commands sequentially. This caused a
performance regression for many use cases:
https://github.com/sbt/sbt/issues/5321. This commit restores the old
behavior of `+` if the command to run has no arguments.
2019-12-23 14:45:57 -08:00
Ethan Atkins 4207362835 Upgrade scala 2.13 version in scripted tests 2019-12-23 14:45:57 -08:00
eugene yokota 6f453b2a23
Merge pull request #5327 from eatkins/revert-scalatest-layer
Revert scalatest layer
2019-12-23 17:13:22 -05:00
Eugene Yokota 6e83ba5603 Reproduce #5308
#5308
2019-12-23 13:33:32 -08:00
Eugene Yokota 556098ec31 Don't close test ClassLoader by default
Fixes https://github.com/sbt/sbt/issues/5262
2019-12-23 13:33:32 -08:00
Ethan Atkins 424fe958e1 Revert "Place scalatest framework jar in its own classloader"
This partially reverts commit 8518c4b4fd.

I left in the useful changes to ReverseLookupClassLoader.
2019-12-23 13:33:04 -08:00
eugene yokota ae01f25bab
Merge pull request #5317 from eed3si9n/wip/cross
workaround client / clean problem
2019-12-20 15:33:59 -05:00
eugene yokota 60979336d5
Merge pull request #5322 from renatocaval/develop
Clarify message on sbt.version mismatch
2019-12-20 15:32:07 -05:00
Renato Cavalcanti 2f4b6f476a
clarify message on sbt.version mismatch 2019-12-19 08:21:28 +01:00
eugene yokota e4131814e7
Merge pull request #5318 from eed3si9n/wip/doc-scalainstance
Remove actions/doc-scala-instance
2019-12-17 13:55:29 -05:00
eugene yokota 215b16cde1
Merge pull request #5315 from olafurpg/forkmain-classloader
Add library-friendly entrypoint for sbt.ForkMain
2019-12-17 13:20:44 -05:00
Eugene Yokota 68284b38e4 Remove actions/doc-scala-instance
Fixes https://github.com/sbt/sbt/issues/5316

The latest doesn't look like it's testing anything.
2019-12-17 13:16:02 -05:00
Eugene Yokota faa1540009 workaround client / clean problem
Ref https://github.com/sbt/sbt/issues/5314
Ref https://github.com/sbt/sbt/pull/5265

In sbt 1.3.4, it's possible to define a subproject named `client`.
The current parser behaves differently whether we calll `client/clean` or `client / clean` with whitespaces. The one with the whitespace invokes `client` command (as in thin client). This gets triggered by `+clean` because the new implementation uses whitespace.
2019-12-17 12:52:18 -05:00
Olafur Pall Geirsson fd658f38d3 Add library-friendly entrypoint for sbt.ForkMain
Previously, it was not possible to use `sbt.ForkMain` as a library since
* it called `System.exit`, shutting down the library client JVM process.
* it assumed that it was always running in the same classloader as where
  the test suites it was running causing "class not found: my.test.Suite"
  if the `ForkMain` class lives in a classloader above the test suite
  classes.
This commit adds a new `main(Array[String],ClassLoader])` entrypoint
that allows clients to call `ForkMain` as a library.
2019-12-17 10:51:10 +00:00
eugene yokota 19c3b44b59
Merge pull request #5303 from eed3si9n/wip/cache_removal
Fixes update task not invalidating
2019-12-13 05:57:48 -05:00
eugene yokota cfbdd8d82c
Merge pull request #5302 from eatkins/util-contraband
Add utilLogging contraband directory to managedSourceDirectories
2019-12-12 22:51:41 -05:00
eugene yokota b8f1edb6cc
Merge pull request #5301 from eatkins/classloader-close
Add closeClassLoader setting
2019-12-12 22:49:45 -05:00
Eugene Yokota 2b24f05435 Fixes update task not invalidating
Fixes https://github.com/sbt/sbt/issues/5292
Ref https://github.com/sbt/sbt/issues/5142

`update` task checks if the timestamp is still the same from the previous resolution. This no longer works since lm-coursier does not populate the timestamps in `UpdateReport`. See 2e5c8aed5e/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala (L346-L351)

Since the stamps are empty, this caused `update` not to invalidate when the cache is completely missing. This works around the issue by checking if the file still exists. It also adds a warning that the file is missing.
2019-12-12 22:39:05 -05:00
Ethan Atkins 2a47205ef7 Add utilLogging contraband directory to managedSourceDirectories
See https://github.com/sbt/contraband/issues/76.
2019-12-12 18:11:32 -08:00
Ethan Atkins a177c386c0 Add closeClassLoader setting
There have been a number of issues that have come up because of sbt
1.3.0 aggressively closing classloaders. While these issues have been
quite useful in helping us determine some issues related to classloader
lifecycle, we should give users the option to prevent sbt from closing
the classloaders.

I also noticed that the classloader-cache/spark test has been
occasionally segfaulting on travis so I disable classloader closing in
that test.
2019-12-12 17:07:40 -08:00
Ethan Atkins 18c6264656
Merge pull request #5300 from eatkins/contraband-upgrade
Update contraband sources
2019-12-12 13:04:53 -08:00
Ethan Atkins aecdc44909 Update contraband sources
In 8bfae66b9d I upgraded contraband but
not all of the sources were regenerated because I didn't run clean
before recompiling.
2019-12-12 11:34:53 -08:00
eugene yokota cba7442618
Merge pull request #5295 from eed3si9n/wip/new
Fixes sbt new by restoring the terminal
2019-12-11 18:24:20 -05:00
eugene yokota c03d70113c
Merge pull request #5289 from eatkins/temporary-directories
Do not use temporary directories in java.io.tmpdir
2019-12-11 13:08:23 -05:00
Eugene Yokota 1ef83e9140 Fixes sbt new by restoring the terminal
Fixes https://github.com/sbt/sbt/issues/5063

This fixes "sbt new" on Ubuntu by restoring the terminal state after supershell querying for the terminal width.
2019-12-11 13:05:20 -05:00
eugene yokota 8178673869
Merge pull request #5287 from eatkins/lint-excludes
Add onLoad and onUnload to project lint excludes
2019-12-10 18:59:42 -05:00
eugene yokota c933a1923d
Merge pull request #5290 from eatkins/scripted-log
Use logger in scripted instead of println
2019-12-10 18:59:29 -05:00
Ethan Atkins 283d486796 Do not use temporary directories in java.io.tmpdir
sbt should not by default create files in the location specified by
java.io.tmpdir (which is the default behavior of apis like
IO.createTemporaryDirectory or Files.createTempFile) because they have a
tendency to leak and it also isn't even guaranteed that the user has
write permissions there (though this is unlikely). Doing so creates the
possibility for leaks

I git grepped for `createTemp` and found these apis. After this change,
the files created by sbt should largely be localized to the project and
sbt global base directories.
2019-12-10 15:05:36 -08:00
eugene yokota f0d1e075db
Merge pull request #5288 from eatkins/shutdown-hook-type-annotation
Add type annotation for shutdown hooks
2019-12-10 15:22:48 -05:00
eugene yokota c46c17b92d
Merge pull request #5278 from hvesalai/develop
No supershell for Emacs and other color supporting dumb terminals
2019-12-10 15:21:44 -05:00
eugene yokota f3638817db
Merge pull request #5286 from eatkins/server-spec-feedback
Improve ServerSpec feedback
2019-12-10 15:20:47 -05:00
Ethan Atkins ee56140f5c Use logger in scripted instead of println 2019-12-10 10:52:18 -08:00
Ethan Atkins 38a56358dc Add type annotation for shutdown hooks
Intellij couldn't handle this without an annotation.
2019-12-10 10:37:52 -08:00
Ethan Atkins cc09294cf3 Add onLoad and onUnload to project lint excludes 2019-12-10 10:24:02 -08:00
Ethan Atkins 2049ce3632 Improve ServerSpec feedback
In some cases if sbt is broken in the right way (for example if the
process dies), the ServerSpec will spam the console by printing empty
lines. This commit prevents it from printing empty lines and also stops
waiting for a server response if the process has died.
2019-12-10 10:22:33 -08:00
Heikki Vesalainen 9e72b1c520 No supershell for Emacs or other dumb terminals that support color 2019-12-10 18:14:19 +00:00
eugene yokota 0d1d8a790c
Merge pull request #5276 from eed3si9n/wip/giter8
sbt-giter8-resolver 0.12.0
2019-12-09 16:54:42 -05:00
Eugene Yokota 93f1f5464c sbt-giter8-resolver 0.12.0 2019-12-09 01:17:38 -05:00
eugene yokota c33b816315
Merge pull request #5274 from eatkins/util-integration
Merge util back into sbt main
2019-12-09 00:16:51 -05:00
Ethan Atkins 993f628cbe Merge remote-tracking branch 'origin/develop' into util-integration 2019-12-08 10:29:24 -08:00
Ethan Atkins ad59e71b1a Add util headers
None of the util files had headers.
2019-12-08 10:29:22 -08:00
Ethan Atkins 45a2cd5985 Add util tests to the jdk8 build
The existing .travis.yml in the util project runs:
mimaReportBinaryIssues
scalafmtCheckAll
whitesourceCheckPolicies
test

The first three are already handled by the first build in the matrix. I
add the util tests to the first jdk11 build and the jdk8 build.
2019-12-08 10:28:31 -08:00
Ethan Atkins 8bfae66b9d Update build.sbt to handle util projects
As part of re-integrating util into the sbt main project, I had to
update the build.sbt and a few dependencies (like the contraband plugin).
2019-12-08 10:28:31 -08:00
Ethan Atkins 6a32bd0c72 Optimize build.sbt imports 2019-12-08 10:28:14 -08:00
Ethan Atkins 4d1bd18296 Merge remote-tracking branch 'util-integration/develop' into util-integration 2019-12-07 17:49:46 -08:00
eugene yokota 999c5d8450
Merge pull request #5273 from eatkins/scalatest-framework-loader
Place scalatest framework jar in its own classloader
2019-12-07 15:56:41 -05:00
Ethan Atkins 8518c4b4fd Place scalatest framework jar in its own classloader
Closing the ManagedClassLoader generated by test can cause nonlocal
effects because the jdk shares some JarFile resources across multiple
URLClassLoaders. As a result, if one classloader is trying to load a
resource and the classloader is closed, it might cause the resource
loading to fail (see https://github.com/sbt/sbt/issues/5262). This can
be fixed by moving the scalatest framework jar (and its dependencies)
into an additional classloader layer that sits between the scala library
loader and the rest of the test dependencies.

In addition to adding the new layer, I reworked the
ReverseLookupClassLoader to use its dependent classloader to find
resources that may below it in the classloading hierarchy rather than
constructing an entirely new classloader for resources.

After this change, I was able to run test in the repro project:
https://github.com/rjmac/sbt-5262 1000 times with no failures. Note that
the repro is sensitive to the jdk used. I could not reproduce with jdk11
but I could typically induce a failure within 20 or so runs with jdk8.

I benchmarked this change with
https://github.com/eatkins/scala-build-watch-performance and performance
was roughly the same as 1.3.4 with turbo mode and about 200-250ms faster
in non-turbo mode (which can be explained by the time to load the
scalatest classes).
2019-12-06 11:41:44 -08:00