竹中@京都です。
一部間違いがあったので訂正します。
On 2007/08/09, at 2:09, 竹中 浩 wrote:
竹中@京都です。
前報で、mkkpkg の configuration 段階でのエラー対処
方について報告しました。
今回は、build 段階での問題と対策(かなり荒っぽい方法です
が)をご報告します。
その前に、先ず、kernel-source-2.6.16-0vl76.3.ppc.rpm を
インストールした状態
で、/usr/src/linux-2.6.16 内のソースツリーからは、問題な
くカーネルとカーネル
モジュール を make する事が出来る事を申し上げてお
きます。問題は、mkkpkg で、
kernel-2.5.16-0vl76.3.src.rpm からカーネル再構築を行う時に生じ
ます。
次のようなエラーで終了してしまいました。
drivers/char/esp.c:1825: error: `TIOCGHAYESESP' undeclared (first
use in this function)
drivers/char/esp.c:1825: error: (Each undeclared identifier is
reported only once
drivers/char/esp.c:1825: error: for each function it appears in.)
drivers/char/esp.c:1825: error: `TIOCSHAYESESP' undeclared (first
use in this function)
drivers/char/esp.c:1862: 警告: `interruptible_sleep_on' is
deprecated (declared at include/linux/wait.h:371)
drivers/char/esp.c: 関数 `block_til_ready' 内:
drivers/char/esp.c:2145: 警告: `interruptible_sleep_on' is
deprecated (declared at include/linux/wait.h:371)
make[2]: *** [drivers/char/esp.o] エラー 1
make[1]: *** [drivers/char] エラー 2
make: *** [drivers] エラー 2
エラー: /var/tmp/rpm-tmp.35150 の不正な終了ステータス (%
build)
RPM ビルドエラー:
/var/tmp/rpm-tmp.35150 の不正な終了ステータス (%build)
メッセージの内容から、変数 'TIOCGHAYESESP' と
'TIOCSHAYESESP' が宣言されていないと
云う事なので、荒療治ですが、~/rpm/BUILD/kernel-2.6.16/
linux-2.6.16 内の上記二つの
変数を使用している行をコメントアウトしてみました。
ここで、ソースを編集するタイミングですが、mkkpkg は、
menuconfig を実行する前にソー
スツリーを~/rpm/BUILD/kernel-2.6.16/linux-2.6.16 に展開
するのですが、menuconfig
終了後に、上記ディレクトリを消去して再度ソースツリーを同一ディ
レクトリに展開します。
そこで、kernel-mkkpkg.log で、
+ perl -p -i -e 's/^EXTRAVERSION.*/EXTRAVERSION = -0vl76.3_sbp2.2/'
Makefile
+ make -s mrproper
←ここで、Cntrl+zが正しいです。
+ cp configs/kernel-2.6.16-ppc.config .config
++ head -1 .config
++ cut -b 3-
+ Arch=ppc
+ echo USING ARCH=ppc
USING ARCH=ppc
+ make -s ARCH=ppc nonint_oldconfig
kernel/power/Kconfig:104:warning: 'select' used by config symbol
'SUSPEND2' refer to undefined symbol 'HOTPLUG_CPU'
net/ieee80211/softmac/Kconfig:4:warning: 'select' used by config
symbol 'IEEE80211_SOFTMAC' refer to undefined symbol 'WIRELESS_EXT'
sound/pci/Kconfig:477:warning: 'select' used by config symbol
'SND_FM801_TEA575X' refer to undefined symbol 'VIDEO_V4L1'
.config:2332:warning: trying to reassign symbol INPUT_PCSPKR
← ここで、Cntrl+Z
で一旦停止して、エディターで drivers/char/esp.c の当該変
数を使用している行を4行
コメントアウトしました。これでこのエラーは回避出来たのですが、
今度は下記のエラー
を吐き出しました。
{standard input}: Assembler messages:
{standard input}:8055: Error: symbol `cprev' is already defined
{standard input}:8061: Error: symbol `cnow' is already defined
{standard input}:8073: Error: symbol `__pu_addr' is already defined
{standard input}:8079: Error: symbol `__pu_addr' is already defined
{standard input}:8085: Error: symbol `__pu_addr' is already defined
{standard input}:8091: Error: symbol `__pu_addr' is already defined
make[2]: *** [drivers/char/esp.o] エラー 1
make[1]: *** [drivers/char] エラー 2
make: *** [drivers] エラー 2
エラー: /var/tmp/rpm-tmp.29383 の不正な終了ステータス (%
build)
RPM ビルドエラー:
/var/tmp/rpm-tmp.29383 の不正な終了ステータス (%build)
このエラーは対処方法が分からず、結局以下の方法をとりました。
初めに述べたように、/usr/src/linux-2.6.16 のソースツリー
からは正常に make できます。
そこで、kernel-mkkpkg.log で、
+ perl -p -i -e 's/^EXTRAVERSION.*/EXTRAVERSION = -0vl76.3_sbp2.2/'
Makefile
+ make -s mrproper
ここで、Cntrl+zが正しいです。
+ cp configs/kernel-2.6.16-ppc.config .config
++ head -1 .config
++ cut -b 3-
+ Arch=ppc
+ echo USING ARCH=ppc
USING ARCH=ppc
+ make -s ARCH=ppc nonint_oldconfig
kernel/power/Kconfig:104:warning: 'select' used by config symbol
'SUSPEND2' refer to undefined symbol 'HOTPLUG_CPU'
net/ieee80211/softmac/Kconfig:4:warning: 'select' used by config
symbol 'IEEE80211_SOFTMAC' refer to undefined symbol 'WIRELESS_EXT'
sound/pci/Kconfig:477:warning: 'select' used by config symbol
'SND_FM801_TEA575X' refer to undefined symbol 'VIDEO_V4L1'
.config:2332:warning: trying to reassign symbol INPUT_PCSPKR
← ここで、Cntrl+Z
一旦実行を停止して、gnome の ファイルブラウザ
nautilus で、/usr/src/linux-2.6.16
以下を隠しファイルも含めて全て、~/rpm/BUILD/kernel-2.6.16/
linux-2.6.16に上書きコピー
して、fg コマンドで再スタートさせました。
結果として多少の警告メッセージは出たのですが、下記のようにビル
ド出来ました。
ファイルの処理中: kernel-2.6.16-0vl76.3_sbp2.2
警告: ファイルが2回表記されています: /boot/
System.map-2.6.16-0vl76.3_sbp2.2
警告: ファイルが2回表記されています: /boot/
config-2.6.16-0vl76.3_sbp2.2
ファイルの処理中: kernel-devel-2.6.16-0vl76.3_sbp2.2
ファイルの処理中: mol-kmods-0.9.71_2.6.16-0vl76.3_sbp2.2
Finding Provides: /usr/lib/rpm/find-provides
Finding Requires: /usr/lib/rpm/find-requires
Requires(rpmlib): rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib
(CompressedFileNames) <= 3.0.4-1
Requires: kernel = 2.6.16-0vl76.3_sbp2.2
パッケージに未収録のファイルを検査中: /usr/lib/rpm/check-
files /var/tmp/kernel-2.6.16-0vl76.3_sbp2.2-root
書き込み完了: /home/hiro/rpm/SRPMS/
kernel-2.6.16-0vl76.3_sbp2.2.src.rpm
書き込み完了: /home/hiro/rpm/RPMS/ppc/
kernel-2.6.16-0vl76.3_sbp2.2.ppc.rpm
書き込み完了: /home/hiro/rpm/RPMS/ppc/kernel-
devel-2.6.16-0vl76.3_sbp2.2.ppc.rpm
書き込み完了: /home/hiro/rpm/RPMS/ppc/mol-
kmods-0.9.71_2.6.16-0vl76.3_sbp2.2.ppc.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.69272
+ umask 022
+ cd /home/hiro/rpm/BUILD
+ cd kernel-2.6.16
+ rm -rf /var/tmp/kernel-2.6.16-0vl76.3_sbp2.2-root
+ exit 0
---
竹中 浩
tkn-hiroshi@xxxxxxxxxxxxxxx