一言で言うと、ここに名前が載るようになりました。
Cygport 入門みたいな記事を書いてるのに、野良でパッケージを作成するだけなのもそろそろもったいないなと思ったため、公式のメンテナをやってみることにしました。
以下、メンテナになるまでの手順をまとめます。なりたい人がいるかはわかりませんが、やってみたい場合は参考にしてみてください。
また、コントリビューションの公式ドキュメントもあるため、そちらも参考にしてください。
パッケージ作成
まずはパッケージを作成します。今回は libjwt のパッケージを作成しました。
作成方法については Cygport 入門の記事を参考にしてください。
レビュー
実際にはどのようにレビューされているかはわからないのですが、適当な場所に公開します。
自分の場合は他にも Cygwin に関係するファイルで公開したいものがあったため OSDN にプロジェクトをつくって、そこに置くことにしました。
レビューに必要なファイルは最低限 dist
配下のものですが、自分はパッケージの作成のログ log
もついでに公開しておきました。
単に make test
が pass しているかどうかを書けば良かったのかもしれませんが、もしかしたら他のログも見たいかもしれないと思って、一応含むことにしました。
準備ができたら、cygwin-app ML にレビュー依頼を投げます。*1
個人的にはここらへんのコミュニケーションは GitHub issue / pr のような web でやりたい感はあります。
今回は以下のようなメールを投げました。
しばらくすると、レビュワーから Good To Go をもらえて、次に必要な作業のリンクももらえました。優しさ。
また、このタイミングでメンテナリストにパッケージ名と自分の名前が追加されました。
SSH 鍵の登録
いよいよアップロードするのですが、その前に SSH 鍵を登録しないといけないです。
これは公式ドキュメントのとおりにすれば良いです。
これも投げて、しばらくすると、登録したよという旨のメールが返ってきます。
アップロード
アップロード権をもらえたら、SSH の設定をすることで up
コマンドで簡単にできます。*2
$ 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
でインストールができるようになります。→ されました
パッケージ一覧にも追加されています。
アナウンス
インストールできるようになったら、アナウンスをします。
実は announce
コマンドで cygwin-announce ML に自動で定型文を投げられる機能があるのですが、SMTP 接続情報を平文でファイルに書きたくなかったため、今回は手で書きました。
こちらも承認されてから、送信されました。
Git 管理と CI
本来はパッケージをアップロードする前に CI を通しておきたい感があるのですが、公式でも最近 AppVeyor を使った CI が提供されるようになりました。
SSH 鍵の登録がされたら、こちらもドキュメントのとおりにすることでリポジトリを作成することができます。
push するとリポジトリが作成されます。
また、それをトリガーにして CI が動きます。
まとめ
きちんと公式にフィードバックして、他の人が車輪の再開発をしなくても済むようにしてあげるのは気持ちがいいですね。