[Momonga-devel.ja:00004] Re: mph-get problem?
- From: Kenta MURATA <muraken2@xxxxxxxxx>
- Date: Sat, 06 Jul 2002 11:45:42 +0900
むらけんです。
In message <m31yahpq1l.wl@xxxxxxxxxxxxxxxxxxx> at Sat, 06 Jul 2002 11:07:34 +0900,
Kazuhiko <kazuhiko@xxxxxxxxxx> wrote:
> 現在は、/usr/bin/mph-get の def m_relcmp の
>
> if ( (sFRS <=> sSRS) != 0 )
> # if sFRS != sSRS, sSecond is newer
> return -1
> end
>
> で、'k' と 'm' とがちがったら無条件で元のパッケージが新しい、と判断され
> ています。この部分を削除すれば、後者の
>
> mo-1.0-1k -> mo-1.0-2m
>
> のケースは対応できます。前者の
>
> mo-1.0-1k -> mo-1.0-1m
>
> の方は、'k' < 'm' なら無条件でアップグレード、という乱暴な条件でよければ
> 前述の部分を
>
> if ((sFRS <=> sSRS) == 1)
> # if sFRS > sSRS, sFirst is newer
> return 1
> end
>
> とすれば対応できます。これだと、'4k' < '1m' ということになってしまいます
> ので注意。もちろん、逆に言えばきれいさっぱり '1m' から始めます、と言えな
> くもないのですが、これは個人的には賛成できません。
[muraken@schroedinger muraken]$ Momonga/tools/rpmvercmp.Jirai mo-1.0-1k mo-1.0-1m
<
[muraken@schroedinger muraken]$ Momonga/tools/rpmvercmp.Jirai mo-1.0-2k mo-1.0-1m
>
rpm の vercmp 関数も同様の判断を下していますが、これは要するに
2桁の36進数同士の比較と考えれば理解は簡単ですよね。2桁目が 4 >
1 だから1桁目がどうなっていようと 4k > 1m になります。すごく普
通な事だと思います。
> 次期 mph では、このあたりの仕様はどうするのがいいのでしょうか?
Ruby/RPM で提供される RPM.vercmp という関数を使います。つまり、
今までと同じです。なぜなら、リリースに 'k' とか 'm' みたいなサ
フィックスを付けるという概念は rpm には存在しないからです。も
し、すごい反論があればどうぞ。
--
1024D/2A3FDBE6 2001-08-26 Kenta MURATA (MURAKEN) <muraken2@xxxxxxxxx>
Key fingerprint = 622A 61D3 280F 4991 4833 5724 8E2D C5E1 2A3F DBE6