Build Information
Successful build of skip, reference 1.9.20 (9a24b7), with Swift 6.1 for Linux on 28 Oct 2026 16:50:11 UTC.
Swift 6 data race errors: 3
Build Command
bash -c docker run --pull=always --rm -v "checkouts-54344845-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:linux-6.1-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1Build Log
========================================
RunAll
========================================
Builder version: 5.1.4
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/skiptools/skip.git
Reference: 1.9.20
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/skiptools/skip
* tag 1.9.20 -> FETCH_HEAD
HEAD is now at 9a24b76 Release 1.9.20
Cloned https://github.com/skiptools/skip.git
Revision (git rev-parse @):
9a24b76b0681d8175d86911307494599e2ec47df
SUCCESS checkout https://github.com/skiptools/skip.git at 1.9.20
========================================
Build
========================================
Selected platform: linux
Swift version: 6.1
Building package at path: $PWD
https://github.com/skiptools/skip.git
https://github.com/skiptools/skip.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-54344845-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:linux-6.1-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1
linux-6.1-latest: Pulling from saguaro1/spi-images
Digest: sha256:b6bfb4c5da2c5a0e111d7eb0c087cb4f5887cce9a34b7779faa557952c747cfc
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:linux-6.1-latest
Downloading binary artifact https://github.com/skiptools/skip/releases/download/1.9.20/skip-linux.zip
[16375/150504094] Downloading https://github.com/skiptools/skip/releases/download/1.9.20/skip-linux.zip
Downloaded https://github.com/skiptools/skip/releases/download/1.9.20/skip-linux.zip (7.32s)
[1/1] Compiling plugin Skip Transpile
[2/2] Compiling plugin Create SkipLink
[3/3] Compiling plugin skipstone
Building for debugging...
[3/6] Write sources
[5/6] Write swift-version-24593BA9C3E375BF.txt
[7/12] Compiling SkipDrive Version.swift
[8/12] Compiling SkipDrive SourceMap.swift
[9/12] Compiling SkipDrive ToolSupport.swift
/host/spi-builder-workspace/Sources/SkipDrive/ToolSupport.swift:2772:18: warning: reference to var 'stdout' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
2770 | /// Public stdout stream instance.
2771 | nonisolated(unsafe) public var stdoutStream: ThreadSafeOutputByteStream = try! ThreadSafeOutputByteStream(LocalFileOutputByteStream(
2772 | filePointer: stdout,
| `- warning: reference to var 'stdout' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
2773 | closeOnDeinit: false))
2774 |
/usr/include/stdio.h:150:14: note: var declared here
148 | /* Standard streams. */
149 | extern FILE *stdin; /* Standard input stream. */
150 | extern FILE *stdout; /* Standard output stream. */
| `- note: var declared here
151 | extern FILE *stderr; /* Standard error output stream. */
152 | /* C89/C99 say they're macros. Make them happy. */
/host/spi-builder-workspace/Sources/SkipDrive/ToolSupport.swift:2777:18: warning: reference to var 'stderr' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
2775 | /// Public stderr stream instance.
2776 | nonisolated(unsafe) public var stderrStream: ThreadSafeOutputByteStream = try! ThreadSafeOutputByteStream(LocalFileOutputByteStream(
2777 | filePointer: stderr,
| `- warning: reference to var 'stderr' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
2778 | closeOnDeinit: false))
2779 |
/usr/include/stdio.h:151:14: note: var declared here
149 | extern FILE *stdin; /* Standard input stream. */
150 | extern FILE *stdout; /* Standard output stream. */
151 | extern FILE *stderr; /* Standard error output stream. */
| `- note: var declared here
152 | /* C89/C99 say they're macros. Make them happy. */
153 | #define stdin stdin
/host/spi-builder-workspace/Sources/SkipDrive/ToolSupport.swift:1072:90: warning: capture of 'outputClosures' with non-sendable type '(stdoutClosure: Process.OutputClosure, stderrClosure: Process.OutputClosure)?' (aka 'Optional<(stdoutClosure: (Array<UInt8>) -> (), stderrClosure: (Array<UInt8>) -> ())>') in a '@Sendable' closure; this is an error in the Swift 6 language mode
1070 | group.enter()
1071 | let stdoutThread = Thread { [weak self] in
1072 | if let readResult = self?.readOutput(onFD: outputPipe[0], outputClosure: outputClosures?.stdoutClosure) {
| |- warning: capture of 'outputClosures' with non-sendable type '(stdoutClosure: Process.OutputClosure, stderrClosure: Process.OutputClosure)?' (aka 'Optional<(stdoutClosure: (Array<UInt8>) -> (), stderrClosure: (Array<UInt8>) -> ())>') in a '@Sendable' closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1073 | pendingLock.withLock {
1074 | if let stderrResult = pending.value {
/host/spi-builder-workspace/Sources/SkipDrive/ToolSupport.swift:1072:90: warning: capture of 'outputClosures' with non-sendable type '(stdoutClosure: Process.OutputClosure, stderrClosure: Process.OutputClosure)?' (aka 'Optional<(stdoutClosure: (Array<UInt8>) -> (), stderrClosure: (Array<UInt8>) -> ())>') in a '@Sendable' closure; this is an error in the Swift 6 language mode
1070 | group.enter()
1071 | let stdoutThread = Thread { [weak self] in
1072 | if let readResult = self?.readOutput(onFD: outputPipe[0], outputClosure: outputClosures?.stdoutClosure) {
| |- warning: capture of 'outputClosures' with non-sendable type '(stdoutClosure: Process.OutputClosure, stderrClosure: Process.OutputClosure)?' (aka 'Optional<(stdoutClosure: (Array<UInt8>) -> (), stderrClosure: (Array<UInt8>) -> ())>') in a '@Sendable' closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1073 | pendingLock.withLock {
1074 | if let stderrResult = pending.value {
/host/spi-builder-workspace/Sources/SkipDrive/ToolSupport.swift:1101:94: warning: capture of 'outputClosures' with non-sendable type '(stdoutClosure: Process.OutputClosure, stderrClosure: Process.OutputClosure)?' (aka 'Optional<(stdoutClosure: (Array<UInt8>) -> (), stderrClosure: (Array<UInt8>) -> ())>') in a '@Sendable' closure; this is an error in the Swift 6 language mode
1099 | group.enter()
1100 | stderrThread = Thread { [weak self] in
1101 | if let readResult = self?.readOutput(onFD: stderrPipe[0], outputClosure: outputClosures?.stderrClosure) {
| |- warning: capture of 'outputClosures' with non-sendable type '(stdoutClosure: Process.OutputClosure, stderrClosure: Process.OutputClosure)?' (aka 'Optional<(stdoutClosure: (Array<UInt8>) -> (), stderrClosure: (Array<UInt8>) -> ())>') in a '@Sendable' closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1102 | pendingLock.withLock {
1103 | if let stdoutResult = pending.value {
/host/spi-builder-workspace/Sources/SkipDrive/ToolSupport.swift:1101:94: warning: capture of 'outputClosures' with non-sendable type '(stdoutClosure: Process.OutputClosure, stderrClosure: Process.OutputClosure)?' (aka 'Optional<(stdoutClosure: (Array<UInt8>) -> (), stderrClosure: (Array<UInt8>) -> ())>') in a '@Sendable' closure; this is an error in the Swift 6 language mode
1099 | group.enter()
1100 | stderrThread = Thread { [weak self] in
1101 | if let readResult = self?.readOutput(onFD: stderrPipe[0], outputClosure: outputClosures?.stderrClosure) {
| |- warning: capture of 'outputClosures' with non-sendable type '(stdoutClosure: Process.OutputClosure, stderrClosure: Process.OutputClosure)?' (aka 'Optional<(stdoutClosure: (Array<UInt8>) -> (), stderrClosure: (Array<UInt8>) -> ())>') in a '@Sendable' closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1102 | pendingLock.withLock {
1103 | if let stdoutResult = pending.value {
/host/spi-builder-workspace/Sources/SkipDrive/ToolSupport.swift:1227:36: warning: capture of 'completion' with non-sendable type '(Result<ProcessResult, any Error>) -> Void' in a '@Sendable' closure; this is an error in the Swift 6 language mode
1225 | self.state = .complete(executionResult)
1226 | self.completionQueue.async {
1227 | self.waitUntilExit(completion)
| |- warning: capture of 'completion' with non-sendable type '(Result<ProcessResult, any Error>) -> Void' in a '@Sendable' closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1228 | }
1229 | }
/host/spi-builder-workspace/Sources/SkipDrive/ToolSupport.swift:1410:17: warning: capture of 'completion' with non-sendable type '(Result<ProcessResult, any Error>) -> Void' in a '@Sendable' closure; this is an error in the Swift 6 language mode
1408 | } catch {
1409 | completionQueue.async {
1410 | completion(.failure(error))
| |- warning: capture of 'completion' with non-sendable type '(Result<ProcessResult, any Error>) -> Void' in a '@Sendable' closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1411 | }
1412 | }
[10/12] Emitting module SkipDrive
/host/spi-builder-workspace/Sources/SkipDrive/GradleHarness.swift:513:23: warning: static property 'all' is not concurrency-safe because non-'Sendable' type '[AppBuildGradleAGPIssue]' may have shared mutable state; this is an error in the Swift 6 language mode
502 | /// automatic fix performed by `skip verify --fix`, so the two never drift apart. Detection and fixes only
503 | /// consider *active* (non-commented) lines, so a commented-out reference in the project template is ignored.
504 | public struct AppBuildGradleAGPIssue {
| `- note: consider making struct 'AppBuildGradleAGPIssue' conform to the 'Sendable' protocol
505 | /// The substring whose presence on an active line of `build.gradle.kts` indicates the issue.
506 | public let trigger: String
:
511 |
512 | /// All AGP-compatibility issues that are checked for an app's `build.gradle.kts`.
513 | public static let all: [AppBuildGradleAGPIssue] = [
| |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type '[AppBuildGradleAGPIssue]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
514 | // AGP 9 no longer ships the default proguard-android.txt that earlier SkipProject defaults referenced
515 | // in the line: proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
/host/spi-builder-workspace/Sources/SkipDrive/ToolSupport.swift:2772:18: warning: reference to var 'stdout' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
2770 | /// Public stdout stream instance.
2771 | nonisolated(unsafe) public var stdoutStream: ThreadSafeOutputByteStream = try! ThreadSafeOutputByteStream(LocalFileOutputByteStream(
2772 | filePointer: stdout,
| `- warning: reference to var 'stdout' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
2773 | closeOnDeinit: false))
2774 |
/usr/include/stdio.h:150:14: note: var declared here
148 | /* Standard streams. */
149 | extern FILE *stdin; /* Standard input stream. */
150 | extern FILE *stdout; /* Standard output stream. */
| `- note: var declared here
151 | extern FILE *stderr; /* Standard error output stream. */
152 | /* C89/C99 say they're macros. Make them happy. */
/host/spi-builder-workspace/Sources/SkipDrive/ToolSupport.swift:2777:18: warning: reference to var 'stderr' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
2775 | /// Public stderr stream instance.
2776 | nonisolated(unsafe) public var stderrStream: ThreadSafeOutputByteStream = try! ThreadSafeOutputByteStream(LocalFileOutputByteStream(
2777 | filePointer: stderr,
| `- warning: reference to var 'stderr' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
2778 | closeOnDeinit: false))
2779 |
/usr/include/stdio.h:151:14: note: var declared here
149 | extern FILE *stdin; /* Standard input stream. */
150 | extern FILE *stdout; /* Standard output stream. */
151 | extern FILE *stderr; /* Standard error output stream. */
| `- note: var declared here
152 | /* C89/C99 say they're macros. Make them happy. */
153 | #define stdin stdin
[11/12] Compiling SkipDrive GradleDriver.swift
[12/12] Compiling SkipDrive GradleHarness.swift
/host/spi-builder-workspace/Sources/SkipDrive/GradleHarness.swift:513:23: warning: static property 'all' is not concurrency-safe because non-'Sendable' type '[AppBuildGradleAGPIssue]' may have shared mutable state; this is an error in the Swift 6 language mode
502 | /// automatic fix performed by `skip verify --fix`, so the two never drift apart. Detection and fixes only
503 | /// consider *active* (non-commented) lines, so a commented-out reference in the project template is ignored.
504 | public struct AppBuildGradleAGPIssue {
| `- note: consider making struct 'AppBuildGradleAGPIssue' conform to the 'Sendable' protocol
505 | /// The substring whose presence on an active line of `build.gradle.kts` indicates the issue.
506 | public let trigger: String
:
511 |
512 | /// All AGP-compatibility issues that are checked for an app's `build.gradle.kts`.
513 | public static let all: [AppBuildGradleAGPIssue] = [
| |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type '[AppBuildGradleAGPIssue]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
514 | // AGP 9 no longer ships the default proguard-android.txt that earlier SkipProject defaults referenced
515 | // in the line: proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
[14/15] Compiling SkipTest XCGradleHarness.swift
[15/15] Emitting module SkipTest
Build complete! (14.52s)
Build complete.
{
"default_localization" : "en",
"dependencies" : [
],
"manifest_display_name" : "skip",
"name" : "skip",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "16.0"
},
{
"name" : "macos",
"version" : "13.0"
},
{
"name" : "tvos",
"version" : "16.0"
},
{
"name" : "watchos",
"version" : "9.0"
},
{
"name" : "maccatalyst",
"version" : "16.0"
}
],
"products" : [
{
"name" : "skipstone",
"targets" : [
"skipstone"
],
"type" : {
"plugin" : null
}
},
{
"name" : "skiplink",
"targets" : [
"Create SkipLink"
],
"type" : {
"plugin" : null
}
},
{
"name" : "skiptranspile",
"targets" : [
"Skip Transpile"
],
"type" : {
"plugin" : null
}
},
{
"name" : "SkipDrive",
"targets" : [
"SkipDrive"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "SkipTest",
"targets" : [
"SkipTest"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "skipstone",
"module_type" : "PluginTarget",
"name" : "skipstone",
"path" : "Plugins/SkipPlugin",
"plugin_capability" : {
"type" : "buildTool"
},
"product_memberships" : [
"skipstone",
"SkipDrive",
"SkipTest"
],
"sources" : [
"SkipPlugin.swift",
"SkipTranspile.swift"
],
"target_dependencies" : [
"skip"
],
"type" : "plugin"
},
{
"c99name" : "skip",
"module_type" : "BinaryTarget",
"name" : "skip",
"path" : "remote/archive/skip-linux.zip",
"product_memberships" : [
"skipstone",
"skiplink",
"skiptranspile",
"SkipDrive",
"SkipTest"
],
"sources" : [
],
"type" : "binary"
},
{
"c99name" : "SkipTestTests",
"module_type" : "SwiftTarget",
"name" : "SkipTestTests",
"path" : "Tests/SkipTestTests",
"sources" : [
"GradleDriverTests.swift"
],
"target_dependencies" : [
"SkipTest"
],
"type" : "test"
},
{
"c99name" : "SkipTest",
"module_type" : "SwiftTarget",
"name" : "SkipTest",
"path" : "Sources/SkipTest",
"product_memberships" : [
"SkipTest"
],
"sources" : [
"XCGradleHarness.swift"
],
"target_dependencies" : [
"SkipDrive"
],
"type" : "library"
},
{
"c99name" : "SkipDriveTests",
"module_type" : "SwiftTarget",
"name" : "SkipDriveTests",
"path" : "Tests/SkipDriveTests",
"sources" : [
"SkipDriveTests.swift"
],
"target_dependencies" : [
"SkipDrive"
],
"type" : "test"
},
{
"c99name" : "SkipDrive",
"module_type" : "SwiftTarget",
"name" : "SkipDrive",
"path" : "Sources/SkipDrive",
"product_memberships" : [
"SkipDrive",
"SkipTest"
],
"sources" : [
"GradleDriver.swift",
"GradleHarness.swift",
"SourceMap.swift",
"ToolSupport.swift",
"Version.swift"
],
"target_dependencies" : [
"skipstone",
"skip"
],
"type" : "library"
},
{
"c99name" : "Skip_Transpile",
"module_type" : "PluginTarget",
"name" : "Skip Transpile",
"path" : "Plugins/SkipTranspile",
"plugin_capability" : {
"intent" : {
"description" : "Transpile the Skip modules without building them",
"type" : "custom",
"verb" : "skip-transpile"
},
"permissions" : [
{
"network_scope" : {
"none" : {
}
},
"reason" : "This command writes the transpiled output to the package's .build/plugins/outputs folder",
"type" : "writeToPackageDirectory"
}
],
"type" : "command"
},
"product_memberships" : [
"skiptranspile"
],
"sources" : [
"SkipTranspile.swift",
"SkipTranspilePlugin.swift"
],
"target_dependencies" : [
"skip"
],
"type" : "plugin"
},
{
"c99name" : "Create_SkipLink",
"module_type" : "PluginTarget",
"name" : "Create SkipLink",
"path" : "Plugins/SkipLink",
"plugin_capability" : {
"intent" : {
"description" : "Create local links to transpiled output",
"type" : "custom",
"verb" : "SkipLink"
},
"permissions" : [
{
"network_scope" : {
"none" : {
}
},
"reason" : "This command will create local links to the skipstone output for the specified package(s), enabling access to the transpiled Kotlin",
"type" : "writeToPackageDirectory"
}
],
"type" : "command"
},
"product_memberships" : [
"skiplink"
],
"sources" : [
"SkipLinkPlugin.swift"
],
"target_dependencies" : [
"skip"
],
"type" : "plugin"
}
],
"tools_version" : "5.10"
}
linux-6.1-latest: Pulling from saguaro1/spi-images
Digest: sha256:b6bfb4c5da2c5a0e111d7eb0c087cb4f5887cce9a34b7779faa557952c747cfc
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:linux-6.1-latest
Done.