[PC周辺] __ctype_b, __ctype_tolower, and __ctype_toupper of glibc 2.3.6.sds-11 (20070210)

[myn:2006042400] の続き.

undefined reference to `__ctype_b'
undefined reference to `__ctype_tolower'
undefined reference to `__ctype_toupper'

とかで怒られるというあれ.いわゆる上記の symbol 入り libc をつくる件.

% apt-get source glibc (これで glibc-2.3.6.ds1 という directory ができる)
% cd glibc-2.3.6.ds1
% head -1 debian/changelog
glibc (2.3.6.ds1-11) unstable; urgency=low
% emacs debian/changelog
C-c C-v (要 debian-changelog-mode)
2.3.6.ds1-12 となるところをなんとなく 2.3.6.ds1-11.1 とかに修正
C-c C-f, C-x C-s, C-x C-c
% head -1 debian/changelog
glibc (2.3.6.ds1-11.1) unstable; urgency=low
% wget -O - 'http://cvs.debian.org/*checkout*/glibc-package/debian/patches/glibc23-ctype-compat.dpatch?root=glibc' > debian/patches/any/glibc23-ctype-compat.dpatch
% echo any/glibc23-ctype-compat.dpatch >> debian/patches/series

ここまでが下準備.ここで,

% nice -19 fakeroot make -f debian/rules binary

とかしてもいいのだけれど,相当時間がかかるので, 今回は必要なものだけ作る方針をとる.必要なものとは,

% dpkg -l | grep 2.3.6.ds1

によると

とのこと.同じ build# の package に依存 (locales が libc6 に依存とか) するので,これらすべて(のみ)を作り直す.debian/rules に適当に,

hoge:
	@echo RUN_TESTSUITE: $(RUN_TESTSUITE)
	@echo DEB_INDEP_REGULAR_PACKAGES: $(DEB_INDEP_REGULAR_PACKAGES)
	@echo DEB_ARCH_REGULAR_PACKAGES: $(DEB_ARCH_REGULAR_PACKAGES)
	@echo DEB_UDEB_PACKAGES: $(DEB_UDEB_PACKAGES)
	@echo GLIBC_PASSES: $(GLIBC_PASSES)

とか書いて調べてみたところ,default では,

RUN_TESTSUITE: yes
DEB_INDEP_REGULAR_PACKAGES: glibc-doc locales
DEB_ARCH_REGULAR_PACKAGES: libc6 libc6-dev libc6-dbg libc6-prof libc6-pic locales-all libc6-i686 libc6-xen libc6-amd64 libc6-dev-amd64 nscd
DEB_UDEB_PACKAGES: libc6-udeb libnss-dns-udeb libnss-files-udeb
GLIBC_PASSES: libc nptl i686 xen amd64

となっている.これを,

RUN_TESTSUITE: no
DEB_INDEP_REGULAR_PACKAGES: locales
DEB_ARCH_REGULAR_PACKAGES: libc6 libc6-dev libc6-amd64 libc6-dev-amd64
DEB_UDEB_PACKAGES: 
GLIBC_PASSES: libc nptl amd64

とすべく,

% nice -19 fakeroot make -f debian/rules hoge \
> "RUN_TESTSUITE=no" \
> "DEB_INDEP_REGULAR_PACKAGES=locales" \
> "DEB_ARCH_REGULAR_PACKAGES=libc6 libc6-dev libc6-amd64 libc6-dev-amd64" \
> "DEB_UDEB_PACKAGES=" \
> "GLIBC_PASSES=libc nptl amd64"
RUN_TESTSUITE: no
DEB_INDEP_REGULAR_PACKAGES: locales
DEB_ARCH_REGULAR_PACKAGES: libc6 libc6-dev libc6-amd64 libc6-dev-amd64
DEB_UDEB_PACKAGES: 
GLIBC_PASSES: libc nptl amd64

という感じでテスト.良さげ.ということで,

% nice -19 fakeroot make -f debian/rules binary \
"RUN_TESTSUITE=no" \
"DEB_INDEP_REGULAR_PACKAGES=locales" \
"DEB_ARCH_REGULAR_PACKAGES=libc6 libc6-dev libc6-amd64 libc6-dev-amd64" \
"DEB_UDEB_PACKAGES=" \
"GLIBC_PASSES=libc nptl amd64"

とかで必要な .deb が ../ に生成される.

RUN_TESTSUITE は test をするかどうかを指示するフラグみたいなもので, yes だと相当 build に時間がかかってしまう.*_PACKAGES は文字通り作る package のリスト.GLIBC_PASSES は良く別らない (see debian/sysdeps/i386.mk とか).

ちなみに Pentium M 1.20GHz で ccache が効きまくった状態でだいたい 1時間半ぐらいかかる.

関連リンク
参照リンク

[PC周辺] CPU 定期掃除 (20070209)

普通の負荷で,

kernel: CPU0: Temperature above threshold
kernel: CPU1: Temperature above threshold
kernel: CPU1: Running in modulated clock mode
kernel: CPU0: Running in modulated clock mode

とか計算機が悲鳴をあげるようになってきた(温度は70℃ぐらい)ので,掃除.

という感じなので,ほぼ半年に1度掃除すればいいっぽい.

% sensors

によると現在 35℃.

関連リンク

[PC周辺] Emacs で機種依存文字 (20070207)

Emacs で機種依存文字(①とか)を表示するには, navi2ch に付属の izonmoji-mode.el を使うのが一般的な模様. ちなみに X で JISX0213 が表示できる必要がある.

ということで,

% sudo apt-get install xfonts-jisx0213
% sudo /etc/init.d/xfs reload
% xfontset (確認; rgstry に jisx0213.2000 とか jisx0213.2004 があれば OK)

とかで,X の JISX0213 環境を整える.Debian sid の場合, Emasc で JISX0213 を表示するには,

export DEB_MULEUCS_JISX0213=on

とかする必要があって,これを .zshrc とかに書いておく (see /etc/emacs/site-start.d/40mule-ucs.el).

あとは izonmoji-mode.el を適当なところに置いて,

(autoload 'izonmoji-mode "izonmoji-mode" nil t)
(autoload 'izonmoji-mode-on "izonmoji-mode" nil t)
(add-hook 'w3m-mode-hook 'izonmoji-mode-on)
(add-hook 'wl-message-redisplay-hook 'izonmoji-mode-on)

とか(これで機種依存文字が Wanderlust で読める). 面倒だったら本当に適当なところに置いて,はじめに,

(load "/home/myn/lisp/izonmoji-mode.el")

をしても.

関連リンク

このページのインデックス


Last-modified: Fri Jul 20 10:43:53 +0900 2007

全インデックス