まだ何の問題か全く分っていないが
- pkgsrc を使わずに ./Configure -des しても同様の問題が起きる
- 5.8.8 に限って言えば 3.99.21 (gcc-4.1.2)では問題がなかった
- 3.99.21(2006/07/02) と 4.99.1(2006/08/22) では gcc には変更なし
- とりあえず次のようなものが見える
Making (static)
Warning: No Makefile!
make: don't know how to make config. Stop
- その部分は ext/util/make_ext の次の近辺
60 # canonise into X/Y form (pname)
61 case "$extspec" in
62 lib*) # Remove lib/auto prefix and /*.* suffix
63 pname=`echo "$extspec" | sed -e 's:^lib/auto/::' -e 's:/[^/]*\.[^/]*$::' ` ;;
64 ext*) # Remove ext/ prefix and /pm_to_blib suffix
65 pname=`echo "$extspec" | sed -e 's:^ext/::' -e 's:/pm_to_blib$::' ` ;;
66 *::*) # Convert :: to /
67 pname=`echo "$extspec" | sed -e 's/::/\//g' ` ;;
68 *) pname="$extspec" ;;
69 esac
70 # echo "Converted $extspec to $pname"
71
72 mname=`echo "$pname" | sed -e 's!/!::!g'`
73 depth=`echo "$pname" | sed -e 's![^/][^/]*!..!g'`
74 makefile=Makefile
75 makeargs=''
76 makeopts=''
77
78 if test ! -d "ext/$pname"; then
79 echo " Skipping $extspec (directory does not exist)"
80 exit 0 # not an error ?
81 fi
82
83
84 echo " Making $mname ($target)"
85
86 cd ext/$pname
ここの $mname が空なことが問題
- 61 行目の extspec には、次のような値が入っている
extspec(lib/auto/DynaLoader/DynaLoader.a)
extspec(lib/auto//.a)
一行目は問題なし。二行目が問題
- これは単に渡された引数(lib/auto//.a)が変、ということらしい
- この ext/util/make_ext を呼んでいるのは Makefile.SH で作られた Makefile の次の部分、この第2引数 $@ が extspec の部分
@$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
- ./Configure で作られた Makefile を較べて見ると
以前のもの
60 static_ext =
今回のもの
60 static_ext = lib/auto//$(LIB_EXT)
- 実は、この部分を手で直して、make とやると一回失敗する
- しかしもう一度 make とやると、先に進んで、一応 make test も通る
All tests successful.
u=12.64 s=4.58 cu=712.26 cs=172.37 scripts=937 tests=117403
ttyp3:makoto@s900 9:07:17/060908(...local-src/perl-5.8.8)>
- config.sh を良く見ると、
-extensions= ... threads/shared Errno'
+extensions= ... threads/shared Errno'
空白が一つ多い
-gccversion='4.1.2 20060628 prerelease (NetBSD nb1 20060602)'
+gccversion='4.1.2 20060628 prerelease (NetBSD nb2 20060711)'
gcc は全く同じではない。その他にも違いはあるが省略
また落ちた s-900
trap type 200 at 3df6ac
Stopped in pid 8994.1 (cc1) at netbsd:pmap_pte_spill+0x68: addi 4,31,8
db> bt
at setfault+6c8
at _prop_string_pool+ff9e8420
db>
trap type 200 は machine check。やはり金物問題かな
(でも以前の OS で、もっと安定に動いていた気もする)。
9/06 で作り直そうかな。