Changes between Initial Version and Version 1 of docs/making-rpm/setup-macro


Ignore:
Timestamp:
2013/02/02 07:28:49 (11 years ago)
Author:
yasumichi
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • docs/making-rpm/setup-macro

    v1 v1  
     1[wiki:docs Vine Linux ドキュメント] / [wiki:../ RPM パッケージの作成方法] / %setupマクロの詳細 
     2 
     3= %setupマクロの詳細 = 
     4 
     5hoge-1.1.tar.gzを展開したときに、hoge-1.1/というディレクトリができるなら、 オプションをつけなくても以上の作業が行われますが、例えば、 hoge/というディレクトリができるなら、このディレクトリの下にcdできるように、 
     6{{{ 
     7#!sh 
     8%setup -n hoge 
     9}}} 
     10または、 
     11{{{ 
     12#!sh 
     13%setup -n ${RPM_PACKAGE_NAME} 
     14}}} 
     15と指定します。 
     16 
     17複数のソースがあるときには以下に述べるオプション -a や -b を使います。 例えば Source、Source1、Source2 の 3 つがあるときには、 
     18{{{ 
     19#!sh 
     20%setup -a 1 -a 2 -n hoge 
     21}}} 
     22などとします。(以下のオプションの指定参照。) 
     23 
     24この%setupにはさまざまなオプションがありますが、 代表的なものを以下に示します。 
     25 
     26 -n <ディレクトリ名>:: 
     27    %setupを実行した後(もしくは前)にcdするディレクトリ名(name)を指定する。 このオプションを省略したときの、デフォルトのディレクトリ名は、 ${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}。  
     28 -c:: 
     29    指定ディレクトリ(上の-nオプションで指定したディレクトリ) を作成し(create)、そこにcdした後にソースの展開をします。  
     30 -a <#>:: 
     31    Source0を展開した後、 指定ディレクトリ(上と同じ)にcdした(after)、 #番目のソース(Source#)の展開をします。 %setup -a 2 -a 3 と複数-aオプションが指定された時には、 Source0 が展開された後、指定ディレクトリに cd し、 Source2、Source3を展開します。 (Source0の展開は最初の一回だけです。)  
     32 -b <#>:: 
     33    Source0を展開した後、 指定ディレクトリ(上と同じ)にcdする前に(before)、 #番目に指定されてるソース(Source#)の展開をします。  
     34 -D:: 
     35    先に述べたように、%setupは、まず、指定ディレクトリ(上と同じ)が、 ディレクトリBUILDの下にあるかどうかをチェックして、もし存在していたら、 それを削除してから、ソースの展開などの作業を行います。 %setupを複数回呼びたい場合、 2回目に%setupを呼んだ時に最初の%setupで展開したディレクトリを削除されては困ります。 この-Dオプションは、このような削除を行わないようにします。(あまり使いません)  
     36 -T:: 
     37    ソースの展開を行いません。先に述べたように、 オプション指定を -a 2 や -b 2 とすると、 Source0とSource2で指定したものが展開されます。 Source2だけを展開したいときには、このオプションを使って、 
     38{{{ 
     39#!sh 
     40%setup -T -a 2 
     41}}} 
     42    とします。また、 
     43{{{ 
     44#!sh 
     45%setup -T -c hoge 
     46}}} 
     47    とすると、パッケージの展開は行わず、ディレクトリhogeを作って、 そこにcdします。 
     48 -q:: 
     49    ソースの展開のとき、展開中の情報を表示しません。 たとえば tar での展開の時に、-q 無しだと tar xvvf、-q 有りだと tar xf のように変わります。  
     50 
     51次のように tar.gz ではないファイルが Source0 となる場合があります。 
     52 
     53{{{ 
     54#!sh 
     55Source0: hoge-%{version}.lzh 
     56}}} 
     57 
     58tar.gz ではないので、%setup では展開できません。 
     59 
     60このような場合には、まず %setup の -Tオプション を利用して作業ディレクトリに移動します。 %setup のあとには、bash スクリプトを書いて作業を行うことができるので、 通常のコマンドで Source0 のファイルを展開します。 
     61 
     62{{{ 
     63#!sh 
     64%setup -T hoge-%{version} 
     65lha x %{SOURCE0} 
     66}}} 
     67 
     68次のように tar.gz などでは無いファイルが Source2 としてあるということがあります。 
     69 
     70{{{ 
     71#!sh 
     72Source0: hoge-%{version}.tar.gz 
     73Source1: hoge-additional-%{version}.tar.gz 
     74Source2: how-to-use-hoge.txt 
     75}}} 
     76 
     77こういった場合には、Source0 と Source1 を %setup で展開したあとで、installコマンドなどで、Source2 に対応するマクロ %{SOURCE2} を処理します。 
     78 
     79%setup で展開するのと同じ処理をしたければ、 
     80{{{ 
     81#!sh 
     82%setup -q -a 1 
     83%{__install} -m 644 %{SOURCE2} . 
     84}}} 
     85 
     86のようにします。 
     87 
     88%setup で Source0 を展開してできたディレクトリ BUILD/hoge-%version/ に移動しているので、installコマンド で . (カレントディレクトリ1) を指定すると . は BUILD/hoge-%version/ となっているので、BUILD/hoge-%version/に Source2 が install されます。 
     89 
     90他のファイルと同じように BUILD/hoge-%version/ にあるので %doc として指定するのもそのままできます。 
     91 
     92{{{ 
     93#!sh 
     94%files 
     95%doc how-to-use-hoge.txt 
     96}}} 
     97 
     98%{SOURCE2} といったマクロは %doc のところでは使えないので、%doc %{SOURCE2} とすることはできません。 
     99 
     100lha や unzip など、特別なコマンドが必要になる場合は、 !BuildRequires(prep): で指定します。