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

macOS用アプリケーションとdmgファイル、zipファイルの自動ビルド #570

Merged
merged 34 commits into from
Dec 12, 2021

Conversation

PickledChair
Copy link
Member

@PickledChair PickledChair commented Dec 11, 2021

内容

macOS用アプリケーションと、それをインストールするためのdmgファイルの自動ビルドを追加します。

(追記)zipファイルの作成も追加しました。 #570 (comment)

関連 Issue

close #399
ref #348

スクリーンショット・動画など

VOICEVOX.0.9.3.dmg をマウントした際にデスクトップに表示されるアイコン

mount_voicevox_dmg

VOICEVOX.0.9.3.dmg を開いたときのインストール画面

矢印に従ってアプリアイコンをアプリケーションフォルダにドラッグするとインストールされます。

open_voicevox_dmg

その他

  • macOS向けのテストリリースはこちらVOICEVOX.0.9.3.dmg からダウンロードできます。
  • インストール後、初回の起動時はセキュリティ警告が出て起動できません。「システム環境設定 → セキュリティとプライバシー → 一般タブ」でダウンロードしたアプリケーションの実行許可を与えるか、VOICEVOX.app を直接二本指クリック(右クリック)して出るコンテキストメニューから開く操作を2回試みると開きます。
  • pkgファイルの構築も検討しましたが、dmgによる配布の方が一般的だと感じたのでこちらを選択しました。検討の余地がある場合はご提案ください。

@Hiroshiba
Copy link
Member

こちらのmacでも試してみた感じ、動きました!!

初回起動時に ENOENT: no such file or directory open psn_0_数値 みたいなエラーダイアログが出ました。
調べても何のファイルなのか謎でした・・・。

@Hiroshiba
Copy link
Member

たぶん、.appをzipにしただけのzip版もニーズがあると思います。
もしよかったらそちらの作成もお願いできるとすごく嬉しいです・・・!

@PickledChair
Copy link
Member Author

初回起動時に ENOENT: no such file or directory open psn_0_数値 みたいなエラーダイアログが出ました。
調べても何のファイルなのか謎でした・・・。

2回目以降の起動時には出ませんでしたでしょうか?(しかし、初回起動時だけの現象だったとしても、ちょっと気持ちのいいものではありませんね……。)自分の環境では遭遇していないエラーなので、発生条件がわからないです。一度 AppCleaner 等のツールで関連ファイルごと完全にアンインストールしてから、もう一度インストールし、クリックで初回起動せず

$ cd /Applications/VOICEVOX.app/Contents/MacOS
$ ./VOICEVOX

の起動方法をとると、詳しいエラーが読めると思うので、もしよかったらご報告いただければと思います(自分がいつも取っているデバッグ方法です)。

たぶん、.appをzipにしただけのzip版もニーズがあると思います。
もしよかったらそちらの作成もお願いできるとすごく嬉しいです・・・!

作業してみます。Linux向けのtar.gzを作っている付近でmacOS向けにzipへ固めれば、期待しているものが得られそう? と思いました。

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.

すごく良いなと感じました!!

やりなおしが時間かかって少々面倒かと思うのですが、もしよかったら処理の共通化をお願いしたいです。

.github/workflows/build.yml Outdated Show resolved Hide resolved
.github/workflows/build.yml Outdated Show resolved Hide resolved
.github/workflows/build.yml Outdated Show resolved Hide resolved
@Hiroshiba
Copy link
Member

2回目以降の起動時には出ませんでしたでしょうか?

一度だけでした。正確には、
dmgインストール→.appダブルクリック→許可がないので開けません→system preferenceから「開く」→起動時にエラー
という流れでした。

教えていただいた方法でコンソールから初回起動したいのですが、system preferenceから許可しないと開けず、かつ許可するとGUIで起動してしまって試せませんでした・・・。

@PickledChair
Copy link
Member Author

教えていただいた方法でコンソールから初回起動したいのですが、system preferenceから許可しないと開けず、かつ許可するとGUIで起動してしまって試せませんでした・・・。

すみません、言われて気づいたのですが、そうなってしまいますよね……。お手間を取らせてすみませんでした。

