The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Failed to build Keychain, reference 0.1.1 (82276d), with Swift 6.1 for Linux on 27 Apr 2025 11:33:01 UTC.

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/tyhopp/keychain.git
Reference: 0.1.1
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/tyhopp/keychain
 * tag               0.1.1      -> FETCH_HEAD
HEAD is now at 82276d8 Add public access modifier to init
Cloned https://github.com/tyhopp/keychain.git
Revision (git rev-parse @):
82276d83364cdb3cb678970849391a7036a61455
SUCCESS checkout https://github.com/tyhopp/keychain.git at 0.1.1
========================================
Build
========================================
Selected platform:         linux
Swift version:             6.1
Building package at path:  $PWD
https://github.com/tyhopp/keychain.git
https://github.com/tyhopp/keychain.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Keychain",
  "name" : "Keychain",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "12.0"
    },
    {
      "name" : "ios",
      "version" : "15.0"
    },
    {
      "name" : "tvos",
      "version" : "15.0"
    },
    {
      "name" : "watchos",
      "version" : "8.0"
    }
  ],
  "products" : [
    {
      "name" : "Keychain",
      "targets" : [
        "Keychain"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "KeychainTests",
      "module_type" : "SwiftTarget",
      "name" : "KeychainTests",
      "path" : "Tests/KeychainTests",
      "sources" : [
        "KeychainTests.swift"
      ],
      "target_dependencies" : [
        "Keychain"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Keychain",
      "module_type" : "SwiftTarget",
      "name" : "Keychain",
      "path" : "Sources/Keychain",
      "product_memberships" : [
        "Keychain"
      ],
      "sources" : [
        "Keychain.swift",
        "KeychainPasswordItem.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.5"
}
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1
basic-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
error: emit-module command failed with exit code 1 (use -v to see invocation)
[3/5] Emitting module Keychain
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:22:33: error: cannot find type 'OSStatus' in scope
 20 |     case unexpectedPasswordData
 21 |     case unexpectedItemData
 22 |     case unhandledError(status: OSStatus)
    |                                 `- error: cannot find type 'OSStatus' in scope
 23 | }
 24 |
[4/5] Compiling Keychain Keychain.swift
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:22:33: error: cannot find type 'OSStatus' in scope
 20 |     case unexpectedPasswordData
 21 |     case unexpectedItemData
 22 |     case unhandledError(status: OSStatus)
    |                                 `- error: cannot find type 'OSStatus' in scope
 23 | }
 24 |
[5/5] Compiling Keychain KeychainPasswordItem.swift
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:22:33: error: cannot find type 'OSStatus' in scope
 20 |     case unexpectedPasswordData
 21 |     case unexpectedItemData
 22 |     case unhandledError(status: OSStatus)
    |                                 `- error: cannot find type 'OSStatus' in scope
 23 | }
 24 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:51:15: error: cannot find 'kSecMatchLimit' in scope
 49 |         */
 50 |         var query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 51 |         query[kSecMatchLimit as String] = kSecMatchLimitOne
    |               `- error: cannot find 'kSecMatchLimit' in scope
 52 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
 53 |         query[kSecReturnData as String] = kCFBooleanTrue
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:51:43: error: cannot find 'kSecMatchLimitOne' in scope
 49 |         */
 50 |         var query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 51 |         query[kSecMatchLimit as String] = kSecMatchLimitOne
    |                                           `- error: cannot find 'kSecMatchLimitOne' in scope
 52 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
 53 |         query[kSecReturnData as String] = kCFBooleanTrue
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:52:15: error: cannot find 'kSecReturnAttributes' in scope
 50 |         var query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 51 |         query[kSecMatchLimit as String] = kSecMatchLimitOne
 52 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
    |               `- error: cannot find 'kSecReturnAttributes' in scope
 53 |         query[kSecReturnData as String] = kCFBooleanTrue
 54 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:52:49: error: cannot find 'kCFBooleanTrue' in scope
 50 |         var query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 51 |         query[kSecMatchLimit as String] = kSecMatchLimitOne
 52 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
    |                                                 `- error: cannot find 'kCFBooleanTrue' in scope
 53 |         query[kSecReturnData as String] = kCFBooleanTrue
 54 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:53:15: error: cannot find 'kSecReturnData' in scope
 51 |         query[kSecMatchLimit as String] = kSecMatchLimitOne
 52 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
 53 |         query[kSecReturnData as String] = kCFBooleanTrue
    |               `- error: cannot find 'kSecReturnData' in scope
 54 |
 55 |         // Try to fetch the existing keychain item that matches the query.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:53:43: error: cannot find 'kCFBooleanTrue' in scope
 51 |         query[kSecMatchLimit as String] = kSecMatchLimitOne
 52 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
 53 |         query[kSecReturnData as String] = kCFBooleanTrue
    |                                           `- error: cannot find 'kCFBooleanTrue' in scope
 54 |
 55 |         // Try to fetch the existing keychain item that matches the query.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:58:13: error: cannot find 'SecItemCopyMatching' in scope
 56 |         var queryResult: AnyObject?
 57 |         let status = withUnsafeMutablePointer(to: &queryResult) {
 58 |             SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
    |             `- error: cannot find 'SecItemCopyMatching' in scope
 59 |         }
 60 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:58:42: error: cannot find type 'CFDictionary' in scope
 56 |         var queryResult: AnyObject?
 57 |         let status = withUnsafeMutablePointer(to: &queryResult) {
 58 |             SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
    |                                          `- error: cannot find type 'CFDictionary' in scope
 59 |         }
 60 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:62:25: error: cannot find 'errSecItemNotFound' in scope
 60 |
 61 |         // Check the return status and throw an error if appropriate.
 62 |         guard status != errSecItemNotFound else { throw KeychainError.noPassword }
    |                         `- error: cannot find 'errSecItemNotFound' in scope
 63 |         guard status == noErr else { throw KeychainError.unhandledError(status: status) }
 64 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:63:25: error: cannot find 'noErr' in scope
 61 |         // Check the return status and throw an error if appropriate.
 62 |         guard status != errSecItemNotFound else { throw KeychainError.noPassword }
 63 |         guard status == noErr else { throw KeychainError.unhandledError(status: status) }
    |                         `- error: cannot find 'noErr' in scope
 64 |
 65 |         // Parse the password string from the query result.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:67:45: error: cannot find 'kSecValueData' in scope
 65 |         // Parse the password string from the query result.
 66 |         guard let existingItem = queryResult as? [String : AnyObject],
 67 |             let passwordData = existingItem[kSecValueData as String] as? Data,
    |                                             `- error: cannot find 'kSecValueData' in scope
 68 |             let password = String(data: passwordData, encoding: String.Encoding.utf8)
 69 |         else {
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:86:32: error: cannot find 'kSecValueData' in scope
 84 |             // Update the existing item with the new password.
 85 |             var attributesToUpdate = [String : AnyObject]()
 86 |             attributesToUpdate[kSecValueData as String] = encodedPassword as AnyObject?
    |                                `- error: cannot find 'kSecValueData' in scope
 87 |
 88 |             let query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:89:26: error: cannot find 'SecItemUpdate' in scope
 87 |
 88 |             let query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 89 |             let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
    |                          `- error: cannot find 'SecItemUpdate' in scope
 90 |
 91 |             // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:89:49: error: cannot find type 'CFDictionary' in scope
 87 |
 88 |             let query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 89 |             let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
    |                                                 `- error: cannot find type 'CFDictionary' in scope
 90 |
 91 |             // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:89:85: error: cannot find type 'CFDictionary' in scope
 87 |
 88 |             let query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 89 |             let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
    |                                                                                     `- error: cannot find type 'CFDictionary' in scope
 90 |
 91 |             // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:92:29: error: cannot find 'noErr' in scope
 90 |
 91 |             // Throw an error if an unexpected status was returned.
 92 |             guard status == noErr else { throw KeychainError.unhandledError(status: status) }
    |                             `- error: cannot find 'noErr' in scope
 93 |         }
 94 |         catch KeychainError.noPassword {
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:100:21: error: cannot find 'kSecValueData' in scope
 98 |             */
 99 |             var newItem = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
100 |             newItem[kSecValueData as String] = encodedPassword as AnyObject?
    |                     `- error: cannot find 'kSecValueData' in scope
101 |
102 |             // Add a the new item to the keychain.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:103:26: error: cannot find 'SecItemAdd' in scope
101 |
102 |             // Add a the new item to the keychain.
103 |             let status = SecItemAdd(newItem as CFDictionary, nil)
    |                          `- error: cannot find 'SecItemAdd' in scope
104 |
105 |             // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:103:48: error: cannot find type 'CFDictionary' in scope
101 |
102 |             // Add a the new item to the keychain.
103 |             let status = SecItemAdd(newItem as CFDictionary, nil)
    |                                                `- error: cannot find type 'CFDictionary' in scope
104 |
105 |             // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:103:62: error: 'nil' requires a contextual type
101 |
102 |             // Add a the new item to the keychain.
103 |             let status = SecItemAdd(newItem as CFDictionary, nil)
    |                                                              `- error: 'nil' requires a contextual type
104 |
105 |             // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:106:29: error: cannot find 'noErr' in scope
104 |
105 |             // Throw an error if an unexpected status was returned.
106 |             guard status == noErr else { throw KeychainError.unhandledError(status: status) }
    |                             `- error: cannot find 'noErr' in scope
107 |         }
108 |     }
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:113:28: error: cannot find 'kSecAttrAccount' in scope
111 |         // Try to update an existing item with the new account name.
112 |         var attributesToUpdate = [String : AnyObject]()
113 |         attributesToUpdate[kSecAttrAccount as String] = newAccountName as AnyObject?
    |                            `- error: cannot find 'kSecAttrAccount' in scope
114 |
115 |         let query = KeychainPasswordItem.keychainQuery(withService: service, account: self.account, accessGroup: accessGroup)
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:116:22: error: cannot find 'SecItemUpdate' in scope
114 |
115 |         let query = KeychainPasswordItem.keychainQuery(withService: service, account: self.account, accessGroup: accessGroup)
116 |         let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
    |                      `- error: cannot find 'SecItemUpdate' in scope
117 |
118 |         // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:116:45: error: cannot find type 'CFDictionary' in scope
114 |
115 |         let query = KeychainPasswordItem.keychainQuery(withService: service, account: self.account, accessGroup: accessGroup)
116 |         let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
    |                                             `- error: cannot find type 'CFDictionary' in scope
117 |
118 |         // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:116:81: error: cannot find type 'CFDictionary' in scope
114 |
115 |         let query = KeychainPasswordItem.keychainQuery(withService: service, account: self.account, accessGroup: accessGroup)
116 |         let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
    |                                                                                 `- error: cannot find type 'CFDictionary' in scope
117 |
118 |         // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:119:25: error: cannot find 'noErr' in scope
117 |
118 |         // Throw an error if an unexpected status was returned.
119 |         guard status == noErr || status == errSecItemNotFound else { throw KeychainError.unhandledError(status: status) }
    |                         `- error: cannot find 'noErr' in scope
120 |
121 |         self.account = newAccountName
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:119:44: error: cannot find 'errSecItemNotFound' in scope
117 |
118 |         // Throw an error if an unexpected status was returned.
119 |         guard status == noErr || status == errSecItemNotFound else { throw KeychainError.unhandledError(status: status) }
    |                                            `- error: cannot find 'errSecItemNotFound' in scope
120 |
121 |         self.account = newAccountName
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:127:22: error: cannot find 'SecItemDelete' in scope
125 |         // Delete the existing item from the keychain.
126 |         let query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
127 |         let status = SecItemDelete(query as CFDictionary)
    |                      `- error: cannot find 'SecItemDelete' in scope
128 |
129 |         // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:127:45: error: cannot find type 'CFDictionary' in scope
125 |         // Delete the existing item from the keychain.
126 |         let query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
127 |         let status = SecItemDelete(query as CFDictionary)
    |                                             `- error: cannot find type 'CFDictionary' in scope
128 |
129 |         // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:130:25: error: cannot find 'noErr' in scope
128 |
129 |         // Throw an error if an unexpected status was returned.
130 |         guard status == noErr || status == errSecItemNotFound else { throw KeychainError.unhandledError(status: status) }
    |                         `- error: cannot find 'noErr' in scope
131 |     }
132 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:130:44: error: cannot find 'errSecItemNotFound' in scope
128 |
129 |         // Throw an error if an unexpected status was returned.
130 |         guard status == noErr || status == errSecItemNotFound else { throw KeychainError.unhandledError(status: status) }
    |                                            `- error: cannot find 'errSecItemNotFound' in scope
131 |     }
132 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:136:15: error: cannot find 'kSecMatchLimit' in scope
134 |         // Build a query for all items that match the service and access group.
135 |         var query = KeychainPasswordItem.keychainQuery(withService: service, accessGroup: accessGroup)
136 |         query[kSecMatchLimit as String] = kSecMatchLimitAll
    |               `- error: cannot find 'kSecMatchLimit' in scope
137 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
138 |         query[kSecReturnData as String] = kCFBooleanFalse
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:136:43: error: cannot find 'kSecMatchLimitAll' in scope
134 |         // Build a query for all items that match the service and access group.
135 |         var query = KeychainPasswordItem.keychainQuery(withService: service, accessGroup: accessGroup)
136 |         query[kSecMatchLimit as String] = kSecMatchLimitAll
    |                                           `- error: cannot find 'kSecMatchLimitAll' in scope
137 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
138 |         query[kSecReturnData as String] = kCFBooleanFalse
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:137:15: error: cannot find 'kSecReturnAttributes' in scope
135 |         var query = KeychainPasswordItem.keychainQuery(withService: service, accessGroup: accessGroup)
136 |         query[kSecMatchLimit as String] = kSecMatchLimitAll
137 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
    |               `- error: cannot find 'kSecReturnAttributes' in scope
138 |         query[kSecReturnData as String] = kCFBooleanFalse
139 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:137:49: error: cannot find 'kCFBooleanTrue' in scope
135 |         var query = KeychainPasswordItem.keychainQuery(withService: service, accessGroup: accessGroup)
136 |         query[kSecMatchLimit as String] = kSecMatchLimitAll
137 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
    |                                                 `- error: cannot find 'kCFBooleanTrue' in scope
138 |         query[kSecReturnData as String] = kCFBooleanFalse
139 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:138:15: error: cannot find 'kSecReturnData' in scope
136 |         query[kSecMatchLimit as String] = kSecMatchLimitAll
137 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
138 |         query[kSecReturnData as String] = kCFBooleanFalse
    |               `- error: cannot find 'kSecReturnData' in scope
139 |
140 |         // Fetch matching items from the keychain.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:138:43: error: cannot find 'kCFBooleanFalse' in scope
136 |         query[kSecMatchLimit as String] = kSecMatchLimitAll
137 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
138 |         query[kSecReturnData as String] = kCFBooleanFalse
    |                                           `- error: cannot find 'kCFBooleanFalse' in scope
139 |
140 |         // Fetch matching items from the keychain.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:143:13: error: cannot find 'SecItemCopyMatching' in scope
141 |         var queryResult: AnyObject?
142 |         let status = withUnsafeMutablePointer(to: &queryResult) {
143 |             SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
    |             `- error: cannot find 'SecItemCopyMatching' in scope
144 |         }
145 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:143:42: error: cannot find type 'CFDictionary' in scope
141 |         var queryResult: AnyObject?
142 |         let status = withUnsafeMutablePointer(to: &queryResult) {
143 |             SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
    |                                          `- error: cannot find type 'CFDictionary' in scope
144 |         }
145 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:147:25: error: cannot find 'errSecItemNotFound' in scope
145 |
146 |         // If no items were found, return an empty array.
147 |         guard status != errSecItemNotFound else { return [] }
    |                         `- error: cannot find 'errSecItemNotFound' in scope
148 |
149 |         // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:150:25: error: cannot find 'noErr' in scope
148 |
149 |         // Throw an error if an unexpected status was returned.
150 |         guard status == noErr else { throw KeychainError.unhandledError(status: status) }
    |                         `- error: cannot find 'noErr' in scope
151 |
152 |         // Cast the query result to an array of dictionaries.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:158:41: error: cannot find 'kSecAttrAccount' in scope
156 |         var passwordItems = [KeychainPasswordItem]()
157 |         for result in resultData {
158 |             guard let account  = result[kSecAttrAccount as String] as? String else { throw KeychainError.unexpectedItemData }
    |                                         `- error: cannot find 'kSecAttrAccount' in scope
159 |
160 |             let passwordItem = KeychainPasswordItem(service: service, account: account, accessGroup: accessGroup)
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:171:15: error: cannot find 'kSecClass' in scope
169 |     private static func keychainQuery(withService service: String, account: String? = nil, accessGroup: String? = nil) -> [String : AnyObject] {
170 |         var query = [String : AnyObject]()
171 |         query[kSecClass as String] = kSecClassGenericPassword
    |               `- error: cannot find 'kSecClass' in scope
172 |         query[kSecAttrService as String] = service as AnyObject?
173 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:171:38: error: cannot find 'kSecClassGenericPassword' in scope
169 |     private static func keychainQuery(withService service: String, account: String? = nil, accessGroup: String? = nil) -> [String : AnyObject] {
170 |         var query = [String : AnyObject]()
171 |         query[kSecClass as String] = kSecClassGenericPassword
    |                                      `- error: cannot find 'kSecClassGenericPassword' in scope
172 |         query[kSecAttrService as String] = service as AnyObject?
173 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:172:15: error: cannot find 'kSecAttrService' in scope
170 |         var query = [String : AnyObject]()
171 |         query[kSecClass as String] = kSecClassGenericPassword
172 |         query[kSecAttrService as String] = service as AnyObject?
    |               `- error: cannot find 'kSecAttrService' in scope
173 |
174 |         if let account = account {
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:175:19: error: cannot find 'kSecAttrAccount' in scope
173 |
174 |         if let account = account {
175 |             query[kSecAttrAccount as String] = account as AnyObject?
    |                   `- error: cannot find 'kSecAttrAccount' in scope
176 |         }
177 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:179:19: error: cannot find 'kSecAttrAccessGroup' in scope
177 |
178 |         if let accessGroup = accessGroup {
179 |             query[kSecAttrAccessGroup as String] = accessGroup as AnyObject?
    |                   `- error: cannot find 'kSecAttrAccessGroup' in scope
180 |         }
181 |
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu 2>&1
basic-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
[0/1] Planning build
Building for debugging...
[0/1] Write swift-version-24593BA9C3E375BF.txt
error: emit-module command failed with exit code 1 (use -v to see invocation)
[2/4] Emitting module Keychain
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:22:33: error: cannot find type 'OSStatus' in scope
 20 |     case unexpectedPasswordData
 21 |     case unexpectedItemData
 22 |     case unhandledError(status: OSStatus)
    |                                 `- error: cannot find type 'OSStatus' in scope
 23 | }
 24 |
[3/4] Compiling Keychain Keychain.swift
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:22:33: error: cannot find type 'OSStatus' in scope
 20 |     case unexpectedPasswordData
 21 |     case unexpectedItemData
 22 |     case unhandledError(status: OSStatus)
    |                                 `- error: cannot find type 'OSStatus' in scope
 23 | }
 24 |
[4/4] Compiling Keychain KeychainPasswordItem.swift
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:22:33: error: cannot find type 'OSStatus' in scope
 20 |     case unexpectedPasswordData
 21 |     case unexpectedItemData
 22 |     case unhandledError(status: OSStatus)
    |                                 `- error: cannot find type 'OSStatus' in scope
 23 | }
 24 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:51:15: error: cannot find 'kSecMatchLimit' in scope
 49 |         */
 50 |         var query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 51 |         query[kSecMatchLimit as String] = kSecMatchLimitOne
    |               `- error: cannot find 'kSecMatchLimit' in scope
 52 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
 53 |         query[kSecReturnData as String] = kCFBooleanTrue
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:51:43: error: cannot find 'kSecMatchLimitOne' in scope
 49 |         */
 50 |         var query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 51 |         query[kSecMatchLimit as String] = kSecMatchLimitOne
    |                                           `- error: cannot find 'kSecMatchLimitOne' in scope
 52 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
 53 |         query[kSecReturnData as String] = kCFBooleanTrue
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:52:15: error: cannot find 'kSecReturnAttributes' in scope
 50 |         var query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 51 |         query[kSecMatchLimit as String] = kSecMatchLimitOne
 52 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
    |               `- error: cannot find 'kSecReturnAttributes' in scope
 53 |         query[kSecReturnData as String] = kCFBooleanTrue
 54 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:52:49: error: cannot find 'kCFBooleanTrue' in scope
 50 |         var query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 51 |         query[kSecMatchLimit as String] = kSecMatchLimitOne
 52 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
    |                                                 `- error: cannot find 'kCFBooleanTrue' in scope
 53 |         query[kSecReturnData as String] = kCFBooleanTrue
 54 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:53:15: error: cannot find 'kSecReturnData' in scope
 51 |         query[kSecMatchLimit as String] = kSecMatchLimitOne
 52 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
 53 |         query[kSecReturnData as String] = kCFBooleanTrue
    |               `- error: cannot find 'kSecReturnData' in scope
 54 |
 55 |         // Try to fetch the existing keychain item that matches the query.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:53:43: error: cannot find 'kCFBooleanTrue' in scope
 51 |         query[kSecMatchLimit as String] = kSecMatchLimitOne
 52 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
 53 |         query[kSecReturnData as String] = kCFBooleanTrue
    |                                           `- error: cannot find 'kCFBooleanTrue' in scope
 54 |
 55 |         // Try to fetch the existing keychain item that matches the query.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:58:13: error: cannot find 'SecItemCopyMatching' in scope
 56 |         var queryResult: AnyObject?
 57 |         let status = withUnsafeMutablePointer(to: &queryResult) {
 58 |             SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
    |             `- error: cannot find 'SecItemCopyMatching' in scope
 59 |         }
 60 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:58:42: error: cannot find type 'CFDictionary' in scope
 56 |         var queryResult: AnyObject?
 57 |         let status = withUnsafeMutablePointer(to: &queryResult) {
 58 |             SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
    |                                          `- error: cannot find type 'CFDictionary' in scope
 59 |         }
 60 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:62:25: error: cannot find 'errSecItemNotFound' in scope
 60 |
 61 |         // Check the return status and throw an error if appropriate.
 62 |         guard status != errSecItemNotFound else { throw KeychainError.noPassword }
    |                         `- error: cannot find 'errSecItemNotFound' in scope
 63 |         guard status == noErr else { throw KeychainError.unhandledError(status: status) }
 64 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:63:25: error: cannot find 'noErr' in scope
 61 |         // Check the return status and throw an error if appropriate.
 62 |         guard status != errSecItemNotFound else { throw KeychainError.noPassword }
 63 |         guard status == noErr else { throw KeychainError.unhandledError(status: status) }
    |                         `- error: cannot find 'noErr' in scope
 64 |
 65 |         // Parse the password string from the query result.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:67:45: error: cannot find 'kSecValueData' in scope
 65 |         // Parse the password string from the query result.
 66 |         guard let existingItem = queryResult as? [String : AnyObject],
 67 |             let passwordData = existingItem[kSecValueData as String] as? Data,
    |                                             `- error: cannot find 'kSecValueData' in scope
 68 |             let password = String(data: passwordData, encoding: String.Encoding.utf8)
 69 |         else {
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:86:32: error: cannot find 'kSecValueData' in scope
 84 |             // Update the existing item with the new password.
 85 |             var attributesToUpdate = [String : AnyObject]()
 86 |             attributesToUpdate[kSecValueData as String] = encodedPassword as AnyObject?
    |                                `- error: cannot find 'kSecValueData' in scope
 87 |
 88 |             let query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:89:26: error: cannot find 'SecItemUpdate' in scope
 87 |
 88 |             let query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 89 |             let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
    |                          `- error: cannot find 'SecItemUpdate' in scope
 90 |
 91 |             // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:89:49: error: cannot find type 'CFDictionary' in scope
 87 |
 88 |             let query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 89 |             let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
    |                                                 `- error: cannot find type 'CFDictionary' in scope
 90 |
 91 |             // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:89:85: error: cannot find type 'CFDictionary' in scope
 87 |
 88 |             let query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
 89 |             let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
    |                                                                                     `- error: cannot find type 'CFDictionary' in scope
 90 |
 91 |             // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:92:29: error: cannot find 'noErr' in scope
 90 |
 91 |             // Throw an error if an unexpected status was returned.
 92 |             guard status == noErr else { throw KeychainError.unhandledError(status: status) }
    |                             `- error: cannot find 'noErr' in scope
 93 |         }
 94 |         catch KeychainError.noPassword {
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:100:21: error: cannot find 'kSecValueData' in scope
 98 |             */
 99 |             var newItem = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
100 |             newItem[kSecValueData as String] = encodedPassword as AnyObject?
    |                     `- error: cannot find 'kSecValueData' in scope
101 |
102 |             // Add a the new item to the keychain.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:103:26: error: cannot find 'SecItemAdd' in scope
101 |
102 |             // Add a the new item to the keychain.
103 |             let status = SecItemAdd(newItem as CFDictionary, nil)
    |                          `- error: cannot find 'SecItemAdd' in scope
104 |
105 |             // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:103:48: error: cannot find type 'CFDictionary' in scope
101 |
102 |             // Add a the new item to the keychain.
103 |             let status = SecItemAdd(newItem as CFDictionary, nil)
    |                                                `- error: cannot find type 'CFDictionary' in scope
104 |
105 |             // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:103:62: error: 'nil' requires a contextual type
101 |
102 |             // Add a the new item to the keychain.
103 |             let status = SecItemAdd(newItem as CFDictionary, nil)
    |                                                              `- error: 'nil' requires a contextual type
104 |
105 |             // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:106:29: error: cannot find 'noErr' in scope
104 |
105 |             // Throw an error if an unexpected status was returned.
106 |             guard status == noErr else { throw KeychainError.unhandledError(status: status) }
    |                             `- error: cannot find 'noErr' in scope
107 |         }
108 |     }
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:113:28: error: cannot find 'kSecAttrAccount' in scope
111 |         // Try to update an existing item with the new account name.
112 |         var attributesToUpdate = [String : AnyObject]()
113 |         attributesToUpdate[kSecAttrAccount as String] = newAccountName as AnyObject?
    |                            `- error: cannot find 'kSecAttrAccount' in scope
114 |
115 |         let query = KeychainPasswordItem.keychainQuery(withService: service, account: self.account, accessGroup: accessGroup)
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:116:22: error: cannot find 'SecItemUpdate' in scope
114 |
115 |         let query = KeychainPasswordItem.keychainQuery(withService: service, account: self.account, accessGroup: accessGroup)
116 |         let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
    |                      `- error: cannot find 'SecItemUpdate' in scope
117 |
118 |         // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:116:45: error: cannot find type 'CFDictionary' in scope
114 |
115 |         let query = KeychainPasswordItem.keychainQuery(withService: service, account: self.account, accessGroup: accessGroup)
116 |         let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
    |                                             `- error: cannot find type 'CFDictionary' in scope
117 |
118 |         // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:116:81: error: cannot find type 'CFDictionary' in scope
114 |
115 |         let query = KeychainPasswordItem.keychainQuery(withService: service, account: self.account, accessGroup: accessGroup)
116 |         let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
    |                                                                                 `- error: cannot find type 'CFDictionary' in scope
117 |
118 |         // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:119:25: error: cannot find 'noErr' in scope
117 |
118 |         // Throw an error if an unexpected status was returned.
119 |         guard status == noErr || status == errSecItemNotFound else { throw KeychainError.unhandledError(status: status) }
    |                         `- error: cannot find 'noErr' in scope
120 |
121 |         self.account = newAccountName
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:119:44: error: cannot find 'errSecItemNotFound' in scope
117 |
118 |         // Throw an error if an unexpected status was returned.
119 |         guard status == noErr || status == errSecItemNotFound else { throw KeychainError.unhandledError(status: status) }
    |                                            `- error: cannot find 'errSecItemNotFound' in scope
120 |
121 |         self.account = newAccountName
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:127:22: error: cannot find 'SecItemDelete' in scope
125 |         // Delete the existing item from the keychain.
126 |         let query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
127 |         let status = SecItemDelete(query as CFDictionary)
    |                      `- error: cannot find 'SecItemDelete' in scope
128 |
129 |         // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:127:45: error: cannot find type 'CFDictionary' in scope
125 |         // Delete the existing item from the keychain.
126 |         let query = KeychainPasswordItem.keychainQuery(withService: service, account: account, accessGroup: accessGroup)
127 |         let status = SecItemDelete(query as CFDictionary)
    |                                             `- error: cannot find type 'CFDictionary' in scope
128 |
129 |         // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:130:25: error: cannot find 'noErr' in scope
128 |
129 |         // Throw an error if an unexpected status was returned.
130 |         guard status == noErr || status == errSecItemNotFound else { throw KeychainError.unhandledError(status: status) }
    |                         `- error: cannot find 'noErr' in scope
131 |     }
132 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:130:44: error: cannot find 'errSecItemNotFound' in scope
128 |
129 |         // Throw an error if an unexpected status was returned.
130 |         guard status == noErr || status == errSecItemNotFound else { throw KeychainError.unhandledError(status: status) }
    |                                            `- error: cannot find 'errSecItemNotFound' in scope
131 |     }
132 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:136:15: error: cannot find 'kSecMatchLimit' in scope
134 |         // Build a query for all items that match the service and access group.
135 |         var query = KeychainPasswordItem.keychainQuery(withService: service, accessGroup: accessGroup)
136 |         query[kSecMatchLimit as String] = kSecMatchLimitAll
    |               `- error: cannot find 'kSecMatchLimit' in scope
137 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
138 |         query[kSecReturnData as String] = kCFBooleanFalse
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:136:43: error: cannot find 'kSecMatchLimitAll' in scope
134 |         // Build a query for all items that match the service and access group.
135 |         var query = KeychainPasswordItem.keychainQuery(withService: service, accessGroup: accessGroup)
136 |         query[kSecMatchLimit as String] = kSecMatchLimitAll
    |                                           `- error: cannot find 'kSecMatchLimitAll' in scope
137 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
138 |         query[kSecReturnData as String] = kCFBooleanFalse
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:137:15: error: cannot find 'kSecReturnAttributes' in scope
135 |         var query = KeychainPasswordItem.keychainQuery(withService: service, accessGroup: accessGroup)
136 |         query[kSecMatchLimit as String] = kSecMatchLimitAll
137 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
    |               `- error: cannot find 'kSecReturnAttributes' in scope
138 |         query[kSecReturnData as String] = kCFBooleanFalse
139 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:137:49: error: cannot find 'kCFBooleanTrue' in scope
135 |         var query = KeychainPasswordItem.keychainQuery(withService: service, accessGroup: accessGroup)
136 |         query[kSecMatchLimit as String] = kSecMatchLimitAll
137 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
    |                                                 `- error: cannot find 'kCFBooleanTrue' in scope
138 |         query[kSecReturnData as String] = kCFBooleanFalse
139 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:138:15: error: cannot find 'kSecReturnData' in scope
136 |         query[kSecMatchLimit as String] = kSecMatchLimitAll
137 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
138 |         query[kSecReturnData as String] = kCFBooleanFalse
    |               `- error: cannot find 'kSecReturnData' in scope
139 |
140 |         // Fetch matching items from the keychain.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:138:43: error: cannot find 'kCFBooleanFalse' in scope
136 |         query[kSecMatchLimit as String] = kSecMatchLimitAll
137 |         query[kSecReturnAttributes as String] = kCFBooleanTrue
138 |         query[kSecReturnData as String] = kCFBooleanFalse
    |                                           `- error: cannot find 'kCFBooleanFalse' in scope
139 |
140 |         // Fetch matching items from the keychain.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:143:13: error: cannot find 'SecItemCopyMatching' in scope
141 |         var queryResult: AnyObject?
142 |         let status = withUnsafeMutablePointer(to: &queryResult) {
143 |             SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
    |             `- error: cannot find 'SecItemCopyMatching' in scope
144 |         }
145 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:143:42: error: cannot find type 'CFDictionary' in scope
141 |         var queryResult: AnyObject?
142 |         let status = withUnsafeMutablePointer(to: &queryResult) {
143 |             SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
    |                                          `- error: cannot find type 'CFDictionary' in scope
144 |         }
145 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:147:25: error: cannot find 'errSecItemNotFound' in scope
145 |
146 |         // If no items were found, return an empty array.
147 |         guard status != errSecItemNotFound else { return [] }
    |                         `- error: cannot find 'errSecItemNotFound' in scope
148 |
149 |         // Throw an error if an unexpected status was returned.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:150:25: error: cannot find 'noErr' in scope
148 |
149 |         // Throw an error if an unexpected status was returned.
150 |         guard status == noErr else { throw KeychainError.unhandledError(status: status) }
    |                         `- error: cannot find 'noErr' in scope
151 |
152 |         // Cast the query result to an array of dictionaries.
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:158:41: error: cannot find 'kSecAttrAccount' in scope
156 |         var passwordItems = [KeychainPasswordItem]()
157 |         for result in resultData {
158 |             guard let account  = result[kSecAttrAccount as String] as? String else { throw KeychainError.unexpectedItemData }
    |                                         `- error: cannot find 'kSecAttrAccount' in scope
159 |
160 |             let passwordItem = KeychainPasswordItem(service: service, account: account, accessGroup: accessGroup)
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:171:15: error: cannot find 'kSecClass' in scope
169 |     private static func keychainQuery(withService service: String, account: String? = nil, accessGroup: String? = nil) -> [String : AnyObject] {
170 |         var query = [String : AnyObject]()
171 |         query[kSecClass as String] = kSecClassGenericPassword
    |               `- error: cannot find 'kSecClass' in scope
172 |         query[kSecAttrService as String] = service as AnyObject?
173 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:171:38: error: cannot find 'kSecClassGenericPassword' in scope
169 |     private static func keychainQuery(withService service: String, account: String? = nil, accessGroup: String? = nil) -> [String : AnyObject] {
170 |         var query = [String : AnyObject]()
171 |         query[kSecClass as String] = kSecClassGenericPassword
    |                                      `- error: cannot find 'kSecClassGenericPassword' in scope
172 |         query[kSecAttrService as String] = service as AnyObject?
173 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:172:15: error: cannot find 'kSecAttrService' in scope
170 |         var query = [String : AnyObject]()
171 |         query[kSecClass as String] = kSecClassGenericPassword
172 |         query[kSecAttrService as String] = service as AnyObject?
    |               `- error: cannot find 'kSecAttrService' in scope
173 |
174 |         if let account = account {
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:175:19: error: cannot find 'kSecAttrAccount' in scope
173 |
174 |         if let account = account {
175 |             query[kSecAttrAccount as String] = account as AnyObject?
    |                   `- error: cannot find 'kSecAttrAccount' in scope
176 |         }
177 |
/host/spi-builder-workspace/Sources/Keychain/KeychainPasswordItem.swift:179:19: error: cannot find 'kSecAttrAccessGroup' in scope
177 |
178 |         if let accessGroup = accessGroup {
179 |             query[kSecAttrAccessGroup as String] = accessGroup as AnyObject?
    |                   `- error: cannot find 'kSecAttrAccessGroup' in scope
180 |         }
181 |
BUILD FAILURE 6.1 linux