cygportを使ってみる
cygwinのパッケージを作るのにcygport(cygwin ports)というのが
使われているらしいのだけど今まで使い方がわからなかった。
cygportそのものの公式サイトは見つからなかった。
ドキュメント類は皆無なのにわりかし使われているような感じなので
どこから情報を得ているのかと思ったが、
cygport自身がシェルスクリプトで書いてあるので読めという
ことらしい。
$ file /usr/bin/cygport /usr/bin/cygport: Bourne-Again shell script text executable
読めばわかる。
たぶん
minttyをcygportでビルドしてみる。
cygportをsetup.exeでインストール
http://mintty.googlecode.com/svn/branches/0.4/cygport/mintty-0.4.0-1.cygport
をゲットしてきて
/usr/srcに配置
$ cd /usr/src
$ cygport mintty-0.4.0-1.cygport almostall
ソースが無いと文句言われる。
almostallはdownloadしないらしい。
$ cygport mintty-0.4.0-1.cygport download
ソース取得
$ cygport mintty-0.4.0-1.cygport almostall
途中ファイアウォールに許可するか聞かれたのでYesといっておいた。
almostall
で
$ cygport mintty-0.4.0-1 prep compile install package
を実行するのと同じ
こんな感じに
$ ls mintty-0.4.0-* mintty-0.4.0-1-src.tar.bz2 # ソースパッケージ mintty-0.4.0-1.tar.bz2 # バイナリパッケージ mintty-0.4.0-1.cygport* mintty-0.4.0-src.tar.bz2 # downloadしたソース mintty-0.4.0-1: CYGWIN-PATCHES@ config/ inst/ origsrc/ spkg/ temp/ build/ dist/ log/ patch/ src/
buildの中にバイナリmintty.exeが出来上がっていた。
そういえばCJK widthオプションが無くなっているがはて?
追記
allを実行すると作業ディレクトリ(mintty-0.4.0-1)が削除される
installでは実際の/usr/binなどにインストールするのではなく
mintty-0.4.0-1/instをrootとする階層に展開していた。
これをpackageでtarに固めていると思う。
prepでrsyncのエラーが出る場合
rsync: Failed to dup/close: Socket operation on non-socket (108) rsync error: error in IPC code (code 14) at /home/lapo/packaging/rsync-3.0.5-1/src/rsync-3.0.5/pipe.c(147) [receiver=3.0.5] rsync: writefd_unbuffered failed to write 4 bytes [sender]: Connection reset by peer (104) rsync error: error in IPC code (code 14) at /home/lapo/packaging/rsync-3.0.5-1/src/rsync-3.0.5/io.c(1509) [sender=3.0.5]
とか。
たぶん、アンチウイルスとかファイアウォールの類がwinsockに干渉している。
動けばいいという場合はとりあえずcygportの918行あたりを以下のように改造。
#rsync -aq --delete-before ${origsrcdir}/ ${srcdir}/; (cd ${origsrcdir}; tar cf - .)|(cd ${srcdir}; tar xf -) rm -rf ${origsrcdir}