Build Information
Failed to build Valet, reference main (43f517), with Swift 6.4 for Android on 26 Sep 2026 09:56:36 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-54344844-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:android-6.4-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/square/Valet.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/square/Valet
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 43f5179 Update watchOS minimum version to 5 (#363)
Cloned https://github.com/square/Valet.git
Revision (git rev-parse @):
43f517941ced37752c0cd5e2b53a3c9d021c848b
SUCCESS checkout https://github.com/square/Valet.git at main
========================================
Build
========================================
Selected platform: android
Swift version: 6.4
Building package at path: $PWD
https://github.com/square/Valet.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-54344844-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:android-6.4-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1
android-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:abadcff584c273feba50641b454858d377ba30b35ea7287a94f45ebd8afd0ea0
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:android-6.4-latest
Building for debugging...
[Planning deferred tasks]
[28 / 36] Valet
error: SwiftCompile normal aarch64 failed with a nonzero exit code. Command line: cd /host
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:130:85: [1;31merror: [1;39mcannot find type 'OSStatus' in scope[0;0m
[0;36m128 |[0;0m // MARK: Contains
[0;36m129 |[0;0m
[0;36m130 |[0;0m static func performCopy(forKey key: String, options: [String : AnyHashable]) -> [4;39mOSStatus[0;0m {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'OSStatus' in scope[0;0m
[0;36m131 |[0;0m guard !key.isEmpty else {
[0;36m132 |[0;0m return errSecParam
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:59:72: [1;31merror: [1;39mcannot find type 'OSStatus' in scope[0;0m
[0;36m57 |[0;0m }
[0;36m58 |[0;0m
[0;36m59 |[0;0m static func performCopy(matching query: [String : AnyHashable]) -> [4;39mOSStatus[0;0m {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'OSStatus' in scope[0;0m
[0;36m60 |[0;0m guard !query.isEmpty else {
[0;36m61 |[0;0m // Must provide a query with at least one item
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: [1;31merror: [1;39mcannot find 'NSMapTable' in scope[0;0m
[0;36m33 |[0;0m
[0;36m34 |[0;0m private let lock = NSLock()
[0;36m35 |[0;0m private let identifierToValetMap = [4;39mNSMapTable[0;0m<NSString, T>.strongToWeakObjects()
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find 'NSMapTable' in scope[0;0m
[0;36m36 |[0;0m }
[0;36m37 |[0;0m
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: [1;31merror: [1;39mcannot find type 'OSStatus' in scope[0;0m
[0;36m35 |[0;0m case emptyValue
[0;36m36 |[0;0m
[0;36m37 |[0;0m init(status: [4;39mOSStatus[0;0m) {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'OSStatus' in scope[0;0m
[0;36m38 |[0;0m switch status {
[0;36m39 |[0;0m case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:52:2: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m50 |[0;0m // MARK: - Objective-C Compatibility
[0;36m51 |[0;0m
[0;36m52 |[0;0m @objc(VALMigratableKeyValuePairInput)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m53 |[0;0m public final class ObjectiveCCompatibilityMigratableKeyValuePairInput: NSObject {
[0;36m54 |[0;0m
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:65:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m63 |[0;0m
[0;36m64 |[0;0m /// The key in the key:value pair.
[0;36m65 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m66 |[0;0m public let key: Any
[0;36m67 |[0;0m /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:68:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m66 |[0;0m public let key: Any
[0;36m67 |[0;0m /// The value in the key:value pair.
[0;36m68 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m69 |[0;0m public let value: Data
[0;36m70 |[0;0m }
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:72:2: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m70 |[0;0m }
[0;36m71 |[0;0m
[0;36m72 |[0;0m @objc(VALMigratableKeyValuePairOutput)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m73 |[0;0m public class ObjectiveCCompatibilityMigratableKeyValuePairOutput: NSObject {
[0;36m74 |[0;0m
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:81:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m79 |[0;0m /// - key: The key in the key:value pair.
[0;36m80 |[0;0m /// - value: The value in the key:value pair.
[0;36m81 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m82 |[0;0m public init(key: String, value: Data) {
[0;36m83 |[0;0m self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:92:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m90 |[0;0m /// - key: The key in the key:value pair.
[0;36m91 |[0;0m /// - stringValue: The desired value in the key:value pair, represented as a String.
[0;36m92 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m93 |[0;0m public init(key: String, stringValue: String) {
[0;36m94 |[0;0m self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:103:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m101 |[0;0m /// A sentinal `ObjectiveCCompatibilityMigratableKeyValuePairOutput` that conveys that the migration should be prevented.
[0;36m102 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m103 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m104 |[0;0m public static func preventMigration() -> ObjectiveCCompatibilityMigratableKeyValuePairOutput {
[0;36m105 |[0;0m ObjectiveCCompatibilityPreventMigrationOutput()
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:111:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m109 |[0;0m
[0;36m110 |[0;0m /// The key in the key:value pair.
[0;36m111 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m112 |[0;0m public let key: String
[0;36m113 |[0;0m /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:114:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m112 |[0;0m public let key: String
[0;36m113 |[0;0m /// The value in the key:value pair.
[0;36m114 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m115 |[0;0m public let value: Data
[0;36m116 |[0;0m
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveAccessControl.swift:55:27: [1;31merror: [1;39mcannot find type 'SecAccessControlCreateFlags' in scope[0;0m
[0;36m53 |[0;0m // MARK: Internal Properties
[0;36m54 |[0;0m
[0;36m55 |[0;0m var secAccessControl: [4;39mSecAccessControlCreateFlags[0;0m {
[0;36m|[0;0m `- [1;31merror: [1;39mcannot find type 'SecAccessControlCreateFlags' in scope[0;0m
[0;36m56 |[0;0m switch self {
[0;36m57 |[0;0m case .userPresence:
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:21:2: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m19 |[0;0m
[0;36m20 |[0;0m /// Reads and writes keychain elements that are stored on the Secure Enclave using Accessibility attribute `.whenPasscodeSetThisDeviceOnly`. Accessing these keychain elements will require the user to confirm their presence via Touch ID, Face ID, or passcode entry. If no passcode is set on the device, accessing the keychain via a `SecureEnclaveValet` will fail. Data is removed from the Secure Enclave when the user removes a passcode from the device.
[0;36m21 |[0;0m @objc(VALSecureEnclaveValet)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m22 |[0;0m public final class SecureEnclaveValet: NSObject, Sendable {
[0;36m23 |[0;0m
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:107:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m105 |[0;0m
[0;36m106 |[0;0m public let identifier: Identifier
[0;36m107 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m108 |[0;0m public let accessControl: SecureEnclaveAccessControl
[0;36m109 |[0;0m
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:114:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m112 |[0;0m /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
[0;36m113 |[0;0m /// - Note: Determined by writing a value to the keychain and then reading it back out. Will never prompt the user for Face ID, Touch ID, or password.
[0;36m114 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m115 |[0;0m public func canAccessKeychain() -> Bool {
[0;36m116 |[0;0m SecureEnclave.canAccessKeychain(with: service)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:138:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m136 |[0;0m /// - Important: Inserted data should be no larger than 4kb.
[0;36m137 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m138 |[0;0m @objc(setObject:forKey:error:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m139 |[0;0m public func objc_setObject(_ object: Data, forKey key: String) throws {
[0;36m140 |[0;0m try setObject(object, forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:183:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m181 |[0;0m /// - Throws: An error of type `KeychainError`.
[0;36m182 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m183 |[0;0m @objc(objectForKey:error:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m184 |[0;0m public func objc_object(forKey key: String) throws -> Data {
[0;36m185 |[0;0m try object(forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:222:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m220 |[0;0m /// - Important: Inserted data should be no larger than 4kb.
[0;36m221 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m222 |[0;0m @objc(setString:forKey:error:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m223 |[0;0m public func objc_setString(_ string: String, forKey key: String) throws {
[0;36m224 |[0;0m try setString(string, forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:261:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m259 |[0;0m /// - Throws: An error of type `KeychainError`.
[0;36m260 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m261 |[0;0m @objc(stringForKey:error:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m262 |[0;0m public func objc_string(forKey key: String) throws -> String {
[0;36m263 |[0;0m try string(forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:282:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m280 |[0;0m /// - Throws: An error of type `KeychainError`.
[0;36m281 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m282 |[0;0m @objc(removeObjectForKey:error:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m283 |[0;0m public func objc_removeObject(forKey key: String) throws {
[0;36m284 |[0;0m try removeObject(forKey: key)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:300:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m298 |[0;0m /// - Throws: An error of type `KeychainError`.
[0;36m299 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m300 |[0;0m @objc(removeAllObjectsAndReturnError:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m301 |[0;0m public func objc_removeAllObjects() throws {
[0;36m302 |[0;0m try removeAllObjects()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:311:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m309 |[0;0m /// - Throws: An error of type `KeychainError` or `MigrationError`.
[0;36m310 |[0;0m /// - Note: The keychain is not modified if an error is thrown.
[0;36m311 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m312 |[0;0m public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
[0;36m313 |[0;0m try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:324:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m322 |[0;0m /// - Throws: An error of type `KeychainError` or `MigrationError`.
[0;36m323 |[0;0m /// - Note: The keychain is not modified if an error is thrown.
[0;36m324 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m325 |[0;0m public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
[0;36m326 |[0;0m try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:373:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m371 |[0;0m /// - accessControl: The desired access control for the SecureEnclaveValet.
[0;36m372 |[0;0m /// - Returns: A SecureEnclaveValet that reads/writes keychain elements with the desired flavor.
[0;36m373 |[0;0m @objc(valetWithIdentifier:accessControl:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m374 |[0;0m public class func 🚫swift_valet(with identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
[0;36m375 |[0;0m guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:387:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m385 |[0;0m /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
[0;36m386 |[0;0m /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
[0;36m387 |[0;0m @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessControl:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m388 |[0;0m public class func 🚫swift_sharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
[0;36m389 |[0;0m guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:401:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m399 |[0;0m /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
[0;36m400 |[0;0m /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
[0;36m401 |[0;0m @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessControl:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m402 |[0;0m public class func 🚫swift_sharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
[0;36m403 |[0;0m guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:21:2: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m19 |[0;0m
[0;36m20 |[0;0m /// Reads and writes keychain elements.
[0;36m21 |[0;0m @objc(VALValet)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m22 |[0;0m public final class Valet: NSObject, Sendable {
[0;36m23 |[0;0m
/host/spi-builder-workspace/Sources/Valet/Valet.swift:228:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m226 |[0;0m // MARK: Public Properties
[0;36m227 |[0;0m
[0;36m228 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m229 |[0;0m public let accessibility: Accessibility
[0;36m230 |[0;0m public let identifier: Identifier
/host/spi-builder-workspace/Sources/Valet/Valet.swift:236:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m234 |[0;0m /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
[0;36m235 |[0;0m /// - Note: Determined by writing a value to the keychain and then reading it back out.
[0;36m236 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m237 |[0;0m public func canAccessKeychain() -> Bool {
[0;36m238 |[0;0m execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:262:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m260 |[0;0m /// - Important: Inserted data should be no larger than 4kb.
[0;36m261 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m262 |[0;0m @objc(setObject:forKey:error:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m263 |[0;0m public func objc_setObject(_ object: Data, forKey key: String) throws {
[0;36m264 |[0;0m try setObject(object, forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:282:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m280 |[0;0m /// - Throws: An error of type `KeychainError`.
[0;36m281 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m282 |[0;0m @objc(objectForKey:error:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m283 |[0;0m public func objc_object(forKey key: String) throws -> Data {
[0;36m284 |[0;0m try object(forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:325:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m323 |[0;0m /// - Important: Inserted data should be no larger than 4kb.
[0;36m324 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m325 |[0;0m @objc(setString:forKey:error:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m326 |[0;0m public func objc_setString(_ string: String, forKey key: String) throws {
[0;36m327 |[0;0m try setString(string, forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:344:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m342 |[0;0m /// - Returns: The string currently stored in the keychain for the provided key.
[0;36m343 |[0;0m /// - Throws: An error of type `KeychainError`.
[0;36m344 |[0;0m @objc(stringForKey:error:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m345 |[0;0m public func objc_string(forKey key: String) throws -> String {
[0;36m346 |[0;0m try string(forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:362:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m360 |[0;0m /// - Throws: An error of type `KeychainError`.
[0;36m361 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m362 |[0;0m @objc(allKeysWithError:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m363 |[0;0m public func objc_allKeys() throws -> Set<String> {
[0;36m364 |[0;0m try allKeys()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:384:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m382 |[0;0m /// - Note: No error is thrown if the `key` is not found in the keychain.
[0;36m383 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m384 |[0;0m @objc(removeObjectForKey:error:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m385 |[0;0m public func objc_removeObject(forKey key: String) throws {
[0;36m386 |[0;0m try removeObject(forKey: key)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:402:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m400 |[0;0m /// - Throws: An error of type `KeychainError`.
[0;36m401 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m402 |[0;0m @objc(removeAllObjectsAndReturnError:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m403 |[0;0m public func objc_removeAllObjects() throws {
[0;36m404 |[0;0m try removeAllObjects()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:425:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m423 |[0;0m /// - Throws: An error of type `KeychainError` or `MigrationError`.
[0;36m424 |[0;0m /// - Note: The keychain is not modified if an error is thrown.
[0;36m425 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m426 |[0;0m public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
[0;36m427 |[0;0m try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:450:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m448 |[0;0m /// - Throws: An error of type `KeychainError` or `MigrationError`.
[0;36m449 |[0;0m /// - Note: The keychain is not modified if an error is thrown.
[0;36m450 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m451 |[0;0m public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
[0;36m452 |[0;0m try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:460:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m458 |[0;0m /// - Throws: An error of type `KeychainError` or `MigrationError`.
[0;36m459 |[0;0m /// - Note: The keychain is not modified if an error is thrown.
[0;36m460 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m461 |[0;0m public func migrateObjectsFromAlwaysAccessibleValet(removeOnCompletion: Bool) throws {
[0;36m462 |[0;0m var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:493:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m491 |[0;0m /// - Throws: An error of type `KeychainError` or `MigrationError`.
[0;36m492 |[0;0m /// - Note: The keychain is not modified if an error is thrown.
[0;36m493 |[0;0m @objc
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m494 |[0;0m public func migrateObjectsFromAlwaysAccessibleThisDeviceOnlyValet(removeOnCompletion: Bool) throws {
[0;36m495 |[0;0m var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:562:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m560 |[0;0m /// - Returns: A Valet that reads/writes keychain elements with the desired accessibility.
[0;36m561 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m562 |[0;0m @objc(valetWithIdentifier:accessibility:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m563 |[0;0m public class func 🚫swift_vanillaValet(with identifier: String, accessibility: Accessibility) -> Valet? {
[0;36m564 |[0;0m guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:575:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m573 |[0;0m /// - Returns: A Valet that reads/writes iCloud-shared keychain elements with the desired accessibility.
[0;36m574 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m575 |[0;0m @objc(iCloudValetWithIdentifier:accessibility:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m576 |[0;0m public class func 🚫swift_iCloudValet(with identifier: String, accessibility: CloudAccessibility) -> Valet? {
[0;36m577 |[0;0m guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:590:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m588 |[0;0m /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
[0;36m589 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m590 |[0;0m @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m591 |[0;0m public class func 🚫swift_vanillaSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
[0;36m592 |[0;0m guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:605:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m603 |[0;0m /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
[0;36m604 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m605 |[0;0m @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m606 |[0;0m public class func 🚫swift_vanillaSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
[0;36m607 |[0;0m guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:619:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m617 |[0;0m /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
[0;36m618 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m619 |[0;0m @objc(iCloudValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m620 |[0;0m public class func 🚫swift_iCloudSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
[0;36m621 |[0;0m guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:633:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m631 |[0;0m /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
[0;36m632 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m633 |[0;0m @objc(iCloudValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m634 |[0;0m public class func 🚫swift_iCloudSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
[0;36m635 |[0;0m guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:649:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m647 |[0;0m /// - SeeAlso: https://github.com/square/Valet/issues/140
[0;36m648 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m649 |[0;0m @objc(valetWithExplicitlySetIdentifier:accessibility:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m650 |[0;0m public class func 🚫swift_valet(withExplicitlySet identifier: String, accessibility: Accessibility) -> Valet? {
[0;36m651 |[0;0m guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:665:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m663 |[0;0m /// - SeeAlso: https://github.com/square/Valet/issues/140
[0;36m664 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m665 |[0;0m @objc(iCloudValetWithExplicitlySetIdentifier:accessibility:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m666 |[0;0m public class func 🚫swift_iCloudValet(withExplicitlySet identifier: String, accessibility: CloudAccessibility) -> Valet? {
[0;36m667 |[0;0m guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:683:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m681 |[0;0m /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
[0;36m682 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m683 |[0;0m @objc(valetWithAppIDPrefix:explicitlySetSharedGroupIdentifier:accessibility:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m684 |[0;0m public class func 🚫swift_sharedGroupValet(appIDPrefix: String, withExplicitlySet identifier: String, accessibility: Accessibility) -> Valet? {
[0;36m685 |[0;0m guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:701:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m699 |[0;0m /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
[0;36m700 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m701 |[0;0m @objc(iCloudValetWithAppIDPrefix:explicitlySetSharedGroupIdentifier:accessibility:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m702 |[0;0m public class func 🚫swift_iCloudSharedGroupValet(appIDPrefix: String, withExplicitlySet identifier: String, accessibility: CloudAccessibility) -> Valet? {
[0;36m703 |[0;0m guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:715:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m713 |[0;0m /// - Note: Will never prompt the user for Face ID, Touch ID, or password.
[0;36m714 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m715 |[0;0m @objc(containsObjectForKey:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m716 |[0;0m public func 🚫swift_containsObject(forKey key: String) -> Bool {
[0;36m717 |[0;0m guard let containsObject = try? containsObject(forKey: key) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:729:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m727 |[0;0m /// - error: An error of type `KeychainError` or `MigrationError`.
[0;36m728 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m729 |[0;0m @objc(migrateObjectsMatching:compactMap:error:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m730 |[0;0m public func 🚫swift_migrateObjects(matching query: [String : AnyHashable], compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
[0;36m731 |[0;0m try objc_compatibility_migrateObjects(matching: query, compactMap: compactMap)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:740:6: [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m738 |[0;0m /// - error: An error of type `KeychainError` or `MigrationError`.
[0;36m739 |[0;0m @available(swift, obsoleted: 1.0)
[0;36m740 |[0;0m @objc(migrateObjectsFrom:compactMap:error:)
[0;36m|[0;0m `- [1;31merror: [1;39mObjective-C interoperability is disabled[0;0m
[0;36m741 |[0;0m public func 🚫swift_migrateObjects(from valet: Valet, compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
[0;36m742 |[0;0m try objc_compatibility_migrateObjects(matching: valet.baseKeychainQuery, compactMap: compactMap)
Failed frontend command:
/root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/bin/swift-frontend -frontend -emit-module -experimental-skip-non-inlinable-function-bodies-without-types /host/spi-builder-workspace/Sources/Valet/Accessibility.swift /host/spi-builder-workspace/Sources/Valet/CloudAccessibility.swift /host/spi-builder-workspace/Sources/Valet/Identifier.swift /host/spi-builder-workspace/Sources/Valet/Internal/Configuration.swift /host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift /host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift /host/spi-builder-workspace/Sources/Valet/Internal/Service.swift /host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift /host/spi-builder-workspace/Sources/Valet/KeychainError.swift /host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift /host/spi-builder-workspace/Sources/Valet/MigrationError.swift /host/spi-builder-workspace/Sources/Valet/SecureEnclave.swift /host/spi-builder-workspace/Sources/Valet/SecureEnclaveAccessControl.swift /host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift /host/spi-builder-workspace/Sources/Valet/SharedGroupIdentifier.swift /host/spi-builder-workspace/Sources/Valet/SinglePromptSecureEnclaveValet.swift /host/spi-builder-workspace/Sources/Valet/Valet.swift -target aarch64-unknown-linux-android28 -Xllvm -aarch64-use-tbi -disable-objc-interop -sdk /android-ndk/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -sysroot /android-ndk/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/sysroot -I /host/spi-builder-workspace/.build/out/Products/Debug-android-aarch64 -module-cache-path /host/spi-builder-workspace/.build/out/ModuleCache.noindex -color-diagnostics -Xcc -fcolor-diagnostics -enable-testing -g -debug-info-format\=dwarf -dwarf-version\=4 -swift-version 6 -Onone -D SWIFT_PACKAGE -D DEBUG -D SWIFT_MODULE_RESOURCE_BUNDLE_UNAVAILABLE -D Xcode -serialize-debugging-options -enable-experimental-feature DebugDescriptionMacro -empty-abi-descriptor -external-plugin-path /root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/lib/swift/host/plugins/testing\#/root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/bin/swift-plugin-server -validate-clang-modules-once -clang-build-session-file /host/spi-builder-workspace/.build/out/ModuleCache.noindex/Session.modulevalidation -Xcc -working-directory -Xcc /host -resource-dir /root/.swiftpm/swift-sdks/swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_android.artifactbundle/swift-android/swift-resources/usr/lib/swift-aarch64 -enable-anonymous-context-mangled-names -file-compilation-dir /host -Xcc -resource-dir -Xcc /android-ndk/android-ndk-r27d/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18 -Xcc -fno-omit-frame-pointer -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -Xcc -I/host/spi-builder-workspace/.build/out/Products/Debug-android-aarch64/include -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/Valet.build/Debug-android-aarch64/Valet-t.build/DerivedSources-normal/aarch64 -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/Valet.build/Debug-android-aarch64/Valet-t.build/DerivedSources/aarch64 -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/Valet.build/Debug-android-aarch64/Valet-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -no-auto-bridging-header-chaining -module-name Valet -package-name spi_builder_workspace -const-gather-protocols-file /host/spi-builder-workspace/.build/out/Intermediates.noindex/Valet.build/Debug-android-aarch64/Valet-t.build/Objects-normal/aarch64/Valet_const_extract_protocols.json -in-process-plugin-server-path /root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/lib/swift/host/libSwiftInProcPluginServer.so -plugin-path /root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/lib/swift/host/plugins -plugin-path /root/.local/share/swiftly/toolchains/6.4.x-snapshot-2026-09-04/usr/local/lib/swift/host/plugins -emit-module-doc-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Valet.build/Debug-android-aarch64/Valet-t.build/Objects-normal/aarch64/Modules/Valet.swiftdoc -emit-module-source-info-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Valet.build/Debug-android-aarch64/Valet-t.build/Objects-normal/aarch64/Modules/Valet.swiftsourceinfo -emit-objc-header-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Valet.build/Debug-android-aarch64/Valet-t.build/Objects-normal/aarch64/Valet-Swift.h -serialize-diagnostics-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Valet.build/Debug-android-aarch64/Valet-t.build/Objects-normal/aarch64/Valet-primary-emit-module.dia -emit-dependencies-path /host/spi-builder-workspace/.build/out/Intermediates.noindex/Valet.build/Debug-android-aarch64/Valet-t.build/Objects-normal/aarch64/Valet-primary-emit-module.d -parse-as-library -o /host/spi-builder-workspace/.build/out/Intermediates.noindex/Valet.build/Debug-android-aarch64/Valet-t.build/Objects-normal/aarch64/Modules/Valet.swiftmodule
error: Build failed
BUILD FAILURE 6.4 android