Build Information
Failed to build unbreak, reference main (997dcb), with Swift 6.3 for Android on 29 Sep 2026 05:25:31 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-54344845-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:android-6.3-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/bart-turczynski/unbreak.git
Reference: main
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
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 997dcb7 Merge branch 'docs/agents-mirror-note' into 'main'
Cloned https://github.com/bart-turczynski/unbreak.git
Revision (git rev-parse @):
997dcb7c28f985a8362190cf0446096584ed8ba5
SUCCESS checkout https://github.com/bart-turczynski/unbreak.git at main
========================================
Build
========================================
Selected platform: android
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-54344845-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:android-6.3-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1
android-6.3-latest: Pulling from saguaro1/spi-images
Digest: sha256:8ca9e1e6d70fd53f5b05e4f64d92569d697563f7f457a1485802bc9eb2cd1382
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:android-6.3-latest
Building for debugging...
[0/17] Write sources
[7/17] Write swift-version-272D24FF697CF451.txt
[9/30] Emitting module Clipboard
[10/30] Compiling Clipboard Pasteboard.swift
[11/31] Compiling UnbreakCore Unshatter.swift
[13/32] Compiling UnbreakCore Signals.swift
[14/32] Compiling UnbreakCore WatchGate.swift
[15/32] Compiling UnbreakCore MergeSplit.swift
[16/32] Compiling UnbreakCore Repair+QuoteBar.swift
[17/32] Compiling UnbreakCore Repair+QuotedScript.swift
[18/32] Compiling UnbreakCore Repair.swift
[19/32] Compiling UnbreakCore RepairReport.swift
[20/32] Compiling UnbreakCore DisplayWidth.swift
[21/32] Compiling UnbreakCore Heredoc.swift
[22/32] Emitting module UnbreakCore
[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 WatchLog.swift
[28/46] Compiling Watch WatchSession.swift
[29/46] Compiling Watch WatchLock.swift
[30/46] Compiling Watch UndoProtocol.swift
error: emit-module command failed with exit code 1 (use -v to see invocation)
[31/46] Compiling Watch Rollback.swift
[32/46] Emitting module Watch
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:44:48: error: cannot find type 'sockaddr_un' in scope
42 |
43 | /// Build a `sockaddr_un` for `path`, copying the UTF-8 bytes into `sun_path`.
44 | private func makeUndoSockaddr(path: String) -> sockaddr_un {
| `- error: cannot find type 'sockaddr_un' in scope
45 | var addr = sockaddr_un()
46 | addr.sun_family = sa_family_t(AF_UNIX)
[33/46] Compiling Watch UndoSocket.swift
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:44:48: error: cannot find type 'sockaddr_un' in scope
42 |
43 | /// Build a `sockaddr_un` for `path`, copying the UTF-8 bytes into `sun_path`.
44 | private func makeUndoSockaddr(path: String) -> sockaddr_un {
| `- error: cannot find type 'sockaddr_un' in scope
45 | var addr = sockaddr_un()
46 | addr.sun_family = sa_family_t(AF_UNIX)
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:45:16: error: cannot find 'sockaddr_un' in scope
43 | /// Build a `sockaddr_un` for `path`, copying the UTF-8 bytes into `sun_path`.
44 | private func makeUndoSockaddr(path: String) -> sockaddr_un {
45 | var addr = sockaddr_un()
| `- error: cannot find 'sockaddr_un' in scope
46 | addr.sun_family = sa_family_t(AF_UNIX)
47 | let bytes = Array(path.utf8)
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:46:23: error: cannot find 'sa_family_t' in scope
44 | private func makeUndoSockaddr(path: String) -> sockaddr_un {
45 | var addr = sockaddr_un()
46 | addr.sun_family = sa_family_t(AF_UNIX)
| `- error: cannot find 'sa_family_t' in scope
47 | let bytes = Array(path.utf8)
48 | let capacity = MemoryLayout.size(ofValue: addr.sun_path)
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:46:35: error: cannot find 'AF_UNIX' in scope
44 | private func makeUndoSockaddr(path: String) -> sockaddr_un {
45 | var addr = sockaddr_un()
46 | addr.sun_family = sa_family_t(AF_UNIX)
| `- error: cannot find 'AF_UNIX' in scope
47 | let bytes = Array(path.utf8)
48 | let capacity = MemoryLayout.size(ofValue: addr.sun_path)
/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: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:163:9: error: cannot find 'unlink' in scope
161 | source?.cancel()
162 | source = nil
163 | unlink(socketURL.path)
| `- error: cannot find 'unlink' in scope
164 | listenFD = -1
165 | }
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:170:28: error: cannot find 'accept' in scope
168 | /// ignored — the source will fire again if more connections are queued.
169 | private func acceptOne() {
170 | let connectionFD = accept(listenFD, nil, nil)
| `- error: cannot find 'accept' in scope
171 | guard connectionFD >= 0 else { return }
172 | server.serve(FileDescriptorConnection(fd: connectionFD))
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:170:45: error: 'nil' requires a contextual type
168 | /// ignored — the source will fire again if more connections are queued.
169 | private func acceptOne() {
170 | let connectionFD = accept(listenFD, nil, nil)
| `- error: 'nil' requires a contextual type
171 | guard connectionFD >= 0 else { return }
172 | server.serve(FileDescriptorConnection(fd: connectionFD))
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:170:50: error: 'nil' requires a contextual type
168 | /// ignored — the source will fire again if more connections are queued.
169 | private func acceptOne() {
170 | let connectionFD = accept(listenFD, nil, nil)
| `- error: 'nil' requires a contextual type
171 | guard connectionFD >= 0 else { return }
172 | server.serve(FileDescriptorConnection(fd: connectionFD))
/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:25: error: cannot find 'AF_UNIX' in scope
178 | throw UndoSocketError.pathTooLong(path.utf8.count)
179 | }
180 | let fd = socket(AF_UNIX, SOCK_STREAM, 0)
| `- error: cannot find 'AF_UNIX' 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:181:65: error: cannot find 'errno' in scope
179 | }
180 | let fd = socket(AF_UNIX, SOCK_STREAM, 0)
181 | guard fd >= 0 else { throw UndoSocketError.socketFailed(errno) }
| `- error: cannot find 'errno' in scope
182 |
183 | // Remove any stale socket left by a crashed/killed daemon before binding.
/root/.swiftpm/swift-sdks/swift-6.3.2-RELEASE_android.artifactbundle/swift-android/ndk-sysroot/usr/include/errno.h:58:9: note: macro 'errno' unavailable: structure not supported
56 | * thread.
57 | */
58 | #define errno (*__errno())
| `- note: macro 'errno' unavailable: structure not supported
59 |
60 | __END_DECLS
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:184:9: error: cannot find 'unlink' in scope
182 |
183 | // Remove any stale socket left by a crashed/killed daemon before binding.
184 | unlink(path)
| `- error: cannot find 'unlink' in scope
185 |
186 | var addr = makeUndoSockaddr(path: path)
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:187:45: error: cannot find type 'sockaddr_un' in scope
185 |
186 | var addr = makeUndoSockaddr(path: path)
187 | let length = socklen_t(MemoryLayout<sockaddr_un>.size)
| `- error: cannot find type 'sockaddr_un' in scope
188 | let bound = withUnsafePointer(to: &addr) {
189 | $0.withMemoryRebound(to: sockaddr.self, capacity: 1) { bind(fd, $0, length) }
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:189:38: error: cannot find 'sockaddr' 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 'sockaddr' in scope
190 | }
191 | guard bound == 0 else {
/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:189:16: error: generic parameter 'T' could not be inferred
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: generic parameter 'T' could not be inferred
190 | }
191 | guard bound == 0 else {
Swift.UnsafePointer.withMemoryRebound:2:13: note: in call to function 'withMemoryRebound(to:capacity:_:)'
1 | generic struct UnsafePointer {
2 | public func withMemoryRebound<T, E, Result>(to type: T.Type, capacity count: Int, _ body: (_ pointer: UnsafePointer<T>) throws(E) -> Result) throws(E) -> Result where E : Error, T : ~Copyable, Result : ~Copyable}
| `- note: in call to function 'withMemoryRebound(to:capacity:_:)'
3 |
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:192:24: error: cannot find 'errno' in scope
190 | }
191 | guard bound == 0 else {
192 | let code = errno
| `- error: cannot find 'errno' in scope
193 | Darwin.close(fd)
194 | throw UndoSocketError.bindFailed(code)
/root/.swiftpm/swift-sdks/swift-6.3.2-RELEASE_android.artifactbundle/swift-android/ndk-sysroot/usr/include/errno.h:58:9: note: macro 'errno' unavailable: structure not supported
56 | * thread.
57 | */
58 | #define errno (*__errno())
| `- note: macro 'errno' unavailable: structure not supported
59 |
60 | __END_DECLS
/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:197:24: error: cannot find 'errno' in scope
195 | }
196 | guard listen(fd, 4) == 0 else {
197 | let code = errno
| `- error: cannot find 'errno' in scope
198 | Darwin.close(fd)
199 | throw UndoSocketError.listenFailed(code)
/root/.swiftpm/swift-sdks/swift-6.3.2-RELEASE_android.artifactbundle/swift-android/ndk-sysroot/usr/include/errno.h:58:9: note: macro 'errno' unavailable: structure not supported
56 | * thread.
57 | */
58 | #define errno (*__errno())
| `- note: macro 'errno' unavailable: structure not supported
59 |
60 | __END_DECLS
/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:25: error: cannot find 'AF_UNIX' in scope
232 | return .error("socket path too long")
233 | }
234 | let fd = socket(AF_UNIX, SOCK_STREAM, 0)
| `- error: cannot find 'AF_UNIX' 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:239:45: error: cannot find type 'sockaddr_un' in scope
237 |
238 | var addr = makeUndoSockaddr(path: path)
239 | let length = socklen_t(MemoryLayout<sockaddr_un>.size)
| `- error: cannot find type 'sockaddr_un' in scope
240 | let connected = withUnsafePointer(to: &addr) {
241 | $0.withMemoryRebound(to: sockaddr.self, capacity: 1) { connect(fd, $0, length) }
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:241:38: error: cannot find 'sockaddr' 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 'sockaddr' in scope
242 | }
243 | // ENOENT / ECONNREFUSED both mean "no daemon listening here" — an ordinary
/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
/host/spi-builder-workspace/Sources/Watch/UndoSocket.swift:241:16: error: generic parameter 'T' could not be inferred
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: generic parameter 'T' could not be inferred
242 | }
243 | // ENOENT / ECONNREFUSED both mean "no daemon listening here" — an ordinary
Swift.UnsafePointer.withMemoryRebound:2:13: note: in call to function 'withMemoryRebound(to:capacity:_:)'
1 | generic struct UnsafePointer {
2 | public func withMemoryRebound<T, E, Result>(to type: T.Type, capacity count: Int, _ body: (_ pointer: UnsafePointer<T>) throws(E) -> Result) throws(E) -> Result where E : Error, T : ~Copyable, Result : ~Copyable}
| `- note: in call to function 'withMemoryRebound(to:capacity:_:)'
3 |
[34/46] Compiling Watch UndoServer.swift
[35/46] Emitting module Config
[36/46] Compiling Config ConfigLoader.swift
[37/46] Compiling Config Config.swift
[38/46] Compiling Config TOML.swift
[40/47] Compiling Watch Watcher.swift
[40/47] Wrapping AST for Config for debugging
BUILD FAILURE 6.3 android