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


たかはたです。

このメールは
  Kenta MURATA <muraken2@xxxxxxxxx>
さんのメールに対する返信です。

> むらけんです.
> 
> 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に入っているものだけに依存する場合は、これに限らない。
> > という縛りを入れたいと思いますが、いかがでしょうか。
> 
> 動的な値のマクロ定義は,そもそも悪い事ではありません.なので,

動的な値のマクロ定義について、悪いとも悪くないとも言ってないです。
ただ、現状OmoiKondaraが対応してないのであれば、使わない方がいいと言うことです。

> spec ファイルに縛りを入れるくらいなら,OmoiKondara を修正する
> のが良いと思います.
> 
> ということで,提案された縛りには反対です.

確かに、OmoiKondaraを修正するのがよいと思います。
なので、直ればこの縛りは外したいと思っています。
直らない限り、動的な値のマクロ定義は控えた方がいいと思います。

---
Masahiro Takahata
takahata@xxxxxxxxx