[Momonga-devel.ja:01705] Re: specファイル中の%defineマクロについて


むらけんです.

In message <20030521195907.e6cd.takahata@xxxxxxxxx> at Wed, 21 May 2003 19:59:07 +0900(JST),
Masahiro Takahata <takahata@xxxxxxxxx> wrote:
> 最近になってまっさらの状態からビルドを始めようとすると、
> specファイルの定義エラーがwarningとして表示されます。

この現象は最近になって出たのではなく,前から起きていた事を付け
加えておきます.当時は,gnustep-make が無い状態で GNUstep.sh 
を使おうとして spec ファイルのスキャン時にエラーが出るだけで,
実際のビルドには影響がなかったので,修正が後回しになっていまし
た.

> mozilla-lang-pack.specをよく見ると、
> Version:     %(rpm -q --qf '%%{version}' mozilla)
> と書かれていて、mozillaがインストールされていることが前提にspecが
> 書かれていました

これは,%() の使い方を間違っている例ですね.タグの値は静的にす
べきです.従って,タグで使用するマクロも静的であるべきでしょう.
ここでタグとは

Name:
Version:
Requires:

のようなモノの事を言います.

しかし,スクリプトの内容はタグとは異なり,動的に決定しなければ
ならない値も存在します.

> これと同じようなものが、jadetex.specの中にも
> %define TeXdir %(cd `kpsewhich -expand-var '$TEXMFMAIN'`/../..; pwd)
> と定義されていて、このkpsewhichが無いためにwarning。
> そもそもここで定義しているTeXdirは/usrなので全く意味無し。

これは,そもそも TEXMFMAIN の値の意味を理解していないためにこ
うなったのでしょう.しかし,jadetex は tetex が存在しなければ
ビルドできないモノであり,tetex がインストールされていれば 
kpsewhich を使えるわけですから,%{TeXdir} がタグに使用されてい
ないのであれば,非難すべき状況ではないと思います.

> とはいえ、これらは動的にdefineなりをしていたために起きていて
> 放置されていた現象なので、
> ・原則%defineなどでは何かのコマンドの出力を使って、動的に定義をするのを止める。
> ・アーキテクチャで振り分けられるなら%ifarchなどを駆使する。
> ・packages.develに入っているものだけに依存する場合は、これに限らない。
> という縛りを入れたいと思いますが、いかがでしょうか。

動的な値のマクロ定義は,そもそも悪い事ではありません.なので,
spec ファイルに縛りを入れるくらいなら,OmoiKondara を修正する
のが良いと思います.

ということで,提案された縛りには反対です.

-- 
1024D/2A3FDBE6 2001-08-26 Kenta MURATA (muraken) <muraken2@xxxxxxxxx>
Key fingerprint = 622A 61D3 280F 4991 4833  5724 8E2D C5E1 2A3F DBE6