トップ «前の日記(2025/02/16 (日) ) 最新 次の日記(2025/02/18 (火) )» 編集 RSS feed

HsbtDiary


2025/02/17 (月) [長年日記]

Ruby 3.4.2 の snap パッケージをリリースして all-ruby にも追加した

土曜にリリースされた 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 で毎回作るわけでもないしこんな感じで。

Windows の gmp ビルドを直した

昨年に 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 にもバックポートしたほうがいいと思う。

Windows で VS 2022 17.13.0 を使うと Ruby がビルドできない

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' で落ちるのかまでは深追いしてないので、この辺で調べるのはやめにした。ヘロヘロ。