The Swift Package Index logo.Swift Package Index

Build Information

Successful build of PerfectRedis, reference main (c47ddd), with Swift 6.4 for Android on 16 Sep 2026 02:52:38 UTC.

Swift 6 data race errors: 0

Build Command

bash -c docker run --pull=always --rm -v "checkouts-54344847-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:android-6.4-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/perfectlysoft/perfect-redis.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/perfectlysoft/perfect-redis
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at c47ddd8 Merge pull request #22 from PerfectlySoft/swift6-modernization
Cloned https://github.com/perfectlysoft/perfect-redis.git
Revision (git rev-parse @):
c47ddd85e1ca705e0750ff9fc7b4c709795513aa
SUCCESS checkout https://github.com/perfectlysoft/perfect-redis.git at main
========================================
Build
========================================
Selected platform:         android
Swift version:             6.4
Building package at path:  $PWD
https://github.com/perfectlysoft/perfect-redis.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-54344847-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:android-6.4-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1
android-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:abadcff584c273feba50641b454858d377ba30b35ea7287a94f45ebd8afd0ea0
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:android-6.4-latest
Fetching https://github.com/swift-server/RediStack.git
[1/4803] Fetching redistack
Fetched https://github.com/swift-server/RediStack.git (0.60s)
Computing version for https://github.com/swift-server/RediStack.git
Computed https://github.com/swift-server/RediStack.git at 1.6.3 (0.78s)
Fetching https://github.com/apple/swift-atomics.git
Fetching https://github.com/apple/swift-log.git
Fetching https://github.com/apple/swift-nio-ssl.git
Fetching https://github.com/apple/swift-metrics.git
Fetching https://github.com/apple/swift-nio.git
[1/16064] Fetching swift-nio-ssl
[2/19572] Fetching swift-nio-ssl, swift-metrics
[1627/21447] Fetching swift-nio-ssl, swift-metrics, swift-atomics
[2462/29530] Fetching swift-nio-ssl, swift-metrics, swift-atomics, swift-log
[29531/115477] Fetching swift-nio-ssl, swift-metrics, swift-atomics, swift-log, swift-nio
Fetched https://github.com/apple/swift-atomics.git (3.19s)
Fetched https://github.com/apple/swift-metrics.git (3.19s)
Fetched https://github.com/apple/swift-log.git (3.20s)
Fetched https://github.com/apple/swift-nio-ssl.git (3.21s)
Fetched https://github.com/apple/swift-nio.git (3.23s)
Computing version for https://github.com/apple/swift-atomics.git
Computed https://github.com/apple/swift-atomics.git at 1.3.1 (3.43s)
Computing version for https://github.com/apple/swift-nio-ssl.git
Computed https://github.com/apple/swift-nio-ssl.git at 2.37.4 (0.23s)
Computing version for https://github.com/apple/swift-nio.git
Computed https://github.com/apple/swift-nio.git at 2.102.0 (0.34s)
Fetching https://github.com/apple/swift-system.git
Fetching https://github.com/apple/swift-collections.git
[1/6898] Fetching swift-system
[2/34143] Fetching swift-system, swift-collections
Fetched https://github.com/apple/swift-system.git (1.13s)
Fetched https://github.com/apple/swift-collections.git (1.29s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.6.0 (1.59s)
Computing version for https://github.com/apple/swift-system.git
Computed https://github.com/apple/swift-system.git at 1.8.1 (0.22s)
Computing version for https://github.com/apple/swift-metrics.git
Computed https://github.com/apple/swift-metrics.git at 2.11.0 (0.18s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.15.1 (0.19s)
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.6.0
Creating working copy for https://github.com/swift-server/RediStack.git
Working copy of https://github.com/swift-server/RediStack.git resolved at 1.6.3
Creating working copy for https://github.com/apple/swift-nio-ssl.git
Working copy of https://github.com/apple/swift-nio-ssl.git resolved at 2.37.4
Creating working copy for https://github.com/apple/swift-atomics.git
Working copy of https://github.com/apple/swift-atomics.git resolved at 1.3.1
Creating working copy for https://github.com/apple/swift-nio.git
Working copy of https://github.com/apple/swift-nio.git resolved at 2.102.0
Creating working copy for https://github.com/apple/swift-metrics.git
Working copy of https://github.com/apple/swift-metrics.git resolved at 2.11.0
Creating working copy for https://github.com/apple/swift-system.git
Working copy of https://github.com/apple/swift-system.git resolved at 1.8.1
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.15.1
Building for debugging...
[Computing dependencies]
[Pre-planning 1 / 900]
[Planning deferred tasks]
[Starting]
[168 / 715] CNIOWindows
[185 / 751] _NIODataStructures
[185 / 751] InternalCollectionsUtilities
[187 / 751] _NIODataStructures
[203 / 751] NIOConcurrencyHelpers
[203 / 751] Logging
[216 / 751] _NIODataStructures
[222 / 751] NIOConcurrencyHelpers-product
[225 / 751] NIOConcurrencyHelpers
[234 / 753] _NIODataStructures
[238 / 754] NIOConcurrencyHelpers
[241 / 754] NIOConcurrencyHelpers
[244 / 754] InternalCollectionsUtilities
[248 / 754] CoreMetrics
[252 / 754]
[258 / 768] Atomics
[260 / 778] ContainersPreview
[270 / 778] Metrics
[281 / 779] ContainersPreview
[287 / 779] Atomics
[292 / 780] Logging
[301 / 781] Metrics-product
[309 / 781] CNIOBoringSSL
[310 / 781] Metrics
[314 / 782] CNIOBoringSSL
[316 / 782] Atomics
[317 / 782] CNIOBoringSSL
[328 / 782] CNIOBoringSSL
[332 / 782] CNIOBoringSSL
[334 / 782] CNIOBoringSSL
[335 / 782] CNIOBoringSSL
[336 / 783] CNIOBoringSSL
[338 / 783] CNIOBoringSSL
[341 / 783] CNIOBoringSSL
[342 / 783] CNIOBoringSSL
[345 / 783] CNIOBoringSSL
[346 / 783] CNIOBoringSSL
[349 / 783] CNIOBoringSSL
[352 / 783] CNIOBoringSSL
[356 / 783] CNIOBoringSSL
[359 / 783] CNIOBoringSSL
[363 / 783] CNIOBoringSSL
[366 / 783] CNIOBoringSSL
[367 / 783] CNIOBoringSSL
[370 / 783] CNIOBoringSSL
[373 / 783] CNIOBoringSSL
[376 / 783] CNIOBoringSSL
[379 / 783] CNIOBoringSSL
[382 / 783] CNIOBoringSSL
[386 / 783] CNIOBoringSSL
[389 / 783] CNIOBoringSSL
[392 / 783] CNIOBoringSSL
[394 / 783] CNIOBoringSSL
[398 / 783] CNIOBoringSSL
[402 / 783] CNIOBoringSSL
[404 / 783] CNIOBoringSSL
[406 / 783] CNIOBoringSSL
[408 / 783] CNIOBoringSSL
[410 / 783] CNIOBoringSSL
[412 / 783] CNIOBoringSSL
[414 / 783] CNIOBoringSSL
[415 / 783] CNIOBoringSSL
[416 / 783] CNIOBoringSSL
[420 / 783] CNIOBoringSSL
[423 / 783] CNIOBoringSSL
[424 / 783] CNIOBoringSSL
[426 / 783] CNIOBoringSSL
[428 / 783] CNIOBoringSSL
[429 / 783] CNIOBoringSSL
[432 / 783] CNIOBoringSSL
[437 / 783] CNIOBoringSSL
[446 / 783] CNIOBoringSSL
[459 / 783] CNIOBoringSSL
[465 / 783] CNIOBoringSSL
[467 / 783] CNIOBoringSSL
[468 / 783] CNIOBoringSSL
[470 / 783] CNIOBoringSSL
[472 / 783] CNIOBoringSSL
[474 / 783] CNIOBoringSSL
[475 / 783] CNIOBoringSSL
[483 / 783] CNIOBoringSSL
[485 / 783] CNIOBoringSSL
[487 / 783] CNIOBoringSSL
[489 / 783] CNIOBoringSSL
[490 / 783] CNIOBoringSSL
[492 / 783] CNIOBoringSSL
[495 / 783] CNIOBoringSSL
[497 / 783] CNIOBoringSSL
[499 / 783] CNIOBoringSSL
[501 / 783] CNIOBoringSSL
[504 / 783] CNIOBoringSSL
[506 / 783] CNIOBoringSSL
[508 / 783] CNIOBoringSSL
[509 / 783] CNIOBoringSSL
[510 / 783] CNIOBoringSSL
[515 / 783] CNIOBoringSSL
[521 / 783] CNIOBoringSSL
[528 / 783] CNIOBoringSSL
[530 / 783] CNIOBoringSSL
[531 / 783] CNIOBoringSSL
[535 / 783] CNIOBoringSSL
[539 / 783] CNIOBoringSSL
[542 / 783] CNIOBoringSSL
[546 / 783] CNIOBoringSSL
[549 / 783] CNIOBoringSSL
[552 / 783] CNIOBoringSSL
[562 / 783] CNIOBoringSSL
[567 / 783] CNIOBoringSSL
[574 / 783] CNIOBoringSSL
[579 / 783] CNIOBoringSSL
[582 / 783] CNIOBoringSSL
[585 / 783] CNIOBoringSSL
[588 / 783] CNIOBoringSSL
[590 / 783] CNIOBoringSSL
[592 / 783] CNIOBoringSSL
[596 / 783] CNIOBoringSSL
[600 / 783] CNIOBoringSSL
[604 / 783] CNIOBoringSSL
[608 / 783] CNIOBoringSSL
[610 / 783] CNIOBoringSSL
[613 / 783] CNIOBoringSSL
[614 / 783] CNIOBoringSSL
[616 / 783] CNIOBoringSSL
[620 / 783] CNIOBoringSSL
[623 / 783] CNIOBoringSSL
[633 / 783] CNIOBoringSSL
[641 / 783] CNIOBoringSSL
[645 / 783] CNIOBoringSSL
[653 / 783] CNIOBoringSSL
[654 / 783] CNIOBoringSSL
[656 / 783] CNIOBoringSSL
[657 / 783] CNIOBoringSSL
[661 / 783] CNIOBoringSSL
[662 / 783] CNIOBoringSSL
[666 / 783] CNIOBoringSSL
[677 / 783] CNIOBoringSSL
[685 / 783] CNIOBoringSSL
[692 / 783] CNIOBoringSSL
[694 / 783] CNIOBoringSSL
[695 / 783] CNIOBoringSSL
[698 / 783] CNIOBoringSSL
[700 / 783] CNIOBoringSSL
[701 / 783] CNIOBoringSSL
[703 / 783] CNIOBoringSSL
[706 / 783] CNIOBoringSSL
[708 / 783] CNIOBoringSSL
[716 / 784] Metrics
[720 / 793] DequeModule
[722 / 793] DequeModule
[724 / 793] DequeModule
[727 / 793] DequeModule
[729 / 793] NIOConcurrencyHelpers
[729 / 793] DequeModule
[729 / 794] DequeModule
[747 / 804] NIOCore
[747 / 804] DequeModule
[747 / 804] NIOCore
[747 / 805] NIOCore
[765 / 820] NIOPosix
[766 / 820] NIOPosix
[767 / 820] NIOEmbedded
[769 / 820] NIOEmbedded
[774 / 820] NIOPosix
[775 / 821] NIOPosix
[776 / 821] NIOEmbedded
[778 / 821] NIOPosix
[787 / 824] NIO
[796 / 832] NIOTLS
[798 / 832] NIOTLS
[801 / 832] NIOTLS
[810 / 842] NIOSSL
[812 / 843] NIOTLS
[816 / 843] NIOSSL
[818 / 844] NIOPosix
[820 / 844] NIOPosix
[827 / 845]
[833 / 854] RediStack
[834 / 854] RediStack
[835 / 854] RediStack
[837 / 855] RediStack
[849 / 862] PerfectRedis
[852 / 862] PerfectRedis
[857 / 862] RediStack
[860 / 863] PerfectRedis
/host/spi-builder-workspace/Sources/PerfectRedis/PerfectRedis.swift:165:11: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
163 |             configuration: config,
164 |             boundEventLoop: eventLoop
165 |         ).get()
    |           `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
166 |         return RedisClient(connection: connection)
167 |     }
/host/spi-builder-workspace/.build/checkouts/RediStack/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
 86 | ///
 87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
 88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
    |                    `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
 89 |     /// A unique identifer to represent this connection.
 90 |     public let id = UUID()
