Commit Graph

10242 Commits

Author SHA1 Message Date
xuwei-k 9611f737ec Update dependencies 2019-08-27 15:56:59 +09:00
Ethan Atkins 6ba3afbef7 Fix settings in ScriptMain
It was reported in https://github.com/sbt/sbt/issues/4973 that the
scalaVersion setting was not being correctly set in a script running
with ScriptMain using 1.3.0-RC4. Using git bisect, I found that the
issue was introduced in
73cfd7c8bd.
That commit manipulates the classloaders passed in by the launcher, but
only for the xMain entry point. I found that the script ran correctly if
I updated the classloader for ScriptedMain as well.

After these changes, the example script in #4973 correctly prints 2.13.0
for the scala version with a locally published sbt.

Bonus: rename xMainImpl object xMain. It was private[sbt] anyway.
2019-08-26 21:15:43 -07:00
Ethan Atkins bd4d04d131 Store compile file stamps for each scala version
https://github.com/sbt/sbt/issues/4986 reported that +compile would
always recompile everything in the project even when the sources hadn't
changed. This was because the dependency classpath was changing between
calls to compile, which caused the external hooks cache introduced in
32a6d0d5d7 to invalidate the scala
library. To fix this, I cache the file stamps on a per scala version
basis. I added a scripted test that checks that there is no
recompilation in two consecutive calls to `+compile` in a multi scala
version build. It failed prior to these changes.
2019-08-26 14:47:57 -07:00
eugene yokota 49afe01287
Merge pull request #4982 from eed3si9n/wip/gc
avoid force gc during load
2019-08-23 13:59:32 -04:00
Ethan Atkins 250a6ce29d
Merge pull request #4981 from eatkins/startup-perf
Startup perf
2019-08-22 23:40:24 -07:00
Eugene Yokota fcd9dbf3dd avoid force gc during load
This initializes the lastGcCheck to the current time so it won't force GC in the first 10 minutes, avoiding unnecessary GC during load.
2019-08-23 02:16:11 -04:00
Ethan Atkins 76ec00dc4b
Merge branch 'develop' into startup-perf 2019-08-22 21:50:21 -07:00
Ethan Atkins 944596122c
Merge pull request #4980 from eatkins/revert-io-file-management-apis
Stop injecting file management settings for io tasks
2019-08-22 21:49:30 -07:00
Ethan Atkins 1f9ea70518 Avoid intermediate collection creation during load
The allKeys method was making many intermediate collections. For akka,
this reduced startup time by about 400ms on average.
2019-08-22 20:35:12 -07:00
Ethan Atkins 4bb2f4e968 Used Seq instead of Stream
Streams generically perform poorly and weren't needed here.
2019-08-22 20:35:12 -07:00
Ethan Atkins 1700b89ea4 Parallelize Init.addLocal
During akka startup, addLocal was caused twice and prior to this change,
it took roughly 200ms per call on my computer. After this change, it
took about 100ms.
2019-08-22 20:35:11 -07:00
Ethan Atkins 3fc8817974 Add parallelism to KeyIndex.aggregate
I looked for serial bottlenecks in sbt project loading and discovered
that KeyIndex.aggregate was relatively easily parallelizable. Before
this time, it took about 1 second to run KeyIndex.aggregate in the akka
project on my computer. After this change, it took 250ms. Given that I
have 4 logical cores, the speedup is roughly linear.
2019-08-22 20:35:11 -07:00
Ethan Atkins b6f05b91f6 Stop injecting file management settings for io tasks
It turns out that injecting the keys necessary for incremental tasks
causes a significant startup penalty for many larger projects. For
example, akka starts up about 3 seconds faster if do not inject these
settings for the tasks returning `File` or `Seq[File]`. Given that all
of these apis use java.nio.file anyway, it makes sense to not backport
them to older tasks.
2019-08-22 20:34:37 -07:00
Ethan Atkins d6478c9def
Merge pull request #4978 from eatkins/clean-perf-fix
Fix clean performance
2019-08-22 20:33:44 -07:00
Ethan Atkins 5eab9df0df Fix clean performance
The clean task got a lot slower in 1.3.0
(https://github.com/sbt/sbt/issues/4972). The reason for this was that
sbt 1.3.0 generated many custom clean tasks for any tasks that returned
`File` or `Seq[File]`. Each of these tasks was tagged with
Tags.Clean which meant that only one of them could run at a time. As a
result, it took a long time to evaluate all of the custom tasks, even if
they were no-ops. In the akka project, a no-op clean was taking 35
seconds which is simply unacceptable. After this change, a no-op clean
takes less than a second in akka (a full clean only takes about 6
seconds after running test:compile)

To fix this, I stopped aggregating the clean task across configs and
projects. Because I removed the aggregation, I needed to manually
implement clean in the `Compile` and `Test` configurations to make
`Compile / clean` and `Test / compile` clean work correctly.
2019-08-22 13:01:56 -07:00
eugene yokota a0bb867dd6
Merge pull request #212 from eatkins/binary-compatibility
Unbreak binary compatibility
2019-08-21 14:07:11 -04:00
Ethan Atkins 7f112052bf Unbreak binary compatibility
We discovered in the community build that 1.3.0-RC4 breaks the
lucidchart scalafmt plugins. We can unbreak binary compatibility by
adding alternative classes.
2019-08-21 10:20:53 -07:00
eugene yokota ce35950918
Merge pull request #213 from eatkins/sbt-dogfood
Bump sbt version to 1.3.0-RC4
2019-08-21 13:01:33 -04:00
eugene yokota 477d76e1a9
Merge pull request #4967 from eatkins/bump-dogfood
Bump sbt to use 1.3.0-RC4
2019-08-21 12:09:17 -04:00
Ethan Atkins caecc7e6ae Bump sbt version to 1.3.0-RC4 2019-08-21 00:03:57 -07:00
Ethan Atkins 58ff066b64 Bump sbt to use 1.3.0-RC4 2019-08-20 15:28:08 -07:00
eugene yokota cd00d0f801
Merge pull request #4965 from eed3si9n/wip/stacktrace3
reimplement stack trace suppression
2019-08-20 14:44:36 -04:00
Eugene Yokota ecb0375de2 reimplement stack trace suppression
Fixes #4964

Together with https://github.com/sbt/util/pull/211, this brings back stack trace supression for custom tasks by default.
Debug levels logs are available in `last`, and this prints a message informing the user of the fact. BLUE on dark background is difficult to read, so I am chaning the color hilight to MAGENTA.
2019-08-20 13:56:52 -04:00
eugene yokota f48340f708
Merge pull request #211 from eed3si9n/wip/stacktrace
reimplement stacktrace suppression
2019-08-20 12:46:37 -04:00
Eugene Yokota 39fdf70c21 reimplement stacktrace suppression
Ref https://github.com/sbt/sbt/issues/4964
2019-08-20 12:35:13 -04:00
eugene yokota 740936e156
Merge pull request #4956 from eatkins/custom-show
Allow custom show for a scope
2019-08-19 16:37:11 -04:00
Ethan Atkins 09f4fcf94b Add test case and scaladoc 2019-08-19 11:49:09 -07:00
Ethan Atkins 8fbf1907ce Allow custom show for a scope
I am writing a plugin that uses mangled task keys that are very hard to
read. It is helpful to be able to override the show config for these
scopes so that they look reasonable in supershell and in error
reporting.
2019-08-19 11:23:43 -07:00
eugene yokota 4030a6434d
Merge pull request #4961 from eed3si9n/wip/bump
bump modules
2019-08-19 12:55:06 -04:00
Eugene Yokota fcf7c5955e remove neo-sbt-scalafmt test
The test fails because the plugin is using reflection to access a private class, and we changed it - https://github.com/lucidsoftware/neo-sbt-scalafmt/issues/80
2019-08-19 03:37:33 -04:00
Eugene Yokota 01e7b5d191 ScalaTest 3.0.8 2019-08-19 02:34:07 -04:00
Eugene Yokota 6d54ad3745 launcher 1.1.2 2019-08-19 02:31:03 -04:00
Eugene Yokota 13b110faef io 1.3.0-M16, util 1.3.0-M9, lm 1.3.0-M6, zinc 1.3.0-M9 2019-08-19 02:27:52 -04:00
eugene yokota d4824a53ae
Merge pull request #210 from eed3si9n/wip/build
publish for 2.13
2019-08-19 01:01:59 -04:00
Eugene Yokota 5fcb100d6f publish for 2.13
Fixes #201
https://repo1.maven.org/maven2/org/scala-sbt/util-cache_2.13/
2019-08-18 23:20:43 -04:00
eugene yokota 6f74650712
Merge pull request #4950 from eed3si9n/wip/coursier
use Relaxed reconciliation strategy by default (take 2)
2019-08-15 23:37:08 -04:00
eugene yokota 94b651252d
Merge pull request #4951 from intracer/develop
add .idea to .gitignore
2019-08-15 22:11:11 -04:00
Ethan Atkins dbd4fb115b
Merge pull request #4953 from eatkins/scripted-fixes
Scripted fixes
2019-08-15 19:04:06 -07:00
Ethan Atkins 4c6df99b6a Run scripted watch tests with launcher on windows
The sbt-coursier plugin now uses a shaded jansi and it seems to cause
problems with scripted tests if they aren't run using the launcher. On
my vm, all of the watch tests succeeded after this change and they all
crashed the jvm before.
2019-08-15 17:33:48 -07:00
Ethan Atkins e621ebe678 Ensure correct scripted plugin implementation exists
When running the scripted tests on my vm, I noticed that one of the
watch tests warned that the InstrumentScripted.scala file had changed
after the project had initialized. The test then hung and I had to kill
it. To try and prevent this from happening, I moved the creation of the
plugin file to right before the call to ";reload;setUpScripted".
2019-08-15 17:33:48 -07:00
ilya 5fb36df6fe add .idea to .gitignore 2019-08-16 00:57:05 +03:00
Eugene Yokota 35bc79063c lm-coursier-shaded 2.0.0-RC3-3 2019-08-15 15:40:43 -04:00
Eugene Yokota 777cc39fcf Fix inter-project dependencies
Tracking https://github.com/coursier/sbt-coursier/pull/101
2019-08-15 15:40:43 -04:00
Eugene Yokota 46e92949ed use Relaxed reconciliation strategy by default
Fixes #4720
Ref https://github.com/coursier/coursier/pull/1293
Ref https://github.com/coursier/sbt-coursier/pull/112
2019-08-15 15:40:43 -04:00
Eugene Yokota a22e4889f4 reproduce "Conflicting dependencies"
Ref #4720
2019-08-15 15:40:43 -04:00
eugene yokota 3b0171a50a
Merge pull request #4949 from eatkins/changed-binaries
Update ExternalHooks to look up changed binaries
2019-08-15 15:24:24 -04:00
Ethan Atkins 9c7acdb713 Force invalidate dependency changes
After adding the automatic lookup to external hooks for missing binary
jars, the scripted test dependency-management/invalidate-internal
started failing. This was because the previous analysis contained a jar
dependency that still existed on disk but was no longer a part of the
dependency classpath. Fundamentally the problem is that the zinc
compile analysis is not tightly coupled with the sbt build state.

To fix this, we can cache the dependency classpath file stamps in the
same way that we cache the input file stamps in external hooks and
manually diff them at the sbt level. We then force updates regardless of
the difference between the zinc state and the sbt state.
2019-08-15 11:31:24 -07:00
Ethan Atkins 32a6d0d5d7 Update ExternalHooks to look up changed binaries
It was reported that in community builds, sometimes there was
spurious over-compilation due to invalidation of the scala library jar
(https://github.com/sbt/sbt/issues/4948). The reason for this was that
the external hooks prefills the managed cache with all of the time
stamps for the project dependencies but was not looking up any jars that
weren't in the cache. I suspect I did this because I didn't realize that
zinc also includes its own classpath in the binaries which is not
a part of the dependencyClasspath. The fix is to just add the jar to the
cache if it doesn't already exist by switching to getOrElseUpdate from
get.

I followed the steps in #4948 and published a version of sbt locally
with this change and the spurious re-builds stopped.
2019-08-15 10:34:05 -07:00
eugene yokota ca776cf3f8
Merge pull request #208 from jroper/file-info-hash-byte-array
Use byte arrays instead of lists of bytes in FileInfo
2019-08-13 08:03:28 -04:00
James Roper 50b2ea6f83 Use byte arrays instead of lists of bytes in FileInfo
Fixes #206
2019-08-12 15:16:48 +10:00