-
Notifications
You must be signed in to change notification settings - Fork 305
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用実行バイナリ(AppImage)の自動ビルド (#218) #270
Conversation
#282 がマージされれば問題は解決するので、readyにします。 AppImageは、7z分割された状態でArtifactに1つのzipにまとめてアップロードされます( インストール用スクリプトについては、 https://gist.github.com/aoirint/5b8e4e5a1a2f6d6bf04d6a463365c41d をベースにしたPRを作成するつもりです。 |
インストールの案内をどうしようかをちょっと迷っています。 ちなみにwindows版はwebサイトのダウンロードボタンを押したあとに「インストール版」をクリックすることでインストーラー.exeが振ってきます。 |
VERSION=X.X.X curl -fsSL https://raw.githubusercontent.com/Hiroshiba/voicevox/main/installer_linux.sh | bash
VERSION=X.X.X curl -fsSL https://raw.githubusercontent.com/Hiroshiba/voicevox/X.X.X/installer_linux.sh | bash 上のようなコマンドと、実行内容を見てから実行したい人向けのインストールスクリプトのダウンロードリンク、をおいておく形を考えていました。コマンドを使わないユーザの視点がほしいです...。 Ubuntu 20.04で、ブラウザでダウンロードしたシェルスクリプトを実行するには、GUI上だけでは完結しない気がしました。 bash installer.sh
# Or
chmod +x installer_linux.sh
./installer.sh 調査 シェルスクリプトを使ったAppImageのインストーラという形式は、文書系ソフトウェアのJoplinを参考にしています。 画像処理ソフトウェアのGIMPは、バイナリをflatpakというパッケージマネージャ向けに配布していて、flatpakrefというインストール情報が記述されたテキストファイルのダウンロードリンクをおいています。 しかし、Ubuntu 20.04の標準GUIパッケージ管理ソフト(GNOME Software Center)では、 また、flatpakは別途インストールされていることが前提になっています(Ubuntu 20.04時点ではデフォルトで入っていません)。 GUIで完結させるには、deb/rpmかtar.gzを使う方法がとられているのかなと思いました。 debの場合、deb内部に必要なファイルが同梱されているか、パッケージを配布するサーバ(リポジトリ)が用意されている(CUDA deb (network))ように思いました。 Discordは、tar.gz形式でElectronのビルド成果物(linux-unpacked = linux-nvidia-prepackage/linux-cpu-prepackage)を合わせて配布していました。 CUDAのrunfileは、Makeselfというプログラムで作られたオフラインインストーラのようでした(コマンドで実行)。
FFmpegに依存するOBS Studioは、コマンドだけ用意されていました。
Discordは、Electronのビルド成果物を、debに加えてtar.gz形式でも配布していました。 VOICEVOXでも、Windows用のzip版に相当する形で、DiscordのようにLinux用のtar.gz版を用意してもよさそうに思いました。 配布物は、linux-nvidia-prepackage/linux-cpu-prepackageでよさそうですが、 |
を追加で実装してみました ただ、tar.gzから展開した |
あ、ライブラリが見つからないためですよね・・・。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
コメント追加のお願いの点だけがRequest changesで、それ以外はコメントレベルです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! また1回チェックでビルドを回してみたいと思います!
内容
Linux用実行バイナリの自動ビルドを追加します。
インストーラ(シェルスクリプト)は #283 で追加します。
AppImage分割7zのRelease Assetsへのアップロード
*.7z.txt
、*.7z.###
が展開される)gh release upload VERSION *.7z.* -R Hiroshiba/voicevox
アプリケーション終了時にENGINEのプロセスが終了されない問題
onCloseが呼び出されていない。
ps.on('exit', onClose)
でも同様。似ていそうなIssue: nodejs/node#4500 (comment)
close
だけでなくexit
も呼ばれないので違いそうTreeKill内で
spawn
のコールバックを使って実装されているのが要因と思っている。spawnSync
を使えば同期処理にはなるが正しくプロセスキルできる。Windowsでは、プロセスツリーのkillを
taskkill
が行うので動作していそうだが、killすべきプロセスリストの取得にコールバックを使っているLinuxとmacOSでは動かなさそう。GPU→CPUにエンジン切替時にエンジン起動中のモーダルが消えない問題もあるが、#282 で直ると思う。
ENGINE側で共有ライブラリの読み込みに失敗する問題
このPRで追加するWorkflowによって生成された
VOICEVOXソフトウェアからGPUで音声合成しようとすると、1回目は成功しますが、必ず2回目で
共有ライブラリの読み込みに失敗し、音声合成に失敗する問題がありそうです(調査中)。
未確認ですが、 https://github.com/Hiroshiba/voicevox_engine/issues/121#issuecomment-927200777 が関連するかもしれません。
以下は、VOICEVOXソフトウェア側のログから
run
のログが確認できないため、別途ENGINEを実行したときの失敗ログです。以下のように、ファイル名にハッシュ値?が付いているのが原因かもしれません。
$ ls | grep libnv libnvrtc-3a20f2b6.so.11.1 libnvrtc-builtins-07fb3db5.so.11.1 libnvToolsExt-24de1d56.so.1 libnvToolsExt.so.1
RESTART_ENGINEがプロセスキル成功後にエラーを出力する問題
外部からKillされたENGINEの再起動が終了しない問題
関連 Issue
ref https://github.com/Hiroshiba/voicevox_engine/issues/121#issuecomment-927200777
close #218