The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of Titan, reference 0.9.0 (2aacdd), with Swift 6.2 (beta) for Android on 18 Jun 2025 03:06:41 UTC.

Swift 6 data race errors: 0

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-3":/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/bermudadigitalstudio/titan.git
Reference: 0.9.0
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/bermudadigitalstudio/titan
 * tag               0.9.0      -> FETCH_HEAD
HEAD is now at 2aacdd9 Merge pull request #96 from bermudadigitalstudio/renaming
Cloned https://github.com/bermudadigitalstudio/titan.git
Revision (git rev-parse @):
2aacdd9c80605c999031969ee8008ef84df2e0d6
SUCCESS checkout https://github.com/bermudadigitalstudio/titan.git at 0.9.0
========================================
Build
========================================
Selected platform:         android
Swift version:             6.2
Building package at path:  $PWD
https://github.com/bermudadigitalstudio/titan.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-3":/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/11] Write sources
[10/11] Write swift-version-8C5A4AE7A8CE2BA.txt
[12/19] Compiling TitanCore TitanResponse.swift
[13/19] Compiling TitanCore TitanHeader.swift
[14/19] Compiling TitanCore TitanMethod.swift
[15/19] Compiling TitanCore TitanLogs.swift
[16/19] Emitting module TitanCore
[17/19] Compiling TitanCore TitanCore.swift
[18/19] Compiling TitanCore TitanError.swift
[19/19] Compiling TitanCore TitanRequest.swift
[21/41] Emitting module TitanErrorHandling
[22/41] Compiling TitanErrorHandling TitanErrorHandling.swift
[23/42] Emitting module TitanJSON
/host/spi-builder-workspace/Sources/TitanJSON/TitanJSONResponseBody.swift:19:5: warning: 'public' modifier is redundant for initializer declared in a public extension
17 | public extension Response {
18 |
19 |     public init(code: Int, json: Any) throws {
   |     `- warning: 'public' modifier is redundant for initializer declared in a public extension
20 |         let jsonData = try JSONSerialization.data(withJSONObject: json, options: [])
21 |         self.init(code: code, body: jsonData, headers: HTTPHeaders(dictionaryLiteral: ("content-type", "application/json")))
/host/spi-builder-workspace/Sources/TitanJSON/TitanJSONResponseBody.swift:24:5: warning: 'public' modifier is redundant for initializer declared in a public extension
22 |     }
23 |
24 |     public init<T: Encodable>(code: Int, object: T, jsonEncoder: JSONEncoder = JSONEncoder()) throws {
   |     `- warning: 'public' modifier is redundant for initializer declared in a public extension
25 |         let data = try jsonEncoder.encode(object)
26 |         self.init(code: code, body: data, headers: HTTPHeaders(dictionaryLiteral: ("content-type", "application/json")))
[24/42] Emitting module TitanRouter
[26/42] Compiling TitanJSON TitanJSONRequestBody.swift
[27/42] Compiling TitanJSON TitanJSONResponseBody.swift
/host/spi-builder-workspace/Sources/TitanJSON/TitanJSONResponseBody.swift:19:5: warning: 'public' modifier is redundant for initializer declared in a public extension
17 | public extension Response {
18 |
19 |     public init(code: Int, json: Any) throws {
   |     `- warning: 'public' modifier is redundant for initializer declared in a public extension
20 |         let jsonData = try JSONSerialization.data(withJSONObject: json, options: [])
21 |         self.init(code: code, body: jsonData, headers: HTTPHeaders(dictionaryLiteral: ("content-type", "application/json")))
/host/spi-builder-workspace/Sources/TitanJSON/TitanJSONResponseBody.swift:24:5: warning: 'public' modifier is redundant for initializer declared in a public extension
22 |     }
23 |
24 |     public init<T: Encodable>(code: Int, object: T, jsonEncoder: JSONEncoder = JSONEncoder()) throws {
   |     `- warning: 'public' modifier is redundant for initializer declared in a public extension
25 |         let data = try jsonEncoder.encode(object)
26 |         self.init(code: code, body: data, headers: HTTPHeaders(dictionaryLiteral: ("content-type", "application/json")))
[28/42] Emitting module Titan404
[29/42] Compiling Titan404 Titan404.swift
[31/44] Compiling TitanHealthz TitanHealthz.swift
[32/44] Emitting module TitanHealthz
[33/45] Compiling TitanFormURLEncodedBodyParser TitanFormURLEncodedBodyParser.swift
/host/spi-builder-workspace/Sources/TitanFormURLEncodedBodyParser/TitanFormURLEncodedBodyParser.swift:19:5: warning: 'public' modifier is redundant for property declared in a public extension
17 | public extension RequestType {
18 |
19 |     public var formURLEncodedBody: [(name: String, value: String)] {
   |     `- warning: 'public' modifier is redundant for property declared in a public extension
20 |         guard let bodyString: String = self.body else {
21 |             return []
/host/spi-builder-workspace/Sources/TitanFormURLEncodedBodyParser/TitanFormURLEncodedBodyParser.swift:27:5: warning: 'public' modifier is redundant for property declared in a public extension
25 |     }
26 |
27 |     public var postParams: [String: String] {
   |     `- warning: 'public' modifier is redundant for property declared in a public extension
28 |         var ret = [String: String]()
29 |         guard let bodyString: String = self.body else {
[35/45] Emitting module TitanFormURLEncodedBodyParser
/host/spi-builder-workspace/Sources/TitanFormURLEncodedBodyParser/TitanFormURLEncodedBodyParser.swift:19:5: warning: 'public' modifier is redundant for property declared in a public extension
17 | public extension RequestType {
18 |
19 |     public var formURLEncodedBody: [(name: String, value: String)] {
   |     `- warning: 'public' modifier is redundant for property declared in a public extension
20 |         guard let bodyString: String = self.body else {
21 |             return []
/host/spi-builder-workspace/Sources/TitanFormURLEncodedBodyParser/TitanFormURLEncodedBodyParser.swift:27:5: warning: 'public' modifier is redundant for property declared in a public extension
25 |     }
26 |
27 |     public var postParams: [String: String] {
   |     `- warning: 'public' modifier is redundant for property declared in a public extension
28 |         var ret = [String: String]()
29 |         guard let bodyString: String = self.body else {
[38/46] Emitting module TitanQueryString
/host/spi-builder-workspace/Sources/TitanQueryString/TitanQueryString.swift:20:5: warning: 'public' modifier is redundant for property declared in a public extension
18 |     /// The pairs of keys and values in the query string of the `RequestType`s path.
19 |     /// Complexity: 0(n) on all invocations.
20 |     public var queryPairs: [(key: String, value: String)] {
   |     `- warning: 'public' modifier is redundant for property declared in a public extension
21 |         // Ensure there is a query string, otherwise return
22 |         guard let indexOfQuery = self.path.index(of: "?") else {
/host/spi-builder-workspace/Sources/TitanQueryString/TitanQueryString.swift:57:5: warning: 'public' modifier is redundant for property declared in a public extension
55 |     /// Access the query string as a dictionary, with case sensitive keys.
56 |     /// Complexity: 0(n) on all invocations.
57 |     public var query: [String: String] {
   |     `- warning: 'public' modifier is redundant for property declared in a public extension
58 |         var query: [String: String] = [:]
59 |         for (name, value) in self.queryPairs {
[39/46] Compiling TitanQueryString TitanQueryString.swift
/host/spi-builder-workspace/Sources/TitanQueryString/TitanQueryString.swift:20:5: warning: 'public' modifier is redundant for property declared in a public extension
18 |     /// The pairs of keys and values in the query string of the `RequestType`s path.
19 |     /// Complexity: 0(n) on all invocations.
20 |     public var queryPairs: [(key: String, value: String)] {
   |     `- warning: 'public' modifier is redundant for property declared in a public extension
21 |         // Ensure there is a query string, otherwise return
22 |         guard let indexOfQuery = self.path.index(of: "?") else {
/host/spi-builder-workspace/Sources/TitanQueryString/TitanQueryString.swift:57:5: warning: 'public' modifier is redundant for property declared in a public extension
55 |     /// Access the query string as a dictionary, with case sensitive keys.
56 |     /// Complexity: 0(n) on all invocations.
57 |     public var query: [String: String] {
   |     `- warning: 'public' modifier is redundant for property declared in a public extension
58 |         var query: [String: String] = [:]
59 |         for (name, value) in self.queryPairs {
[40/47] Emitting module TitanCORS
[41/47] Compiling TitanCORS TitanCORS.swift
[44/48] Compiling TitanRouter TitanRoutesByMethod.swift
[45/48] Compiling TitanRouter TitanParameterizedRoutes.swift
[46/48] Compiling TitanRouter InitializerOverloads.swift
[47/48] Compiling TitanRouter PathParameterSupport.swift
[48/48] Compiling TitanRouter TitanRoutingExtension.swift
[50/51] Emitting module Titan
[51/51] Compiling Titan Titan.swift
Build complete! (16.57s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Titan",
  "name" : "Titan",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "TitanCore",
      "targets" : [
        "TitanCore"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Titan",
      "targets" : [
        "Titan"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TitanRouter",
      "targets" : [
        "TitanRouter"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TitanErrorHandling",
      "targets" : [
        "TitanErrorHandling"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Titan404",
      "targets" : [
        "Titan404"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TitanCORS",
      "targets" : [
        "TitanCORS"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TitanFormURLEncodedBodyParser",
      "targets" : [
        "TitanFormURLEncodedBodyParser"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TitanJSON",
      "targets" : [
        "TitanJSON"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TitanQueryString",
      "targets" : [
        "TitanQueryString"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TitanHealthz",
      "targets" : [
        "TitanHealthz"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "TitanTests",
      "module_type" : "SwiftTarget",
      "name" : "TitanTests",
      "path" : "Tests/TitanTests",
      "sources" : [
        "TitanAPITests.swift"
      ],
      "target_dependencies" : [
        "Titan"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TitanRouterTests",
      "module_type" : "SwiftTarget",
      "name" : "TitanRouterTests",
      "path" : "Tests/TitanRouterTests",
      "sources" : [
        "TitanRouterTests.swift"
      ],
      "target_dependencies" : [
        "TitanRouter"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TitanRouter",
      "module_type" : "SwiftTarget",
      "name" : "TitanRouter",
      "path" : "Sources/TitanRouter",
      "product_memberships" : [
        "Titan",
        "TitanRouter"
      ],
      "sources" : [
        "InitializerOverloads.swift",
        "PathParameterSupport.swift",
        "TitanParameterizedRoutes.swift",
        "TitanRoutesByMethod.swift",
        "TitanRoutingExtension.swift"
      ],
      "target_dependencies" : [
        "TitanCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TitanQueryStringTests",
      "module_type" : "SwiftTarget",
      "name" : "TitanQueryStringTests",
      "path" : "Tests/TitanQueryStringTests",
      "sources" : [
        "TitanQueryStringTests.swift"
      ],
      "target_dependencies" : [
        "TitanQueryString"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TitanQueryString",
      "module_type" : "SwiftTarget",
      "name" : "TitanQueryString",
      "path" : "Sources/TitanQueryString",
      "product_memberships" : [
        "Titan",
        "TitanQueryString"
      ],
      "sources" : [
        "TitanQueryString.swift"
      ],
      "target_dependencies" : [
        "TitanCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TitanJSONTests",
      "module_type" : "SwiftTarget",
      "name" : "TitanJSONTests",
      "path" : "Tests/TitanJSONTests",
      "sources" : [
        "TitanJSONTests.swift"
      ],
      "target_dependencies" : [
        "TitanJSON"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TitanJSON",
      "module_type" : "SwiftTarget",
      "name" : "TitanJSON",
      "path" : "Sources/TitanJSON",
      "product_memberships" : [
        "Titan",
        "TitanJSON"
      ],
      "sources" : [
        "TitanJSONRequestBody.swift",
        "TitanJSONResponseBody.swift"
      ],
      "target_dependencies" : [
        "TitanCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TitanHealthzTests",
      "module_type" : "SwiftTarget",
      "name" : "TitanHealthzTests",
      "path" : "Tests/TitanHealthzTests",
      "sources" : [
        "TitanHealthzTests.swift"
      ],
      "target_dependencies" : [
        "TitanHealthz"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TitanHealthz",
      "module_type" : "SwiftTarget",
      "name" : "TitanHealthz",
      "path" : "Sources/TitanHealthz",
      "product_memberships" : [
        "TitanHealthz"
      ],
      "sources" : [
        "TitanHealthz.swift"
      ],
      "target_dependencies" : [
        "TitanCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TitanFormURLEncodedBodyParserTests",
      "module_type" : "SwiftTarget",
      "name" : "TitanFormURLEncodedBodyParserTests",
      "path" : "Tests/TitanFormURLEncodedBodyParserTests",
      "sources" : [
        "TitanFormURLEncodedBodyParserTests.swift"
      ],
      "target_dependencies" : [
        "TitanFormURLEncodedBodyParser"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TitanFormURLEncodedBodyParser",
      "module_type" : "SwiftTarget",
      "name" : "TitanFormURLEncodedBodyParser",
      "path" : "Sources/TitanFormURLEncodedBodyParser",
      "product_memberships" : [
        "Titan",
        "TitanFormURLEncodedBodyParser"
      ],
      "sources" : [
        "TitanFormURLEncodedBodyParser.swift"
      ],
      "target_dependencies" : [
        "TitanCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TitanErrorHandlingTests",
      "module_type" : "SwiftTarget",
      "name" : "TitanErrorHandlingTests",
      "path" : "Tests/TitanErrorHandlingTests",
      "sources" : [
        "TitanErrorHandlingTests.swift"
      ],
      "target_dependencies" : [
        "TitanErrorHandling"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TitanErrorHandling",
      "module_type" : "SwiftTarget",
      "name" : "TitanErrorHandling",
      "path" : "Sources/TitanErrorHandling",
      "product_memberships" : [
        "Titan",
        "TitanErrorHandling"
      ],
      "sources" : [
        "TitanErrorHandling.swift"
      ],
      "target_dependencies" : [
        "TitanCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TitanCoreTests",
      "module_type" : "SwiftTarget",
      "name" : "TitanCoreTests",
      "path" : "Tests/TitanCoreTests",
      "sources" : [
        "TitanCoreTests.swift"
      ],
      "target_dependencies" : [
        "TitanCore"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TitanCore",
      "module_type" : "SwiftTarget",
      "name" : "TitanCore",
      "path" : "Sources/TitanCore",
      "product_memberships" : [
        "TitanCore",
        "Titan",
        "TitanRouter",
        "TitanErrorHandling",
        "Titan404",
        "TitanCORS",
        "TitanFormURLEncodedBodyParser",
        "TitanJSON",
        "TitanQueryString",
        "TitanHealthz"
      ],
      "sources" : [
        "TitanCore.swift",
        "TitanError.swift",
        "TitanHeader.swift",
        "TitanLogs.swift",
        "TitanMethod.swift",
        "TitanRequest.swift",
        "TitanResponse.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TitanCORSTests",
      "module_type" : "SwiftTarget",
      "name" : "TitanCORSTests",
      "path" : "Tests/TitanCORSTests",
      "sources" : [
        "CORSTests.swift"
      ],
      "target_dependencies" : [
        "TitanCORS"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TitanCORS",
      "module_type" : "SwiftTarget",
      "name" : "TitanCORS",
      "path" : "Sources/TitanCORS",
      "product_memberships" : [
        "Titan",
        "TitanCORS"
      ],
      "sources" : [
        "TitanCORS.swift"
      ],
      "target_dependencies" : [
        "TitanCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Titan404Tests",
      "module_type" : "SwiftTarget",
      "name" : "Titan404Tests",
      "path" : "Tests/Titan404Tests",
      "sources" : [
        "Titan404Tests.swift"
      ],
      "target_dependencies" : [
        "Titan404"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Titan404",
      "module_type" : "SwiftTarget",
      "name" : "Titan404",
      "path" : "Sources/Titan404",
      "product_memberships" : [
        "Titan",
        "Titan404"
      ],
      "sources" : [
        "Titan404.swift"
      ],
      "target_dependencies" : [
        "TitanCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Titan",
      "module_type" : "SwiftTarget",
      "name" : "Titan",
      "path" : "Sources/Titan",
      "product_memberships" : [
        "Titan"
      ],
      "sources" : [
        "Titan.swift"
      ],
      "target_dependencies" : [
        "TitanCore",
        "TitanRouter",
        "TitanErrorHandling",
        "Titan404",
        "TitanCORS",
        "TitanFormURLEncodedBodyParser",
        "TitanJSON",
        "TitanQueryString"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "4.0"
}
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
Done.