Build Information
Failed to build unbreak, reference v0.7.2 (ae41e3), with Swift 6.3 for Wasm on 29 Sep 2026 01:18:48 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-54344844-0":/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:wasm-6.3-latest swift build --swift-sdk swift-6.3.2-RELEASE_wasm 2>&1Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/bart-turczynski/unbreak.git
Reference: v0.7.2
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/bart-turczynski/unbreak
* tag v0.7.2 -> FETCH_HEAD
HEAD is now at ae41e35 chore(release): bump to v0.7.2 (#61)
Cloned https://github.com/bart-turczynski/unbreak.git
Revision (git rev-parse @):
ae41e358566c96f7e3a9419f71ad4d1aa2e67f04
SUCCESS checkout https://github.com/bart-turczynski/unbreak.git at v0.7.2
========================================
Build
========================================
Selected platform: wasm
Swift version: 6.3
Building package at path: $PWD
https://github.com/bart-turczynski/unbreak.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-54344844-0":/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:wasm-6.3-latest swift build --swift-sdk swift-6.3.2-RELEASE_wasm 2>&1
wasm-6.3-latest: Pulling from saguaro1/spi-images
Digest: sha256:253aad7f5b11d25cf9eaef34120b94cd8a325782929c57fb304a7711494a3f9a
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:wasm-6.3-latest
Building for debugging...
[0/17] Write sources
[7/17] Write swift-version-24593BA9C3E375BF.txt
[9/30] Emitting module Clipboard
[10/30] Compiling Clipboard Pasteboard.swift
[11/31] Compiling UnbreakCore DisplayWidth.swift
[12/31] Compiling UnbreakCore Heredoc.swift
[13/31] Compiling UnbreakCore Signals.swift
[14/31] Compiling UnbreakCore Repair+QuotedScript.swift
[15/31] Compiling UnbreakCore Repair.swift
[16/31] Emitting module UnbreakCore
[17/31] Compiling UnbreakCore MergeSplit.swift
[18/31] Compiling UnbreakCore Repair+QuoteBar.swift
[19/31] Compiling UnbreakCore RepairReport.swift
[21/32] Compiling UnbreakCore Unshatter.swift
[22/32] Compiling UnbreakCore WatchGate.swift
[22/32] Wrapping AST for Clipboard for debugging
[24/32] Compiling UnbreakCore WrapProfile.swift
[25/33] Wrapping AST for UnbreakCore for debugging
[27/45] Compiling Watch WatchSession.swift
[28/45] Compiling Watch WatchLock.swift
[29/45] Compiling Watch WatchLog.swift
/host/spi-builder-workspace/Sources/Watch/WatchLog.swift:66:48: error: 'atomic' is unavailable: atomic writing is unavailable in WASI because temporary files are not supported
64 | } else {
65 | // File does not exist yet — create it with this first line.
66 | try? data.write(to: url, options: .atomic)
| `- error: 'atomic' is unavailable: atomic writing is unavailable in WASI because temporary files are not supported
67 | }
68 | }
FoundationEssentials.Data.WritingOptions.atomic:4:23: note: 'atomic' has been explicitly marked unavailable here
2 | struct WritingOptions {
3 | @available(*, unavailable, message: "atomic writing is unavailable in WASI because temporary files are not supported")
4 | public static let atomic: Data.WritingOptions }
| `- note: 'atomic' has been explicitly marked unavailable here
5 | }
6 |
[30/46] Compiling Watch UndoServer.swift
[31/46] Compiling Watch UndoSocket.swift
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:133:25: error: cannot find type 'DispatchSourceRead' in scope
131 | private let server: UndoServer
132 | private var listenFD: Int32 = -1
133 | private var source: DispatchSourceRead?
| `- error: cannot find type 'DispatchSourceRead' in scope
134 |
135 | public init(socketURL: URL, server: UndoServer) {
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:48:52: error: value of type 'sockaddr_un' has no member 'sun_path'
46 | addr.sun_family = sa_family_t(AF_UNIX)
47 | let bytes = Array(path.utf8)
48 | let capacity = MemoryLayout.size(ofValue: addr.sun_path)
| `- error: value of type 'sockaddr_un' has no member 'sun_path'
49 | withUnsafeMutablePointer(to: &addr.sun_path) { rawPtr in
50 | rawPtr.withMemoryRebound(to: UInt8.self, capacity: capacity) { dst in
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:49:40: error: value of type 'sockaddr_un' has no member 'sun_path'
47 | let bytes = Array(path.utf8)
48 | let capacity = MemoryLayout.size(ofValue: addr.sun_path)
49 | withUnsafeMutablePointer(to: &addr.sun_path) { rawPtr in
| `- error: value of type 'sockaddr_un' has no member 'sun_path'
50 | rawPtr.withMemoryRebound(to: UInt8.self, capacity: capacity) { dst in
51 | for index in 0..<bytes.count { dst[index] = bytes[index] }
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:66:51: error: cannot find 'Darwin' in scope
64 | while buffer.count < maxBytes {
65 | let want = min(chunk.count, maxBytes - buffer.count)
66 | let read = chunk.withUnsafeMutableBytes { Darwin.read(fd, $0.baseAddress, want) }
| `- error: cannot find 'Darwin' in scope
67 | guard read > 0 else { break }
68 | buffer.append(contentsOf: chunk[0..<read])
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:84:21: error: cannot find 'Darwin' in scope
82 | var written = 0
83 | while written < count {
84 | let n = Darwin.write(fd, base + written, count - written)
| `- error: cannot find 'Darwin' in scope
85 | guard n > 0 else { return false }
86 | written += n
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:111:9: error: cannot find 'Darwin' in scope
109 | func close() {
110 | guard !isClosed else { return }
111 | Darwin.close(fd)
| `- error: cannot find 'Darwin' in scope
112 | isClosed = true
113 | }
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:148:26: error: cannot find 'DispatchSource' in scope
146 | listenFD = fd
147 |
148 | let readSource = DispatchSource.makeReadSource(fileDescriptor: fd, queue: .main)
| `- error: cannot find 'DispatchSource' in scope
149 | readSource.setEventHandler { [weak self] in
150 | self?.acceptOne()
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:148:84: error: cannot infer contextual base in reference to member 'main'
146 | listenFD = fd
147 |
148 | let readSource = DispatchSource.makeReadSource(fileDescriptor: fd, queue: .main)
| `- error: cannot infer contextual base in reference to member 'main'
149 | readSource.setEventHandler { [weak self] in
150 | self?.acceptOne()
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:153:13: error: cannot find 'Darwin' in scope
151 | }
152 | readSource.setCancelHandler {
153 | Darwin.close(fd)
| `- error: cannot find 'Darwin' in scope
154 | }
155 | source = readSource
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:180:18: error: cannot find 'socket' in scope
178 | throw UndoSocketError.pathTooLong(path.utf8.count)
179 | }
180 | let fd = socket(AF_UNIX, SOCK_STREAM, 0)
| `- error: cannot find 'socket' in scope
181 | guard fd >= 0 else { throw UndoSocketError.socketFailed(errno) }
182 |
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:180:34: error: cannot find 'SOCK_STREAM' in scope
178 | throw UndoSocketError.pathTooLong(path.utf8.count)
179 | }
180 | let fd = socket(AF_UNIX, SOCK_STREAM, 0)
| `- error: cannot find 'SOCK_STREAM' in scope
181 | guard fd >= 0 else { throw UndoSocketError.socketFailed(errno) }
182 |
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:189:68: error: cannot find 'bind' in scope
187 | let length = socklen_t(MemoryLayout<sockaddr_un>.size)
188 | let bound = withUnsafePointer(to: &addr) {
189 | $0.withMemoryRebound(to: sockaddr.self, capacity: 1) { bind(fd, $0, length) }
| `- error: cannot find 'bind' in scope
190 | }
191 | guard bound == 0 else {
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:193:13: error: cannot find 'Darwin' in scope
191 | guard bound == 0 else {
192 | let code = errno
193 | Darwin.close(fd)
| `- error: cannot find 'Darwin' in scope
194 | throw UndoSocketError.bindFailed(code)
195 | }
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:196:15: error: cannot find 'listen' in scope
194 | throw UndoSocketError.bindFailed(code)
195 | }
196 | guard listen(fd, 4) == 0 else {
| `- error: cannot find 'listen' in scope
197 | let code = errno
198 | Darwin.close(fd)
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:198:13: error: cannot find 'Darwin' in scope
196 | guard listen(fd, 4) == 0 else {
197 | let code = errno
198 | Darwin.close(fd)
| `- error: cannot find 'Darwin' in scope
199 | throw UndoSocketError.listenFailed(code)
200 | }
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:234:18: error: cannot find 'socket' in scope
232 | return .error("socket path too long")
233 | }
234 | let fd = socket(AF_UNIX, SOCK_STREAM, 0)
| `- error: cannot find 'socket' in scope
235 | guard fd >= 0 else { return .error("socket() failed") }
236 | defer { Darwin.close(fd) }
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:234:34: error: cannot find 'SOCK_STREAM' in scope
232 | return .error("socket path too long")
233 | }
234 | let fd = socket(AF_UNIX, SOCK_STREAM, 0)
| `- error: cannot find 'SOCK_STREAM' in scope
235 | guard fd >= 0 else { return .error("socket() failed") }
236 | defer { Darwin.close(fd) }
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:236:17: error: cannot find 'Darwin' in scope
234 | let fd = socket(AF_UNIX, SOCK_STREAM, 0)
235 | guard fd >= 0 else { return .error("socket() failed") }
236 | defer { Darwin.close(fd) }
| `- error: cannot find 'Darwin' in scope
237 |
238 | var addr = makeUndoSockaddr(path: path)
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:241:68: error: cannot find 'connect' in scope
239 | let length = socklen_t(MemoryLayout<sockaddr_un>.size)
240 | let connected = withUnsafePointer(to: &addr) {
241 | $0.withMemoryRebound(to: sockaddr.self, capacity: 1) { connect(fd, $0, length) }
| `- error: cannot find 'connect' in scope
242 | }
243 | // ENOENT / ECONNREFUSED both mean "no daemon listening here" — an ordinary
error: emit-module command failed with exit code 1 (use -v to see invocation)
[32/46] Compiling Watch Rollback.swift
[33/46] Compiling Watch UndoProtocol.swift
[34/46] Emitting module Watch
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:133:25: error: cannot find type 'DispatchSourceRead' in scope
131 | private let server: UndoServer
132 | private var listenFD: Int32 = -1
133 | private var source: DispatchSourceRead?
| `- error: cannot find type 'DispatchSourceRead' in scope
134 |
135 | public init(socketURL: URL, server: UndoServer) {
[35/46] Compiling Config TOML.swift
[36/46] Compiling Config ConfigLoader.swift
[37/46] Compiling Config Config.swift
[38/46] Emitting module Config
[39/47] Compiling Watch Watcher.swift
BUILD FAILURE 6.3 wasm