-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
swift-nioがビルドできない #75
Comments
おそらくここに書いてあることと同じで、 swift-nioに関しては、現状Static Library化することでビルドしています。
integration testに含まれているので参考にしてみてください。 Scipio/Tests/ScipioKitTests/IntegrationTests.swift Lines 41 to 42 in 6f99333
|
|
ありがとうございます。
コマンド
結果
念のため integration testを参考に、 質問させてください。 typeの選択の挙動についてswiftpmはmac向けで普通にビルドすると、type指定のないtarget達(そしてほとんどはtype指定がない)は、 なので、scipioのデフォルトの挙動はそれと同じであろうかと思ったのですが、そうではなく、 また、もし dynamic libraryのビルド挙動について試しにswift-atomicsのパッケージ定義を下記のように変更し、
つまり、 swift-atomics にdynamic libraryとしてビルドできない問題があるのではなく、 これは今後修正の予定はありますか? generate-xcodeprojも同様に動かなくなっていたんですね。 |
なのでScipio側でなんとかする場合、product対してのみdynamic frameworkを許容し、それ以外のターゲットは全てstatic framework(もしくは可能ならアーカイブなしのframework)を作るようにPIFModifierを変更するのが良さそうです。ちょっとやってみます。 |
下記のように .library(
name: "_AtomicsShims",
type: .dynamic,
targets: ["_AtomicsShims"]
) $ swift build --product _AtomicsShims
Building for debugging...
ld: Undefined symbols:
_swift_release_n, referenced from:
__sa_release_n in _AtomicsShims.c.o
_swift_retain_n, referenced from:
__sa_retain_n in _AtomicsShims.c.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[0/1] Linking lib_AtomicsShims.dylib なるほど確かに、 |
@kateinoigakukun さんの言うとおり、targetとproductの扱いに不備があることは認識しています。 SwiftNIOはStaticビルド時のみうまく行くことを確認して、Dynamicだとうまくリンクできない例を確認しています。 |
@kateinoigakukun に詳しく教えてもらいました。
よって productでないtargetはstatic libraryとしてビルドするのが良さそうですが、
|
依存先パッケージとして https://github.com/apple/swift-nio の一つだけを持つプロジェクトを作成し、
prepareコマンドを実行したところ、下記のエラーが出て失敗しました。
swift-nio の依存先である swift-atomics パッケージに含まれる、
_AtomicsShims
ターゲットのビルドに失敗しているようです。このターゲットでは、 extern参照したSwiftランタイム関数である、
swift_retain_n
を呼び出そうとしていますが、ビルド時にリンクできていないようです。根本のパッケージの定義を以下に掲載します。
余談ですが、 https://github.com/unsignedapps/swift-create-xcframework で、
swift-nioパッケージを対象に実行したところ、
全く同じビルドエラーが生じました。
The text was updated successfully, but these errors were encountered: