[Momonga-devel.ja:01705] Re: specファイル中の%defineマクロについて
- From: Kenta MURATA <muraken2@xxxxxxxxx>
- Date: Wed, 21 May 2003 20:12:41 +0900
むらけんです.
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