ошибка Apple Swift нет такого модуля «Фонд» - PullRequest
0 голосов
/ 26 сентября 2018

Мой коллега пытается собрать Apple Swift на Ubuntu16.04 ppc64le.Да, я знаю, что Apple Swift еще не полностью поддерживается на ppc64le, но каким-то образом она построила его на ppc64le, используя скрипт сборки из https://github.com/ppc64le/build-scripts/blob/60b7885f4f0915a8671b3cfb86ddbb65f9b988a8/swift/swift41_ubuntu_16.04.sh.

Однако при запускекод, он выдает следующую ошибку «нет такого модуля 'Foundation'"

root @ ubuntu-sun: / home / ServerSideSwiftTap # swift build Компилировать Swift-модуль 'ServerSideSwiftTap' (3 источника) / home / ServerSideSwiftTap/main.swift:1:8: ошибка: нет такого модуля 'Foundation'

import Foundation ^

/ home / ServerSideSwiftTap / main.swift: 1: 8: ошибка: такого модуля нет'Foundation'

import Foundation ^

/ home / ServerSideSwiftTap / main.swift: 1: 8: ошибка: нет такого модуля 'Foundation'

import Foundation ^

ошибка: прекращено (1): / root / swift-source2 / Ninja-ReleaseAssert + stdlib-Release / swiftpm-linux-powerpc64le / powerpc64le-unknown-linux / release / swift-build-tool -f / home /ServerSideSwiftTap / .build / debug.yaml основной вывод:

Я проверил свой скрипт сборки иПохоже, это тоже создает swift-corelibs-foundation.Любое предложение?

Отредактировано

Я думаю, что я покончил с проблемой модуля 'Foundation', вставив следующий каталог в переменную PATH.

$ export PATH = / root /swift-source2 / Ninja-ReleaseAssert + stdlib-Release / swiftpm-linux-powerpc64le: $ PATH

Но теперь я получаю следующую ошибку «нет такого модуля 'Dispatch'".

root@ ubuntu-sun: / home / ServerSideSwiftTap # swift build Скомпилируйте модуль Swift 'Schrodinger' (1 источник) Скомпилируйте модуль Swift 'Cheetah' (7 источников) Скомпилируйте модуль Swift 'CryptoKitten' (10 источников) Скомпилируйте модуль Swift 'BSON' (21источники) /home/ServerSideSwiftTap/.build/checkouts/Schrodinger.git--4853784622312920879/Sources/Schrodinger.swift:1:8: ошибка: отсутствует такой модуль «Диспетчеризация» Импорт Отправка ^ ошибка: прекращено (1): / root /swift-source2 / Ninja-ReleaseAssert + stdlib-Release / swiftpm-linux-powerpc64le / powerpc64le-unknown-linux / release / swift-build-tool -f /home/ServerSideSwiftTap/.build/debug.yaml основной вывод:

Я погуглил вокруги я думаю, что я должен сделать "sudo make install" для swift-corelibs-libdispatch.Однако, это заканчивается следующей ошибкой, которая мне кажется довольно неприятной.

root@ubuntu-sun:~/swift-source2/swift-corelibs-libdispatch# ./autogen.sh

root@ubuntu-sun:~/swift-source2/swift-corelibs-libdispatch# ./configure

root@ubuntu-sun:~/swift-source2/swift-corelibs-libdispatch# make
...
In file included from source.c:21:
In file included from ./internal.h:973:
In file included from ./inline_internal.h:2465:
./trace.h:258:4: error: invalid operand in inline asm: '990: nop.pushsection .note.stapsdt,"?","note".balign 4.4byte 992f-991f,994f-993f,3991: .asciz "stapsdt"992: .balign 4993: .8byte 990b.8byte _.stapsdt.base.8byte dispatch_timer__wake_semaphore.asciz "dispatch".asciz "timer__wake".asciz "${0:n}@${1:I}$1 ${2:n}@${3:I}$3"994: .balign 4.popsection'
                        DISPATCH_TIMER_WAKE(ds, 
_dispatch_trace_timer_function(dr));
                    ^

