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

バージョン情報ダイアログの整理 #569

Merged

Conversation

berryzplus
Copy link
Contributor

バージョン情報ダイアログのコード(+リソース)の整理を行います。

#563 #566 と関係する話題です。

バージョン情報ダイアログには、ビルド時のソースコード情報が表示されます。
これらの情報は、実行時に動的に取得する種類の情報ではありませんが、
現在のソースコードでは、実行時ダイアログを表示する直前に情報を書き換えています。

このコミットでは、シンボルの定義状態に基づいた表示切替を反映した形でダイアログリソースを構築します。変更により、ダイアログ初期化時のコードの大半が消えることになります。

#566 の背景色描画範囲がおかしい問題も同時に解決される見込みです。

このダイアログリソースには、まだいろいろと課題がありますが、
今回対応するのはとりあえずリンクアドレスの埋め込みと表示切替の反映のみです。

表示非表示をコードで切り替えていたのを変更。
ビルド元ソースの情報は、実行時に変わることはないので、埋め込んでしまう。
@berryzplus berryzplus mentioned this pull request Oct 20, 2018
LTEXT APPVEYOR_SHORTHASH, IDC_STATIC_URL_GITHUB_COMMIT, 101, 133, 30, 8, SS_NOTIFY | NOT WS_GROUP | WS_TABSTOP
#endif
#ifdef APPVEYOR_PULL_REQUEST_NUMBER
LTEXT "PR " APPVEYOR_PULL_REQUEST_NUMBER, IDC_STATIC_URL_GITHUB_PR, 150, 133, 30, 8, SS_NOTIFY | NOT WS_GROUP | WS_TABSTOP
Copy link
Member

Choose a reason for hiding this comment

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

APPVEYOR_PULL_REQUEST_NUMBER のところで
リソースファイルでは c/c++ のように文字列連結はできないはずです。

また、appveyor の過去の PR の artifacts から Log の zip をダウンロードして
set_appveyor_env.bat をダウンロードして、コマンドプロンプトから実行して
ビルドすれば PR でのビルドをエミュレートできるので、ローカルで PR 固有の
ビルドのテストをできます。

Copy link
Contributor Author

Choose a reason for hiding this comment

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

APPVEYOR_PULL_REQUEST_NUMBER のところで
リソースファイルでは c/c++ のように文字列連結はできないはずです。

やってみてできなかったので別な方法考えます。

また、appveyor の過去の PR の artifacts から Log の zip をダウンロードして
set_appveyor_env.bat をダウンロードして、コマンドプロンプトから実行して
ビルドすれば PR でのビルドをエミュレートできるので、ローカルで PR 固有の
ビルドのテストをできます。

この文章が理解できてるか怪しいです。

githash のシンボル群は git を使って生成してるから zip 版だと hash の部分が真っ白になる認識でした。zipでも追加作業したらHash ID出せるといってます?

Copy link
Member

Choose a reason for hiding this comment

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

この文章が理解できてるか怪しいです。

  1. 例えば https://ci.appveyor.com/project/sakuraeditor/sakura/builds/19644986 にアクセスして
    適用な構成のビルドの artifacts から Log のついている ZIP をダウンロードします。

  2. ダウンロードした ZIP を解凍すると中に set_appveyor_env.bat が入っています。

  3. set_appveyor_env.bat で appveyor でビルドしたときと同じ状態で環境変数が定義されているので、取得した set_appveyor_env.bat をコマンドプロンプトで実行します。

  4. build-sln.bat でビルドします。

→ appveyor でビルドしたのと同等の環境でビルドしたのを再現できます。
(必要に応じてローカルで set_appveyor_env.bat を編集して試してもいいと思います)
(注意点としては成功したビルドしか set_appveyor_env.bat は収集されないので
今試している PR の artifacts を取得する場合は appveyor 上で少なくとも一度ビルドを
通す必要があります)

set_appveyor_env.bat の例

set APPVEYOR_BUILD_FOLDER=C:\projects\sakura
set APPVEYOR_REPO_PROVIDER=gitHub
set APPVEYOR_REPO_NAME=sakura-editor/sakura
set APPVEYOR_REPO_COMMIT=0fd870a632a26664ad4a1d601b5c2a4a4361a251
set APPVEYOR_REPO_TAG_NAME=
set APPVEYOR_PULL_REQUEST_NUMBER=565
set APPVEYOR_PULL_REQUEST_HEAD_COMMIT=b5c86256710d42cf054c834aa0eeca1b250da77a
set APPVEYOR_URL=https://ci.appveyor.com
set APPVEYOR_ACCOUNT_NAME=sakuraeditor
set APPVEYOR_PROJECT_SLUG=sakura
set APPVEYOR_BUILD_VERSION=1.0.1050
set APPVEYOR_BUILD_NUMBER=1050

