いけむランド

はてダからやってきました

cygport で使用可能なシェル変数を確認する方法

.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")

*1:実際は内部定義のサブコマンドが増えても、ディスパッチ部は修正しなくてもいいようにしているだけではないかと思う。

*2:この配下のディレクトリをそのまま release 配下にコピーすれば、setup.exe で配布できる。