На всякий случай ниже приведен исходный код ServerSideSwiftTap.

Package.swift

// swift-tools-version:4.0

import PackageDescription

let package = Package(
                  name: "ServerSideSwiftTap",
                  products: [
                       .executable(name: "ServerSideSwiftTap", targets: 
["ServerSideSwiftTap"]),
                  ],
                  dependencies: [
                       .package(url: "../Cpcap", from: "0.0.1"),
                       .package(url: 
"https://github.com/OpenKitten/MongoKitten.git", from: "4.0.0"),
                  ],
                  targets: [
                       .target(name: "ServerSideSwiftTap", dependencies: 
["MongoKitten"], path: "."),
                  ]
)

main.swift

// import Foundation
import MongoKitten
import Cpcap
import Glibc

let server = try Server("mongodb://localhost:27017")
let database = server["packet_db"]

if server.isConnected {
    print("Connected successfully to server")
}

let MAX_RECV_SIZE:Int32 = 65535
let PROMISC:Int32 = 1
let TIMEOUT:Int32 = 100

var frameNo = 0

let ver = UnsafePointer<Int8>(pcap_lib_version())!
print("pcap version -> \(String(cString: ver))")

var errbuf = UnsafeMutablePointer<Int8>.allocate(capacity: 
Int(PCAP_ERRBUF_SIZE))
let dev = pcap_lookupdev(errbuf)
var devName = "ens2"
if let dev = dev {
    devName = String(cString: dev)
    print("found \(devName)")
} else {
    print("Could not get dev")
}

let pcapSession = pcap_open_live(devName, MAX_RECV_SIZE, PROMISC, TIMEOUT, errbuf)

let status = pcap_loop(pcapSession, -1, { (_, packHeader, packetData) in

// display header receiving order, time, size, etc
var tv_sec = Double(packHeader!.pointee.ts.tv_sec) + 60*60*9 // +0900
let sec = Int(tv_sec.truncatingRemainder(dividingBy: 60))
tv_sec = tv_sec / 60
let min = Int(tv_sec.truncatingRemainder(dividingBy: 60))
tv_sec = tv_sec / 60
let hour = Int(tv_sec.truncatingRemainder(dividingBy: 24))
frameNo = frameNo + 1
let str_Frame = String(format: "Frame %d: %d byte / %d byte %02d:%02d:%02d.%06ld", frameNo, packHeader!.pointee.caplen, packHeader!.pointee.len, hour, min, sec, packHeader!.pointee.ts.tv_usec)
//print(str_Frame)

// packet analyze
let data = Data(bytes: packetData!, count: Int(packHeader!.pointee.caplen))
let arrayPacketData = Array(data)
let pa = PacketAnalyser.sharedInstance
//pa.process(packetDataArray: arrayPacketData)
let packetData = pa.processPacket(packetDataArray: arrayPacketData)
if packetData.src_ip != "" {
    let userDocument: Document = [
"hour": String(format: "%02d", hour),
"minute": String(format: "%02d", min),
        "second": String(format: "%02d", sec),
        "mili_second": String(format: "%06d", packHeader!.pointee.ts.tv_usec),
        "src_ip": packetData.src_ip,
        "src_port": packetData.src_port,
        "dst_ip": packetData.dst_ip,
        "dst_port": packetData.dst_port,
        "data": packetData.data
    ]
    do {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyyMMdd"
        let str_date = dateFormatter.string(from: Date())
        let collection_name = "tcp_collection_\(str_date)"
        let collection = database[collection_name]
        try collection.insert(userDocument)
        print("success insert!!")
    } catch {
        print("tcp_collection insert error -> \ 
(error.localizedDescription)")
        }
    }

}, nil)

pcap_close(pcapSession)

Заранее спасибо.

...