pkgsrc-wipにbasepkgを突っ込んだ

basepkgというのは僕が開発している ソフトウェアで,停滞しているsyspkgの代わりにNetBSDのbase systemを packagingしちゃおうよという代物です. 最終的にsyspkgに代わってbuild.shへ取り込まれるのが理想なんですが, まずはpkgsrcに取り込んで他の方々の反応を伺うところからスタートだなという話です. それでもpkgsrcに取り込まれるにはどうしたらいいのかさっぱり分からなかったので, pkgsrc-wip(Wrok in Progress)にパッケージをcommitしてみようと思いました.

まずはpkgsrc-wipのボスに連絡をとる

pkgsrc-wipのページにあるとおり,まずは Thomas Klausnerさんに連絡して公開鍵を渡し,pkgsrc-wipリポジトリへアクセスする ユーザを作ってもらいます.

僕「僕が開発しているこのソフトウェアを最終的にpkgsrcへ取り込みたいのでpkgsrc-wipで作業させてもらえませんか?」
Klausner「いいね!いいよ!」

大体こんな感じのやりとりでアカウントを作ってもらい第一段階完了となりました.

GitHub側でReleaseする

basepkgをreleaseするのを忘れていたので適当なバージョン番号をつけてrelease しました.

パッケージを作る

作業するには The pkgsrc-wip project -- committer access のとおりにwipを/usr/pkgsrc/以下へ引っ張ってくればよいので楽です. パッケージの基本的な作り方は The pkgsrc GuideのChapter 10. を読めばほとんど分かるので楽です.文書が充実しているのでなにもかもが楽. ただし,basepkgの中身はシェルスクリプトです.configureもbuildもせず ただコピーすればいいだけなので,Makefile内に

NO_CONFIGURE= yes
NO_BUILD= yes

と書いておく必要があります.pkgsrcは#!/usr/bin/env shというshebangを 許さないらしく,Makefile内に

REPLACE_SH+= basepkg.sh

と書いておけばいいよと教えてもらったのですがDebugに失敗したので 現在はshebangを修正するpatchを当てるようにしています.

commitする

The pkgsrc GuideにあるDebugを終えたら,commitしてpushします. The pkgsrc-wip project -- committer accessに 全てが書いてあるのでその通りにしました.一次ソースを尊重する姿勢でいきたい.

そして……

pushするとメーリングリストに情報が流れるらしいです. basepkg: Import basepkg-0.991 as wip/basepkg. とにかく,basepkgはpkgsrc-wipへ取り込まれました.

今後

目指せpkgsrcだけどどうすればいいんだろうとか, そもそもbasepkg自体の完成度はどうなんだとかそういう課題があります. basepkgはドッグフーディングしながら開発を進めているので まだまだDebug中といった進捗具合です.