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

リビルド時、githash.hが再生成されるように修正 #1757

Conversation

berryzplus
Copy link
Contributor

PR の目的

リビルド時にgithash.hを再作成して、更新されるようにします。

カテゴリ

  • ビルド関連
    • ビルド手順

PR の背景

Git clone後にビルドして、 githash.h が生成された状態にすると、
pullしてソースを最新にしても githash.h が更新されないようです。
#1750 (comment)

PR のメリット

リビルド時にgithash.hが再生成されるようになります。

PR のデメリット (トレードオフとかあれば)

リビルド時にgit情報の変更がなくてもgithash.hが再生成されてしまいます。

仕様・動作説明

リビルド時にgithash.hが再生成されるように、
クリーン時にgithash.hを削除するビルドタスクを追加します。

PR の影響範囲

通常のビルド(≒MinGWビルド以外)に影響する変更です。
アプリの機能には影響を与えないと考えられます。

テスト内容

テスト1

手順
ソリューションをビルドする。 →githash.hが生成されたことを確認。
ソリューションをクリーンする。 →githash.hが削除されたことを確認。
ソリューションをクリーンする。 →githash.hが存在しなくてもエラーにならないことを確認。
ソリューションをリビルドする。 →githash.hが生成されることを確認。

関連 issue, PR

参考資料

追加するタスクは sakura.vcxproj からコピペして作成しました。

<Target Name="AppendCleanTargets" BeforeTargets="CoreClean">
<!-- Add files to @Clean just before running CoreClean. -->
<ItemGroup>
<Clean Include="$(OutDir)sakura.ini" />
<Clean Include="$(OutDir)bregonig.dll" />
<Clean Include="$(OutDir)ctags.exe" />
</ItemGroup>
</Target>

@sonarcloud
Copy link

sonarcloud bot commented Jan 5, 2022

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
No Duplication information No Duplication information

@AppVeyorBot
Copy link

@@ -9,4 +9,10 @@
BeforeTargets="ClCompile">
<Exec Command="..\sakura\githash.bat ..\sakura_core $(GeneratedGitHash)" />
</Target>
<Target Name="AppendCleanTargets" BeforeTargets="CoreClean">
Copy link
Contributor

@beru beru Jan 5, 2022

Choose a reason for hiding this comment

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

Name が重複しているので変えた方が上書きされないので良いと思います。

このファイル sakura/githash.targets ですが複数のプロジェクトからImportされています。

  • sakura/sakura.vcxproj
  • sakura_lang_en_US/sakura_lang_en_US.vcxproj

このうちsakuraプロジェクト用の sakura/sakura.vcxproj では <Import Project="..\sakura\githash.targets" /> の記述の後方に下記の記述が存在します。

  <Target Name="AppendCleanTargets" BeforeTargets="CoreClean">
    <!-- Add files to @Clean just before running CoreClean. -->
    <ItemGroup>
      <Clean Include="$(OutDir)sakura.ini" />
      <Clean Include="$(OutDir)bregonig.dll" />
      <Clean Include="$(OutDir)ctags.exe" />
    </ItemGroup>
  </Target>

これで上書きされるので、sakuraプロジェクトをCleanしても sakura/githash.h ファイルが削除されません。ただし sakura_lang_en_USプロジェクト側でカバーされるので、Clean SolutionやRebuild Solution時には問題は起きません。という事で半ば動きはするので実質的に問題は無いとは言えます。


https://github.com/berryzplus/sakura/blob/e4ee7c208897de37c4d09776fa3e76e00c18336e/sakura/sakura.vcxproj#L944

https://github.com/berryzplus/sakura/blob/e4ee7c208897de37c4d09776fa3e76e00c18336e/sakura/sakura.vcxproj#L957-L964

Copy link
Contributor Author

Choose a reason for hiding this comment

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

動いてそうですが、それでも問題ありますか?

Copy link

Choose a reason for hiding this comment

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

プロジェクトごとにビルド/クリーンしているような場合は大丈夫なんでしょうか?

Copy link
Contributor

Choose a reason for hiding this comment

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

SolutionではなくsakuraプロジェクトをCleanした際に sakura/githash.h ファイルが削除されない事は簡単に確認出来ます。

色々な条件で確認せずになんとなく動いてそうと判断して不完全さが残るお約束というか様式美を体現する芸風に感じ入るところはあるのでApproveしておきます。

@berryzplus
Copy link
Contributor Author

PRを撤回します。

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

Successfully merging this pull request may close these issues.

3 participants