swift-everywhere-toolchain icon indicating copy to clipboard operation
swift-everywhere-toolchain copied to clipboard

swift package build fail

Open kmitj opened this issue 4 years ago • 15 comments

kmi@Murodjons-MacBook-Pro ncp-core % /Users/kmi/Desktop/android/build-ev/swift-everywhere-toolchain/ToolChain/swift-android-toolchain/usr/bin/swift-build-arm-linux-androideabi
'NCPSocket' /Users/kmi/ncp-core: warning: in tools version 5.4.0 and later, use 'executableTarget()' to declare executable targets
/Users/kmi/ncp-core/.build/checkouts/swift-log/Sources/Logging/Logging.swift:806:45: error: cannot find type 'FILE' in scope
    internal let file: UnsafeMutablePointer<FILE>
                                            ^~~~
/Users/kmi/ncp-core/.build/checkouts/swift-log/Sources/Logging/Logging.swift:841:84: error: cannot infer contextual base in reference to member 'always'
    internal static let stderr = StdioOutputStream(file: systemStderr, flushMode: .always)
                                                                                  ~^~~~~~
/Users/kmi/ncp-core/.build/checkouts/swift-log/Sources/Logging/Logging.swift:842:84: error: cannot infer contextual base in reference to member 'always'
    internal static let stdout = StdioOutputStream(file: systemStdout, flushMode: .always)
                                                                                  ~^~~~~~
[42/868] Compiling ssl_aead_ctx.cc
// swift-tools-version:5.4.0
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "NCPSocket",
    platforms: [
        .macOS(.v10_15), .iOS(.v13)
       ],
    products: [
        .library(name: "NCPSocket", type: .dynamic, targets: ["App"]),
    ],
    dependencies: [
        .package(url: "https://github.com/apple/swift-nio.git", from: "2.0.0"),
        .package(url: "https://github.com/vapor/async-kit.git", from: "1.0.0"),
        .package(url: "https://github.com/apple/swift-nio-ssl", from: "2.14.0"),
        .package(url: "https://github.com/vapor/fluent-sqlite-driver.git", from: "4.0.0"),
        .package(url: "https://github.com/apple/swift-nio-extras.git", from: "1.0.0"),
        .package(url: "https://github.com/swift-server/async-http-client.git", from: "1.2.2"),
        .package(url: "https://github.com/swift-server/swift-backtrace.git", from: "1.2.1"),
        .package(url: "https://github.com/vapor/multipart-kit.git", from: "4.0.0"),
        .package(url: "https://github.com/vapor/console-kit.git", from: "4.0.0"),
        .package(url: "https://github.com/apple/swift-crypto.git", from: "1.0.0"),
        .package(url: "https://github.com/vapor/websocket-kit.git", from: "2.0.0"),
    ],
    targets: [
        .target(name: "CBase32"),
        .target(name: "CBcrypt"),
        .target(name: "COperatingSystem"),
        .target(name: "CURLParser"),
        .target( name: "App", dependencies: [
            .product(name: "NIO", package: "swift-nio"),
            .product(name: "AsyncHTTPClient", package: "async-http-client"),
            .product(name: "AsyncKit", package: "async-kit"),
            .product(name: "Backtrace", package: "swift-backtrace"),
            .product(name: "NIOSSL", package: "swift-nio-ssl"),
            .product(name: "NIOHTTP1", package: "swift-nio"),
            .product(name: "NIOWebSocket", package: "swift-nio"),
            .product(name: "NIOConcurrencyHelpers", package: "swift-nio"),
            .target(name: "CBase32"),
            .target(name: "CBcrypt"),
            .target(name: "COperatingSystem"),
            .target(name: "CURLParser"),
            .product(name: "NIOFoundationCompat", package: "swift-nio"),
            .product(name: "NIOExtras", package: "swift-nio-extras"),
            .product(name: "FluentSQLiteDriver", package: "fluent-sqlite-driver"),
            .product(name: "MultipartKit", package: "multipart-kit"),
            .product(name: "ConsoleKit", package: "console-kit"),
            .product(name: "Crypto", package: "swift-crypto"),
            .product(name: "WebSocketKit", package: "websocket-kit"),
            ]
        ),
        .target(name: "NCPSocketBenchmark", dependencies: ["App"]),
        .testTarget(name: "socket-libTests", dependencies: ["App"]),
    ]
)

