2017-03-31 20 views
4

我在Ubuntu 14.04.1上使用PerfectSwift,鏗鏘-3.8 我正在使用Perfect和所有工作,但現在,我不能編譯了(但它編譯我的Mac )PerfectSwift:無法編譯PerfectCrypto

錯誤日誌是

/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/ByteIO.swift:282:43: error: cannot convert value of type 'UnsafeRawPointer?' to expected argument type 'UnsafeMutableRawPointer!' 
       super.init(bio: BIO_new_mem_buf(pointer.baseAddress, Int32(pointer.count))) 
               ~~~~~~~~^~~~~~~~~~~ 
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/ByteIO.swift:363:34: error: cannot convert value of type 'String' to expected argument type 'UnsafeMutablePointer<Int8>!' 
       super.init(bio: BIO_new_accept(name)) 
               ^~~~ 
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/ByteIO.swift:394:35: error: cannot convert value of type 'String' to expected argument type 'UnsafeMutablePointer<Int8>!' 
       super.init(bio: BIO_new_connect(name)) 
               ^~~~ 
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:357:64: error: cannot convert value of type 'UnsafePointer<UInt8>?' to expected argument type 'UnsafeMutablePointer<UInt8>!' 
       guard 1 == EVP_DigestVerifyFinal(ctx, signature.baseAddress?.assumingMemoryBound(to: UInt8.self), mdLen) else { 
                 ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
/usr/include/openssl/bn.h:187:19: error: integer literal is too large to be represented in any integer type 
#define BN_MASK   (0xffffffffffffffffffffffffffffffffLL) 
         ^
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:385:31: error: use of unresolved identifier 'EVP_des_ede3_wrap' 
       case .des_ede3_wrap: return EVP_des_ede3_wrap() 
               ^~~~~~~~~~~~~~~~~ 
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:413:31: error: use of unresolved identifier 'EVP_aes_128_wrap' 
       case .aes_128_wrap:    return EVP_aes_128_wrap() 
                 ^~~~~~~~~~~~~~~~ 
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:423:31: error: use of unresolved identifier 'EVP_aes_192_wrap' 
       case .aes_192_wrap:    return EVP_aes_192_wrap() 
                 ^~~~~~~~~~~~~~~~ 
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:434:31: error: use of unresolved identifier 'EVP_aes_256_wrap' 
       case .aes_256_wrap:    return EVP_aes_256_wrap() 
                 ^~~~~~~~~~~~~~~~ 
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:437:41: error: use of unresolved identifier 'EVP_aes_128_cbc_hmac_sha256' 
       case .aes_128_cbc_hmac_sha256: return EVP_aes_128_cbc_hmac_sha256() 
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~ 
COpenSSL.EVP_aes_128_cbc_hmac_sha1:1:13: note: did you mean 'EVP_aes_128_cbc_hmac_sha1'? 
public func EVP_aes_128_cbc_hmac_sha1() -> UnsafePointer<EVP_CIPHER>! 
      ^
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:438:41: error: use of unresolved identifier 'EVP_aes_256_cbc_hmac_sha256' 
       case .aes_256_cbc_hmac_sha256: return EVP_aes_256_cbc_hmac_sha256() 
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~ 
COpenSSL.EVP_aes_256_cbc_hmac_sha1:1:13: note: did you mean 'EVP_aes_256_cbc_hmac_sha1'? 
public func EVP_aes_256_cbc_hmac_sha1() -> UnsafePointer<EVP_CIPHER>! 
      ^
<unknown>:0: error: build had 1 command failures 
error: exit(1): /swift/usr/bin/swift-build-tool -f /home/celian/swift_server/.build/debug.yaml -v 

我的依賴關係是:

dependencies: [ 
     .Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 2),  
     .Package(url: "https://github.com/iamjono/SwiftString.git", majorVersion: 1), 
     .Package(url: "https://github.com/PerfectlySoft/Perfect-Curl.git", majorVersion: 2, minor: 0), 
     .Package(url:"https://github.com/PerfectlySoft/Perfect-XML.git", majorVersion: 2, minor: 0) 

    ] 

有人能幫助我嗎?

回答

1

丹尼爾添加評論 - 12 /月/ 17上午07時43分 內部 永久鏈接編輯刪除 @Alessandro廣場經過一番研究,明顯的問題是,PerfectCrypto依賴於OpenSSL的1.0.2。官方倉庫只有v1.0.1。我按照這個說明來安裝openssl v 1.0.2 https://gist.github.com/mbejda/a1dabc45b32aaf8b25ae5e8d05923518,並且我能夠編譯PerfectCrypto。

+0

我遇到同樣的問題,但不知道我在哪裏運行鏈接的.ssh。我正在谷歌應用程序引擎上運行我的服務器,所以請將我的package.swift,main.swift,appyaml和Dockerfile與gcloud應用程序部署在一起。你知道我可以在哪裏安裝openssl v1.0.2嗎? – TimWhiting