cygport は bash で書かれたスクリプトであり、いざ読んでみると中にはいろいろと変数や関数があるため、気になった点について、ざっと書いてみる。ちなみに以下の話で「現時点」と言っているのは cygport-0.3.8 を意味している。
fetch
prep
(variable) CYGPORT_USE_UNSTABLE_API
(function) src_unpack_hook
- この関数を定義しておくと、ソースを展開した後に呼ばれる。
- 上述のとおり、現時点では別途 CYGPORT_USE_UNSTABLE_API という変数を定義しておかないと使えない。
(function) __check_unstable
- CYGPORT_USE_UNSTABLE_API が定義されている場合にのみ、引数で渡された関数を呼ぶ。
- 使用例は以下のとおり。
check_unstable src_unpack_hook
compile
(variable) CYGCONF_ARGS
- 言わずと知れた、configure に渡す引数をセットしておく変数。
- 現時点では cygconf で直接渡された引数の後方に追加されることを覚えておくと、何かの役に立つかもしれない。
(variable) MAKEOPTS
- make に渡す引数をセットしておく変数。
- デフォルトでは並列ビルドさせるために -j2 がセットされているが、Makefile がきちんと書かれていないと依存性の解釈を失敗して、こける可能性もある。そういう場合には -j1 をセットしておくと良い。
- ただし、現時点でこの変数は cygmake に渡された引数よりも前方に追加される。これは cygmake -j2 と書かれたら、この変数に -j1 をセットしていても無視されてしまうことを意味している。
(function) cygcmake
- cmake を使いたい場合には src_compile からこの関数を呼べばいいはず。
- cmake は使ったことないため、それ以上はわかりません。
(function) src_test
- デフォルトでは make check とか make test があれば実行するが、他の標準関数の何処からも呼ばれないため、呼びたい場合は自分で src_compile などの再定義が必要となる。
install
*.la
- relink_command の行を sed で削除する。
(variable) USE_DESTDIR
- この変数を 0 にセットしておくと、一般的な make 変数 DESTDIR を使わず、できるだけ詳細にインストールディレクトリを設定する。
cyginstall() { case ${USE_DESTDIR:-1} in 1|[Yy]|[Yy][Ee][Ss]) make ${MAKEOPTS} install DESTDIR=${D} "${@}" || error "make install DESTDIR failed" ;; 0|[Nn]|[Nn][Oo]) make ${MAKEOPTS} install \ prefix=${D}/usr \ exec_prefix=${D}/usr \ bindir=${D}/usr/bin/ \ includedir=${D}/usr/include \ libdir=${D}/usr/lib \ sbindir=${D}/usr/sbin \ libexecdir=${D}/usr/sbin \ datadir=${D}/usr/share \ infodir=${D}/usr/share/info \ mandir=${D}/usr/share/man \ localstatedir=${D}/var \ sysconfdir=${D}/etc \ "${@}" \ || error "make install No-DESTDIR failed" ;; *) error "USE_DESTDIR should be set to either 0 or 1 (default)."; ;; esac }
(variable) DOCS
(variable) HTMLDOCS
- /usr/share/doc/${P}/html 配下にインストールしたい HTML ファイルをセットしておく変数。
README
インストールスクリプト
ファイル名 | インストール先 |
---|---|
postinstall.sh | /etc/postinstall/${PN}.sh |
preremove.sh | /etc/preremoce/${PN}.sh |
profile.d.sh | /etc/profile.d/${PN}.sh |
profile.d.csh | /etc/profile.d/${PN}.csh |
man
- gzip で圧縮される。
(function) __prep_empty_dirs
- ${D} 配下の空のディレクトリを削除する関数
(function) keepdir
- 関数 __prep_empty_dirs で削除されたくないディレクトリにダミーのファイルを touch しておく関数。
- 必要な場合には src_install で呼んでおけばいい。
*.exe
- strip される。
(variable) _CYGPORT_RESTRICT_strip_
- exe ファイルを strip されたくない場合にセットしておく変数で、デバッグ可能なファイルを作成する時などに使用する。
info
(variable) HOMEPAGE, DESCRIPTION
- info サブコマンドで表示されるパッケージの情報をセットしておく。
pkg
(function) __pkg_pkgcheck
- 各パッケージ内のもれとかかぶりとかをチェックしてくれる関数。
(variable) _CYGPORT_RESTRICT_diff_
- この変数をセットしておくと、パッチファイルを作成しない。
(variable) DIFF_EXCLUDES
- この変数にはパッチに含みたくないファイル (のリスト) をセットしておくと、-x オプションでそれぞれ diff に渡される。
- -x つきのリストでも解釈される。
その他
(variable) SIG
- gpg も使う場合にセットしておく。使ったことがないため、それ以上はわかりません。
(variable) CYGPORT_DEPEND
- 必要な cygport のヴァージョンを指定しておくと、そのヴァージョン以下でパッケージを作成しようとした場合にエラーになる。
(variable) RESTRICT
- _CYGPORT_RESTRICT_{strip,diff}_ を設定したい場合にはこの変数に strip および diff を設定しておけばいい。
RESTRICT="strip"
他のフックがあればいいかも
- exe を upx するための install フックとか。