sbt, the interactive build tool
Go to file
MkDev11 e16298521b
[2.x] feat: Enable musl static linking for sbtn on JDK 17+ (#8464)
** Problem **

The sbtn (sbt thin client) native image on Linux currently depends on glibc because ipcsocket uses JNI for Unix domain sockets. When building with musl for static linking, the JNI library fails to load since musl doesn't support `dlopen`.

** Solution **

Instead of upgrading to ipcsocket 2.x (which isn't ready for production), I created a `UnixDomainSocketFactory` that detects JDK 17+ at runtime and uses the native `java.net.UnixDomainSocketAddress` API directly via reflection. This completely bypasses JNI on modern JDKs.

For older JDKs (8 and 11), the factory falls back to ipcsocket 1.6.3, which is stable and well-tested.

** How It Works **

The factory checks at startup whether `java.net.UnixDomainSocketAddress` is available:

- **JDK 17+**: Uses native NIO Unix domain sockets (no JNI, no native libraries)
- **JDK 8/11**: Falls back to ipcsocket's JNI-based implementation

This approach:
- Enables musl static linking on JDK 17+ without any native dependencies
- Maintains full backward compatibility with older JDKs
- Keeps the stable ipcsocket 1.6.3 instead of the unstable 2.x
2026-01-13 23:14:45 -05:00
.github [2.x] feat: Enable musl static linking for sbtn on JDK 17+ (#8464) 2026-01-13 23:14:45 -05:00
buildfile/src fix: Fix NoClassDefFoundError after changing val in build.sbt (#8521) 2026-01-13 18:45:16 -05:00
client [2.x] feat: Enable musl static linking for sbtn on JDK 17+ (#8464) 2026-01-13 23:14:45 -05:00
contributing-docs Fix typo in link to CONTRIBUTING.md 2026-01-11 03:57:14 -05:00
core-macros/src Add tailrec annotation 2026-01-11 16:33:45 +09:00
internal [2.x] fix: Fixes --no-colors setting for sbtn (#8517) 2026-01-13 14:44:09 -05:00
launch Transfer copyright to Scala Center 2023-06-20 16:39:07 +02:00
launcher-package [2.x] fix: Fix sbtopts files priority in sbt launch script (#8514) 2026-01-13 13:30:13 -05:00
licenses move remaining pieces of sbt subproject to sbt_pending and fix notices 2010-09-21 21:55:50 -04:00
lm-core [2.x] fix: Invalidate update cache across commands when dependencies change (#8501) 2026-01-12 16:17:51 -05:00
lm-coursier [2.x] feat: Add csrLocalArtifactsShouldBeCached setting for caching local artifacts (#8504) 2026-01-12 19:17:55 -05:00
lm-ivy/src [2.x] fix: Invalidate update cache across commands when dependencies change (#8501) 2026-01-12 16:17:51 -05:00
main [2.x] Fix watchTriggers to control what triggers instead of adding to fileInputs (#8525) 2026-01-13 21:14:10 -05:00
main-actions/src [2.x] Add testForkedParallelism setting for forked test thread count (#8453) 2026-01-09 12:43:50 -05:00
main-command/src [2.x] feat: Enable musl static linking for sbtn on JDK 17+ (#8464) 2026-01-13 23:14:45 -05:00
main-settings/src [2.x] Fix ProjectMatrix invalid project ID with CrossVersion.full (#8484) 2026-01-11 19:17:26 -05:00
notes Spelling (#8028) 2025-02-04 01:11:28 -05:00
project [2.x] Remove unused code in project/Dependencies.scala (#8522) 2026-01-13 18:43:08 -05:00
protocol/src/main [2.x] feat: Enable musl static linking for sbtn on JDK 17+ (#8464) 2026-01-13 23:14:45 -05:00
run [2.x] Delete TrapExitSecurityException (#8503) 2026-01-12 19:11:35 -05:00
sbt-app/src fix: Fix NoClassDefFoundError after changing val in build.sbt (#8521) 2026-01-13 18:45:16 -05:00
sbt-remote-cache/src/main/scala/sbt remove unnecessary `case` 2025-02-22 08:48:29 +09:00
scripted-sbt [2.x] fix: trim whitespace from sbt.version in build.properties (#8524) 2026-01-13 21:13:47 -05:00
scripts Fix lm-coursier scripted 2024-10-11 14:30:55 +02:00
server-test/src Fix BuildServerTest (#8475) 2026-01-11 07:20:10 -05:00
src/main/conscript sbt 1.3.0 2019-09-04 01:24:08 -04:00
tasks Fix scaladoc (#8476) 2026-01-11 07:20:40 -05:00
tasks-standard Use SAM-conversion if possible (#8477) 2026-01-11 07:21:28 -05:00
testing Apply Contraband 2025-09-28 21:28:21 -04:00
util-cache [2.x] Always create symlinks to the cache in the target locations #8445 (#8461) 2026-01-12 19:38:59 -05:00
util-collection Fix scaladoc (#8476) 2026-01-11 07:20:40 -05:00
util-tracking Remove deprecated methods 2025-05-11 05:23:41 -04:00
worker/src [2.x] Add testForkedParallelism setting for forked test thread count (#8453) 2026-01-09 12:43:50 -05:00
zinc-lm-integration/src Merge branch '1.12.x' into wip/merge-1.12.x 2026-01-05 00:08:21 -05:00
.git-blame-ignore-revs Add .git-blame-ignore-revs 2024-10-09 13:38:02 +02:00
.gitattributes Fix line endings in msi 2021-11-19 20:41:39 -05:00
.gitignore Merge branch '1.11.x' into wip/merge-1.11.x 2025-08-25 02:29:12 -04:00
.gitmodules Move metadata to lm-coursier/metadata 2024-10-09 09:44:42 +02:00
.jvmopts Add .jvmopts 2023-11-25 01:06:30 -05:00
.mailmap Add mailmap 2019-06-11 09:30:14 +02:00
.sbtopts Restore .sbtopts file 2020-11-19 12:42:26 -08:00
.scala-steward.conf Pin slf4j-api 2023-01-02 22:06:46 -05:00
.scalafmt.conf update scalafmt config. re-format build files 2025-09-23 10:28:38 +09:00
AGENTS.md [2.x] docs: Minor tweaks to the docs (#8480) 2026-01-11 15:08:20 -05:00
CONTRIBUTING.md [2.x] docs: Minor tweaks to the docs (#8480) 2026-01-11 15:08:20 -05:00
LICENSE add LICENSE file 2023-06-25 09:53:06 +09:00
NOTICE Transfer copyright to Scala Center 2023-06-20 16:39:07 +02:00
PROFILING.md docs: Update flamegraph guide --lines 2025-11-09 18:06:13 -05:00
README.md docs: Contributor's Guide 2026-01-11 03:24:30 -05:00
SUPPORT.md Transfer copyright to Scala Center 2023-06-20 16:39:07 +02:00
build.sbt [2.x] feat: Enable musl static linking for sbtn on JDK 17+ (#8464) 2026-01-13 23:14:45 -05:00
reset.sh 1.0.3-SNAPSHOT 2017-09-16 15:52:58 -04:00
sbt [2.x] fix: Fix sbtopts files priority in sbt launch script (#8514) 2026-01-13 13:30:13 -05:00
sbt-allsources.sh Merge remote-tracking branch 'lm/wip/sbt-2.x' into 2.x-lm-coursier 2024-10-09 08:50:03 +02:00
sbt.sh Implement sbt-launch.jar download 2021-04-19 23:43:15 -04:00
server.md setting query is "sbt/setting" 2017-10-03 01:45:06 -04:00

README.md

CI Latest version Discord

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.io module.
  • sbt/zinc hosts Zinc, an incremental compiler for Scala.
  • sbt/sbt, this repository hosts modules that implement 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, and Contributor's guide before opening 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.