.cygport を作成する時にできるだけバージョンアップ時に書き換えが少なくなるように書いておきたい。
cygport ではユーザ定義のサブコマンドを実行できるようになっている。*1
while (( arg_n < argc )) do case ${argv[${arg_n}]} in download|fetch|wget|get) __src_fetch; _status=$?; ;; # snip version) __show_version; exit 0; ;; _*) error "unknown command ${argv[${arg_n}]}"; exit 1; ;; *) if __check_function ${argv[${arg_n}]} && ! __check_function_ro ${argv[${arg_n}]} then ${argv[${arg_n}]}; else error "unknown command ${argv[${arg_n}]}"; fi _status=$?; ;; esac if (( _status != 0 )) then break; fi arg_n+=1; done
というわけで declare を実行する関数を定義したシェルスクリプト内から cygport を呼べば、declare で cygport で利用可能なシェル変数をダンプすることができる。
#!/bin/bash DUMMY=tmp-1.2.3-$$.cygport echo "SRC_URI='dummy'" > ${DUMMY} cygport_show_declare() { declare } source /usr/bin/cygport ${DUMMY} cygport_show_declare rm ${DUMMY}
よく使われるシェル変数を以下に示す。(パッケージ名などは上記のスクリプトを実行した場合のダミーである。)
B | ビルドディレクトリ | ${PWD}/${PF}/build |
C | cygwin パッチディレクトリ | ${S}/CYGWIN-PATCHES |
D | 疑似ルートディレクトリ (インストールに使用) | ${PWD}/${PF}/inst |
P | ソースヴァージョン | tmp-1.2.3 |
PF | パッケージフルネーム | tmp-1.2.3-3544 |
PN | ソース名 | tmp |
PV | パッケージヴァージョン | ([0]="1.2.3" [1]="1" [2]="2" [3]="3") |
PVP | パッケージヴァージョン | ([0]="1" [1]="2" [2]="3") |
PVR | パッケージヴァージョン | 1.2.3-3544 |
PV_MAJ | パッケージヴァージョン (メジャー番号のみ) | 1 |
PV_MAJ_MIN | パッケージヴァージョン (マイナー番号まで) | 1.2 |
S | ソース展開ディレクトリ | ${PWD}/${PF}/src/tmp-1.2.3 |
distdir | パッケージツリーディレクトリ *2 | ${PWD}/${PF}/dist |
pkg_name | パッケージ名 | ([0]="tmp") |