Skip to content
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

Linux 自動ビルド: ビルド用OSをUbuntu 18.04に切り替え #116

Merged

Conversation

aoirint
Copy link
Member

@aoirint aoirint commented Sep 22, 2021

ref: #95, #98

#114#98 のコミットを含んでいます。先にそちらのレビューをお願いします。

Linux用実行バイナリの自動ビルドに使うOSをUbuntu 20.04から、Ubuntu 18.04に切り替えます。

互換性の拡大が見込めます。

glibc 2.27環境のldconfigとLibTorchの互換性

Ubuntu 18.04 / glibc 2.27環境で、ldconfigでLibTorchを認識させようとすると、壊れた名前のシンボリックリンクがLibTorchのディレクトリに作成され、共有ライブラリリスト(ldconfig -p)が文字化けする問題があります。
この問題は、glibc 2.27では未実装の、glibc 2.31で実装された機能に関係しているようです。

文字化けした出力(Ubuntu 18.04, glibc 2.27)

# ldconfig -p | grep libtorch
	t� (libc6,x86-64) => /opt/libtorch/lib/t�
	libtorchbind_test.so (libc6,x86-64) => /opt/libtorch/lib/libtorchbind_test.so
	libtorch_python.so (libc6,x86-64) => /opt/libtorch/lib/libtorch_python.so
	libtorch.so (libc6,x86-64) => /opt/libtorch/lib/libtorch.so
	libtensorpipe_agent.so (libc6,x86-64) => /opt/libtorch/lib/libtensorpipe_agent.so
	libshm.so (libc6,x86-64) => /opt/libtorch/lib/libshm.so
	libprocess_group_agent.so (libc6,x86-64) => /opt/libtorch/lib/libprocess_group_agent.so
	libjitbackend_test.so (libc6,x86-64) => /opt/libtorch/lib/libjitbackend_test.so
	libcaffe2_observers.so (libc6,x86-64) => /opt/libtorch/lib/libcaffe2_observers.so
	libcaffe2_module_test_dynamic.so (libc6,x86-64) => /opt/libtorch/lib/libcaffe2_module_test_dynamic.so
	libbackend_with_compiler.so (libc6,x86-64) => /opt/libtorch/lib/libbackend_with_compiler.so
	 (libc6,x86-64) => /opt/libtorch/lib/
	��n (libc6,x86-64) => /opt/libtorch/lib/��n

正常な状態(Ubuntu 20.04, glibc 2.31)

# ldconfig -p | grep libtorch
	libtorchbind_test.so (libc6,x86-64) => /opt/libtorch/lib/libtorchbind_test.so
	libtorch_python.so (libc6,x86-64) => /opt/libtorch/lib/libtorch_python.so
	libtorch_global_deps.so (libc6,x86-64) => /opt/libtorch/lib/libtorch_global_deps.so
	libtorch_cpu.so (libc6,x86-64) => /opt/libtorch/lib/libtorch_cpu.so
	libtorch.so (libc6,x86-64) => /opt/libtorch/lib/libtorch.so
	libtensorpipe_agent.so (libc6,x86-64) => /opt/libtorch/lib/libtensorpipe_agent.so
	libshm.so (libc6,x86-64) => /opt/libtorch/lib/libshm.so
	libprocess_group_agent.so (libc6,x86-64) => /opt/libtorch/lib/libprocess_group_agent.so
	libjitbackend_test.so (libc6,x86-64) => /opt/libtorch/lib/libjitbackend_test.so
	libgomp.so.1 (libc6,x86-64) => /opt/libtorch/lib/libgomp.so.1
	libc10.so (libc6,x86-64) => /opt/libtorch/lib/libc10.so
	libcaffe2_observers.so (libc6,x86-64) => /opt/libtorch/lib/libcaffe2_observers.so
	libcaffe2_module_test_dynamic.so (libc6,x86-64) => /opt/libtorch/lib/libcaffe2_module_test_dynamic.so
	libcaffe2_detectron_ops.so (libc6,x86-64) => /opt/libtorch/lib/libcaffe2_detectron_ops.so
	libbackend_with_compiler.so (libc6,x86-64) => /opt/libtorch/lib/libbackend_with_compiler.so

この問題を回避するため、このPRにおいて、build-arg GLIBC_231_WORKAROUND を使って、Ubuntu 18.04のDockerイメージでは、ld.so.conf.dからLibTorchのディレクトリパスを削除し、ldconfigがLibTorchを認識しないようにする変更を加えています。

上の問題が起きたままNuitkaビルドを実行すると、Nuitkaの内部実装で、共有ライブラリの検索にldconfig -p の出力を使っているため、文字列処理に失敗し、AssertionError や UnicodeDecodeError でビルドが失敗します。

ビルド済みの実行用バイナリをUbuntu 18.04で実行する上では、この問題は発生しません。

@aoirint aoirint marked this pull request as ready for review September 22, 2021 18:07
@aoirint aoirint changed the title Linux 自動ビルド: OSをUbuntu 18.04に切り替え Linux 自動ビルド: ビルド用OSをUbuntu 18.04に切り替え Sep 22, 2021
@aoirint
Copy link
Member Author

aoirint commented Sep 23, 2021

こちらもコンフリクト解消のマージコミットをします。

Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! プルリクエストの切り分けがしっかりしていてとても見やすかったです。

こちらのプルリクエストでVOICEVOXエンジンの自動ビルドは一段落かと思うのですが、VOICEVOXソフトウェアの方の自動ビルドにご興味はありませんか・・・?
このエンジンのビルドの方が圧倒的に難しくて、エンジンのビルド結果を取得する機構さえ整えれば、ソフトウェアのビルドはかなりゴールは近いのかなと感じています。

@Hiroshiba Hiroshiba merged commit 4f334df into VOICEVOX:master Sep 23, 2021
@aoirint
Copy link
Member Author

aoirint commented Sep 23, 2021

VOICEVOXソフトウェアの方の自動ビルド

ローカルでは簡単にビルドできたので、試してみようと思います。

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

Successfully merging this pull request may close these issues.

2 participants