pkgbuild はパッケージに含まれるファイルを調べて、
依存するものを見つけてくれるが問題がある。
パッケージに含まれるファイルに '#!/usr/bin/env perl' などとあると、
perl を含むパッケージを
dependency discovered: depend fmri=pkg://solaris/runtime/[email protected],5.11-0.175.3.0.0.30.0 fmri=pkg://solaris/runtime/[email protected],5.11-0.175.3.0.0.30.0 type=require-any
のように見つけて 依存関係を追加する。
この時生成される'~/packages/PKGMAPS/manifests/${IPS_PACKAGE_NAME}.manifest' で、
上記の依存関係部分の書き方がおかしく、publish に失敗する(1.3.105固有の問題?)。
ふと、RPM は依存関係を調べることをやめさせられるし、
pkgbuild でもできるんじゃないかと思って grep かけてたら以下が見つかった。
$ ag %_use_internal_dependency_generator /usr/lib/pkgbuild-1.3.105
/usr/lib/pkgbuild-1.3.105/macros
125:%_use_internal_dependency_generator 1
/usr/lib/pkgbuild-1.3.105/pkgbuild.pl
2057: if ($package->eval ('%_use_internal_dependency_generator') eq "1") {
とりあえず、'%_use_internal_dependency_generator' を '1' 以外にすればよさそう。
もう少し grep していたら
$ ag _read_macros /usr/lib/pkgbuild-1.3.105
/usr/lib/pkgbuild-1.3.105/rpm_spec.pm
132: _read_macros ('/usr/lib/pkgbuild-1.3.105/macros');
134: _read_macros ("${_homedir}/.pkgbuildmacros");
215: # fill with values read from the macros file in _read_macros()
251:sub _read_macros ($) {
というのが見つかったので、"${_homedir}/.pkgbuildmacros" に書けばよさそう。
man pkgbuild を見ると
~/.pkgbuildmacros
user defined macros. The format of this file is on definition
per line in the following format:
%macro_name value
とあったので間違いなさそう。
~/.pkgbuildmacros に
%_use_internal_dependency_generator 0
と書いてビルドしたところ、internal_dependency_generator が動作せず、
問題なくビルドが終了した。
ちなみに、依存関係の生成は以下のように ips-dependency-generator というコマンドを使っている。
my @autodeps = `/usr/lib/pkgbuild-1.3.105/ips-dependency-generator -R '$buildroot' -f $tmpfile`;