いけむランド

はてダからやってきました

cygwin setup によるインストールができなくなってた状態についてまとめてみた

2023/04/07 に半日くらい cygwin setup によるインストールができない状態になってました。ここでは勝手にまとめてみることにします。

Cygwin ML に setup ができない旨が投稿されました。

www.mail-archive.com

同じ頃に twitter でも同じ旨のツイートが見られました。

メールによると setup.zst *1 に変な \ が入っていて、parse できなくなっていたようです。

build-depends: \, bison, cygport, dblatex, docbook2X, flex,
gettext-devel, libGLU-devel, libcairo-devel, libcanberra-gtk-devel,
libcurl-devel, libfreetype-devel, libglib2.0-devel, libgmp-devel,
libgtk2.0-devel, libgtkglext1.0-devel, libpango1.0-devel,
libpng-devel, libreadline-devel, libsqlite3-devel, libxslt,
python3-devel, texinfo

たまたま前日に自分が deploy をして、その時はきちんと ini が生成されてたため、それ以降の他のパッケージの deploy でおかしくなったんだろうと思い、jobs サーバで履歴を見ると、gnubg が更新されていて、その中に怪しい diff を見つけました。

cygwin.com

+BUILD_REQUIRES="bison flex docbook2X dblatex libxslt texinfo \
+gettext-devel libcanberra-gtk-devel libcairo-devel libcurl-devel \
+libfreetype-devel libglib2.0-devel libGLU-devel libgmp-devel libgtk2.0-devel \
+libgtkglext1.0-devel \ libpango1.0-devel libpng-devel libreadline-devel \
+libsqlite3-devel python3-devel"

どうやら calm *2 が行末でない位置に混入している \ を パッケージ名だと勘違いして、そのまま setup.ini に吐き出してしまったことが原因のようです。

メンテナの方が何処に住んでいるか知らないですが、日本が真っ昼間だと海外だったら普通に寝ている可能性があるため、対応は早くて夕方かなとか思いながら、とりあえず gnubg が壊れてそうだよというメールを cygwin-app ML *3 に投げておきました。

www.mail-archive.com

すると、すぐに反応があって、対応してもらえました。(自分のメールで気づいたか、もともと作業中だったかは不明。)

cygwin.com

修正はすぐに mirror にも反映されて、無事 setup が動くようになりました。めでたしめでたし。

ただし、これを検出する対応は何かしら必要な気がします。 cygport 側で ini をつくる時に BUILD_REQUIRES に明らかに不正な文字が入っているかをチェックするとかでしょうか?

github.com

*1:パッケージの全情報をまとめた ini ファイルを zstd で圧縮したもの

*2:deploy の度に全ディレクトリを parse して setup.ini を生成する python スクリプト

*3:メンテナ向けの ML