mirror of
https://github.com/sbt/sbt.git
synced 2026-10-07 02:23:37 +02:00
56ff180cdfee01da22c8b9fcbf8f9fa6ca1d2427
Problem compileIncremental declares the analysis file and the classes directory as cache outputs, but not the early (pickle) jar or the early analysis. A cache hit therefore leaves a subproject with a restored analysis and no early jar. On the next incremental round Zinc has no jar to merge scalac's pickles into, so the early jar ends up holding only that round's TASTy/sig files, afterEarlyOutput(true) fires, and every downstream subproject is compiled against it and fails with "Not found" for each upstream type that was not just recompiled. Solution - Declare the early jar and the early analysis file as outputs of compileIncremental when exportPipelining produced them, so a hit restores them. - Restored outputs are symlinks into the CAS, and Zinc rewrites the early jar in place when it merges a round's pickles. Replace a symlinked early jar by a real copy before Zinc runs so the cached blob is never modified. - When a previous analysis exists but the early jar does not (a cache written before the jar was an output, exportPipelining switched on for an existing build, a deleted early directory), recompile the subproject from scratch, which writes a complete jar.
sbt
sbt is a build tool for Scala, Java, and more.
For general documentation, see https://www.scala-sbt.org/.
sbt 2.x
This is the 2.x series of sbt. The source code of sbt is split across several GitHub repositories, including this one.
- sbt/io hosts
sbt.iomodule. - sbt/zinc hosts Zinc, an incremental compiler for Scala.
- sbt/sbt, this repository hosts modules that implement the build tool.
Other links
- Setup: Describes getting started with the latest binary release.
- FAQ: Explains how to get help and more.
- sbt/sbt-zero-seven: hosts sbt 0.7.7 and earlier versions
Issues and Pull Requests
Please read CONTRIBUTING carefully before opening a GitHub Issue or a pull request.
If you're looking for an idea for a contribution, issues labeled with good first issue or help wanted might be good starting points.
If you would like to ask questions about sbt, there's sbt channel on Scala Discord, but it would be good to gather questions on Stackoverflow.
license
See LICENSE.
Languages
Scala
94.5%
Java
3.1%
Shell
1.1%
Batchfile
0.9%
Roff
0.2%
Other
0.1%