The Swift Package Index logo.Swift Package Index

Build Information

Failed to build PerfectZip, reference 4.0.0 (004ce7), with Swift 6.3 for Android on 25 Oct 2026 09:22:53 UTC.

Build Command

bash -c docker run --pull=always --rm -v "checkouts-54344849-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:android-6.3-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 5.1.3
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/perfectlysoft/perfect-zip.git
Reference: 4.0.0
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
 * tag               4.0.0      -> FETCH_HEAD
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 4.0.0
========================================
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-54344849-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: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 |         }
error: emit-module command failed with exit code 1 (use -v to see invocation)
[7/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
[8/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
[9/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
[10/13] Compiling PerfectZip EntryPath.swift
[11/13] Compiling PerfectZip Format.swift
[12/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, &times)
    |             `- 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 |         }
[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