%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にはさまざまなオプションがありますが、 代表的なものを以下に示します。
- -n <ディレクトリ名>
%setupを実行した後(もしくは前)にcdするディレクトリ名(name)を指定する。 このオプションを省略したときの、デフォルトのディレクトリ名は、 ${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}。
- -c
指定ディレクトリ(上の-nオプションで指定したディレクトリ) を作成し(create)、そこにcdした後にソースの展開をします。
- -a <#>
Source0を展開した後、 指定ディレクトリ(上と同じ)にcdした(after)、 #番目のソース(Source#)の展開をします。 %setup -a 2 -a 3 と複数-aオプションが指定された時には、 Source0 が展開された後、指定ディレクトリに cd し、 Source2、Source3を展開します。 (Source0の展開は最初の一回だけです。)
- -b <#>
Source0を展開した後、 指定ディレクトリ(上と同じ)にcdする前に(before)、 #番目に指定されてるソース(Source#)の展開をします。
- -D
先に述べたように、%setupは、まず、指定ディレクトリ(上と同じ)が、 ディレクトリBUILDの下にあるかどうかをチェックして、もし存在していたら、 それを削除してから、ソースの展開などの作業を行います。 %setupを複数回呼びたい場合、 2回目に%setupを呼んだ時に最初の%setupで展開したディレクトリを削除されては困ります。 この-Dオプションは、このような削除を行わないようにします。(あまり使いません)
- -T
ソースの展開を行いません。先に述べたように、 オプション指定を -a 2 や -b 2 とすると、 Source0とSource2で指定したものが展開されます。 Source2だけを展開したいときには、このオプションを使って、
とします。また、%setup -T -a 2
とすると、パッケージの展開は行わず、ディレクトリhogeを作って、 そこにcdします。%setup -T -c hoge
- -q
ソースの展開のとき、展開中の情報を表示しません。 たとえば tar での展開の時に、-q 無しだと tar xvvf、-q 有りだと tar xf のように変わります。
次のように tar.gz ではないファイルが Source0 となる場合があります。
Source0: hoge-%{version}.lzh
このような場合には、まず %setup の -Tオプション を利用して作業ディレクトリに移動します。 %setup のあとには、bash script を書いて作業を行うことができるので、 通常のコマンドで 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): で指定します。