2009年9月25日金曜日

Snow Leopard

Snow Leopard を買い直してきました. 今回は順調にインストール完了. Safari の圧倒的な速さに感動しています. 気のついたことなど:

X11 と Xcode は全面的にいれかえられる. /usr/X11/lib/X11/fonts/ に追加していた font や /usr/X11/bin/ にいれていたバイナリは消えます.

VMware fusion は問題なし.

macports はすべてコンパイルし直し. この機会に必要なものだけにしようか.

emacs-22.1 のソースからの生成はできなくなった. さあ, これが問題だ. emacs-23 なら cvs から HEAD をもってくれば動くが, emcws が必須の身としては emacs-22.1 (22.3 でもいい) が動かないと困る. macports の emacs (22.3) も生成できない. 32bit の libcanna や libncureses を保存しておいたので, DYLD_LIBRARY_PATH を保存しておいたディレクトリにセットして, 昔の emcws-22.1 が無事に動いてはいるけれど.

emacs-23 の src/unexmacosx.c を emacs-22.3 にバックポートしてみた. これは簡単だったが, これだけではコンパイルが終らない. temacs で undump は成功したように見えて emacs ができるが, この emacs が走らない.

(gdb) run -q -batch -f list-load-path-shadows
Starting program: /usr/local/src/emacs-22.3/src/emacs-22.3.5 -q -batch -f list-load-path-shadows
Reading symbols for shared libraries ++. done

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000101802e20
make_float (float_value=0) at alloc.c:2627
2627 float_free_list = float_free_list->u.chain;
(gdb) print float_free_list
$1 = (struct Lisp_Float *) 0x101802e20
(gdb) print *float_free_list
Cannot access memory at address 0x101802e20

なんだろう. 0x101802e20 の最上位の 0x1 のビットが怪しいが.
gc の mark とかだろうか.


このビットは関係なかったようです.emacs22-3 で src/config.h から

#define HAVE_POSIX_MEMALIGN 1

を取り除いたら生成できました.config.h は configure で機械生成されるのでどこか元をなおさねばいけませんが,一安心.なお,--without-x で作っていますので,X こみだと別かも知れません.


configure (configure.in も) の

...
for ac_func in gethostname getdomainname dup2 \
rename closedir mkdir rmdir sysinfo getrusage get_current_dir_name \
random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime res_init setsid \
strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \
utimes getrlimit setrlimit setpgid getcwd getwd shutdown getaddrinfo \
__fpending mblen mbrlen mbsinit strsignal setitimer ualarm index rindex \
sendto recvfrom getsockopt setsockopt getsockname getpeername \
gai_strerror mkstemp getline getdelim mremap memmove fsync sync bzero \
memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign
do
...

この最後の posix_memalign を削除すると, config.h に HAVE_POSIX_MEMALIGN は出てこなくなりました.

0 件のコメント: