glibc 2.3.3-3vl1.3 のリビルド


Linux 2.4.17 では、予想通り glibc 2.3.3-3vl1.3 が動作しなかったので、 パッチをあててリビルドする。
少しでも速いように HS=DGL +ハックキット 2.0 を使う。

開発環境のインストール

[root@hackkit root]# apt-get update
取得:1 http://updates.vinelinux.org 3.1/ppc release [2524B]
2524B を 0s 秒で取得しました (3291B/s)
ヒット http://updates.vinelinux.org 3.1/ppc/main pkglist
取得:1 http://updates.vinelinux.org 3.1/ppc/main release [158B]
ヒット http://updates.vinelinux.org 3.1/ppc/devel pkglist
取得:2 http://updates.vinelinux.org 3.1/ppc/devel release [157B]
ヒット http://updates.vinelinux.org 3.1/ppc/plus pkglist
取得:3 http://updates.vinelinux.org 3.1/ppc/plus release [158B]
ヒット http://updates.vinelinux.org 3.1/ppc/updates pkglist
取得:4 http://updates.vinelinux.org 3.1/ppc/updates release [161B]
ヒット http://updates.vinelinux.org 3.1/ppc/main srclist
ヒット http://updates.vinelinux.org 3.1/ppc/devel srclist
ヒット http://updates.vinelinux.org 3.1/ppc/plus srclist
ヒット http://updates.vinelinux.org 3.1/ppc/updates srclist
634B を 0s 秒で取得しました (2227B/s)
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
[root@hackkit root]# apt-get upgrade
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージは保留されます:
  kernel-headers
アップグレード: 0 個, 新規インストール: 0 個, 削除: 0 個, 保留: 1 個
[root@hackkit root]# apt-get install rpm-build
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
* rpm-build は既に最新バージョンがインストールされています。
アップグレード: 0 個, 新規インストール: 0 個, 削除: 0 個, 保留: 1 個
[root@hackkit root]# apt-get install vutils
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
* vutils は既に最新バージョンがインストールされています。
アップグレード: 0 個, 新規インストール: 0 個, 削除: 0 個, 保留: 1 個
[root@hackkit root]# apt-get clean

glibc のリビルド

[root@hackkit root]# apt-get build-dep glibc
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
アップグレード: 0 個, 新規インストール: 0 個, 削除: 0 個, 保留: 1 個
[root@hackkit root]# apt-get install texinfo
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
* texinfo は既に最新バージョンがインストールされています。
アップグレード: 0 個, 新規インストール: 0 個, 削除: 0 個, 保留: 1 個
[root@hackkit root]# exit
bash-2.04$ mkrpmdir ~
mkrpmdir: created rpm tree in /home/yamasita/yasunari/rpm and /home/yamasita/yasunari/.rpmmacros.
-bash-2.05b$ apt-get source glibc
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
13.6MB のソースアーカイブを取得します。
取得:1 http://updates.vinelinux.org 3.1/ppc/updates glibc 2.3.3-3vl1.3 (srpm) [13.6MB]
13.6MB を 1m31s 秒で取得しました (149kB/s)
   1:glibc                  ########################################### [100%]
-bash-2.05b$ ls
glibc-2.3.3-3vl1.3.src.rpm  rpm
-bash-2.05b$ ls rpm/SOURCES/
find-provides-glibc.sh               glibc-2.3.3-200312301455.tar.bz2  glibc-execstack-disable.patch
find-requires-glibc.sh               glibc-2.3.3-ppc-tcb.patch         glibc-nptl-check.patch
glibc-2.3-iso2022jp.patch            glibc-2.3.3_tempfile.patch        glibc-ppc-assume.patch
glibc-2.3.2-alpha-pt-initfini.patch  glibc-Versions.patch              glibc-redhat-200312301455.tar.bz2
glibc-2.3.2-alpha-pwrite.patch       glibc-compat.patch                glibc-redhat.patch
-bash-2.05b$
あれ?rpm/SOURCES/ に自動展開されるんだったかな?
-bash-2.05b$ cd rpm/SPECS/
-bash-2.05b$ ls
glibc-vl.spec
-bash-2.05b$ mv glibc-vl.spec{,.orig}
-bash-2.05b$ cp glibc-vl.spec{.orig,}
-bash-2.05b$ vi glibc-vl.spec
	:
-bash-2.05b$ diff -c glibc-vl.spec{.orig,}
*** glibc-vl.spec.orig  2005-10-28 22:30:04.000000000 +0900
--- glibc-vl.spec       2005-11-03 17:09:10.000000000 +0900
***************
*** 14,20 ****
  Summary(ja): GNU libc ライブラリ
  Name: glibc
  Version: 2.3.3
! Release: %{glibcrelease}vl1.3
  License: LGPL
  Group: System Environment/Libraries
  Source0: %{name}-%{version}-%{glibcdate}.tar.bz2
--- 14,20 ----
  Summary(ja): GNU libc ライブラリ
  Name: glibc
  Version: 2.3.3
! Release: %{glibcrelease}vl1.3hk1
  License: LGPL
  Group: System Environment/Libraries
  Source0: %{name}-%{version}-%{glibcdate}.tar.bz2
***************
*** 319,327 ****
    ;;
  gcc*\ 3.2.3*)
  %patch2 -p1
- %patch3 -p1
    ;;
  esac
  %patch10 -p1
  %patch11 -p1

--- 319,327 ----
    ;;
  gcc*\ 3.2.3*)
  %patch2 -p1
    ;;
  esac
+ %patch3 -p1
  %patch10 -p1
  %patch11 -p1

-bash-2.05b$
-bash-2.05b$ rpm -ba glibc-vl.spec
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.62121
+ umask 022
+ cd /home/yamasita/yasunari/rpm/BUILD
+ cd /home/yamasita/yasunari/rpm/BUILD
+ rm -rf glibc-2.3.3-200312301455
+ /usr/bin/bzip2 -dc /home/yamasita/yasunari/rpm/SOURCES/glibc-2.3.3-200312301455.tar.bz2
+ tar -xf -
	:
	:
では、7時間半後に会いましょう。

リビルド失敗

5時間後
がーん。ディスクフルだと。
確に /home は / パーティションにおいたままだった。
/home/yamasita/yasunari を /mnt に移動させ、2回目のリビルド。 :

リビルド再失敗

ががーん。
今度は、g++ がないと言ってきた。
[root@hackkit root]# which g++
/usr/bin/which: no g++ in (/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin)
[root@hackkit root]# apt-cache search g++ | less
	:
	:
gcc-c++ - GNU コンパイラ集 - C++ サポート
	:
とのことなので、gcc-c++ をインストールする。
[root@hackkit root]# apt-get install gcc-c++
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下の追加パッケージがインストールされます:
  libstdc++3-devel
以下のパッケージが新たにインストールされます:
  gcc-c++ libstdc++3-devel
アップグレード: 0 個, 新規インストール: 2 個, 削除: 0 個, 保留: 1 個
3761kB のアーカイブを取得する必要があります。
展開後に 12.6MB のディスク容量が追加消費されます。
続行しますか? [Y/n]y
取得:1 http://updates.vinelinux.org 3.1/ppc/main libstdc++3-devel 3.3.2-0vl8 [1376kB]
取得:2 http://updates.vinelinux.org 3.1/ppc/main gcc-c++ 3.3.2-0vl8 [2385kB]
3761kB を 28s 秒で取得しました (130kB/s)
変更を適用しています...
Preparing...                ########################################### [100%]
   1:libstdc++3-devel       ########################################### [ 50%]
   2:gcc-c++                ########################################### [100%]
完了
[root@hackkit root]# which g++
/usr/bin/g++
3回目。
make[1]: ターゲット `check' はエラーにより再 make できませんでした。
make[1]: ディレクトリ `/mnt/home/yamasita/yasunari/rpm/BUILD/glibc-2.3.3-200312301455' から出ます
make: *** [check] エラー 2
で止まってしまった。
会社から返ってきてもこの画面のままなので、 CTRL-C を押したらなんか続行してる。
+ echo ============
============
+ echo ====================TESTING DETAILS=================
====================TESTING DETAILS=================
++ sed -n 's|^.*\*\*\* \[\([^]]*\.out\)\].*$|\1|p' 'build-ppc-linux*/check2.log'
sed: build-ppc-linux*/check2.logを読み込めません: そのようなファイルやディレクトリはありません
+ echo ====================TESTING END=====================
====================TESTING END=====================
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip
+ /usr/lib/rpm/brp-strip-comment-note
またこの状態で止まって、、、CTRL-C を押したら終わった。
なんでぇ???


玄箱+ハックキット 2.0 αに glibc 2.3.3-3vl1.3
ハックの記録
LinkStation/玄箱 をハックしよう

glibc 2.3.3-3vl1.3 のリビルド(2)惨敗

Copyright (C) 2005 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市