2011-08-15 10 views
0

私の目標は、サブパッケージを動的に定義するspecファイルを作り出すことです。サブパッケージを動的に定義する方法

現在、スペックファイルにマクロが定義されているため、さまざまなパラメータを使用して異なる%パッケージセクションを生成することができます。例えば。 -n subpackage-%1 \ 概要 %パッケージ\:サブパッケージ%1 \ ... \ %{ニル}

% create_pkg SUB1 %create_pkg SUB2:

%(n)はcreate_pkgを定義します %create_pkg sub3

しかし、私は、スペックファイル内のcreate_pkgマクロのパラメータ(sub1、sub2、sub3)のみをハードコーディングできます。 specfileを別のファイルに読み込む方法はありますか?これには、私が望むサブパッケージの名前が入っていますか?例えば。

SUB1 SUB2 SUB3

とspecファイルはsubpackages.txtを読んで、txtファイルから読み込む名前で%のcreate_pkgを呼び出します。subpackages.txtは以下を持っているでしょう。

答えて

2

私自身の質問に答える。もしrpmがluaスクリプトビルドインを持っていれば(ビルド時間オプションだと思いますが)、ファイル内でluaスクリプトを使うことができます。

1)サブパッケージを別ファイルで定義してください。 targets.txt:

%include targets.txt 

3)プリアンブルセクション内のターゲットを反復処理するためにLUAスクリプトを使用:

%define build_targets sub1 sub2 sub3 

2)specファイルの先頭にtargets.txt含みます

%{lua: 
for target in string.gmatch(rpm.expand("%{build_targets}"), "[%w_-]+") 
do 
    print("%package "..target.."\n") 
    print("Summary: subpackage "..target.."\n") 
    ... 
    print("%description "..target.."\n") 
end 

サブパッケージの%packageディレクティブが動的に生成されます。