vgorloff / swift-everywhere-toolchain

Automated workflow to compile Swift Toolchain, for making Android apps with Swift.
MIT License
85 stars 25 forks source link

swift package build fail #126

Open kmitj opened 3 years ago

kmitj commented 3 years ago
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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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

kmitj commented 3 years ago
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 commented 3 years ago

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

finagolfin commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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

finagolfin commented 3 years ago

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 commented 3 years ago

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.