| | 1 | [wiki:docs Vine Linux ドキュメント] / [wiki:../ RPM パッケージの作成方法] / %setupマクロの詳細 |
| | 2 | |
| | 3 | = %setupマクロの詳細 = |
| | 4 | |
| | 5 | hoge-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 |
| | 55 | Source0: hoge-%{version}.lzh |
| | 56 | }}} |
| | 57 | |
| | 58 | tar.gz ではないので、%setup では展開できません。 |
| | 59 | |
| | 60 | このような場合には、まず %setup の -Tオプション を利用して作業ディレクトリに移動します。 %setup のあとには、bash スクリプトを書いて作業を行うことができるので、 通常のコマンドで Source0 のファイルを展開します。 |
| | 61 | |
| | 62 | {{{ |
| | 63 | #!sh |
| | 64 | %setup -T hoge-%{version} |
| | 65 | lha x %{SOURCE0} |
| | 66 | }}} |
| | 67 | |
| | 68 | 次のように tar.gz などでは無いファイルが Source2 としてあるということがあります。 |
| | 69 | |
| | 70 | {{{ |
| | 71 | #!sh |
| | 72 | Source0: hoge-%{version}.tar.gz |
| | 73 | Source1: hoge-additional-%{version}.tar.gz |
| | 74 | Source2: 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 | |
| | 100 | lha や unzip など、特別なコマンドが必要になる場合は、 !BuildRequires(prep): で指定します。 |