Skip to content
This repository has been archived by the owner on Aug 14, 2022. It is now read-only.

swift package build fail #126

Open
kmitj opened this issue Jul 15, 2021 · 15 comments
Open

swift package build fail #126

kmitj opened this issue Jul 15, 2021 · 15 comments

Comments

@kmitj
Copy link

kmitj commented Jul 15, 2021

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"]),
    ]
)
@vgorloff
Copy link
Owner

vgorloff commented Jul 16, 2021

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
Copy link
Owner

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
Copy link
Owner

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

@kmitj
Copy link
Author

kmitj commented Jul 16, 2021

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

@finagolfin
Copy link

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
Copy link

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.

@vgorloff
Copy link
Owner

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.

@finagolfin
Copy link

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

@kmitj
Copy link
Author

kmitj commented Jul 28, 2021

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
Copy link
Author

kmitj commented Jul 28, 2021

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

@finagolfin
Copy link

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
Copy link

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?

@kmitj
Copy link
Author

kmitj commented Jul 30, 2021

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

@finagolfin
Copy link

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
Copy link

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.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants