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

ヘッダやバイナリにバージョン情報を埋め込む #65

Closed
Yosshi999 opened this issue Jan 13, 2022 · 5 comments
Closed

ヘッダやバイナリにバージョン情報を埋め込む #65

Yosshi999 opened this issue Jan 13, 2022 · 5 comments

Comments

@Yosshi999
Copy link
Contributor

内容

恐らく現状core.hや実装にバージョンを返す関数がなく、またpythonモジュールがビルド時にバージョンを埋め込むために参照している/VERSION.txt が更新されずそのままになっている。
DLLとpythonモジュールのバージョン情報は一致している方が良いと思うので、そのあたりの修正方法やVERSION.txtの処置を決めてほしい。

Pros 良くなる点

  • ファイル名のパース以外の方法で、外部からバージョンを参照できるようになる
  • pythonモジュールとDLLとreleaseページのバージョン名の一致

Cons 悪くなる点

  • リリース手順が増える

実現方法

  • pythonモジュール&DLLのビルド時にいずれもVERSION.txtを参照して埋め込む
  • core.hに埋め込み、pythonモジュールはそれを見る
@Hiroshiba
Copy link
Member

issueありがとうございます!
VERSION.txtが存在することが認識から外れていました。

リリース時にVERSION.txtを更新するのは結構忘れがちで、仕組みで解決したいなと感じています。
VERSION.txtは、リリースビルド時にtag名(0.9.0とか0.10.prview.1とか)が書き込まれる形にし、github上でメンテナンスするときはlatestになっているのが良いのかなと感じています。

エンジン側にも似た問題があったりします。

Hiroshiba added a commit to VOICEVOX/voicevox that referenced this issue Jan 13, 2022
Hiroshiba added a commit to VOICEVOX/voicevox that referenced this issue Jan 13, 2022
* コアのVERSION.txtを更新する工程を追加

ref VOICEVOX/voicevox_core#65

* Update hotfix確認作業テンプレート.md
@Hiroshiba
Copy link
Member

build時にバージョンファイルを作る部分があったのでメモ

echo "${{ env.BUILD_IDENTIFIER }}" > release/VERSION

@Hiroshiba
Copy link
Member

ちょっとどうすれば良いのか迷っています。

  1. 一番うれしいのは、バージョン更新リリース時に何も設定しなくても上手くいく形
  2. 他にも問題が発生しないようなものだと嬉しい

setup.pyでgithubコード上のVERSION.txtを参照するようにすると、release tagを作るたびにVERSION.txtを更新する必要があり、↑の1が叶わなそうです。

setup.pyで参照するファイルをbuild時にバージョンファイルに合わせる方が良いのかなと感じました。
ただこうすると、ソフトウェアビルド時にコアなりエンジンなりのバージョンファイルがどうしても入り乱れるので、2が叶わない気もします。

コアとしてとれる最善策は、 @.Yosshi999 さんが提案されているcore.hに埋め込み、pythonモジュールはそれを見るかもと思いました。

コード側でVERSIONをdefineしておいて、cmakeでバージョンを与えられるようにし、ビルド時にenv.BUILD_IDENTIFIERを与えるという流れはどうでしょう?

@qryxip
Copy link
Member

qryxip commented Mar 24, 2024

@Hiroshiba compatible_engineにバージョン情報を持たせることってありますか? 最近はVOICEVOX/voicevox_engine#1110もあったし、そのような構想はもう無いと認識していますが、そうであればこのissueはcloseできると思います。

@Hiroshiba
Copy link
Member

@qryxip 確認ありがとうございます!!

closeが良さそうな気がしました!

そもそもRustに変わったあたりでバージョン情報 返す C API は 実装済みで、かつ自動的にビルド時のバージョン情報が埋め込まれるようになっています。
で、 @qryxip さんのおっしゃる通りcompatible_engineからはバージョン情報を返していませんが、そもそもこれは目的が互換性のためで、過去にバージョン情報を返していなかったんだったら改めて実装する必要はなさそうかなと。

ということでクリア済みの認識なので、closeします!

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

No branches or pull requests

3 participants