kmitj avatar Jul 15 '21 10:07 kmitj

I made a small tunings to Package to be able to build it successfully on macOS first.

// swift-tools-version:5.4.0

import PackageDescription

let package = Package(
    name: "App",
    platforms: [
        .macOS(.v10_15), .iOS(.v13)
       ],
    products: [
        .library(name: "App", type: .dynamic, targets: ["App"]),
    ],
    dependencies: [
        .package(url: "https://github.com/apple/swift-nio.git", from: "2.0.0"),
        .package(url: "https://github.com/vapor/async-kit.git", from: "1.0.0"),
        .package(url: "https://github.com/apple/swift-nio-ssl", from: "2.14.0"),
        .package(url: "https://github.com/vapor/fluent-sqlite-driver.git", from: "4.0.0"),
        .package(url: "https://github.com/apple/swift-nio-extras.git", from: "1.0.0"),
        .package(url: "https://github.com/swift-server/async-http-client.git", from: "1.2.2"),
        .package(url: "https://github.com/swift-server/swift-backtrace.git", from: "1.2.1"),
        .package(url: "https://github.com/vapor/multipart-kit.git", from: "4.0.0"),
        .package(url: "https://github.com/vapor/console-kit.git", from: "4.0.0"),
        .package(url: "https://github.com/apple/swift-crypto.git", from: "1.0.0"),
        .package(url: "https://github.com/vapor/websocket-kit.git", from: "2.0.0"),
    ],
    targets: [
        .target( name: "App", dependencies: [
            .product(name: "NIO", package: "swift-nio"),
            .product(name: "AsyncHTTPClient", package: "async-http-client"),
            .product(name: "AsyncKit", package: "async-kit"),
            .product(name: "Backtrace", package: "swift-backtrace"),
            .product(name: "NIOSSL", package: "swift-nio-ssl"),
            .product(name: "NIOHTTP1", package: "swift-nio"),
            .product(name: "NIOWebSocket", package: "swift-nio"),
            .product(name: "NIOConcurrencyHelpers", package: "swift-nio"),
            .product(name: "NIOFoundationCompat", package: "swift-nio"),
            .product(name: "NIOExtras", package: "swift-nio-extras"),
            .product(name: "FluentSQLiteDriver", package: "fluent-sqlite-driver"),
            .product(name: "MultipartKit", package: "multipart-kit"),
            .product(name: "ConsoleKit", package: "console-kit"),
            .product(name: "Crypto", package: "swift-crypto"),
            .product(name: "WebSocketKit", package: "websocket-kit"),
            ]
        )
    ]
)
// File: Sources/App/Dummy.swift
function noop() {
}

Then I'm launched android build as shown below. Note, that you have to use Android API 24 to have getifaddrs/freeifaddrs. See file sysroot/usr/include/ifaddrs.h inside NDK.

 /.../swift-android-toolchain/usr/bin/swift-build-aarch64-linux-android -v -Xcc -D__ANDROID_API__=24

After that I am corrected few files (e.g. checkouts/console-kit/Sources/ConsoleKit/Activity/ActivityIndicator.swift) for proper Glibc usage:

// Before
import Dispatch
#if os(Linux)
import Glibc
#else
import Darwin.C
#endif


// After
import Dispatch
#if os(Linux) || os(Android)
import Glibc
#else
import Darwin.C
#endif

// Or even better
import Dispatch
#if canImport(Glibc)
import Glibc
#else
import Darwin.C
#endif

Particularly in file checkouts/swift-log/Sources/Logging/Logging.swift:806 the error you have error: cannot find type 'FILE' in scope, internal let file: UnsafeMutablePointer<FILE> was fixed as shown below:

