-
Notifications
You must be signed in to change notification settings - Fork 167
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
MinGWビルドで使用するビルドツールを更新する #1771
MinGWビルドで使用するビルドツールを更新する #1771
Conversation
cppCheckのx64がコケてますね。 cppCheckをx86/x64の両方実施する必要があるのかどうか、良く分からないっす。 このPRに関してのコメントですが、 いままでと同じように実施してできないなら対処は必要と思います。 MinGWビルドをGitHub Actionsに引っ越しするのもアリかな・・・と思っています。 |
MSYS2にインストールされているパッケージまでは actions/virtual-environments の README に書いてないので気が付きませんでしたが、改めて 2016では 本文修正しておきます。 |
2016ではあらかじめ更新されていたが、2022では自分で更新しなければならなくなった、ということです。 |
Windows Server 2016では動いてしまう原因は、Msys2の構成の違いに加えてこれをやっているからです。 Lines 27 to 30 in 68c4dc8
27行目:ゴミ MinGWでも32bit版をビルドしないと気が済まない人からの苦情はなかったように思います・・・。 |
@@ -29,7 +29,8 @@ jobs: | |||
- script: set | |||
displayName: Show environmental variables for debug | |||
|
|||
- template: /ci/azure-pipelines/template.steps.install-mingw-w64-gcc.yml | |||
- script: C:\msys64\usr\bin\bash --login -c "pacman -S --noconfirm mingw-w64-x86_64-toolchain" | |||
displayName: Install MinGW-w64 build tools via Pacman |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
指摘です。
実効スクリプトが1行しかないので、無駄なテンプレート化はやめてシンプルにしませんか?
という提案を含んでいると読み取りました。
template.steps.install-mingw-w64-gcc.ymlは現在は「空」ですが、
過去に複数ステップのインストール処理を実装していたことがあり、
今後も増減があると思っています。
(過去は、たとえばgoogletestを入れたりしてました。)
「追加のインストールプロセスが必要になったのでステップを追加します」にこのテンプレートの削除の提案を混ぜるのは適切でないと思いました。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PRを分割しろってことかな。
僕にはここでテンプレートを使う理由が分かりませんでした。
たとえインストールするパッケージが複数あったとしても、MinGWビルドでしか使わないのだから、他のジョブから再利用できるようにする必要はないと感じます。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
MinGWビルドの不要タスク利用の廃止と抱き合わせたうえでリファクタリング案件として別PRを起こします。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
セットアップタスクの追加はOKです。
タスクテンプレート化の解除も、多少議論の余地あるもののOKだと思います。
問題は、2点目について言及されてないことなのかな?と思います。
いまはmingwのセットアップタスクはこんだけあります、の中身が空の状態で、
このPRのやりたいことは「タスクを増やす」なはずです。
じゃ、なんで構成まで変わっとんねん!ということです。
(無駄だと思うからです→うんそうだね、と言えてしまうとこが微妙なんですが)
同列で語っていいのかは知りませんが、こんなのもあります。 sakura/tests/googletest.build.cmd Lines 86 to 89 in 68c4dc8
提案なんですが、パスの設定をtemplate.step.install-mingw-w64-gcc.ymlに書きませんか? |
これは端折ってあるだけだったはず。 |
レビューありがとうございました。いったんマージしてしまいます。 |
PR の目的
MinGWビルドで使用しているMinGW-w64-gccを更新します。
カテゴリ
PR の背景
( #1752 による対応の第2弾です。)
MinGWビルドを行うジョブはWindows Server 2016の仮想環境で実行されていますが、当該環境は3月中に利用できなくなるため、Windows Server 2022環境へ移行する予定です。
しかし、仮想環境に既定でインストールされているMinGW-w64が古く、Windows Server 2022環境でのビルド時に標準ライブラリ関係のコンパイルエラーが生じます。
例:
PR のメリット
Windows Server 2022 環境でもMinGWビルドができるようになります。
PR のデメリット (トレードオフとかあれば)
仕様・動作説明
これはGCC9以降で修正された既存の不具合によるもの(資料参照)ですが、MinGW-w64の開発チームがSourceForgeにバージョン9以降のインストーラを公開していないこともあるのか、仮想環境には修正前のバージョンがインストールされています。
【2022-01-17T12:52 追記】
幸い、Windows Server 2016 環境ではMSYS2経由で修正後のバージョンが別にインストールされていたため、この問題を回避できていました。しかし、Windows Server 2022 環境では最低限のパッケージしか含まれないらしく、修正後のバージョンはインストールされていません。
このためにビルド時に修正前のバージョンの方が呼び出されることとなり、上記の問題が生じました。
【追記ここまで】
バグチケットの会話でも推奨されている通り、MSYS2経由で最新のツールセット一式を明示的にインストールするようにします。
現在の最新バージョンは11.2です。
Group: mingw-w64-x86_64-toolchain - MSYS2 Packages
Package: mingw-w64-x86_64-gcc - MSYS2 Packages
なお、このPRにより使用するGCCのバージョンが一気に上がりますのでご注意ください。変更前:x86_64-w64-mingw32-gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0
変更後(現時点):x86_64-w64-mingw32-gcc (Rev5, Built by MSYS2 project) 11.2.0
PR の影響範囲
Azure Pipelinesの次のジョブ
テスト内容
MinGWビルドで
関連 issue, PR
参考資料
エラーに関するもの
仮想環境の構成に関するもの(いずれも
Mingw-w64
は8.1.0
となっている)