The Swift Package Index logo.Swift Package Index

Build Information

Failed to build locksmith, reference main (d2d23d), with Swift 6.2 for Android on 21 Jun 2025 17:05:16 UTC.

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:android-6.2-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.64.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/swiftDevelopmentPackages/locksmith.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/swiftDevelopmentPackages/locksmith
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at d2d23db Update README.md
Cloned https://github.com/swiftDevelopmentPackages/locksmith.git
Revision (git rev-parse @):
d2d23db2965b8d4872cf8e641d9ea77cbdc37628
SUCCESS checkout https://github.com/swiftDevelopmentPackages/locksmith.git at main
========================================
Build
========================================
Selected platform:         android
Swift version:             6.2
Building package at path:  $PWD
https://github.com/swiftDevelopmentPackages/locksmith.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:android-6.2-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1
android-6.2-latest: Pulling from finestructure/spi-images
Digest: sha256:b7c4a6b4153ff40ef9277e2157e708f835b8eb011095d53bd8db4594eb2b7798
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:android-6.2-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-8C5A4AE7A8CE2BA.txt
error: emit-module command failed with exit code 1 (use -v to see invocation)
[3/4] Emitting module locksmith
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:63:46: error: cannot find type 'CFDictionary' in scope
 61 |   }
 62 |
 63 |   private func queryRead(account: String) -> CFDictionary {
    |                                              `- error: cannot find type 'CFDictionary' in scope
 64 |     var query: [String: Any] = [
 65 |       kSecAttrService as String: service,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:82:42: error: cannot find type 'CFDictionary' in scope
 80 |   }
 81 |
 82 |   private func query(account: String) -> CFDictionary {
    |                                          `- error: cannot find type 'CFDictionary' in scope
 83 |     var query: [String: Any] = [
 84 |       kSecAttrService as String: service,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:99:62: error: cannot find type 'CFDictionary' in scope
 97 |   }
 98 |
 99 |   private func queryWithData(data: Data, account: String) -> CFDictionary {
    |                                                              `- error: cannot find type 'CFDictionary' in scope
100 |     var query: [String: Any] = [
101 |       kSecValueData as String: data,
[4/4] Compiling locksmith Locksmith.swift
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:63:46: error: cannot find type 'CFDictionary' in scope
 61 |   }
 62 |
 63 |   private func queryRead(account: String) -> CFDictionary {
    |                                              `- error: cannot find type 'CFDictionary' in scope
 64 |     var query: [String: Any] = [
 65 |       kSecAttrService as String: service,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:82:42: error: cannot find type 'CFDictionary' in scope
 80 |   }
 81 |
 82 |   private func query(account: String) -> CFDictionary {
    |                                          `- error: cannot find type 'CFDictionary' in scope
 83 |     var query: [String: Any] = [
 84 |       kSecAttrService as String: service,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:99:62: error: cannot find type 'CFDictionary' in scope
 97 |   }
 98 |
 99 |   private func queryWithData(data: Data, account: String) -> CFDictionary {
    |                                                              `- error: cannot find type 'CFDictionary' in scope
100 |     var query: [String: Any] = [
101 |       kSecValueData as String: data,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:47:5: error: cannot find 'SecItemDelete' in scope
 45 |
 46 |   public func delete(key: String) {
 47 |     SecItemDelete(query(account: key)) // Delete item from keychain
    |     `- error: cannot find 'SecItemDelete' in scope
 48 |   }
 49 |
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:51:18: error: cannot find 'SecItemAdd' in scope
 49 |
 50 |   private func save(_ data: Data, key: String) {
 51 |     let status = SecItemAdd(queryWithData(data: data, account: key), nil)
    |                  `- error: cannot find 'SecItemAdd' in scope
 52 |     if status == errSecDuplicateItem {
 53 |       SecItemUpdate(query(account: key), [kSecValueData: data] as CFDictionary)
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:51:70: error: 'nil' requires a contextual type
 49 |
 50 |   private func save(_ data: Data, key: String) {
 51 |     let status = SecItemAdd(queryWithData(data: data, account: key), nil)
    |                                                                      `- error: 'nil' requires a contextual type
 52 |     if status == errSecDuplicateItem {
 53 |       SecItemUpdate(query(account: key), [kSecValueData: data] as CFDictionary)
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:52:18: error: cannot find 'errSecDuplicateItem' in scope
 50 |   private func save(_ data: Data, key: String) {
 51 |     let status = SecItemAdd(queryWithData(data: data, account: key), nil)
 52 |     if status == errSecDuplicateItem {
    |                  `- error: cannot find 'errSecDuplicateItem' in scope
 53 |       SecItemUpdate(query(account: key), [kSecValueData: data] as CFDictionary)
 54 |     }
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:53:7: error: cannot find 'SecItemUpdate' in scope
 51 |     let status = SecItemAdd(queryWithData(data: data, account: key), nil)
 52 |     if status == errSecDuplicateItem {
 53 |       SecItemUpdate(query(account: key), [kSecValueData: data] as CFDictionary)
    |       `- error: cannot find 'SecItemUpdate' in scope
 54 |     }
 55 |   }
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:53:43: error: cannot find 'kSecValueData' in scope
 51 |     let status = SecItemAdd(queryWithData(data: data, account: key), nil)
 52 |     if status == errSecDuplicateItem {
 53 |       SecItemUpdate(query(account: key), [kSecValueData: data] as CFDictionary)
    |                                           `- error: cannot find 'kSecValueData' in scope
 54 |     }
 55 |   }
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:53:67: error: cannot find type 'CFDictionary' in scope
 51 |     let status = SecItemAdd(queryWithData(data: data, account: key), nil)
 52 |     if status == errSecDuplicateItem {
 53 |       SecItemUpdate(query(account: key), [kSecValueData: data] as CFDictionary)
    |                                                                   `- error: cannot find type 'CFDictionary' in scope
 54 |     }
 55 |   }
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:59:5: error: cannot find 'SecItemCopyMatching' in scope
 57 |   private func read(account: String) -> Data? {
 58 |     var result: AnyObject?
 59 |     SecItemCopyMatching(queryRead(account: account), &result)
    |     `- error: cannot find 'SecItemCopyMatching' in scope
 60 |     return (result as? Data)
 61 |   }
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:65:7: error: cannot find 'kSecAttrService' in scope
 63 |   private func queryRead(account: String) -> CFDictionary {
 64 |     var query: [String: Any] = [
 65 |       kSecAttrService as String: service,
    |       `- error: cannot find 'kSecAttrService' in scope
 66 |       kSecAttrAccount as String: account,
 67 |       kSecMatchLimit as String: kSecMatchLimitOne,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:66:7: error: cannot find 'kSecAttrAccount' in scope
 64 |     var query: [String: Any] = [
 65 |       kSecAttrService as String: service,
 66 |       kSecAttrAccount as String: account,
    |       `- error: cannot find 'kSecAttrAccount' in scope
 67 |       kSecMatchLimit as String: kSecMatchLimitOne,
 68 |       kSecClass as String: kSecClassGenericPassword,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:67:7: error: cannot find 'kSecMatchLimit' in scope
 65 |       kSecAttrService as String: service,
 66 |       kSecAttrAccount as String: account,
 67 |       kSecMatchLimit as String: kSecMatchLimitOne,
    |       `- error: cannot find 'kSecMatchLimit' in scope
 68 |       kSecClass as String: kSecClassGenericPassword,
 69 |       kSecReturnData as String: true,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:67:33: error: cannot find 'kSecMatchLimitOne' in scope
 65 |       kSecAttrService as String: service,
 66 |       kSecAttrAccount as String: account,
 67 |       kSecMatchLimit as String: kSecMatchLimitOne,
    |                                 `- error: cannot find 'kSecMatchLimitOne' in scope
 68 |       kSecClass as String: kSecClassGenericPassword,
 69 |       kSecReturnData as String: true,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:68:7: error: cannot find 'kSecClass' in scope
 66 |       kSecAttrAccount as String: account,
 67 |       kSecMatchLimit as String: kSecMatchLimitOne,
 68 |       kSecClass as String: kSecClassGenericPassword,
    |       `- error: cannot find 'kSecClass' in scope
 69 |       kSecReturnData as String: true,
 70 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:68:28: error: cannot find 'kSecClassGenericPassword' in scope
 66 |       kSecAttrAccount as String: account,
 67 |       kSecMatchLimit as String: kSecMatchLimitOne,
 68 |       kSecClass as String: kSecClassGenericPassword,
    |                            `- error: cannot find 'kSecClassGenericPassword' in scope
 69 |       kSecReturnData as String: true,
 70 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:69:7: error: cannot find 'kSecReturnData' in scope
 67 |       kSecMatchLimit as String: kSecMatchLimitOne,
 68 |       kSecClass as String: kSecClassGenericPassword,
 69 |       kSecReturnData as String: true,
    |       `- error: cannot find 'kSecReturnData' in scope
 70 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
 71 |     ]
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:70:7: error: cannot find 'kSecAttrSynchronizable' in scope
 68 |       kSecClass as String: kSecClassGenericPassword,
 69 |       kSecReturnData as String: true,
 70 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
    |       `- error: cannot find 'kSecAttrSynchronizable' in scope
 71 |     ]
 72 |
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:70:41: error: cannot find 'kSecAttrSynchronizableAny' in scope
 68 |       kSecClass as String: kSecClassGenericPassword,
 69 |       kSecReturnData as String: true,
 70 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
    |                                         `- error: cannot find 'kSecAttrSynchronizableAny' in scope
 71 |     ]
 72 |
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:75:13: error: cannot find 'kSecAttrAccessGroup' in scope
 73 | #if !targetEnvironment(simulator)
 74 |     if let group = accessGroup {
 75 |       query[kSecAttrAccessGroup as String] = group
    |             `- error: cannot find 'kSecAttrAccessGroup' in scope
 76 |     }
 77 | #endif
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:84:7: error: cannot find 'kSecAttrService' in scope
 82 |   private func query(account: String) -> CFDictionary {
 83 |     var query: [String: Any] = [
 84 |       kSecAttrService as String: service,
    |       `- error: cannot find 'kSecAttrService' in scope
 85 |       kSecAttrAccount as String: account,
 86 |       kSecClass as String: kSecClassGenericPassword,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:85:7: error: cannot find 'kSecAttrAccount' in scope
 83 |     var query: [String: Any] = [
 84 |       kSecAttrService as String: service,
 85 |       kSecAttrAccount as String: account,
    |       `- error: cannot find 'kSecAttrAccount' in scope
 86 |       kSecClass as String: kSecClassGenericPassword,
 87 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:86:7: error: cannot find 'kSecClass' in scope
 84 |       kSecAttrService as String: service,
 85 |       kSecAttrAccount as String: account,
 86 |       kSecClass as String: kSecClassGenericPassword,
    |       `- error: cannot find 'kSecClass' in scope
 87 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
 88 |     ]
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:86:28: error: cannot find 'kSecClassGenericPassword' in scope
 84 |       kSecAttrService as String: service,
 85 |       kSecAttrAccount as String: account,
 86 |       kSecClass as String: kSecClassGenericPassword,
    |                            `- error: cannot find 'kSecClassGenericPassword' in scope
 87 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
 88 |     ]
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:87:7: error: cannot find 'kSecAttrSynchronizable' in scope
 85 |       kSecAttrAccount as String: account,
 86 |       kSecClass as String: kSecClassGenericPassword,
 87 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
    |       `- error: cannot find 'kSecAttrSynchronizable' in scope
 88 |     ]
 89 |
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:87:41: error: cannot find 'kSecAttrSynchronizableAny' in scope
 85 |       kSecAttrAccount as String: account,
 86 |       kSecClass as String: kSecClassGenericPassword,
 87 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
    |                                         `- error: cannot find 'kSecAttrSynchronizableAny' in scope
 88 |     ]
 89 |
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:92:13: error: cannot find 'kSecAttrAccessGroup' in scope
 90 | #if !targetEnvironment(simulator)
 91 |     if let group = accessGroup {
 92 |       query[kSecAttrAccessGroup as String] = group
    |             `- error: cannot find 'kSecAttrAccessGroup' in scope
 93 |     }
 94 | #endif
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:101:7: error: cannot find 'kSecValueData' in scope
 99 |   private func queryWithData(data: Data, account: String) -> CFDictionary {
100 |     var query: [String: Any] = [
101 |       kSecValueData as String: data,
    |       `- error: cannot find 'kSecValueData' in scope
102 |       kSecAttrService as String: service,
103 |       kSecAttrAccount as String: account,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:102:7: error: cannot find 'kSecAttrService' in scope
100 |     var query: [String: Any] = [
101 |       kSecValueData as String: data,
102 |       kSecAttrService as String: service,
    |       `- error: cannot find 'kSecAttrService' in scope
103 |       kSecAttrAccount as String: account,
104 |       kSecClass as String: kSecClassGenericPassword,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:103:7: error: cannot find 'kSecAttrAccount' in scope
101 |       kSecValueData as String: data,
102 |       kSecAttrService as String: service,
103 |       kSecAttrAccount as String: account,
    |       `- error: cannot find 'kSecAttrAccount' in scope
104 |       kSecClass as String: kSecClassGenericPassword,
105 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:104:7: error: cannot find 'kSecClass' in scope
102 |       kSecAttrService as String: service,
103 |       kSecAttrAccount as String: account,
104 |       kSecClass as String: kSecClassGenericPassword,
    |       `- error: cannot find 'kSecClass' in scope
105 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
106 |     ]
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:104:28: error: cannot find 'kSecClassGenericPassword' in scope
102 |       kSecAttrService as String: service,
103 |       kSecAttrAccount as String: account,
104 |       kSecClass as String: kSecClassGenericPassword,
    |                            `- error: cannot find 'kSecClassGenericPassword' in scope
105 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
106 |     ]
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:105:7: error: cannot find 'kSecAttrSynchronizable' in scope
103 |       kSecAttrAccount as String: account,
104 |       kSecClass as String: kSecClassGenericPassword,
105 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
    |       `- error: cannot find 'kSecAttrSynchronizable' in scope
106 |     ]
107 |
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:105:41: error: cannot find 'kSecAttrSynchronizableAny' in scope
103 |       kSecAttrAccount as String: account,
104 |       kSecClass as String: kSecClassGenericPassword,
105 |       kSecAttrSynchronizable as String: kSecAttrSynchronizableAny,
    |                                         `- error: cannot find 'kSecAttrSynchronizableAny' in scope
106 |     ]
107 |
/host/spi-builder-workspace/Sources/locksmith/Locksmith.swift:110:13: error: cannot find 'kSecAttrAccessGroup' in scope
108 | #if !targetEnvironment(simulator)
109 |     if let group = accessGroup {
110 |       query[kSecAttrAccessGroup as String] = group
    |             `- error: cannot find 'kSecAttrAccessGroup' in scope
111 |     }
112 | #endif
BUILD FAILURE 6.2 android