// Before
internal struct StdioOutputStream: TextOutputStream {
    #if canImport(WASILibc)
    internal let file: OpaquePointer
    #else
    internal let file: UnsafeMutablePointer<FILE>
    #endif
    internal let flushMode: FlushMode

// After
internal struct StdioOutputStream: TextOutputStream {
    #if canImport(WASILibc) || canImport(Glibc)
    internal let file: OpaquePointer
    #else
    internal let file: UnsafeMutablePointer<FILE>
    #endif
    internal let flushMode: FlushMode

Now build fails due missed sqlite header checkouts/sqlite-nio/Sources/CSQLite/csqlite.h:4:10: error: 'sqlite3.h' file not found.

vgorloff avatar Jul 16 '21 08:07 vgorloff

As far as I understand the sqlite for Android needs to be build separately and included into APK manually by developer. I can't find sqlite3.h header inside NDK.

For issues about error: cannot find type 'FILE' in scope, UnsafeMutablePointer<FILE> I guess that issue that struct FILE is typedef'ed in NDK via typedef struct __sFILE FILE; in sysroot/usr/include/stdio.h. And as I understand correctly Swift don't see c type definitions.

See also: sysroot/usr/include/bits/struct_file.h inside NDK bundle.

vgorloff avatar Jul 16 '21 08:07 vgorloff

I was doing some investigation about problem with FILE struct in @wip branch. Here is a diff https://github.com/vgorloff/swift-everywhere-toolchain/compare/develop...@wip

vgorloff avatar Jul 16 '21 08:07 vgorloff

while building https://github.com/apple/swift-nio-ssl same error

/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:84:119: error: cannot find type 'FILE' in scope
    internal static func fopen(file: UnsafePointer<CChar>, mode: UnsafePointer<CChar>) throws -> UnsafeMutablePointer<FILE> {
                                                                                                                      ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:91:60: error: cannot find type 'FILE' in scope
    internal static func fclose(file: UnsafeMutablePointer<FILE>) throws -> CInt {
                                                           ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:84:119: error: cannot find type 'FILE' in scope
    internal static func fopen(file: UnsafePointer<CChar>, mode: UnsafePointer<CChar>) throws -> UnsafeMutablePointer<FILE> {
                                                                                                                      ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:91:60: error: cannot find type 'FILE' in scope
    internal static func fclose(file: UnsafeMutablePointer<FILE>) throws -> CInt {
                                                           ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:25:109: error: cannot find type 'FILE' in scope
private let sysFopen: @convention(c) (UnsafePointer<CChar>?, UnsafePointer<CChar>?) -> UnsafeMutablePointer<FILE>? = fopen
                                                                                                            ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:28:61: error: cannot find type 'FILE' in scope
private let sysFclose: @convention(c) (UnsafeMutablePointer<FILE>?) -> CInt = fclose
                                                            ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:84:119: error: cannot find type 'FILE' in scope
    internal static func fopen(file: UnsafePointer<CChar>, mode: UnsafePointer<CChar>) throws -> UnsafeMutablePointer<FILE> {
                                                                                                                      ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:91:60: error: cannot find type 'FILE' in scope
    internal static func fclose(file: UnsafeMutablePointer<FILE>) throws -> CInt {
                                                           ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:25:109: error: cannot find type 'FILE' in scope
private let sysFopen: @convention(c) (UnsafePointer<CChar>?, UnsafePointer<CChar>?) -> UnsafeMutablePointer<FILE>? = fopen
                                                                                                            ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:28:61: error: cannot find type 'FILE' in scope
private let sysFclose: @convention(c) (UnsafeMutablePointer<FILE>?) -> CInt = fclose
                                                            ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:84:119: error: cannot find type 'FILE' in scope
    internal static func fopen(file: UnsafePointer<CChar>, mode: UnsafePointer<CChar>) throws -> UnsafeMutablePointer<FILE> {
                                                                                                                      ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:91:60: error: cannot find type 'FILE' in scope
    internal static func fclose(file: UnsafeMutablePointer<FILE>) throws -> CInt {
                                                           ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:25:109: error: cannot find type 'FILE' in scope
private let sysFopen: @convention(c) (UnsafePointer<CChar>?, UnsafePointer<CChar>?) -> UnsafeMutablePointer<FILE>? = fopen
                                                                                                            ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:28:61: error: cannot find type 'FILE' in scope
private let sysFclose: @convention(c) (UnsafeMutablePointer<FILE>?) -> CInt = fclose
                                                            ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:84:119: error: cannot find type 'FILE' in scope
    internal static func fopen(file: UnsafePointer<CChar>, mode: UnsafePointer<CChar>) throws -> UnsafeMutablePointer<FILE> {
                                                                                                                      ^~~~
/Users/kmi/Desktop/libs/Sources/NIOSSL/PosixPort.swift:91:60: error: cannot find type 'FILE' in scope
    internal static func fclose(file: UnsafeMutablePointer<FILE>) throws -> CInt {
                                                           ^~~~
clang: warning: argument unused during compilation: '-F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks' [-Wunused-command-line-argument]
[72/82] Linking NIOWebSocketClient

kmitj avatar Jul 16 '21 13:07 kmitj

I think this is a bug in the Swift ClangImporter that it can't handle opaque structs, been meaning to look into it and file a bug. I hit that nio-ssl issue too which is why I disabled building it on my daily Android CI. A workaround for Android is to pass in -Xcc -D__ANDROID_API__=23, as FILE was defined back then, but as Vlad says, getifaddrs wasn't available back then, so other stuff won't work for some projects with that workaround.

finagolfin avatar Jul 17 '21 19:07 finagolfin

Never mind, I guess Swift chooses not to handle this, as Vlad says above, so you will have to change it to OpaquePointer as he shows.

finagolfin avatar Jul 17 '21 19:07 finagolfin

Interesting. I didn't know about that Clang/Swift behaviour with UnsafeMutablePointer<T> / OpaquePointer. This is seems a reason why the OpaquePointer was used in a StdioOutputStream struct in the swift-log package.

vgorloff avatar Jul 18 '21 21:07 vgorloff

I've submitted patches for this in apple/swift-nio-ssl#306 and apple/swift-tools-support-core#243. You may want to do the same for swift-log, which I don't use.

finagolfin avatar Jul 22 '21 17:07 finagolfin

kmi@Murodjons-MacBook-Pro ncp-core % /Users/kmi/Desktop/android/swift-android-toolchain/usr/bin/swift-build-arm-linux-androideabi -Xcc -D__ANDROID_API__=24
'ncp-libs' /Users/kmi/ncp-libs: warning: found 3 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/kmi/ncp-libs/Sources/CNIOHTTPParser/LICENSE-MIT
    /Users/kmi/ncp-libs/Sources/CNIOHTTPParser/update_and_patch_http_parser.sh
    /Users/kmi/ncp-libs/Sources/CNIOHTTPParser/AUTHORS

'ncp-libs' /Users/kmi/ncp-libs: warning: in tools version 5.4.0 and later, use 'executableTarget()' to declare executable targets
'ncp-libs' /Users/kmi/ncp-libs: warning: found 2 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/kmi/ncp-libs/Sources/CNIOBoringSSL/include/boringssl_prefix_symbols_nasm.inc
    /Users/kmi/ncp-libs/Sources/CNIOBoringSSL/hash.txt

'ncp-libs' /Users/kmi/ncp-libs: warning: found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/kmi/ncp-libs/Sources/NIOTLSServer/README.md

'ncp-libs' /Users/kmi/ncp-libs: warning: in tools version 5.4.0 and later, use 'executableTarget()' to declare executable targets
'ncp-libs' /Users/kmi/ncp-libs: warning: in tools version 5.4.0 and later, use 'executableTarget()' to declare executable targets
'ncp-libs' /Users/kmi/ncp-libs: warning: found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/kmi/ncp-libs/Sources/CNIOSHA1/update_and_patch_sha1.sh

'ncp-libs' /Users/kmi/ncp-libs: warning: in tools version 5.4.0 and later, use 'executableTarget()' to declare executable targets
'ncp-libs' /Users/kmi/ncp-libs: warning: in tools version 5.4.0 and later, use 'executableTarget()' to declare executable targets
'ncp-libs' /Users/kmi/ncp-libs: warning: found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/kmi/ncp-libs/Sources/NIOSSLHTTP1Client/README.md

'ncp-libs' /Users/kmi/ncp-libs: warning: in tools version 5.4.0 and later, use 'executableTarget()' to declare executable targets
'ncp-libs' /Users/kmi/ncp-libs: warning: in tools version 5.4.0 and later, use 'executableTarget()' to declare executable targets
'ncp-libs' /Users/kmi/ncp-libs: warning: in tools version 5.4.0 and later, use 'executableTarget()' to declare executable targets
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Application/Multipart/AbortError+MultipartError.swift:3:11: warning: 'MultipartError' is deprecated
extension MultipartError: AbortError {
          ^
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:71:16: warning: value 'tracingEnabled' was defined but never used; consider replacing with boolean test
        if let tracingEnabled = notification.params.debug {
           ~~~~^~~~~~~~~~~~~~~~~
                                                          != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:76:16: warning: value 'newToken' was defined but never used; consider replacing with boolean test
        if let newToken = notification.params.newToken {
           ~~~~^~~~~~~~~~~
                                                       != nil
/Users/kmi/ncp-core/Sources/App/Core/Network/Network.swift:225:27: warning: result of call to 'startListening(onQueue:onUpdatePerforming:)' is unused
        self.reachability.startListening(onQueue: .main, onUpdatePerforming: self.network(onUpdatePerforming:))
                          ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:86:33: warning: variable 'auth' was written to, but never read
                            var auth: AuthInfo? = nil
                                ^
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:93:33: warning: initialization of immutable value 's' was never used; consider replacing with assignment to '_' or removing it
                            let s = ProfileObject(id: pro.accountID, firstName: pro.firstName, lastName: pro.lastName, username: pro.username, avatar: pro.avatar, status: pro.status, presence: presence, ttl: pro.ttl?.timeIntervalSince1970 ?? 0)
                            ~~~~^
                            _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:94:33: warning: variable 'entities' was never mutated; consider changing to 'let' constant
                            var entities = [EntityObject]()
                            ~~~ ^
                            let
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:96:37: warning: immutable value 'phone' was never used; consider replacing with '_' or removing it
                                for phone in phones {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/ProfileController.swift:102:37: warning: immutable value 'email' was never used; consider replacing with '_' or removing it
                                for email in emails {
                                    ^~~~~
                                    _
/Users/kmi/ncp-core/Sources/App/Core/Main/Repositories/ContactRepository.swift:47:24: warning: value 'cnCOntact' was defined but never used; consider replacing with boolean test
                if let cnCOntact = phoneContacts.first(where: { $0.contactId == contactItem.foreignID }) {
                   ~~~~^~~~~~~~~~~~
                                                                                                         != nil
clang: warning: argument unused during compilation: '-F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks' [-Wunused-command-line-argument]
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/cpu-arm-linux.c.o: multiple definition of 'CRYPTO_has_broken_NEON'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/cpu-arm-linux.c.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/cpu-arm-linux.c.o: multiple definition of 'CRYPTO_needs_hwcap2_workaround'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/cpu-arm-linux.c.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/curve25519/asm/x25519-asm-arm.S.o: multiple definition of 'x25519_NEON'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/curve25519/asm/x25519-asm-arm.S.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/fipsmodule/bsaes-armv7.linux.arm.S.o: multiple definition of 'bsaes_cbc_encrypt'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/fipsmodule/bsaes-armv7.linux.arm.S.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/fipsmodule/bsaes-armv7.linux.arm.S.o: multiple definition of 'bsaes_ctr32_encrypt_blocks'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/fipsmodule/bsaes-armv7.linux.arm.S.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/fipsmodule/sha256-armv4.linux.arm.S.o: multiple definition of 'sha256_block_data_order_neon'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/fipsmodule/sha256-armv4.linux.arm.S.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: e.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/fipsmodule/sha512-armv4.linux.arm.S.o: multiple definition of 'sha512_block_data_order_neon'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/fipsmodule/sha512-armv4.linux.arm.S.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/fipsmodule/vpaes-armv7.linux.arm.S.o: multiple definition of 'vpaes_decrypt_key_to_bsaes'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/fipsmodule/vpaes-armv7.linux.arm.S.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/fipsmodule/vpaes-armv7.linux.arm.S.o: multiple definition of 'vpaes_encrypt_key_to_bsaes'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/fipsmodule/vpaes-armv7.linux.arm.S.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/poly1305/poly1305_arm.c.o: multiple definition of 'CRYPTO_poly1305_finish_neon'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/poly1305/poly1305_arm.c.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/poly1305/poly1305_arm.c.o: multiple definition of 'CRYPTO_poly1305_init_neon'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/poly1305/poly1305_arm.c.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/poly1305/poly1305_arm.c.o: multiple definition of 'CRYPTO_poly1305_update_neon'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/poly1305/poly1305_arm.c.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/poly1305/poly1305_arm_asm.S.o: multiple definition of 'openssl_poly1305_neon2_addmulmod'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /ore/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/poly1305/poly1305_arm_asm.S.o: previous definition here
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: error: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build/crypto/poly1305/poly1305_arm_asm.S.o: multiple definition of 'openssl_poly1305_neon2_blocks'
/usr/local/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.gold: /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build/crypto/poly1305/poly1305_arm_asm.S.o: previous definition here
clang: error: linker command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: link command failed with exit code 1 (use -v to see invocation)
[1664/1665] Linking libNCPSocket.so

kmitj avatar Jul 28 '21 12:07 kmitj

hello @vgorloff , @buttaface . error while building for swift-build-arm-linux-androideabi

kmitj avatar Jul 28 '21 12:07 kmitj

It says duplicate symbols in the same file, for C and ARMv7 assembly: maybe you're missing some C define that normally picks one or the other? I regularly build those files for ARMv7 on my daily Android CI without a problem and occasionally run that Swift package's ARMv7 tests without a problem. If you run in verbose mode and paste the compilation command for one of those broken C/asm files, I can compare with my working clang command and let you know.

finagolfin avatar Jul 28 '21 15:07 finagolfin

Hmm, there is only a single definition in those files, so C defines are not the issue. You may need to examine those object files and see what's going on: what does readelf -sW poly1305_arm.c.o show, repeated symbols?

finagolfin avatar Jul 28 '21 15:07 finagolfin

try build this https://github.com/apple/swift-crypto.git package for swift-build-arm-linux-androideabi. this problem in this package

kmitj avatar Jul 30 '21 10:07 kmitj

I do, that package is built separately for armv7 on my Android CI that runs on Ubuntu every day without a problem. If you can reproduce when building that package alone with the Swift package manager, try adding the verbose flag -v to see what clang compilation commands it's running to build those defective object files and paste one here.

I will compare it to my working build and let you know of any differences.

finagolfin avatar Jul 30 '21 11:07 finagolfin

Oh wait, I see it now, the paths are different. You are linking the same file from /Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CNIOBoringSSL.build and Users/kmi/ncp-core/.build/armv7-unknown-linux-android/debug/CCryptoBoringSSL.build, which would be an artifact of building swift-crypto twice in different packages. But that shouldn't reproduce when building swift-crypto alone?

You may need to look into keeping those build artifacts separate or excising one of those packages. Also, there's nothing specific to Android here: make sure this project builds on Linux, which will be easier to debug for these SPM packaging issues, then you can try Android.

finagolfin avatar Jul 30 '21 22:07 finagolfin