appveyor.md Outdated
@@ -164,6 +164,7 @@
| APPVEYOR_BUILD_NUMBER_INT | APPVEYOR_BUILD_NUMBER |数値 |
| APPVEYOR_PULL_REQUEST_NUMBER |APPVEYOR_PULL_REQUEST_NUMBER |文字列 |
| APPVEYOR_PULL_REQUEST_NUMBER_INT |APPVEYOR_PULL_REQUEST_NUMBER |数値 |
| APPVEYOR_PULL_REQUEST_NUMBER_LABEL |APPVEYOR_PULL_REQUEST_NUMBER |文字列 |
Copy link
Member

Choose a reason for hiding this comment

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

細かいですが、
APPVEYOR_PULL_REQUEST_NUMBER の前の | で列を前後の行と揃えていると見やすいです。

Copy link
Member

@m-tmatma m-tmatma left a comment

Choose a reason for hiding this comment

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

master

master

この PR (build URL が消えている)

pr569

@m-tmatma
Copy link
Member

m-tmatma commented Oct 20, 2018

APPVEYOR_BUILD_TEXTは CDlgAbout.cpp の中で定義されているので、
APPVEYOR_PULL_REQUEST_NUMBER_LABEL と同様に githash.h 生成するように
変更する必要があります。

sakura_core/dlg/CDlgAbout.cpp:#define APPVEYOR_BUILD_TEXT       "Build " APPVEYOR_BUILD_NUMBER
sakura_core/dlg/CDlgAbout.cpp:#if defined(APPVEYOR_BUILD_TEXT)
sakura_core/dlg/CDlgAbout.cpp:#pragma message("APPVEYOR_BUILD_TEXT: " APPVEYOR_BUILD_TEXT)
sakura_core/dlg/CDlgAbout.cpp:#ifdef APPVEYOR_BUILD_TEXT
sakura_core/sakura_rc.rc:#ifdef APPVEYOR_BUILD_TEXT
sakura_core/sakura_rc.rc:    LTEXT           APPVEYOR_BUILD_TEXT, IDC_STATIC_URL_APPVEYOR_BUILD, 101, 123, 120, 8, SS_NOTIFY | NOT WS_GROUP | WS_TABSTOP
sakura_lang_en_US/sakura_lang_rc.rc:#ifdef APPVEYOR_BUILD_TEXT
sakura_lang_en_US/sakura_lang_rc.rc:    LTEXT           APPVEYOR_BUILD_TEXT, IDC_STATIC_URL_APPVEYOR_BUILD, 101, 123, 120, 8, SS_NOTIFY | NOT WS_GROUP | WS_TABSTOP

@m-tmatma
Copy link
Member

↑ もともとのコードがわかりにくいコードになってました。

sakura/githash.bat Outdated Show resolved Hide resolved
appveyor.md Outdated
| APPVEYOR_SHORTHASH_PR_HEAD |APPVEYOR_SHORTHASH_PR_HEAD |文字列 |
| APPVEYOR_BUILD_URL |APPVEYOR_BUILD_URL |文字列 |
| 生成するマクロ名 | 元にする環境変数 | 型
| ---- | ---- | ----
Copy link
Member

Choose a reason for hiding this comment

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

右端の | は残しておきたいです。

理由は
sakura-editor/management-forum#31 (comment)
のプラグインでは | をつけるからです。

@m-tmatma
Copy link
Member

build URL が消えている件、お願いします。

LTEXT GIT_URL, IDC_STATIC_URL_GIT, 101, 113, 120, 8, SS_NOTIFY | NOT WS_GROUP | WS_TABSTOP
#endif
#ifdef APPVEYOR_BUILD_LABEL
LTEXT "Build URL:", IDC_STATIC_URL_APPVEYOR_CAPTION, 33, 123, 71, 8, NOT WS_GROUP
Copy link
Member

Choose a reason for hiding this comment

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

sakura_lang_en_US\sakura_lang_rc.rc と sakura_core\sakura_rc.rc とで
Build URL: の行 と APPVEYOR_SHORTHASH の行とで空白の差分が出ています。

もともとは差分がなかったところなので差分がない(不要な変更がない)ように
してほしいです。

appveyor.md Show resolved Hide resolved
表示非表示をコードで切り替えていたのを変更。
ビルド元ソースの情報は、実行時に変わることはないので埋め込んでしまう。
表示非表示をコードで切り替えていたのを変更。
ビルド元ソースの情報は、実行時に変わることはないので埋め込んでしまう。
表示非表示をコードで切り替えていたのを変更。
ビルド元ソースの情報は、実行時に変わることはないので埋め込んでしまう。
表示非表示をコードで切り替えていたのを変更。
ビルド元ソースの情報は、実行時に変わることはないので埋め込んでしまう。
リソーススクリプト内でリテラル文字列の連結が行われない対策として、
githash.batでラベル用のリテラル文字列を生成させるように変更。
当初cpp上で定義されていた既存変数に当て込もうとしていたが、
ビルド番号の文字列表現と取り違える危険があるので名称変更。