2回目以降は正常に起動するとのことなので、本当にファイルが不足している or 間違ったファイル指定をしている、といった問題はないものと思われます。OSがアプリの起動を中途半端なところで止めていて起こっているエラーなのかもしれませんが、憶測の域を出ないです……。

今回の PR では対策ができなさそうですが、何度も再現する場合は Issue 化が必要そうですね。

@PickledChair
Copy link
Member Author

zip版について検討した結果、当初考えていたよりちょっと実現が難しそうです。Linux版ビルドでtar.gzを作っているところに次のようなコメントがあります。

# Create tar.gz for Linux
#
# Due to GitHub Actions limitation (https://github.com/actions/upload-artifact/issues/38),
# file permissions are lost in actions/upload-artifact.
# To distribute binaries (voicevox, run) with execute permission,
# we need to pack all the files in tarball (tar.gz) before uploading.
# https://github.com/actions/upload-artifact/blob/11e311c8b504ea40cbed20583a64d75b4735cff3/README.md#maintaining-file-permissions-and-case-sensitive-files
#
# voicevox-x.x.x.tar.gz
# - VOICEVOX/
# - voicevox
# - run
#

これについてはmacOSでも同じ問題があります。chmod で設定した File permission をダウンロード後にも維持するにはtar.gzに固める以外に手段がなさそうです。これについては以下の Upload Artifact v2 のドキュメントにも記載されています。また、zipをアップロードすると2重のzipになってしまうことなども書いてあります。

https://github.com/actions/upload-artifact/blob/11e311c8b504ea40cbed20583a64d75b4735cff3/README.md#limitations

実際、 https://github.com/PickledChair/voicevox/actions/runs/1566674713 のアーティファクト macos-cpu-prepackage をダウンロードすると(zipに固めていないにも関わらず)zipファイルが得られ、解凍するとappバンドルが得られますが、appバンドル内の実行ファイルの実行権限は全て消えています。

選択肢は2つで、Linuxと同様tar.gzで配布するか、配布しないかのどちらかになると思います。zipは自分が調査した限りでは難しそうです。

(zip版配布に関して有益な情報を知っている方や、「ここ間違ってますよ」という方がいらっしゃれば、情報の提供やご指摘等よろしくお願いいたします。)

@PickledChair
Copy link
Member Author

ターミナル上でVOICEVOXを例外許可して実行する方法ですが、システム全体のセキュリティ設定を一時的に緩和するのが手っ取り早いかと思います。

@HyodaKazuaki ありがとうございます。#570 (comment)#570 (comment) のデバッグに使えそうな手ですね。今後このエラーが出た方でデバッグに協力してくれる人に、この操作の後でエラーを確認してもらう、ということができそうです。

@Hiroshiba
Copy link
Member

Hiroshiba commented Dec 11, 2021

@.HyodaKazuaki さんの方法で試せました!
が、コマンドからの実装だとエラーが出ませんでした。
たぶんなのですが、system preferenceから許可してopenすると何かが引数として送られてくることがあって、それを↓でproject file loadしようとしてエラーが出ているのかなと思いました。

voicevox/src/background.ts

Lines 496 to 501 in c257aea

win.webContents.once("did-finish-load", () => {
if (process.argv.length >= 2) {
const filePath = process.argv[1];
ipcMainSend(win, "LOAD_PROJECT_FILE", { filePath, confirm: false });
}
});

@Hiroshiba
Copy link
Member

選択肢は2つで、Linuxと同様tar.gzで配布するか、配布しないかのどちらかになると思います。zipは自分が調査した限りでは難しそうです。

完全に失念していました。
今webページで配布しているLinux Zip版は動作しないのですね・・・。

Linux Zip版がまともに動かないのに報告がないということは、あまりユーザーがいないということなので、用意しなくても良いかもですね・・・
もし簡単に作れそうであればtar.gz版も作成して頂けると嬉しいですが、一旦dmgだけでも良いと思います!

@PickledChair
Copy link
Member Author

Linux Zip版がまともに動かないのに報告がないということは、あまりユーザーがいないということなので、用意しなくても良いかもですね・・・

Linux Zip版を試してみました。プロパティを開いて「プログラムとして実行可能」にチェックを入れると起動できるようになります(AppImageの一般的な起動手順の一部としてよく案内されているみたいです)。LinuxからはAppImageがディレクトリではなく単一のファイルとして見えているようなので、実行権限の付与が1回で良いのかもしれません。

