いけむランド

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

Cygwin Package Maintainer になってみた

一言で言うと、ここに名前が載るようになりました。

Cygport 入門みたいな記事を書いてるのに、野良でパッケージを作成するだけなのもそろそろもったいないなと思ったため、公式のメンテナをやってみることにしました。

以下、メンテナになるまでの手順をまとめます。なりたい人がいるかはわかりませんが、やってみたい場合は参考にしてみてください。

また、コントリビューションの公式ドキュメントもあるため、そちらも参考にしてください。

cygwin.com

パッケージ作成

まずはパッケージを作成します。今回は libjwt のパッケージを作成しました。

github.com

作成方法については Cygport 入門の記事を参考にしてください。

fd0.hatenablog.jp

レビュー

実際にはどのようにレビューされているかはわからないのですが、適当な場所に公開します。

自分の場合は他にも Cygwin に関係するファイルで公開したいものがあったため OSDN にプロジェクトをつくって、そこに置くことにしました。

osdn.net

レビューに必要なファイルは最低限 dist 配下のものですが、自分はパッケージの作成のログ log もついでに公開しておきました。

単に make test が pass しているかどうかを書けば良かったのかもしれませんが、もしかしたら他のログも見たいかもしれないと思って、一応含むことにしました。

準備ができたら、cygwin-app ML にレビュー依頼を投げます。*1

個人的にはここらへんのコミュニケーションは GitHub issue / pr のような web でやりたい感はあります。

今回は以下のようなメールを投げました。

www.mail-archive.com

しばらくすると、レビュワーから Good To Go をもらえて、次に必要な作業のリンクももらえました。優しさ。

www.mail-archive.com

また、このタイミングでメンテナリストにパッケージ名と自分の名前が追加されました。

SSH 鍵の登録

いよいよアップロードするのですが、その前に SSH 鍵を登録しないといけないです。

これは公式ドキュメントのとおりにすれば良いです。

cygwin.com

これも投げて、しばらくすると、登録したよという旨のメールが返ってきます。

www.mail-archive.com

アップロード

アップロード権をもらえたら、SSH の設定をすることで up コマンドで簡単にできます。*2

cygwin.com

$ cygport libjwt.cygport up
>>> Running lftp sftp://cygwin:@cygwin.com
cd ok, cwd=/x86_64/release
Transferring file `libjwt-1.12.1-1-src.hint'
Transferring file `libjwt-1.12.1-1-src.tar.xz'
Transferring file `libjwt-1.12.1-1.hint'
Transferring file `libjwt-1.12.1-1.tar.xz'
Transferring file `libjwt-debuginfo/libjwt-debuginfo-1.12.1-1.hint'
Transferring file `libjwt-debuginfo/libjwt-debuginfo-1.12.1-1.tar.xz'
Transferring file `libjwt-devel/libjwt-devel-1.12.1-1.hint'
Transferring file `libjwt-devel/libjwt-devel-1.12.1-1.tar.xz'
Transferring file `libjwt1/libjwt1-1.12.1-1.hint'
Transferring file `libjwt1/libjwt1-1.12.1-1.tar.xz'
Total: 3 directories, 10 files, 0 symlinks
New: 10 files, 0 symlinks
227786 bytes transferred in 10 seconds (21.8 KiB/s)
Upload complete.

ちなみに x86_64 だけでなく x86 (i686) 環境も準備して、同じようにパッケージを作成し、そちらもアップロードしました。

初回はどうも cygport の書き方が良くなかったところがあって、setup.ini の作成でコケてしまい、その旨のエラーメールが届きました。

それを修正して、リトライすると、今度は成功っぽいメールが届きました。

INFO: adding 4 package(s) for arch x86_64
INFO: move from Daisuke Fujimura's upload area to release area:
INFO: x86_64/release/libjwt/libjwt-1.12.1-1-src.hint
INFO: x86_64/release/libjwt/libjwt-1.12.1-1-src.tar.xz
INFO: x86_64/release/libjwt/libjwt-1.12.1-1.hint
INFO: x86_64/release/libjwt/libjwt-1.12.1-1.tar.xz
INFO: x86_64/release/libjwt/libjwt-debuginfo/libjwt-debuginfo-1.12.1-1.hint
INFO: x86_64/release/libjwt/libjwt-debuginfo/libjwt-debuginfo-1.12.1-1.tar.xz
INFO: x86_64/release/libjwt/libjwt-devel/libjwt-devel-1.12.1-1.hint
INFO: x86_64/release/libjwt/libjwt-devel/libjwt-devel-1.12.1-1.tar.xz
INFO: x86_64/release/libjwt/libjwt1/libjwt1-1.12.1-1.hint
INFO: x86_64/release/libjwt/libjwt1/libjwt1-1.12.1-1.tar.xz
SUMMARY: 12 INFO(s)

あとはミラーサーバの同期がされると setup.exe でインストールができるようになります。→ されました

ftp.iij.ad.jp

パッケージ一覧にも追加されています。

cygwin.com

アナウンス

インストールできるようになったら、アナウンスをします。

実は announce コマンドで cygwin-announce ML に自動で定型文を投げられる機能があるのですが、SMTP 接続情報を平文でファイルに書きたくなかったため、今回は手で書きました。

こちらも承認されてから、送信されました。

www.mail-archive.com

Git 管理と CI

本来はパッケージをアップロードする前に CI を通しておきたい感があるのですが、公式でも最近 AppVeyor を使った CI が提供されるようになりました。

SSH 鍵の登録がされたら、こちらもドキュメントのとおりにすることでリポジトリを作成することができます。

cygwin.com

push するとリポジトリが作成されます。

cygwin.com

また、それをトリガーにして CI が動きます。

cygwin.com

ci.appveyor.com

まとめ

きちんと公式にフィードバックして、他の人が車輪の再開発をしなくても済むようにしてあげるのは気持ちがいいですね。

*1:事前に subscribe しておく必要があります。

*2:個人がビルドしたパッケージを ftp でアップロードしたものが公式になるのはちょっと怖いなと思いつつ