Build Information
Failed to build PerfectZip, reference main (004ce7), with Swift 6.3 for Android on 25 Oct 2026 09:32:48 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-53886770-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.3
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/perfectlysoft/perfect-zip.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/perfectlysoft/perfect-zip
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 004ce7e Merge pull request #6 from PerfectlySoft/release-4.0.0
Cloned https://github.com/perfectlysoft/perfect-zip.git
Revision (git rev-parse @):
004ce7e34ca7c9ab18bcdf82a0364a03546657e4
SUCCESS checkout https://github.com/perfectlysoft/perfect-zip.git at main
========================================
Build
========================================
Selected platform: android
Swift version: 6.3
Building package at path: $PWD
https://github.com/perfectlysoft/perfect-zip.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-53886770-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:1259d966e40d034d138a282ea8b980b108763342a7ff8ac7ef483c73e99068f3
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:android-6.3-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-272D24FF697CF451.txt
[3/12] Compiling PerfectZip ZipCrypto.swift
[4/13] Compiling PerfectZip Utilities.swift
[5/13] Compiling PerfectZip Zip.swift
[6/13] Compiling PerfectZip Zipper.swift
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:36:22: error: cannot find 'stat' in scope
34 | var skip = [(dev_t, ino_t)]()
35 | for path in [temporary, zipFilePath] {
36 | var st = stat()
| `- error: cannot find 'stat' in scope
37 | if stat(path, &st) == 0 { skip.append((st.st_dev, st.st_ino)) }
38 | }
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:37:16: error: cannot find 'stat' in scope
35 | for path in [temporary, zipFilePath] {
36 | var st = stat()
37 | if stat(path, &st) == 0 { skip.append((st.st_dev, st.st_ino)) }
| `- error: cannot find 'stat' in scope
38 | }
39 | var items = [Item]()
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:57:17: error: cannot find 'unlink' in scope
55 | }
56 | guard status == .ZipSuccess, rename(temporary, zipFilePath) == 0 else {
57 | _ = unlink(temporary)
| `- error: cannot find 'unlink' in scope
58 | return status == .ZipSuccess ? .ZipFail : status
59 | }
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:68:18: error: cannot find 'stat' in scope
66 | private func collect(_ path: String, followLinks: Bool, parent: String?, into items: inout [Item],
67 | names: inout Set<String>, skipping skip: [(dev_t, ino_t)]) -> ZipStatus {
68 | var st = stat()
| `- error: cannot find 'stat' in scope
69 | let found = followLinks ? stat(path, &st) : lstat(path, &st)
70 | guard found == 0 else { return parent == nil ? .FileNotFound : .ZipFail }
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:69:35: error: cannot find 'stat' in scope
67 | names: inout Set<String>, skipping skip: [(dev_t, ino_t)]) -> ZipStatus {
68 | var st = stat()
69 | let found = followLinks ? stat(path, &st) : lstat(path, &st)
| `- error: cannot find 'stat' in scope
70 | guard found == 0 else { return parent == nil ? .FileNotFound : .ZipFail }
71 | if skip.contains(where: { $0.0 == st.st_dev && $0.1 == st.st_ino }) { return .ZipSuccess }
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:69:53: error: cannot find 'lstat' in scope
67 | names: inout Set<String>, skipping skip: [(dev_t, ino_t)]) -> ZipStatus {
68 | var st = stat()
69 | let found = followLinks ? stat(path, &st) : lstat(path, &st)
| `- error: cannot find 'lstat' in scope
70 | guard found == 0 else { return parent == nil ? .FileNotFound : .ZipFail }
71 | if skip.contains(where: { $0.0 == st.st_dev && $0.1 == st.st_ino }) { return .ZipSuccess }
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:113:18: error: cannot find 'stat' in scope
111 |
112 | private func add(_ item: Item, to writer: ArchiveWriter) throws {
113 | var st = stat()
| `- error: cannot find 'stat' in scope
114 | let name = Array(item.entryName.utf8)
115 | if item.isDirectory {
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:116:19: error: cannot find 'stat' in scope
114 | let name = Array(item.entryName.utf8)
115 | if item.isDirectory {
116 | guard stat(item.sourcePath, &st) == 0 else { throw ArchiveError.io("stat") }
| `- error: cannot find 'stat' in scope
117 | try writer.add(name: name, isDirectory: true, unixMode: UInt32(st.st_mode),
118 | modified: Int(modificationTime(st)), sizeHint: 0, source: nil)
/host/spi-builder-workspace/Sources/PerfectZip/POSIX.swift:58:29: error: cannot find type 'stat' in scope
56 |
57 | /// The modification time of a `stat` result, in seconds since the epoch.
58 | func modificationTime(_ st: stat) -> time_t {
| `- error: cannot find type 'stat' in scope
59 | #if canImport(Darwin)
60 | return st.st_mtimespec.tv_sec
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:121:18: error: cannot find 'open' in scope
119 | return
120 | }
121 | let fd = open(item.sourcePath, O_RDONLY | O_CLOEXEC | (item.followLinks ? 0 : O_NOFOLLOW))
| `- error: cannot find 'open' in scope
122 | guard fd >= 0 else { throw ArchiveError.io("open") }
123 | defer { closeFD(fd) }
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:121:40: error: cannot find 'O_RDONLY' in scope
119 | return
120 | }
121 | let fd = open(item.sourcePath, O_RDONLY | O_CLOEXEC | (item.followLinks ? 0 : O_NOFOLLOW))
| `- error: cannot find 'O_RDONLY' in scope
122 | guard fd >= 0 else { throw ArchiveError.io("open") }
123 | defer { closeFD(fd) }
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:121:51: error: cannot find 'O_CLOEXEC' in scope
119 | return
120 | }
121 | let fd = open(item.sourcePath, O_RDONLY | O_CLOEXEC | (item.followLinks ? 0 : O_NOFOLLOW))
| `- error: cannot find 'O_CLOEXEC' in scope
122 | guard fd >= 0 else { throw ArchiveError.io("open") }
123 | defer { closeFD(fd) }
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:121:87: error: cannot find 'O_NOFOLLOW' in scope
119 | return
120 | }
121 | let fd = open(item.sourcePath, O_RDONLY | O_CLOEXEC | (item.followLinks ? 0 : O_NOFOLLOW))
| `- error: cannot find 'O_NOFOLLOW' in scope
122 | guard fd >= 0 else { throw ArchiveError.io("open") }
123 | defer { closeFD(fd) }
/host/spi-builder-workspace/Sources/PerfectZip/Zipper.swift:124:15: error: cannot find 'fstat' in scope
122 | guard fd >= 0 else { throw ArchiveError.io("open") }
123 | defer { closeFD(fd) }
124 | guard fstat(fd, &st) == 0, UInt32(st.st_mode) & FileType.mask == FileType.regular else {
| `- error: cannot find 'fstat' in scope
125 | throw ArchiveError.io("not a regular file")
126 | }
[7/13] Compiling PerfectZip Unzipper.swift
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:65:22: error: cannot find 'open' in scope
63 | // writes happen relative to a descriptor for that resolved directory.
64 | guard let root = canonicalPath(destination) else { return .UnzipFail }
65 | let rootFD = open(root, O_RDONLY | O_DIRECTORY | O_CLOEXEC)
| `- error: cannot find 'open' in scope
66 | guard rootFD >= 0 else { return .UnzipFail }
67 | defer { closeFD(rootFD) }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:65:33: error: cannot find 'O_RDONLY' in scope
63 | // writes happen relative to a descriptor for that resolved directory.
64 | guard let root = canonicalPath(destination) else { return .UnzipFail }
65 | let rootFD = open(root, O_RDONLY | O_DIRECTORY | O_CLOEXEC)
| `- error: cannot find 'O_RDONLY' in scope
66 | guard rootFD >= 0 else { return .UnzipFail }
67 | defer { closeFD(rootFD) }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:65:44: error: cannot find 'O_DIRECTORY' in scope
63 | // writes happen relative to a descriptor for that resolved directory.
64 | guard let root = canonicalPath(destination) else { return .UnzipFail }
65 | let rootFD = open(root, O_RDONLY | O_DIRECTORY | O_CLOEXEC)
| `- error: cannot find 'O_DIRECTORY' in scope
66 | guard rootFD >= 0 else { return .UnzipFail }
67 | defer { closeFD(rootFD) }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:65:58: error: cannot find 'O_CLOEXEC' in scope
63 | // writes happen relative to a descriptor for that resolved directory.
64 | guard let root = canonicalPath(destination) else { return .UnzipFail }
65 | let rootFD = open(root, O_RDONLY | O_DIRECTORY | O_CLOEXEC)
| `- error: cannot find 'O_CLOEXEC' in scope
66 | guard rootFD >= 0 else { return .UnzipFail }
67 | defer { closeFD(rootFD) }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:111:23: error: cannot find 'dup' in scope
109 | /// been moved out of the destination. ``EntryPath/maxDepth`` bounds the cost of the walk.
110 | private func openDirectory(_ components: some Collection<String>, under rootFD: Int32) -> (Int32, ZipStatus) {
111 | var current = dup(rootFD)
| `- error: cannot find 'dup' in scope
112 | guard current >= 0 else { return (-1, .UnzipFail) }
113 | let flags = O_RDONLY | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:113:21: error: cannot find 'O_RDONLY' in scope
111 | var current = dup(rootFD)
112 | guard current >= 0 else { return (-1, .UnzipFail) }
113 | let flags = O_RDONLY | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC
| `- error: cannot find 'O_RDONLY' in scope
114 | for component in components {
115 | // Open first and create only when missing: one system call per existing level.
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:113:32: error: cannot find 'O_DIRECTORY' in scope
111 | var current = dup(rootFD)
112 | guard current >= 0 else { return (-1, .UnzipFail) }
113 | let flags = O_RDONLY | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC
| `- error: cannot find 'O_DIRECTORY' in scope
114 | for component in components {
115 | // Open first and create only when missing: one system call per existing level.
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:113:46: error: cannot find 'O_NOFOLLOW' in scope
111 | var current = dup(rootFD)
112 | guard current >= 0 else { return (-1, .UnzipFail) }
113 | let flags = O_RDONLY | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC
| `- error: cannot find 'O_NOFOLLOW' in scope
114 | for component in components {
115 | // Open first and create only when missing: one system call per existing level.
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:113:59: error: cannot find 'O_CLOEXEC' in scope
111 | var current = dup(rootFD)
112 | guard current >= 0 else { return (-1, .UnzipFail) }
113 | let flags = O_RDONLY | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC
| `- error: cannot find 'O_CLOEXEC' in scope
114 | for component in components {
115 | // Open first and create only when missing: one system call per existing level.
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:116:24: error: cannot find 'openat' in scope
114 | for component in components {
115 | // Open first and create only when missing: one system call per existing level.
116 | var next = openat(current, component, flags)
| `- error: cannot find 'openat' in scope
117 | if next < 0 && errno == ENOENT {
118 | if mkdirat(current, component, 0o755) != 0 && errno != EEXIST {
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:117:28: error: cannot find 'errno' in scope
115 | // Open first and create only when missing: one system call per existing level.
116 | var next = openat(current, component, flags)
117 | if next < 0 && errno == ENOENT {
| `- error: cannot find 'errno' in scope
118 | if mkdirat(current, component, 0o755) != 0 && errno != EEXIST {
119 | closeFD(current)
/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/PerfectZip/Unzipper.swift:118:20: error: cannot find 'mkdirat' in scope
116 | var next = openat(current, component, flags)
117 | if next < 0 && errno == ENOENT {
118 | if mkdirat(current, component, 0o755) != 0 && errno != EEXIST {
| `- error: cannot find 'mkdirat' in scope
119 | closeFD(current)
120 | return (-1, .UnzipFail)
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:118:63: error: cannot find 'errno' in scope
116 | var next = openat(current, component, flags)
117 | if next < 0 && errno == ENOENT {
118 | if mkdirat(current, component, 0o755) != 0 && errno != EEXIST {
| `- error: cannot find 'errno' in scope
119 | closeFD(current)
120 | return (-1, .UnzipFail)
/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/PerfectZip/Unzipper.swift:122:24: error: cannot find 'openat' in scope
120 | return (-1, .UnzipFail)
121 | }
122 | next = openat(current, component, flags)
| `- error: cannot find 'openat' in scope
123 | }
124 | if next < 0 {
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:148:18: error: cannot find 'openat' in scope
146 | // a failure keeps the original, and a hard link to the original (perhaps from outside
147 | // the destination) is broken rather than written through.
148 | var fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o644)
| `- error: cannot find 'openat' in scope
149 | var temporary: String?
150 | var replacedMode: mode_t?
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:148:38: error: cannot find 'O_WRONLY' in scope
146 | // a failure keeps the original, and a hard link to the original (perhaps from outside
147 | // the destination) is broken rather than written through.
148 | var fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o644)
| `- error: cannot find 'O_WRONLY' in scope
149 | var temporary: String?
150 | var replacedMode: mode_t?
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:148:49: error: cannot find 'O_CREAT' in scope
146 | // a failure keeps the original, and a hard link to the original (perhaps from outside
147 | // the destination) is broken rather than written through.
148 | var fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o644)
| `- error: cannot find 'O_CREAT' in scope
149 | var temporary: String?
150 | var replacedMode: mode_t?
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:148:59: error: cannot find 'O_EXCL' in scope
146 | // a failure keeps the original, and a hard link to the original (perhaps from outside
147 | // the destination) is broken rather than written through.
148 | var fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o644)
| `- error: cannot find 'O_EXCL' in scope
149 | var temporary: String?
150 | var replacedMode: mode_t?
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:148:68: error: cannot find 'O_NOFOLLOW' in scope
146 | // a failure keeps the original, and a hard link to the original (perhaps from outside
147 | // the destination) is broken rather than written through.
148 | var fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o644)
| `- error: cannot find 'O_NOFOLLOW' in scope
149 | var temporary: String?
150 | var replacedMode: mode_t?
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:148:81: error: cannot find 'O_CLOEXEC' in scope
146 | // a failure keeps the original, and a hard link to the original (perhaps from outside
147 | // the destination) is broken rather than written through.
148 | var fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o644)
| `- error: cannot find 'O_CLOEXEC' in scope
149 | var temporary: String?
150 | var replacedMode: mode_t?
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:152:19: error: cannot find 'errno' in scope
150 | var replacedMode: mode_t?
151 | if fd < 0 {
152 | guard errno == EEXIST else { return .UnzipFail }
| `- error: cannot find 'errno' in scope
153 | var st = stat()
154 | guard fstatat(dirFD, name, &st, AT_SYMLINK_NOFOLLOW) == 0 else { return .UnzipFail }
/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/PerfectZip/Unzipper.swift:153:22: error: cannot find 'stat' in scope
151 | if fd < 0 {
152 | guard errno == EEXIST else { return .UnzipFail }
153 | var st = stat()
| `- error: cannot find 'stat' in scope
154 | guard fstatat(dirFD, name, &st, AT_SYMLINK_NOFOLLOW) == 0 else { return .UnzipFail }
155 | switch UInt32(st.st_mode) & FileType.mask {
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:154:19: error: cannot find 'fstatat' in scope
152 | guard errno == EEXIST else { return .UnzipFail }
153 | var st = stat()
154 | guard fstatat(dirFD, name, &st, AT_SYMLINK_NOFOLLOW) == 0 else { return .UnzipFail }
| `- error: cannot find 'fstatat' in scope
155 | switch UInt32(st.st_mode) & FileType.mask {
156 | case FileType.symlink:
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:154:45: error: cannot find 'AT_SYMLINK_NOFOLLOW' in scope
152 | guard errno == EEXIST else { return .UnzipFail }
153 | var st = stat()
154 | guard fstatat(dirFD, name, &st, AT_SYMLINK_NOFOLLOW) == 0 else { return .UnzipFail }
| `- error: cannot find 'AT_SYMLINK_NOFOLLOW' in scope
155 | switch UInt32(st.st_mode) & FileType.mask {
156 | case FileType.symlink:
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:164:26: error: cannot find 'openat' in scope
162 | for _ in 0..<8 where fd < 0 {
163 | let candidate = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).tmp"
164 | fd = openat(dirFD, candidate, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o600)
| `- error: cannot find 'openat' in scope
165 | if fd >= 0 { temporary = candidate } else if errno != EEXIST { break }
166 | }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:164:51: error: cannot find 'O_WRONLY' in scope
162 | for _ in 0..<8 where fd < 0 {
163 | let candidate = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).tmp"
164 | fd = openat(dirFD, candidate, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o600)
| `- error: cannot find 'O_WRONLY' in scope
165 | if fd >= 0 { temporary = candidate } else if errno != EEXIST { break }
166 | }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:164:62: error: cannot find 'O_CREAT' in scope
162 | for _ in 0..<8 where fd < 0 {
163 | let candidate = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).tmp"
164 | fd = openat(dirFD, candidate, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o600)
| `- error: cannot find 'O_CREAT' in scope
165 | if fd >= 0 { temporary = candidate } else if errno != EEXIST { break }
166 | }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:164:72: error: cannot find 'O_EXCL' in scope
162 | for _ in 0..<8 where fd < 0 {
163 | let candidate = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).tmp"
164 | fd = openat(dirFD, candidate, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o600)
| `- error: cannot find 'O_EXCL' in scope
165 | if fd >= 0 { temporary = candidate } else if errno != EEXIST { break }
166 | }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:164:81: error: cannot find 'O_NOFOLLOW' in scope
162 | for _ in 0..<8 where fd < 0 {
163 | let candidate = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).tmp"
164 | fd = openat(dirFD, candidate, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o600)
| `- error: cannot find 'O_NOFOLLOW' in scope
165 | if fd >= 0 { temporary = candidate } else if errno != EEXIST { break }
166 | }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:164:94: error: cannot find 'O_CLOEXEC' in scope
162 | for _ in 0..<8 where fd < 0 {
163 | let candidate = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).tmp"
164 | fd = openat(dirFD, candidate, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o600)
| `- error: cannot find 'O_CLOEXEC' in scope
165 | if fd >= 0 { temporary = candidate } else if errno != EEXIST { break }
166 | }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:165:66: error: cannot find 'errno' in scope
163 | let candidate = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).tmp"
164 | fd = openat(dirFD, candidate, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o600)
165 | if fd >= 0 { temporary = candidate } else if errno != EEXIST { break }
| `- error: cannot find 'errno' in scope
166 | }
167 | guard fd >= 0 else { return .UnzipFail }
/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/PerfectZip/Unzipper.swift:186:12: error: cannot find 'close' in scope
184 | status = .UnzipFail
185 | }
186 | if close(fd) != 0 && status == .ZipSuccess { status = .UnzipFail }
| `- error: cannot find 'close' in scope
187 | if status == .ZipSuccess, let temporary, renameat(dirFD, temporary, dirFD, name) != 0 {
188 | status = .UnzipFail // for example, the target became a directory meanwhile
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:190:40: error: cannot find 'unlinkat' in scope
188 | status = .UnzipFail // for example, the target became a directory meanwhile
189 | }
190 | if status != .ZipSuccess { _ = unlinkat(dirFD, written, 0) }
| `- error: cannot find 'unlinkat' in scope
191 | return status
192 | }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:211:59: error: cannot find 'fchmod' in scope
209 | }
210 | // A new file without a Unix mode keeps the 0o644 (less umask) it was created with.
211 | if let permissions = permissions ?? oldMode { _ = fchmod(fd, permissions) }
| `- error: cannot find 'fchmod' in scope
212 | guard let seconds = info.modificationTime else { return }
213 | var times = [timespec(tv_sec: time_t(seconds), tv_nsec: 0), timespec(tv_sec: time_t(seconds), tv_nsec: 0)]
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:214:13: error: cannot find 'futimens' in scope
212 | guard let seconds = info.modificationTime else { return }
213 | var times = [timespec(tv_sec: time_t(seconds), tv_nsec: 0), timespec(tv_sec: time_t(seconds), tv_nsec: 0)]
214 | _ = futimens(fd, ×)
| `- error: cannot find 'futimens' in scope
215 | }
216 | }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:241:22: error: cannot find 'openat' in scope
239 | for _ in 0..<8 {
240 | let name = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).umask"
241 | let fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o777)
| `- error: cannot find 'openat' in scope
242 | if fd < 0 {
243 | if errno == EEXIST { continue }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:241:42: error: cannot find 'O_WRONLY' in scope
239 | for _ in 0..<8 {
240 | let name = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).umask"
241 | let fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o777)
| `- error: cannot find 'O_WRONLY' in scope
242 | if fd < 0 {
243 | if errno == EEXIST { continue }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:241:53: error: cannot find 'O_CREAT' in scope
239 | for _ in 0..<8 {
240 | let name = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).umask"
241 | let fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o777)
| `- error: cannot find 'O_CREAT' in scope
242 | if fd < 0 {
243 | if errno == EEXIST { continue }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:241:63: error: cannot find 'O_EXCL' in scope
239 | for _ in 0..<8 {
240 | let name = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).umask"
241 | let fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o777)
| `- error: cannot find 'O_EXCL' in scope
242 | if fd < 0 {
243 | if errno == EEXIST { continue }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:241:72: error: cannot find 'O_NOFOLLOW' in scope
239 | for _ in 0..<8 {
240 | let name = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).umask"
241 | let fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o777)
| `- error: cannot find 'O_NOFOLLOW' in scope
242 | if fd < 0 {
243 | if errno == EEXIST { continue }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:241:85: error: cannot find 'O_CLOEXEC' in scope
239 | for _ in 0..<8 {
240 | let name = ".perfectzip-\(UInt64.random(in: 0...UInt64.max)).umask"
241 | let fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o777)
| `- error: cannot find 'O_CLOEXEC' in scope
242 | if fd < 0 {
243 | if errno == EEXIST { continue }
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:243:20: error: cannot find 'errno' in scope
241 | let fd = openat(dirFD, name, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW | O_CLOEXEC, 0o777)
242 | if fd < 0 {
243 | if errno == EEXIST { continue }
| `- error: cannot find 'errno' in scope
244 | return nil
245 | }
/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/PerfectZip/Unzipper.swift:246:22: error: cannot find 'stat' in scope
244 | return nil
245 | }
246 | var st = stat()
| `- error: cannot find 'stat' in scope
247 | let ok = fstat(fd, &st) == 0
248 | closeFD(fd)
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:247:22: error: cannot find 'fstat' in scope
245 | }
246 | var st = stat()
247 | let ok = fstat(fd, &st) == 0
| `- error: cannot find 'fstat' in scope
248 | closeFD(fd)
249 | _ = unlinkat(dirFD, name, 0)
/host/spi-builder-workspace/Sources/PerfectZip/Unzipper.swift:249:17: error: cannot find 'unlinkat' in scope
247 | let ok = fstat(fd, &st) == 0
248 | closeFD(fd)
249 | _ = unlinkat(dirFD, name, 0)
| `- error: cannot find 'unlinkat' in scope
250 | return ok ? ~st.st_mode & 0o777 : nil
251 | }
error: emit-module command failed with exit code 1 (use -v to see invocation)
[8/13] Compiling PerfectZip EntryPath.swift
[9/13] Compiling PerfectZip Format.swift
[10/13] Emitting module PerfectZip
/host/spi-builder-workspace/Sources/PerfectZip/POSIX.swift:58:29: error: cannot find type 'stat' in scope
56 |
57 | /// The modification time of a `stat` result, in seconds since the epoch.
58 | func modificationTime(_ st: stat) -> time_t {
| `- error: cannot find type 'stat' in scope
59 | #if canImport(Darwin)
60 | return st.st_mtimespec.tv_sec
[11/13] Compiling PerfectZip ArchiveReader.swift
/host/spi-builder-workspace/Sources/PerfectZip/ArchiveReader.swift:51:14: error: 'open' is unavailable: Variadic function is unavailable
49 |
50 | init(path: String) throws {
51 | fd = open(path, O_RDONLY | O_CLOEXEC)
| `- error: 'open' is unavailable: Variadic function is unavailable
52 | guard fd >= 0 else { throw ArchiveError.io("open") }
53 | var st = stat()
/root/.swiftpm/swift-sdks/swift-6.3.2-RELEASE_android.artifactbundle/swift-android/ndk-sysroot/usr/include/fcntl.h:134:5: note: 'open' has been explicitly marked unavailable here
132 | * failure.
133 | */
134 | int open(const char* _Nonnull __path, int __flags, ...);
| `- note: 'open' has been explicitly marked unavailable here
135 | /** See open(). */
136 | int open64(const char* _Nonnull __path, int __flags, ...);
/host/spi-builder-workspace/Sources/PerfectZip/ArchiveReader.swift:72:25: error: cannot find 'errno' in scope
70 | while done < count {
71 | let n = pread(fd, base + done, count - done, off_t(offset + UInt64(done)))
72 | if n < 0 && errno == EINTR { continue }
| `- error: cannot find 'errno' in scope
73 | guard n > 0 else { throw ArchiveError.io("read") }
74 | done += n
/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/PerfectZip/ArchiveWriter.swift:28:14: error: 'open' is unavailable: Variadic function is unavailable
26 |
27 | init(path: String) throws {
28 | fd = open(path, O_WRONLY | O_CREAT | O_EXCL | O_CLOEXEC, 0o666)
| `- error: 'open' is unavailable: Variadic function is unavailable
29 | guard fd >= 0 else { throw ArchiveError.io("create archive") }
30 | input = .allocate(byteCount: Self.bufferSize, alignment: 16)
/root/.swiftpm/swift-sdks/swift-6.3.2-RELEASE_android.artifactbundle/swift-android/ndk-sysroot/usr/include/fcntl.h:134:5: note: 'open' has been explicitly marked unavailable here
132 | * failure.
133 | */
134 | int open(const char* _Nonnull __path, int __flags, ...);
| `- note: 'open' has been explicitly marked unavailable here
135 | /** See open(). */
136 | int open64(const char* _Nonnull __path, int __flags, ...);
/host/spi-builder-workspace/Sources/PerfectZip/ArchiveWriter.swift:55:29: error: cannot find 'errno' in scope
53 | while done < buf.count {
54 | let n = pwrite(fd, buf.baseAddress! + done, buf.count - done, off_t(position + UInt64(done)))
55 | if n < 0 && errno == EINTR { continue }
| `- error: cannot find 'errno' in scope
56 | guard n > 0 else { throw ArchiveError.io("write") }
57 | done += n
/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
[12/13] Compiling PerfectZip ArchiveWriter.swift
/host/spi-builder-workspace/Sources/PerfectZip/ArchiveReader.swift:51:14: error: 'open' is unavailable: Variadic function is unavailable
49 |
50 | init(path: String) throws {
51 | fd = open(path, O_RDONLY | O_CLOEXEC)
| `- error: 'open' is unavailable: Variadic function is unavailable
52 | guard fd >= 0 else { throw ArchiveError.io("open") }
53 | var st = stat()
/root/.swiftpm/swift-sdks/swift-6.3.2-RELEASE_android.artifactbundle/swift-android/ndk-sysroot/usr/include/fcntl.h:134:5: note: 'open' has been explicitly marked unavailable here
132 | * failure.
133 | */
134 | int open(const char* _Nonnull __path, int __flags, ...);
| `- note: 'open' has been explicitly marked unavailable here
135 | /** See open(). */
136 | int open64(const char* _Nonnull __path, int __flags, ...);
/host/spi-builder-workspace/Sources/PerfectZip/ArchiveReader.swift:72:25: error: cannot find 'errno' in scope
70 | while done < count {
71 | let n = pread(fd, base + done, count - done, off_t(offset + UInt64(done)))
72 | if n < 0 && errno == EINTR { continue }
| `- error: cannot find 'errno' in scope
73 | guard n > 0 else { throw ArchiveError.io("read") }
74 | done += n
/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/PerfectZip/ArchiveWriter.swift:28:14: error: 'open' is unavailable: Variadic function is unavailable
26 |
27 | init(path: String) throws {
28 | fd = open(path, O_WRONLY | O_CREAT | O_EXCL | O_CLOEXEC, 0o666)
| `- error: 'open' is unavailable: Variadic function is unavailable
29 | guard fd >= 0 else { throw ArchiveError.io("create archive") }
30 | input = .allocate(byteCount: Self.bufferSize, alignment: 16)
/root/.swiftpm/swift-sdks/swift-6.3.2-RELEASE_android.artifactbundle/swift-android/ndk-sysroot/usr/include/fcntl.h:134:5: note: 'open' has been explicitly marked unavailable here
132 | * failure.
133 | */
134 | int open(const char* _Nonnull __path, int __flags, ...);
| `- note: 'open' has been explicitly marked unavailable here
135 | /** See open(). */
136 | int open64(const char* _Nonnull __path, int __flags, ...);
/host/spi-builder-workspace/Sources/PerfectZip/ArchiveWriter.swift:55:29: error: cannot find 'errno' in scope
53 | while done < buf.count {
54 | let n = pwrite(fd, buf.baseAddress! + done, buf.count - done, off_t(position + UInt64(done)))
55 | if n < 0 && errno == EINTR { continue }
| `- error: cannot find 'errno' in scope
56 | guard n > 0 else { throw ArchiveError.io("write") }
57 | done += n
/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
[13/13] Compiling PerfectZip POSIX.swift
/host/spi-builder-workspace/Sources/PerfectZip/POSIX.swift:58:29: error: cannot find type 'stat' in scope
56 |
57 | /// The modification time of a `stat` result, in seconds since the epoch.
58 | func modificationTime(_ st: stat) -> time_t {
| `- error: cannot find type 'stat' in scope
59 | #if canImport(Darwin)
60 | return st.st_mtimespec.tv_sec
/host/spi-builder-workspace/Sources/PerfectZip/POSIX.swift:16:14: error: cannot find 'stat' in scope
14 | /// The `st_mode` file-type bits of `name` in `dirfd`, without following a final symlink.
15 | func fileType(at dirfd: Int32, _ name: String) -> UInt32? {
16 | var st = stat()
| `- error: cannot find 'stat' in scope
17 | guard fstatat(dirfd, name, &st, AT_SYMLINK_NOFOLLOW) == 0 else { return nil }
18 | return UInt32(st.st_mode) & FileType.mask
/host/spi-builder-workspace/Sources/PerfectZip/POSIX.swift:17:11: error: cannot find 'fstatat' in scope
15 | func fileType(at dirfd: Int32, _ name: String) -> UInt32? {
16 | var st = stat()
17 | guard fstatat(dirfd, name, &st, AT_SYMLINK_NOFOLLOW) == 0 else { return nil }
| `- error: cannot find 'fstatat' in scope
18 | return UInt32(st.st_mode) & FileType.mask
19 | }
/host/spi-builder-workspace/Sources/PerfectZip/POSIX.swift:17:37: error: cannot find 'AT_SYMLINK_NOFOLLOW' in scope
15 | func fileType(at dirfd: Int32, _ name: String) -> UInt32? {
16 | var st = stat()
17 | guard fstatat(dirfd, name, &st, AT_SYMLINK_NOFOLLOW) == 0 else { return nil }
| `- error: cannot find 'AT_SYMLINK_NOFOLLOW' in scope
18 | return UInt32(st.st_mode) & FileType.mask
19 | }
/host/spi-builder-workspace/Sources/PerfectZip/POSIX.swift:25:17: error: cannot find 'write' in scope
23 | var offset = 0
24 | while offset < count {
25 | let n = write(fd, base + offset, count - offset)
| `- error: cannot find 'write' in scope
26 | if n < 0 {
27 | if errno == EINTR { continue }
/host/spi-builder-workspace/Sources/PerfectZip/POSIX.swift:27:16: error: cannot find 'errno' in scope
25 | let n = write(fd, base + offset, count - offset)
26 | if n < 0 {
27 | if errno == EINTR { continue }
| `- error: cannot find 'errno' in scope
28 | return false
29 | }
/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/PerfectZip/POSIX.swift:39:17: error: cannot find 'read' in scope
37 | func readSome(_ fd: Int32, _ base: UnsafeMutableRawPointer, _ count: Int) -> Int {
38 | while true {
39 | let n = read(fd, base, count)
| `- error: cannot find 'read' in scope
40 | if n < 0 && errno == EINTR { continue }
41 | return n
/host/spi-builder-workspace/Sources/PerfectZip/POSIX.swift:40:21: error: cannot find 'errno' in scope
38 | while true {
39 | let n = read(fd, base, count)
40 | if n < 0 && errno == EINTR { continue }
| `- error: cannot find 'errno' in scope
41 | return n
42 | }
/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/PerfectZip/POSIX.swift:47:9: error: cannot find 'close' in scope
45 | /// Closes `fd`, ignoring EINTR (the descriptor is released either way on Darwin and Linux).
46 | func closeFD(_ fd: Int32) {
47 | _ = close(fd)
| `- error: cannot find 'close' in scope
48 | }
49 |
BUILD FAILURE 6.3 android