voicevox_appimage_permission

zip版について、もう少し作業してみて駄目そうであればtar.gzを作るようにしてみます。

@PickledChair
Copy link
Member Author

PickledChair commented Dec 12, 2021

zipにしてアーティファクトとしてアップロードしたところ、File permissionが失われていないことがわかりました。こちらmacos-cpu-prepackage-zip からダウンロードできます。2重のzipになっていますが、それ以外は問題なさそうです。起動も試しましたがうまく行きました。

こちらのzipはどうすれば良いですか? Releases からダウンロードできるようにすると良いですか?(他のassetsを見るに、artifactからassetsに上げると一番外側のzipが解凍されるように見えます。)

@aoirint
Copy link
Member

aoirint commented Dec 12, 2021

@Hiroshiba

Linux Zip版

実は公式サイトのzip版としてAppImageが配布されていることに気づいていましたが、忘れていました。
AppImage単体でも、 #570 (comment) のように実行権限を付与すれば動作はします(zip版というよりAppImage版)。

Linuxユーザとしては、zip版(tar.gz版)として配布されている場合、AppImageではなくて、Windows zip版と同じようにprepackage-targzを配布する方が自然かなと思いました(artifactはzip圧縮されるので、tar.gz in zipで配布するか、中のtar.gzを取り出す手間が増えますが)。

discord_targz

voicevox_targz

@aoirint
Copy link
Member

aoirint commented Dec 12, 2021

Releases からダウンロードできるようにすると良いですか?

いまの方針だとzip版は、ヒホさんのGoogle Driveで配布していますが、GitHub Releasesの1ファイル2GB容量制限を回避するためにそうしているだけだったと思うので、個人的には(Windows、Linuxも)CPU版はGitHub Releasesにアップロードするようにしてもいいかなと思いました。

ONNX化が完了したらファイルサイズの問題が解消されるので、すべてGitHub Releasesにアップロードするようになると思います。

@PickledChair
Copy link
Member Author

@aoirint

いまの方針だとzip版は、ヒホさんのGoogle Driveで配布していますが、GitHub Releasesの1ファイル2GB容量制限を回避するためにそうしているだけだったと思うので、個人的には(Windows、Linuxも)CPU版はGitHub Releasesにアップロードするようにしてもいいかなと思いました。

なるほどです! とりあえずmac版に関して、zipをReleasesのassetsに含める作業を進めてみます。

Copy link
Member

@aoirint aoirint left a comment

Choose a reason for hiding this comment

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

コードをReviewしておきます。良さそうでした! LGTM!

Comment on lines 5 to 6
branches:
- main
# branches:
# - main
Copy link
Member

Choose a reason for hiding this comment

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

ENGINEの方では、手動でCI実行できるように(この一時的変更をしなくていいように)、workflow_dispatchを追加しているので、ソフトウェアの方でも追加してしまってもよさそうだなと思いました(別PRでもこちらでも)。

VOICEVOX/voicevox_engine#198

Copy link
Member Author

Choose a reason for hiding this comment

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

情報ありがとうございます。便利ですね! 別PRを出そうかなと思いました。

@PickledChair
Copy link
Member Author

Releasesにzipがアップロードされるのを確認しました。 https://github.com/PickledChair/voicevox/releases/tag/0.9.3-pickledchair-6voicevox-cpu-macos-x64.zip からダウンロードできます。自分の環境では動作することを確認できました。

@PickledChair PickledChair changed the title macOS用アプリケーション (.app) とdmgファイル (.dmg) の自動ビルド macOS用アプリケーションとdmgファイル、zipファイルの自動ビルド Dec 12, 2021
@Hiroshiba
Copy link
Member

見るの遅れました。( @aoirint さんありがとうございます!)

GPU版は容量が大きくてreleasesに乗らないのですが、macはCPU版のみなので、プルリクで頂いているようにreleasesに乗っけて頂くので良さそうに感じました!

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!!! 配布が楽しみですね!!

とりあえず次のバージョンから正式対応にしたいと思っています。
(余力があれば0.9.4?として現行のmac版も配布したいです。)

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.

Mac版の自動ビルド・リリース
4 participants