APPVEYOR_BUILD_TEXT → APPVEYOR_BUILD_NUMBER_LABEL
BUILD_NUMBER_LABELは"Build: xxxx"を定義したシンボル。
リソーススクリプト内でリテラル文字列の連結が行われない対策として、
githash.batでラベル用のリテラル文字列を生成させるように変更。
当初APPVEYOR_PULL_REQUEST_NUMBER_LABELで作成したが、
シンボル名が長すぎて切り詰められるので短い名前に変更。

切り詰めが発生したときのログ↓
3>..\sakura_core\sakura_rc.rc(119): warning RC4011: identifier truncated to 'APPVEYOR_PULL_REQUEST_NUMBER_LA'
3>
3>sakura.vcxproj -> F:\gitroot\sakura-mygithub\Win32\Debug\sakura.exe
インデントがずれていたのを修正。
markdown表の末尾縦棒はExcelアドインの出力に合わせ残す。
sakura-editor/management-forum#31 (comment)
@berryzplus berryzplus force-pushed the refactoring/straight_dlg_about branch from 867be53 to f753d55 Compare October 21, 2018 08:45
@berryzplus
Copy link
Contributor Author

不要な変更を消すためにリベースしました。
対象コミットが先頭のほうにあったので、
ついでで後半のコミットを組みなおしました。

指摘内容はすべて取り込んだつもり・・・ 😢

LTEXT "Commit", IDC_STATIC_URL_GITHUB_COMMIT, 101, 133, 30, 8, SS_NOTIFY | NOT WS_GROUP | WS_TABSTOP
LTEXT "PR.", IDC_STATIC_URL_GITHUB_PR, 150, 133, 30, 8, SS_NOTIFY | NOT WS_GROUP | WS_TABSTOP
#endif
#ifdef APPVEYOR_SHORTHASH
Copy link
Member

Choose a reason for hiding this comment

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

case IDC_STATIC_URL_APPVEYOR_BUILD:
{
#if defined(APPVEYOR_BUILD_URL)
::ShellExecute(GetHwnd(), NULL, _T(APPVEYOR_BUILD_URL), NULL, NULL, SW_SHOWNORMAL);
#elif defined(GIT_URL)
::ShellExecute(GetHwnd(), NULL, _T(GIT_URL), NULL, NULL, SW_SHOWNORMAL);
#endif
return TRUE;
}
case IDC_STATIC_URL_GITHUB_COMMIT:
#if defined(GITHUB_COMMIT_URL)
::ShellExecute(GetHwnd(), NULL, _T(GITHUB_COMMIT_URL), NULL, NULL, SW_SHOWNORMAL);
#endif
return TRUE;
case IDC_STATIC_URL_GITHUB_PR:
#if defined(GITHUB_COMMIT_URL_PR_HEAD)
::ShellExecute(GetHwnd(), NULL, _T(GITHUB_COMMIT_URL_PR_HEAD), NULL, NULL, SW_SHOWNORMAL);
#endif
return TRUE;

厳密に言えば、APPVEYOR_BUILD_URL や GITHUB_COMMIT_URL や GITHUB_COMMIT_URL_PR_HEAD などにも依存しているのでこれら
のマクロの定義もチェックした方がいいとは思います。

ただこの PR で全部やらなくてもいいとは思います。

これらのマクロを全部チェックすると複雑になるので各コントロールが
有効になるか無効になるのかをマクロを別途定義して、切り替えるように
したら簡単なんじゃ開花と思います。

Copy link
Contributor Author

Choose a reason for hiding this comment

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

厳密に言えば、APPVEYOR_BUILD_URL や GITHUB_COMMIT_URL や GITHUB_COMMIT_URL_PR_HEAD などにも依存しているのでこれら
のマクロの定義もチェックした方がいいとは思います。

ただこの PR で全部やらなくてもいいとは思います。

欲を言うとシンボルの定義状況によって処理が変わるのはあまりよくないんじゃないかと思っています。とりあえず、このPRの目標は、ビルド時に確定して変わらないはずの表示テキストと表示非表示をリソースに埋め込むことなので残課題は残す前提で進めたいです。

Copy link
Member

@m-tmatma m-tmatma left a comment

Choose a reason for hiding this comment

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

対応ありがとうございました。

@m-tmatma
Copy link
Member

pr569-1021

@berryzplus
Copy link
Contributor Author

あざーっす。マージしまーっす 😄

@berryzplus berryzplus merged commit 87c4215 into sakura-editor:master Oct 21, 2018
@berryzplus berryzplus deleted the refactoring/straight_dlg_about branch October 21, 2018 10:17
@m-tmatma m-tmatma added the refactoring リファクタリング 【ChangeLog除外】 label Oct 21, 2018
@m-tmatma m-tmatma added this to the next release milestone Oct 21, 2018
@m-tmatma m-tmatma added the CI appveyor など CI 関連 【ChangeLog除外】 label Oct 21, 2018
HoppingTappy pushed a commit to HoppingTappy/sakura that referenced this pull request Jun 11, 2019
…ight_dlg_about

バージョン情報ダイアログの整理
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CI appveyor など CI 関連 【ChangeLog除外】 refactoring リファクタリング 【ChangeLog除外】
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants