Solarisでgcc-4.1.2

gccのページをみるといつの間にかバージョンアップされているではありませんか。早速ダウンロードしてコンパイルリンク。

$ /usr/local/bin/tar -jxvf gcc-4.1.2.tar.bz2
$ cd gcc-4.1.2
$ mkdir objdir
$ cd objdir
$ ../configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --disable-nls
$ /usr/local/bin/make
(中略)
Adding java source files from VM directory /export/home/hoge/gcc-4.1.2/objdir/sparc-sun-solaris2.9/sparcv9/libjava
./gen-classlist.sh: test: unknown operator -ef
make[6]: *** [genclasses] Error 1
make[6]: Leaving directory `/export/home/hoge/gcc-4.1.2/objdir/sparc-sun-solaris2.9/sparcv9/libjava/classpath/lib'
make[5]: *** [all-recursive] Error 1
make[5]: Leaving directory `/export/home/hoge/gcc-4.1.2/objdir/sparc-sun-solaris2.9/sparcv9/libjava/classpath'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/export/home/hoge/gcc-4.1.2/objdir/sparc-sun-solaris2.9/sparcv9/libjava'
make[3]: *** [multi-do] Error 1
make[3]: Leaving directory `/export/home/hoge/gcc-4.1.2/objdir/sparc-sun-solaris2.9/libjava'
make[2]: *** [all-multi] Error 2
make[2]: Leaving directory `/export/home/hoge/gcc-4.1.2/objdir/sparc-sun-solaris2.9/libjava'
make[1]: *** [all-target-libjava] Error 2
make[1]: Leaving directory `/export/home/hoge/gcc-4.1.2/objdir'
make: *** [all] Error 2

うん。エラーですね。gen-classlist.shはどこにあるんじゃいと調べるとと
./objdir/sparc-sun-solaris2.9/libjava/classpath/lib/gen-classlist.sh
にあります。該当箇所は、

# Only include generated files once.
if test ! "${top_builddir}" -ef "../../../../../libjava/classpath"; then
  echo "Adding generated files in builddir '${top_builddir}'."
  # Currently the only generated files are in gnu and java.
  (cd ${top_builddir}; /usr/bin/find gnu java -follow -name '*.java' -print) |
  sort | sed -e 's,/\([^/]*\)$, \1,' |
  while read pkg file; do
     echo $pkg $top_builddir $pkg/$file
  done >> ${top_builddir}/lib/classes.1
fi

マジックナンバは
#!/bin/shになってますね。そうかSolarisのshは-ef というファイル属性演算子がないんだな。
ではシェルの指定を変えてやればよろしい。その指定方法はgccのドキュメントにあります。

$ export CONFIG_SHELL=/usr/bin/bash
$ ../configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --disable-nls
$ /usr/local/bin/make
# /usr/local/bin/make install

とインストール成功。

鳥頭

とここまで書いて、CONFIG_SHELLってなんか覚えがあるな、と過去のログを探ったら2006年8月8日のエントリで同じことやってる。すっかり忘れてましたよ。。エラーの内容がちょっと違うのが救いかな。