-
Notifications
You must be signed in to change notification settings - Fork 309
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
VOICEVOX ENGINEの実行コマンドをrun.exe
から./run
に変更する
#265
Conversation
run.exe
から./run
に変更するrun.exe
から./run
に変更する
どんなwindows環境でも、exe拡張子を書かなくてもちゃんと動くものなのかが若干気になりました。 |
たしかにそうですね。 一応、child_process.execFileの処理を追ってみました。 調査の結果としては、挙動がWindows(Win32 API)ではなく、Node.js(libuv)に依存するため、動きます。 child_process.execFileの処理Windowsでは、拡張子を指定せずにchild_process.execFileを呼び出したときの挙動は、Windows(Win32 API)ではなく、Node.jsが内部で使っているライブラリのlibuvの仕様に依存します。 libuvは、ファイル名に拡張子がない場合、ファイルの存在をチェックして、 補完される拡張子は、Win32 API CreateProcessWや環境変数 PATHEXTとは関係なく、libuvによって決まります。 環境変数PATHEXTについては、Node.js v0.xのときの議論がありました。このときから、Node.js内部でlibuvを使っていて、 一方で、libuvが内部で呼び出しているWin32 APIのCreateProcessWでは、ディレクトリパスを含むファイル名が指定されたとき、
調査の結果結果として、コードは動きますが、 このPRは、OS間でENGINEの実行コマンドを共通化して、開発しやすくする意図のものです。 個人的には、このPRが加える変更とは反しますが、ENGINE_PATHを実行ファイルの場所を指定している、ととらえれば、 将来的には、ENGINEのパスを その場合、 #266 のような形でビルド時の環境変数またはyamlを使って child_process.execFileの処理の流れ
|
調査ありがとうございます!!とても勉強になりました。 仰るとおり、 そうですね・・・ちょっと実験的になってしまって申し訳ないのですが、 https://github.com/Hiroshiba/voicevox/pull/266 では実装をビルド時の仕様に合わせたので、こちらはビルド時のコマンドを実装に合わせてみる(コードはそのままに、Github Actions上でOSごとの |
ひとまず、その方針でいいと思いました! Linuxの自動ビルドのPRで対応すると思うので、このPRはCloseします。 |
内容
Linux用実行バイナリでも、VOICEVOXから相対パスにあるVOICEVOX ENGINEを実行できるようにします。
関連 Issue
ref #218