[Momonga-devel.ja:02850] Re: kernel の rpmbuild が通りました


たぶちです.

From: Masanobu Sato <m.sato@xxxxxxxxxxxx>
Subject: [Momonga-devel.ja:02849] Re: kernel の rpmbuild が通りました
Date: Sat, 23 Oct 2004 11:28:59 +0900
Message-ID: <20041023022858.BE69D14C87@xxxxxxxxxxxxxxx>

> kernel-2.6.9-1mはbuildできましたが、kernel-2.6.9-2mでは
> buildsmpもpen4smpもbuildできません。
> 相変わらず、linux-2.6.9-dbus.patchでFailしてしまいます。
> -----------
> + echo 'Patch #530 (linux-2.6.9-dbus.patch):'
> Patch #530 (linux-2.6.9-dbus.patch):
> + patch -p1 -s
> 1 out of 4 hunks FAILED -- saving rejects to file drivers/md/md.c.rej
> error: Bad exit status from /var/tmp/rpm-tmp.79389 (%prep)

4mで直っていると思います.

> >パッチの内容を説明します。
> >
> >- add Patch91: linux-2.6.9-swsusp-smp.patch
> >
> >CONFIG_SMP が定義されている、かつ
> >CONFIG_SOFTWARE_SUSPEND2 が未定義のとき
> 
> Patch91は、kernel.specによると、
> ------------
> %if %{buildup}
> # SWSUSP
> %patch90 -p1
> %patch91 -p1
> %endif # %%{buildup}
> ------------
> となっており、buildupの場合しか適用されないと思うの
> ですが、CONFIG_SMPが定義されていて、かつ、
> CONFIG_SOFTWARE_SUSPEND2が未定義ということがある
> のでしょうか?

ありません.

ただしちょっと問題があるため話が面倒です.
kernelのbuildの流れは以下のようになります.

1. ソースの展開+patch当て
2. up カーネルのbuild
3. smp カーネルのbuild

2と3の間に1が再度行われていない事が原因で,
defaultのupとsmpカーネルの両方を作る時は, smp kernelを作るときも
%if %{buildup} で囲まれたpatchが当たったソースが使われます.

smpカーネルだけを作るとき
つまり ~/rpm/specopt/kernel.specopt で
%{?!buildup:              %global buildup   0}
%{?!buildsmp:             %global buildsmp  1}
としている場合には, 上記1. で
%if %{buildup} で囲まれた部分のpatchが当たらないので思惑通りになります.

2.6.9-4mではいろいろ小細工をして smpカーネルだけで作れるように変更しました.

2.6.9-0.4.3mの時点で, defaultのupとsmp kernelを作って,
upのマシンにsmpカーネルをinstallしてbootさせて
swsusp2が起動していないことは確認していました.

---tab