Vine Linux ドキュメント / RPM パッケージの作成方法 / %setupマクロの詳細
hoge-1.1.tar.gzを展開したときに、hoge-1.1/というディレクトリができるなら、 オプションをつけなくても以上の作業が行われますが、例えば、 hoge/というディレクトリができるなら、このディレクトリの下にcdできるように、
%setup -n hoge
または、
%setup -n ${RPM_PACKAGE_NAME}
と指定します。
複数のソースがあるときには以下に述べるオプション -a や -b を使います。 例えば Source、Source1、Source2 の 3 つがあるときには、
%setup -a 1 -a 2 -n hoge
などとします。(以下のオプションの指定参照。)
この%setupにはさまざまなオプションがありますが、 代表的なものを以下に示します。
%setup -T -a 2
%setup -T -c hoge
次のように tar.gz ではないファイルが Source0 となる場合があります。
Source0: hoge-%{version}.lzh
tar.gz ではないので、%setup では展開できません。
このような場合には、まず %setup の -Tオプション を利用して作業ディレクトリに移動します。 %setup のあとには、bash スクリプトを書いて作業を行うことができるので、 通常のコマンドで Source0 のファイルを展開します。
%setup -T hoge-%{version} lha x %{SOURCE0}
次のように tar.gz などでは無いファイルが Source2 としてあるということがあります。
Source0: hoge-%{version}.tar.gz Source1: hoge-additional-%{version}.tar.gz Source2: how-to-use-hoge.txt
こういった場合には、Source0 と Source1 を %setup で展開したあとで、installコマンドなどで、Source2 に対応するマクロ %{SOURCE2} を処理します。
%setup で展開するのと同じ処理をしたければ、
%setup -q -a 1 %{__install} -m 644 %{SOURCE2} .
のようにします。
%setup で Source0 を展開してできたディレクトリ BUILD/hoge-%version/ に移動しているので、installコマンド で . (カレントディレクトリ1) を指定すると . は BUILD/hoge-%version/ となっているので、BUILD/hoge-%version/に Source2 が install されます。
他のファイルと同じように BUILD/hoge-%version/ にあるので %doc として指定するのもそのままできます。
%files %doc how-to-use-hoge.txt
%{SOURCE2} といったマクロは %doc のところでは使えないので、%doc %{SOURCE2} とすることはできません。
lha や unzip など、特別なコマンドが必要になる場合は、 BuildRequires(prep): で指定します。