Build Information
Failed to build Tarscape, reference main (ce0261), with Swift 6.3 for Android on 12 Apr 2026 20:14:27 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4609320-3":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/swiftpackageindex/spi-images:android-6.3-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1Build Log
========================================
RunAll
========================================
Builder version: 4.70.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/kayembi/Tarscape.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/kayembi/Tarscape
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at ce02616 - Added NaNo word count code and updated hoist header view.
Cloned https://github.com/kayembi/Tarscape.git
Revision (git rev-parse @):
ce026160f8f009275afd1cc8175a199aa3ec0072
SUCCESS checkout https://github.com/kayembi/Tarscape.git at main
========================================
Build
========================================
Selected platform: android
Swift version: 6.3
Building package at path: $PWD
https://github.com/kayembi/Tarscape.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-3":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/swiftpackageindex/spi-images:android-6.3-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1
android-6.3-latest: Pulling from swiftpackageindex/spi-images
Digest: sha256:9008270ea37a55e78725e6225015adb5eff8582da520c5232bf0499f32c36dc4
Status: Image is up to date for registry.gitlab.com/swiftpackageindex/spi-images:android-6.3-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version--4F562202D5529B1.txt
error: emit-module command failed with exit code 1 (use -v to see invocation)
[3/11] Emitting module Tarscape
/host/spi-builder-workspace/Sources/Tarscape/FileManager+Tar.swift:10:2: error: Objective-C interoperability is disabled
8 | import Foundation
9 |
10 | @objc // Expose this extension to Objective-C.
| `- error: Objective-C interoperability is disabled
11 | public extension FileManager {
12 |
/host/spi-builder-workspace/Sources/Tarscape/FileManager+Tar.swift:58:6: error: Objective-C interoperability is disabled
56 | /// permissions be ignored. This can significantly speed up the extraction process.
57 | /// - Parameter progressBody: A closure with a `Double` parameter representing the current progress (from 0.0 to 1.0).
58 | @objc(extractTarAtURL:toDirectoryAtURL:restoreAttributes:progressBlock:error:)
| `- error: Objective-C interoperability is disabled
59 | func extractTar(at tarURL: URL, to dirURL: URL, restoreAttributes: Bool, progress: Progress? = nil) throws {
60 | try extractTar(at: tarURL, to: dirURL, options: restoreAttributes ? .restoreFileAttributes : [], progress: progress)
/host/spi-builder-workspace/Sources/Tarscape/FileManager+Tar.swift:69:6: error: Objective-C interoperability is disabled
67 | /// is set to `true`, archiving will check for alias files and store them as symbolic links. This can take longer.
68 | /// - Parameter progressBody: A closure with a `Double` parameter representing the current progress (from 0.0 to 1.0).
69 | @objc(createTarAtURL:fromDirectoryAtURL:convertAliasFiles:progressBlock:error:)
| `- error: Objective-C interoperability is disabled
70 | func createTar(at tarURL: URL, from dirURL: URL, convertAliasFiles: Bool, progress: Progress? = nil) throws {
71 | try createTar(at: tarURL, from: dirURL, options: convertAliasFiles ? .convertAliasFiles : [], progress: progress)
[4/11] Compiling Tarscape Data+Tar.swift
/host/spi-builder-workspace/Sources/Tarscape/FileManager+Tar.swift:10:2: error: Objective-C interoperability is disabled
8 | import Foundation
9 |
10 | @objc // Expose this extension to Objective-C.
| `- error: Objective-C interoperability is disabled
11 | public extension FileManager {
12 |
/host/spi-builder-workspace/Sources/Tarscape/FileManager+Tar.swift:58:6: error: Objective-C interoperability is disabled
56 | /// permissions be ignored. This can significantly speed up the extraction process.
57 | /// - Parameter progressBody: A closure with a `Double` parameter representing the current progress (from 0.0 to 1.0).
58 | @objc(extractTarAtURL:toDirectoryAtURL:restoreAttributes:progressBlock:error:)
| `- error: Objective-C interoperability is disabled
59 | func extractTar(at tarURL: URL, to dirURL: URL, restoreAttributes: Bool, progress: Progress? = nil) throws {
60 | try extractTar(at: tarURL, to: dirURL, options: restoreAttributes ? .restoreFileAttributes : [], progress: progress)
/host/spi-builder-workspace/Sources/Tarscape/FileManager+Tar.swift:69:6: error: Objective-C interoperability is disabled
67 | /// is set to `true`, archiving will check for alias files and store them as symbolic links. This can take longer.
68 | /// - Parameter progressBody: A closure with a `Double` parameter representing the current progress (from 0.0 to 1.0).
69 | @objc(createTarAtURL:fromDirectoryAtURL:convertAliasFiles:progressBlock:error:)
| `- error: Objective-C interoperability is disabled
70 | func createTar(at tarURL: URL, from dirURL: URL, convertAliasFiles: Bool, progress: Progress? = nil) throws {
71 | try createTar(at: tarURL, from: dirURL, options: convertAliasFiles ? .convertAliasFiles : [], progress: progress)
[5/11] Compiling Tarscape FileManager+Tar.swift
/host/spi-builder-workspace/Sources/Tarscape/FileManager+Tar.swift:10:2: error: Objective-C interoperability is disabled
8 | import Foundation
9 |
10 | @objc // Expose this extension to Objective-C.
| `- error: Objective-C interoperability is disabled
11 | public extension FileManager {
12 |
/host/spi-builder-workspace/Sources/Tarscape/FileManager+Tar.swift:58:6: error: Objective-C interoperability is disabled
56 | /// permissions be ignored. This can significantly speed up the extraction process.
57 | /// - Parameter progressBody: A closure with a `Double` parameter representing the current progress (from 0.0 to 1.0).
58 | @objc(extractTarAtURL:toDirectoryAtURL:restoreAttributes:progressBlock:error:)
| `- error: Objective-C interoperability is disabled
59 | func extractTar(at tarURL: URL, to dirURL: URL, restoreAttributes: Bool, progress: Progress? = nil) throws {
60 | try extractTar(at: tarURL, to: dirURL, options: restoreAttributes ? .restoreFileAttributes : [], progress: progress)
/host/spi-builder-workspace/Sources/Tarscape/FileManager+Tar.swift:69:6: error: Objective-C interoperability is disabled
67 | /// is set to `true`, archiving will check for alias files and store them as symbolic links. This can take longer.
68 | /// - Parameter progressBody: A closure with a `Double` parameter representing the current progress (from 0.0 to 1.0).
69 | @objc(createTarAtURL:fromDirectoryAtURL:convertAliasFiles:progressBlock:error:)
| `- error: Objective-C interoperability is disabled
70 | func createTar(at tarURL: URL, from dirURL: URL, convertAliasFiles: Bool, progress: Progress? = nil) throws {
71 | try createTar(at: tarURL, from: dirURL, options: convertAliasFiles ? .convertAliasFiles : [], progress: progress)
[6/12] Compiling Tarscape KBTarErrors.swift
[7/12] Compiling Tarscape Int+Tar.swift
[8/12] Compiling Tarscape KBFileAttributes.swift
/host/spi-builder-workspace/Sources/Tarscape/KBFileAttributes.swift:33:24: error: cannot find 'stat' in scope
31 |
32 | let fileSystemRep = FileManager.default.fileSystemRepresentation(withPath: fileURL.path)
33 | var fileStat = stat()
| `- error: cannot find 'stat' in scope
34 | lstat(fileSystemRep, &fileStat)
35 |
/host/spi-builder-workspace/Sources/Tarscape/KBFileAttributes.swift:34:9: error: cannot find 'lstat' in scope
32 | let fileSystemRep = FileManager.default.fileSystemRepresentation(withPath: fileURL.path)
33 | var fileStat = stat()
34 | lstat(fileSystemRep, &fileStat)
| `- error: cannot find 'lstat' in scope
35 |
36 | // Alias files are different from symbolic links, and C's stat() mode cannot
/host/spi-builder-workspace/Sources/Tarscape/KBFileAttributes.swift:88:24: error: cannot find 'S_IFMT' in scope
86 | // https://github.com/RubyNative/SwiftRuby/blob/master/Stat.swift
87 | fileprivate init(mode: mode_t) {
88 | if (mode & S_IFMT) == S_IFDIR {
| `- error: cannot find 'S_IFMT' in scope
89 | self = .directory
90 | }
/host/spi-builder-workspace/Sources/Tarscape/KBFileAttributes.swift:88:35: error: cannot find 'S_IFDIR' in scope
86 | // https://github.com/RubyNative/SwiftRuby/blob/master/Stat.swift
87 | fileprivate init(mode: mode_t) {
88 | if (mode & S_IFMT) == S_IFDIR {
| `- error: cannot find 'S_IFDIR' in scope
89 | self = .directory
90 | }
/host/spi-builder-workspace/Sources/Tarscape/KBFileAttributes.swift:91:29: error: cannot find 'S_IFMT' in scope
89 | self = .directory
90 | }
91 | else if (mode & S_IFMT) == S_IFLNK {
| `- error: cannot find 'S_IFMT' in scope
92 | self = .symbolicLink
93 | } else {
/host/spi-builder-workspace/Sources/Tarscape/KBFileAttributes.swift:91:40: error: cannot find 'S_IFLNK' in scope
89 | self = .directory
90 | }
91 | else if (mode & S_IFMT) == S_IFLNK {
| `- error: cannot find 'S_IFLNK' in scope
92 | self = .symbolicLink
93 | } else {
[9/12] Compiling Tarscape KBTar.swift
[10/12] Compiling Tarscape KBTarEntry.swift
[11/12] Compiling Tarscape KBTarArchiver.swift
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:107:17: error: cannot find 'autoreleasepool' in scope
105 | // progress.
106 | func encode(fileURL: URL) throws {
107 | try autoreleasepool {
| `- error: cannot find 'autoreleasepool' in scope
108 | // Work out the subpath.
109 | let subpath = String(fileURL.standardizedFileURL.path.dropFirst(basepathLen))
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:216:40: error: incorrect argument labels in call (have 'resolvingAliasFileAt:options:', expected 'template:variables:')
214 | if options.contains(.convertAliasFiles) && fileAttributes?.fileType == .alias {
215 | // Aliases are slighlty different from symbolic links.
216 | linkName = try? URL(resolvingAliasFileAt: fileURL, options: [.withoutUI, .withoutMounting]).path
| `- error: incorrect argument labels in call (have 'resolvingAliasFileAt:options:', expected 'template:variables:')
217 | } else {
218 | linkName = try? FileManager.default.destinationOfSymbolicLink(atPath: fileURL.path)
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:216:81: error: dictionary of type '[URL.Template.VariableName : URL.Template.Value]' cannot be used with array literal
214 | if options.contains(.convertAliasFiles) && fileAttributes?.fileType == .alias {
215 | // Aliases are slighlty different from symbolic links.
216 | linkName = try? URL(resolvingAliasFileAt: fileURL, options: [.withoutUI, .withoutMounting]).path
| |- error: dictionary of type '[URL.Template.VariableName : URL.Template.Value]' cannot be used with array literal
| `- note: did you mean to use a dictionary literal instead?
217 | } else {
218 | linkName = try? FileManager.default.destinationOfSymbolicLink(atPath: fileURL.path)
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:216:83: error: type 'URL.Template.VariableName' has no member 'withoutUI'
214 | if options.contains(.convertAliasFiles) && fileAttributes?.fileType == .alias {
215 | // Aliases are slighlty different from symbolic links.
216 | linkName = try? URL(resolvingAliasFileAt: fileURL, options: [.withoutUI, .withoutMounting]).path
| `- error: type 'URL.Template.VariableName' has no member 'withoutUI'
217 | } else {
218 | linkName = try? FileManager.default.destinationOfSymbolicLink(atPath: fileURL.path)
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:216:95: error: type 'URL.Template.VariableName' has no member 'withoutMounting'
214 | if options.contains(.convertAliasFiles) && fileAttributes?.fileType == .alias {
215 | // Aliases are slighlty different from symbolic links.
216 | linkName = try? URL(resolvingAliasFileAt: fileURL, options: [.withoutUI, .withoutMounting]).path
| `- error: type 'URL.Template.VariableName' has no member 'withoutMounting'
217 | } else {
218 | linkName = try? FileManager.default.destinationOfSymbolicLink(atPath: fileURL.path)
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:216:111: error: value of optional type 'URL?' must be unwrapped to refer to member 'path' of wrapped base type 'URL'
214 | if options.contains(.convertAliasFiles) && fileAttributes?.fileType == .alias {
215 | // Aliases are slighlty different from symbolic links.
216 | linkName = try? URL(resolvingAliasFileAt: fileURL, options: [.withoutUI, .withoutMounting]).path
| |- error: value of optional type 'URL?' must be unwrapped to refer to member 'path' of wrapped base type 'URL'
| `- note: chain the optional using '?' to access member 'path' only for non-'nil' base values
217 | } else {
218 | linkName = try? FileManager.default.destinationOfSymbolicLink(atPath: fileURL.path)
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:221:44: error: incorrect argument labels in call (have 'resolvingAliasFileAt:options:', expected 'template:variables:')
219 | if linkName == nil {
220 | // If we couldn't resolve the symbolic link, treat it as an alias.
221 | linkName = try? URL(resolvingAliasFileAt: fileURL, options: [.withoutUI, .withoutMounting]).path
| `- error: incorrect argument labels in call (have 'resolvingAliasFileAt:options:', expected 'template:variables:')
222 | }
223 | }
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:221:85: error: dictionary of type '[URL.Template.VariableName : URL.Template.Value]' cannot be used with array literal
219 | if linkName == nil {
220 | // If we couldn't resolve the symbolic link, treat it as an alias.
221 | linkName = try? URL(resolvingAliasFileAt: fileURL, options: [.withoutUI, .withoutMounting]).path
| |- error: dictionary of type '[URL.Template.VariableName : URL.Template.Value]' cannot be used with array literal
| `- note: did you mean to use a dictionary literal instead?
222 | }
223 | }
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:221:87: error: type 'URL.Template.VariableName' has no member 'withoutUI'
219 | if linkName == nil {
220 | // If we couldn't resolve the symbolic link, treat it as an alias.
221 | linkName = try? URL(resolvingAliasFileAt: fileURL, options: [.withoutUI, .withoutMounting]).path
| `- error: type 'URL.Template.VariableName' has no member 'withoutUI'
222 | }
223 | }
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:221:99: error: type 'URL.Template.VariableName' has no member 'withoutMounting'
219 | if linkName == nil {
220 | // If we couldn't resolve the symbolic link, treat it as an alias.
221 | linkName = try? URL(resolvingAliasFileAt: fileURL, options: [.withoutUI, .withoutMounting]).path
| `- error: type 'URL.Template.VariableName' has no member 'withoutMounting'
222 | }
223 | }
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:221:115: error: value of optional type 'URL?' must be unwrapped to refer to member 'path' of wrapped base type 'URL'
219 | if linkName == nil {
220 | // If we couldn't resolve the symbolic link, treat it as an alias.
221 | linkName = try? URL(resolvingAliasFileAt: fileURL, options: [.withoutUI, .withoutMounting]).path
| |- error: value of optional type 'URL?' must be unwrapped to refer to member 'path' of wrapped base type 'URL'
| `- note: chain the optional using '?' to access member 'path' only for non-'nil' base values
222 | }
223 | }
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:216:32: warning: no calls to throwing functions occur within 'try' expression
214 | if options.contains(.convertAliasFiles) && fileAttributes?.fileType == .alias {
215 | // Aliases are slighlty different from symbolic links.
216 | linkName = try? URL(resolvingAliasFileAt: fileURL, options: [.withoutUI, .withoutMounting]).path
| `- warning: no calls to throwing functions occur within 'try' expression
217 | } else {
218 | linkName = try? FileManager.default.destinationOfSymbolicLink(atPath: fileURL.path)
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:221:36: warning: no calls to throwing functions occur within 'try' expression
219 | if linkName == nil {
220 | // If we couldn't resolve the symbolic link, treat it as an alias.
221 | linkName = try? URL(resolvingAliasFileAt: fileURL, options: [.withoutUI, .withoutMounting]).path
| `- warning: no calls to throwing functions occur within 'try' expression
222 | }
223 | }
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:483:17: error: cannot find 'autoreleasepool' in scope
481 | var remainingSize = size
482 | while remainingSize > copyChunkSize {
483 | try autoreleasepool {
| `- error: cannot find 'autoreleasepool' in scope
484 | if let content = try readingHandle.read(upToCount: copyChunkSize) {
485 | try fileHandle.write(contentsOf: content)
/host/spi-builder-workspace/Sources/Tarscape/KBTarArchiver.swift:492:17: error: cannot find 'autoreleasepool' in scope
490 | // Copy what's left.
491 | if remainingSize > 0 {
492 | try autoreleasepool {
| `- error: cannot find 'autoreleasepool' in scope
493 | if let content = try readingHandle.read(upToCount: remainingSize) {
494 | try fileHandle.write(contentsOf: content)
[12/12] Compiling Tarscape KBTarUnarchiver.swift
/host/spi-builder-workspace/Sources/Tarscape/KBTarUnarchiver.swift:411:17: error: cannot find 'autoreleasepool' in scope
409 | progressBody?(Double(location)/Double(size), Int64(location))
410 |
411 | try autoreleasepool { // Keep memory tidy.
| `- error: cannot find 'autoreleasepool' in scope
412 | let type = try type(at: location)
413 |
/host/spi-builder-workspace/Sources/Tarscape/KBTarUnarchiver.swift:686:17: error: cannot find 'autoreleasepool' in scope
684 | // Use an autorelease pool so that we don't consume memory
685 | // with large files.
686 | try autoreleasepool {
| `- error: cannot find 'autoreleasepool' in scope
687 | if let contents = try fileHandle.read(upToCount: maxReadingSize) {
688 | try destinationHandle.write(contentsOf: contents)
/host/spi-builder-workspace/Sources/Tarscape/KBTarUnarchiver.swift:695:17: error: cannot find 'autoreleasepool' in scope
693 | // Read what's left.
694 | if remainingSize > 0 {
695 | try autoreleasepool {
| `- error: cannot find 'autoreleasepool' in scope
696 | if let contents = try fileHandle.read(upToCount: remainingSize) {
697 | try destinationHandle.write(contentsOf: contents)
BUILD FAILURE 6.3 android