土曜にリリースされた Ruby 3.4.2 の snap パッケージを作ったり all-ruby の docker image に 3.4.2 を追加したりしていた。
snap は armhf パッケージが Actions の Arm runner だと作ることができないのでしょうがなく qemu のビルドを再度有効にしておいた。
https://github.com/ruby/snap.ruby/commit/2972f92349fb099c3f971464878a18261b43125c
1h くらいかかるけどしょうがない。master で毎回作るわけでもないしこんな感じで。
昨年に vcpkg の gmp パッケージが壊れてビルドできなくなって除外したのだけど、そろそろ直ったかなと戻したところ gmp は無事ビルドできたのに bignum.c が gmp.h が見つからないとエラーになってビルドできなかったのを直した。
https://github.com/ruby/ruby/pull/12763
usa さんと nobu 総動員で調べていたんだけど、usa さんの環境と想定では gmp を vcpkg で入れてから INCLUDE や LIB で vcpkg/installed
配下をパス指定、そして --with-gmp
オプションをつけることで gmp を有効にしつつ必要なファイルを見つけてビルドをする、ということだったのだけど、nobu が --with-opt-dir
でも gmp を検索するようにしたものの、include のパスをフラグとして渡してないので死んだ、という摩訶不思議なことが問題だった。
あと --with-gmp(-dir)
をつけないと GMP が有効かどうかのテストも走らないということがわかったので、Windows ではちゃんと見るようにしておいた。この辺、もうちょい整頓してもいい気はするけどこんなところで。これ、3.2-3.4 にもバックポートしたほうがいいと思う。
gmp のビルドを調べている最中に、手元の環境だと miniruby が以下のようなエラーを出してビルドが止まるようになってしまい、なんだよこれ〜とひたすら調べていた。
user32.lib advapi32.lib shell32.lib ws2_32.lib iphlpapi.lib gmp.lib imagehlp.lib shlwapi.lib bcrypt.lib
linking miniruby.exe
Creating library miniruby.lib and object miniruby.exp
NMAKE : fatal error U1077: '@ miniruby.exe -v' : return code '0xc0000005'
Stop.
最初はパーミッションか何かか、gmp の調査でガチャガチャいじったのが原因かな、と思って調べていたけど、GitHub Actions で用意している Windows では動くし、手元でも vs2019 や vs2017 だとビルドできるので、これはもしかしてバージョンか?と vs2022 の最新バージョンである 17.13.0 から一つ前の 17.12.5 にロールバックしたらなんとビルドできてしまった。
OSS でもない vs2022 のこういう現象はどこに報告すればいいんだろうなあ。そもそも何で return code '0xc0000005'
で落ちるのかまでは深追いしてないので、この辺で調べるのはやめにした。ヘロヘロ。