This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.

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 KeyVine with Swift 6.0 for Linux.

Build Command

bash -c docker run --rm -v "checkouts-4609320-0":/host -w "$workDir" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.40.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/ptsochantaris/key-vine.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/ptsochantaris/key-vine
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 407b089 Latest Swiftformat pass
Cloned https://github.com/ptsochantaris/key-vine.git
Revision (git rev-parse @):
407b089335b083bfd5935699a880f9883cfdc5d6
SPI manifest file found: $workDir/.spi.yml
SUCCESS checkout https://github.com/ptsochantaris/key-vine.git at main
========================================
Build
========================================
Selected platform:         linux
Swift version:             6.0
Building package at path:  $workDir
https://github.com/ptsochantaris/key-vine.git
Running build ...
bash -c docker run --rm -v "checkouts-4609320-0":/host -w "$workDir" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete 2>&1
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
[3/6] Compiling KeyVine KeyVineStringConvertible.swift
[4/6] Compiling KeyVine KeyVineDataConvertible.swift
[5/6] Compiling KeyVine KeyVine.swift
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:112:33: error: cannot find type 'CFString' in scope
110 |     }
111 |
112 |     private let templateQuery: [CFString: Any]
    |                                 `- error: cannot find type 'CFString' in scope
113 |
114 |     /// Initialise a key vine using a pair of identifiers. They can in theory be anything, but for sandboxed and app store apps,
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:62:26: error: cannot find type 'OSStatus' in scope
 60 |     /// the property and subscript syntax cannot throw errors.
 61 |     public enum KeyVineError: LocalizedError {
 62 |         case readFailure(OSStatus)
    |                          `- error: cannot find type 'OSStatus' in scope
 63 |         case writeFailure(OSStatus)
 64 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:63:27: error: cannot find type 'OSStatus' in scope
 61 |     public enum KeyVineError: LocalizedError {
 62 |         case readFailure(OSStatus)
 63 |         case writeFailure(OSStatus)
    |                           `- error: cannot find type 'OSStatus' in scope
 64 |
 65 |         public var errorDescription: String? {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:96:22: error: cannot find type 'CFString' in scope
 94 |         case afterFirstUnlock
 95 |
 96 |         var cfValue: CFString {
    |                      `- error: cannot find type 'CFString' in scope
 97 |             switch self {
 98 |             case .afterFirstUnlock:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:68:39: error: cannot find 'SecCopyErrorMessageString' in scope
 66 |             switch self {
 67 |             case let .readFailure(status):
 68 |                 if let errorMessage = SecCopyErrorMessageString(status, nil) {
    |                                       `- error: cannot find 'SecCopyErrorMessageString' in scope
 69 |                     return "Keychain read failed with error \(status): \(errorMessage)"
 70 |                 } else {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:68:73: error: 'nil' requires a contextual type
 66 |             switch self {
 67 |             case let .readFailure(status):
 68 |                 if let errorMessage = SecCopyErrorMessageString(status, nil) {
    |                                                                         `- error: 'nil' requires a contextual type
 69 |                     return "Keychain read failed with error \(status): \(errorMessage)"
 70 |                 } else {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:74:39: error: cannot find 'SecCopyErrorMessageString' in scope
 72 |                 }
 73 |             case let .writeFailure(status):
 74 |                 if let errorMessage = SecCopyErrorMessageString(status, nil) {
    |                                       `- error: cannot find 'SecCopyErrorMessageString' in scope
 75 |                     return "Keychain write failed with error \(status): \(errorMessage)"
 76 |                 } else {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:74:73: error: 'nil' requires a contextual type
 72 |                 }
 73 |             case let .writeFailure(status):
 74 |                 if let errorMessage = SecCopyErrorMessageString(status, nil) {
    |                                                                         `- error: 'nil' requires a contextual type
 75 |                     return "Keychain write failed with error \(status): \(errorMessage)"
 76 |                 } else {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:122:26: error: cannot find 'kSecClass' in scope
120 |     /// ```
121 |     public init(appIdentifier: String, teamId: String, accessibility: Accessibility = .afterFirstUnlock) {
122 |         templateQuery = [kSecClass: kSecClassGenericPassword,
    |                          `- error: cannot find 'kSecClass' in scope
123 |                          kSecAttrService: appIdentifier,
124 |                          kSecUseDataProtectionKeychain: kCFBooleanTrue!,
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:122:37: error: cannot find 'kSecClassGenericPassword' in scope
120 |     /// ```
121 |     public init(appIdentifier: String, teamId: String, accessibility: Accessibility = .afterFirstUnlock) {
122 |         templateQuery = [kSecClass: kSecClassGenericPassword,
    |                                     `- error: cannot find 'kSecClassGenericPassword' in scope
123 |                          kSecAttrService: appIdentifier,
124 |                          kSecUseDataProtectionKeychain: kCFBooleanTrue!,
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:123:26: error: cannot find 'kSecAttrService' in scope
121 |     public init(appIdentifier: String, teamId: String, accessibility: Accessibility = .afterFirstUnlock) {
122 |         templateQuery = [kSecClass: kSecClassGenericPassword,
123 |                          kSecAttrService: appIdentifier,
    |                          `- error: cannot find 'kSecAttrService' in scope
124 |                          kSecUseDataProtectionKeychain: kCFBooleanTrue!,
125 |                          kSecAttrAccessible: accessibility.cfValue,
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:124:26: error: cannot find 'kSecUseDataProtectionKeychain' in scope
122 |         templateQuery = [kSecClass: kSecClassGenericPassword,
123 |                          kSecAttrService: appIdentifier,
124 |                          kSecUseDataProtectionKeychain: kCFBooleanTrue!,
    |                          `- error: cannot find 'kSecUseDataProtectionKeychain' in scope
125 |                          kSecAttrAccessible: accessibility.cfValue,
126 |                          kSecAttrAccessGroup: "\(teamId).\(appIdentifier)"]
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:124:57: error: cannot find 'kCFBooleanTrue' in scope
122 |         templateQuery = [kSecClass: kSecClassGenericPassword,
123 |                          kSecAttrService: appIdentifier,
124 |                          kSecUseDataProtectionKeychain: kCFBooleanTrue!,
    |                                                         `- error: cannot find 'kCFBooleanTrue' in scope
125 |                          kSecAttrAccessible: accessibility.cfValue,
126 |                          kSecAttrAccessGroup: "\(teamId).\(appIdentifier)"]
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:125:26: error: cannot find 'kSecAttrAccessible' in scope
123 |                          kSecAttrService: appIdentifier,
124 |                          kSecUseDataProtectionKeychain: kCFBooleanTrue!,
125 |                          kSecAttrAccessible: accessibility.cfValue,
    |                          `- error: cannot find 'kSecAttrAccessible' in scope
126 |                          kSecAttrAccessGroup: "\(teamId).\(appIdentifier)"]
127 |     }
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:126:26: error: cannot find 'kSecAttrAccessGroup' in scope
124 |                          kSecUseDataProtectionKeychain: kCFBooleanTrue!,
125 |                          kSecAttrAccessible: accessibility.cfValue,
126 |                          kSecAttrAccessGroup: "\(teamId).\(appIdentifier)"]
    |                          `- error: cannot find 'kSecAttrAccessGroup' in scope
127 |     }
128 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:140:15: error: cannot find 'kSecAttrAccount' in scope
138 |     public func read(from key: String) throws -> Data? {
139 |         var query = templateQuery
140 |         query[kSecAttrAccount] = key
    |               `- error: cannot find 'kSecAttrAccount' in scope
141 |         query[kSecMatchLimit] = kSecMatchLimitOne
142 |         query[kSecReturnData] = kCFBooleanTrue
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:141:15: error: cannot find 'kSecMatchLimit' in scope
139 |         var query = templateQuery
140 |         query[kSecAttrAccount] = key
141 |         query[kSecMatchLimit] = kSecMatchLimitOne
    |               `- error: cannot find 'kSecMatchLimit' in scope
142 |         query[kSecReturnData] = kCFBooleanTrue
143 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:141:33: error: cannot find 'kSecMatchLimitOne' in scope
139 |         var query = templateQuery
140 |         query[kSecAttrAccount] = key
141 |         query[kSecMatchLimit] = kSecMatchLimitOne
    |                                 `- error: cannot find 'kSecMatchLimitOne' in scope
142 |         query[kSecReturnData] = kCFBooleanTrue
143 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:142:15: error: cannot find 'kSecReturnData' in scope
140 |         query[kSecAttrAccount] = key
141 |         query[kSecMatchLimit] = kSecMatchLimitOne
142 |         query[kSecReturnData] = kCFBooleanTrue
    |               `- error: cannot find 'kSecReturnData' in scope
143 |
144 |         var itemCopy: AnyObject?
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:142:33: error: cannot find 'kCFBooleanTrue' in scope
140 |         query[kSecAttrAccount] = key
141 |         query[kSecMatchLimit] = kSecMatchLimitOne
142 |         query[kSecReturnData] = kCFBooleanTrue
    |                                 `- error: cannot find 'kCFBooleanTrue' in scope
143 |
144 |         var itemCopy: AnyObject?
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:145:22: error: cannot find 'SecItemCopyMatching' in scope
143 |
144 |         var itemCopy: AnyObject?
145 |         let status = SecItemCopyMatching(query as CFDictionary, &itemCopy)
    |                      `- error: cannot find 'SecItemCopyMatching' in scope
146 |         switch status {
147 |         case errSecSuccess:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:145:51: error: cannot find type 'CFDictionary' in scope
143 |
144 |         var itemCopy: AnyObject?
145 |         let status = SecItemCopyMatching(query as CFDictionary, &itemCopy)
    |                                                   `- error: cannot find type 'CFDictionary' in scope
146 |         switch status {
147 |         case errSecSuccess:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:147:14: error: cannot find 'errSecSuccess' in scope
145 |         let status = SecItemCopyMatching(query as CFDictionary, &itemCopy)
146 |         switch status {
147 |         case errSecSuccess:
    |              `- error: cannot find 'errSecSuccess' in scope
148 |             return itemCopy as? Data
149 |         case errSecItemNotFound:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:149:14: error: cannot find 'errSecItemNotFound' in scope
147 |         case errSecSuccess:
148 |             return itemCopy as? Data
149 |         case errSecItemNotFound:
    |              `- error: cannot find 'errSecItemNotFound' in scope
150 |             return nil
151 |         default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:167:21: error: cannot find type 'OSStatus' in scope
165 |     public func write(data: Data?, to key: String) throws {
166 |         var query = templateQuery
167 |         var status: OSStatus
    |                     `- error: cannot find type 'OSStatus' in scope
168 |
169 |         query[kSecAttrAccount] = key
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:169:15: error: cannot find 'kSecAttrAccount' in scope
167 |         var status: OSStatus
168 |
169 |         query[kSecAttrAccount] = key
    |               `- error: cannot find 'kSecAttrAccount' in scope
170 |
171 |         if let data {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:172:19: error: cannot find 'kSecValueData' in scope
170 |
171 |         if let data {
172 |             query[kSecValueData] = data
    |                   `- error: cannot find 'kSecValueData' in scope
173 |             status = SecItemAdd(query as CFDictionary, nil)
174 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:173:22: error: cannot find 'SecItemAdd' in scope
171 |         if let data {
172 |             query[kSecValueData] = data
173 |             status = SecItemAdd(query as CFDictionary, nil)
    |                      `- error: cannot find 'SecItemAdd' in scope
174 |
175 |             switch status {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:173:42: error: cannot find type 'CFDictionary' in scope
171 |         if let data {
172 |             query[kSecValueData] = data
173 |             status = SecItemAdd(query as CFDictionary, nil)
    |                                          `- error: cannot find type 'CFDictionary' in scope
174 |
175 |             switch status {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:173:56: error: 'nil' requires a contextual type
171 |         if let data {
172 |             query[kSecValueData] = data
173 |             status = SecItemAdd(query as CFDictionary, nil)
    |                                                        `- error: 'nil' requires a contextual type
174 |
175 |             switch status {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:176:18: error: cannot find 'errSecDuplicateItem' in scope
174 |
175 |             switch status {
176 |             case errSecDuplicateItem:
    |                  `- error: cannot find 'errSecDuplicateItem' in scope
177 |                 query[kSecValueData] = nil
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:177:23: error: cannot find 'kSecValueData' in scope
175 |             switch status {
176 |             case errSecDuplicateItem:
177 |                 query[kSecValueData] = nil
    |                       `- error: cannot find 'kSecValueData' in scope
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
179 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:177:40: error: 'nil' requires a contextual type
175 |             switch status {
176 |             case errSecDuplicateItem:
177 |                 query[kSecValueData] = nil
    |                                        `- error: 'nil' requires a contextual type
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
179 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:178:26: error: cannot find 'SecItemUpdate' in scope
176 |             case errSecDuplicateItem:
177 |                 query[kSecValueData] = nil
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
    |                          `- error: cannot find 'SecItemUpdate' in scope
179 |
180 |             default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:178:64: error: cannot find 'kSecValueData' in scope
176 |             case errSecDuplicateItem:
177 |                 query[kSecValueData] = nil
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
    |                                                                `- error: cannot find 'kSecValueData' in scope
179 |
180 |             default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:178:49: error: cannot find type 'CFDictionary' in scope
176 |             case errSecDuplicateItem:
177 |                 query[kSecValueData] = nil
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
    |                                                 `- error: cannot find type 'CFDictionary' in scope
179 |
180 |             default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:178:88: error: cannot find type 'CFDictionary' in scope
176 |             case errSecDuplicateItem:
177 |                 query[kSecValueData] = nil
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
    |                                                                                        `- error: cannot find type 'CFDictionary' in scope
179 |
180 |             default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:185:22: error: cannot find 'SecItemDelete' in scope
183 |
184 |         } else {
185 |             status = SecItemDelete(query as CFDictionary)
    |                      `- error: cannot find 'SecItemDelete' in scope
186 |             switch status {
187 |             case errSecItemNotFound, errSecSuccess:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:185:45: error: cannot find type 'CFDictionary' in scope
183 |
184 |         } else {
185 |             status = SecItemDelete(query as CFDictionary)
    |                                             `- error: cannot find type 'CFDictionary' in scope
186 |             switch status {
187 |             case errSecItemNotFound, errSecSuccess:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:187:18: error: cannot find 'errSecItemNotFound' in scope
185 |             status = SecItemDelete(query as CFDictionary)
186 |             switch status {
187 |             case errSecItemNotFound, errSecSuccess:
    |                  `- error: cannot find 'errSecItemNotFound' in scope
188 |                 return
189 |             default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:187:38: error: cannot find 'errSecSuccess' in scope
185 |             status = SecItemDelete(query as CFDictionary)
186 |             switch status {
187 |             case errSecItemNotFound, errSecSuccess:
    |                                      `- error: cannot find 'errSecSuccess' in scope
188 |                 return
189 |             default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:194:22: error: cannot find 'errSecSuccess' in scope
192 |         }
193 |
194 |         if status != errSecSuccess {
    |                      `- error: cannot find 'errSecSuccess' in scope
195 |             throw KeyVineError.writeFailure(status)
196 |         }
error: emit-module command failed with exit code 1 (use -v to see invocation)
[6/6] Emitting module KeyVine
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:112:33: error: cannot find type 'CFString' in scope
110 |     }
111 |
112 |     private let templateQuery: [CFString: Any]
    |                                 `- error: cannot find type 'CFString' in scope
113 |
114 |     /// Initialise a key vine using a pair of identifiers. They can in theory be anything, but for sandboxed and app store apps,
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:62:26: error: cannot find type 'OSStatus' in scope
 60 |     /// the property and subscript syntax cannot throw errors.
 61 |     public enum KeyVineError: LocalizedError {
 62 |         case readFailure(OSStatus)
    |                          `- error: cannot find type 'OSStatus' in scope
 63 |         case writeFailure(OSStatus)
 64 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:63:27: error: cannot find type 'OSStatus' in scope
 61 |     public enum KeyVineError: LocalizedError {
 62 |         case readFailure(OSStatus)
 63 |         case writeFailure(OSStatus)
    |                           `- error: cannot find type 'OSStatus' in scope
 64 |
 65 |         public var errorDescription: String? {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:96:22: error: cannot find type 'CFString' in scope
 94 |         case afterFirstUnlock
 95 |
 96 |         var cfValue: CFString {
    |                      `- error: cannot find type 'CFString' in scope
 97 |             switch self {
 98 |             case .afterFirstUnlock:
BUILD FAILURE 6.0 linux
This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.