sbt, the interactive build tool
Go to file
Ethan Atkins af16d33700 Add per file stream locks
We have seen failures in scripted to create the output file for streams
and it has also been reported in https://github.com/sbt/sbt/issues/5067.
I believe this may caused by the same stream output being initialized by
multiple tasks. To fix this, I add locking on a per-file basis. There
was (and is) additional synchronization on the Streams _instance_, but
the per-file locks are stored in the Streams companion object so the
locking should be honored no matter which Streams instance calls make.

I also skip the call to IO.touch if the file already exists. I believe
that this is the common case and since IO.touch was being called with
setModified = false, it should be fine to skip the touch when the file
exists.

Prior to this change, I was able to induce the issue in #5067 in roughly
1/50 of calls to `scripted actions/cross-multiproject`. I wasn't able to
reproduce after this change.
2019-09-14 15:22:05 -07:00
.github/ISSUE_TEMPLATE Auto-label bug reports & delete old issue template 2019-06-04 08:01:18 +01:00
core-macros/src/main/scala/sbt/internal/util/appmacro avoid deprecated /: and :\ 2019-08-30 11:20:53 +09:00
internal Scala 2.12.10 2019-09-11 23:02:50 -04:00
launch Adds sbt.boot.lock sysprop to opt-out 2018-02-08 13:02:39 +00:00
licenses move remaining pieces of sbt subproject to sbt_pending and fix notices 2010-09-21 21:55:50 -04:00
main Scala 2.12.10 2019-09-11 23:02:50 -04:00
main-actions/src 1.3.0 2019-09-05 10:15:41 -07:00
main-command/src Update deprecation warnings for api changes 2019-09-06 12:10:59 -07:00
main-settings/src Add test case and scaladoc 2019-08-19 11:49:09 -07:00
notes Set swoval.tmpdir with absolute path via globalBasePath (#5048) 2019-09-09 14:13:34 -04:00
project Scala 2.12.10 2019-09-11 23:02:50 -04:00
protocol/src/main apply formatting 2019-04-20 03:23:54 -04:00
run quote run argument if it contains a whitespace 2019-06-24 19:32:55 -04:00
sbt/src Scala 2.12.10 2019-09-11 23:02:50 -04:00
scripted-plugin/src/main/scala/sbt -Xfatal-warnings in most subprojects 2018-09-18 11:47:55 -04:00
scripted-sbt-old/src/main/scala/sbt/test Update header 2018-09-14 04:53:36 -04:00
scripted-sbt-redux Store compile file stamps for each scala version 2019-08-26 14:47:57 -07:00
src/main/conscript sbt 1.3.0 2019-09-04 01:24:08 -04:00
tasks avoid deprecated /: and :\ 2019-08-30 11:20:53 +09:00
tasks-standard Add per file stream locks 2019-09-14 15:22:05 -07:00
testing 1.3.0 2019-09-05 10:15:41 -07:00
vscode-sbt-scala fix typo 2019-06-06 08:05:16 +03:00
zinc-lm-integration/src Add new ClassLoaderCache implementation 2019-05-28 09:53:35 -07:00
.appveyor.yml Add coursier cache to CI 2019-08-01 11:57:29 -07:00
.gitattributes remove gittatributes, assume core.autocrlf=false 2018-06-26 17:38:05 +03:00
.gitignore add .idea to .gitignore 2019-08-16 00:57:05 +03:00
.java-version Configure JVM 1.8 in .java-version 2016-10-07 08:48:23 -05:00
.mailmap Add mailmap 2019-06-11 09:30:14 +02:00
.sbtopts Use .sbtopts to increase the RAM 2018-06-25 19:40:15 -04:00
.scalafmt.conf Bump scalafmt 2019-07-18 12:40:21 -07:00
.travis.yml Add coursier cache to CI 2019-08-01 11:57:29 -07:00
CONTRIBUTING.md Split some of the developing related docs to DEVELOPING.md 2019-07-15 12:39:41 -04:00
DEVELOPING.md Minor clarification of logging message 2019-07-19 06:01:15 -05:00
LICENSE Apache License 2.0 2018-09-14 03:38:58 -04:00
NOTICE Apache License 2.0 2018-09-14 03:38:58 -04:00
PROFILING.md fix typo 2018-07-08 22:18:57 +09:00
README.md fix typo 2019-06-06 08:05:16 +03:00
SUPPORT.md Split support into SUPPORT.md 2018-04-25 14:55:09 +01:00
build.sbt Bump sbt version 2019-09-05 11:46:23 -07:00
reset.sh 1.0.3-SNAPSHOT 2017-09-16 15:52:58 -04:00
sbt-allsources.sh Bump underlying modules to latest 2017-03-23 12:41:24 -04:00
server.md setting query is "sbt/setting" 2017-10-03 01:45:06 -04:00

README.md

Build Status Latest version Gitter Chat

sbt

sbt is a build tool for Scala, Java, and more.

For general documentation, see http://www.scala-sbt.org/.

sbt 1.x

This is the 1.x series of sbt. The source code of sbt is split across several GitHub repositories, including this one.

  • sbt/io hosts sbt.io module.
  • sbt/util hosts a collection of internally used modules.
  • sbt/librarymanagement hosts sbt.librarymanagement module that wraps Ivy.
  • sbt/zinc hosts Zinc, an incremental compiler for Scala.
  • sbt/sbt, this repository hosts modules that implements the build tool.
  • 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.

The short version: try searching or asking on StackOverflow.

license

See LICENSE.