[ttssh2-dev 257] リリース用バイナリの作成: svnrev_perl について

Back to archive index
NAGATA Shinya maya.****@gmail*****
2022年 2月 18日 (金) 22:25:58 JST


永田です。

> https://www.dropbox.com/s/udjqypntnhllbtb/release_scripts.zip?dl=0

上からひととおりチェックしはじめました。


以前あった svnrev.exe は、「作業コピーの現在の SVN リビジョンを
得て teraterm\ttpdlg\svnversion.h を更新する」ためのもので、
ttermpro をビルドする前に必ず実行されるようにしていました。
(実行されると、既存のファイルより今のリビジョンが上がって
いる場合のみ、svnversion.h を更新していました。)
これにより、リリース時はもちろん、スナップショットであっても
その SVN リビジョンが About ダイアログに表示されます。

svnrev_perl にはこの機能がないようですが、svnrev がやりたい
ことの認識はあっていますか?


* svnrev.pl が実行されない
build.bat は rebuild だと svnrev.bat の実行をスキップしますが、
スキップするにしても逆のような気がします。
また、svnrev.bat も svnversion.h の存在をチェックをし、存在する
と svnversion.h を更新しません。
これだと、svnversion.h に表れるのは「ソースがチェックアウト
されて最初にビルドしたときの SVN リビジョン」になり、その後
作業コピーの SVN リビジョンが上がっても更新されません。
svnrev.pl が必ず実行されるように変更するのがよいでしょうか?


* リビジョンの更新チェック
今の svnrev.pl は実行されると必ず svnversion.h を更新します。
そうすると、毎回ソースが変わり必ず ttermpro がビルドされてしまうの
で、「svnversion.h が存在していたら、そのリビジョンと比較して、
更新されていたら書き込む」という処理が必要になります。


* ttermpro.sln において
bat と perl だけのプロジェクトで、なにが「ビルド」されるのか
わかりません(それ自体は問題はありません)が、svnrev_perl の
「ビルド前のイベント」で「$(ProjectDir)svnrev.bat」が実行される
ようになっています。
ttermpro は svnrev_perl に依存していますが、svnrev_perl に変更
があってビルドされないと「svnrev_perl のビルド前イベント」が
起きず、svnrev.bat は実行されません。ttermpro にだけ変更がある
ときは svnrev_perl のビルドは発生しませんので、svnversion.h が
更新されません。
ttermpro のビルド前イベントで呼び出すだけでよくて、svnrev_perl
のプロジェクトは不要ではありませんか?


* svnrev_perl の位置
ツリーのトップにこれがあるのが変な感じがしていて、buildtools か
tools の中ぐらいがちょうどいいように感じます。
この2つを使い分ける基準はありますか?


* svn.exe が日本語でメッセージを返すとき
/Last Changed Rev: (\d+)/ や /Relative URL: (.+)$/ に引っかからず、
svnversion.h に情報が出力されませんでした。
手元では、subversion.mo が読み込まれないよう環境をいじって回避する
ことができました。
svnrev.exe では、数値と記号だけを返す svnversion.exe を実行して
いたので問題になりませんでした。


-- 
TeraTerm Project https://ttssh2.osdn.jp/
NAGATA Shinya <maya.****@gmail*****>



ttssh2-dev メーリングリストの案内
Back to archive index