/host/spi-builder-workspace/Sources/PerfectRedis/PerfectRedis.swift:2:1: warning: add '@preconcurrency' to treat 'Sendable'-related errors from module 'RediStack' as warnings [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/add-preconcurrency-import\AddPreconcurrencyImport]8;;\]
  1 | import Foundation
  2 | import RediStack
    | `- warning: add '@preconcurrency' to treat 'Sendable'-related errors from module 'RediStack' as warnings [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/add-preconcurrency-import\AddPreconcurrencyImport]8;;\]
  3 | import NIOCore
  4 | import NIOPosix
/host/spi-builder-workspace/Sources/PerfectRedis/PerfectRedis.swift:179:78: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
177 |     // All public commands route through here.
178 |     func send(_ command: String, _ args: [RESPValue] = []) async throws -> RedisResponse {
179 |         let result = try await connection.send(command: command, with: args).get()
    |                                                                              `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
180 |         return RedisResponse(result)
181 |     }
/host/spi-builder-workspace/.build/checkouts/RediStack/Sources/RediStack/RESP/RESPValue.swift:30:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
[#AddPreconcurrencyImport]: <https://docs.swift.org/compiler/documentation/diagnostics/add-preconcurrency-import>
Build complete! (47.89 secs)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "redistack",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.6.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/swift-server/RediStack.git"
    }
  ],
  "manifest_display_name" : "PerfectRedis",
  "name" : "PerfectRedis",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "PerfectRedis",
      "targets" : [
        "PerfectRedis"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "PerfectRedisTests",
      "module_type" : "SwiftTarget",
      "name" : "PerfectRedisTests",
      "path" : "Tests/PerfectRedisTests",
      "sources" : [
        "HashTests.swift",
        "PerfectRedisTests.swift"
      ],
      "target_dependencies" : [
        "PerfectRedis"
      ],
      "type" : "test"
    },
    {
      "c99name" : "PerfectRedis",
      "module_type" : "SwiftTarget",
      "name" : "PerfectRedis",
      "path" : "Sources/PerfectRedis",
      "product_dependencies" : [
        "RediStack"
      ],
      "product_memberships" : [
        "PerfectRedis"
      ],
      "sources" : [
        "PerfectRedis.swift",
        "RedisClientSync.swift",
        "RedisHash.swift",
        "RedisList.swift",
        "RedisSet.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "6.2"
}
android-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:abadcff584c273feba50641b454858d377ba30b35ea7287a94f45ebd8afd0ea0
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:android-6.4-latest
Done.