理由あって古いまま維持しているDebianがあるんですが、もう直っちゃってるかもしれませんけど、先日、pkgsrcのdevel/gmpにて、bmakeできませんでした。
エラーメッセージは…
===> Overriding tools for gmp-4.2.2
===> Extracting for gmp-4.2.2
===> Patching for gmp-4.2.2
=> Applying pkgsrc patches for gmp-4.2.2
===> Creating toolchain wrappers for gmp-4.2.2
===> Configuring for gmp-4.2.2
cd /WORK/devel/gmp/work/gmp-4.2.2 && type autoconf && autoconf
autoconf is /WORK/devel/gmp/work/.tools/bin/autoconf
/usr/bin/m4: unrecognized option `--debugfile=autom4te.cache/traces.0t'
Try `/usr/bin/m4 --help' for more information.
autom4te: /usr/bin/m4 failed with exit status: 1
*** Error code 1
Stop.
bmake: stopped in /usr/pkgsrc/devel/gmp
*** Error code 1
Stop.
bmake: stopped in /usr/pkgsrc/devel/gmp
どうも、ここ
/usr/bin/m4: unrecognized option `--debugfile=autom4te.cache/traces.0t'
が悪いみたいです。
とりあえずgrepで探してみると…
# cd /WORK/devel/gmp
# grep -R /usr/bin/m4 .
./work/.tools/bin/autom4te:my $m4 = $ENV{"M4"} || '/usr/bin/m4';
./work/.tools/bin/autoupdate:my $m4 = $ENV{"M4"} || '/usr/bin/m4';
./work/gmp-4.2.2/acinclude.m4:``bad: $][# not supported (SunOS /usr/bin/m4)
./work/gmp-4.2.2/configure:``bad: $# not supported (SunOS /usr/bin/m4)
./work/gmp-4.2.2/ChangeLog: * mpn/asm-defs.m4: Add remarks on SunOS /usr/bin/m4 and new
./work/gmp-4.2.2/mpn/asm-defs.m4:dnl SunOS /usr/bin/m4 - this m4 lacks a number of desired features,
./work/gmp-4.2.2/mpn/asm-defs.m4:dnl available, and "configure" will reject /usr/bin/m4 in favour of
./work/gmp-4.2.2/mpn/asm-defs.m4:dnl could manage with /usr/bin/m4, but there's no reason to put our
./work/gmp-4.2.2/mpn/asm-defs.m4:dnl Detect and give a message about the unsuitable SunOS /usr/bin/m4.
./work/gmp-4.2.2/doc/gmp.texi:@command{/usr/bin/m4} lacks various features needed to process @file{.asm}
./work/gmp-4.2.2/doc/gmp.info-1: `/usr/bin/m4' lacks various features needed to process `.asm'
./work/gmp-4.2.2/acinclude.m4.orig:``bad: $][# not supported (SunOS /usr/bin/m4)
これを見てひょっとして?と思って、
# setenv M4 /usr/pkg/bin/gm4
してみたら、bmakeできました。
mk.confに何か書けば、/usr/bin/m4のかわりに、/usr/pkg/bin/gm4が使われるんじゃないかと思って、ちょっとイロイロやってみたんですけど、ダメそうでした。
上のgrep結果で、
./work/.tools/bin/autom4te:my $m4 = $ENV{"M4"} || '/usr/bin/m4';
ってのがどうも環境変数M4を参照するっぽいので、setenv M4 /usr/pkg/bin/gm4してみたんですが、まあ、うまくいったので、いいとしておきますか。
gmp-4.2.2では、autoconfかconfigureか何かが、GNUなm4コマンドを優先して探しているときに、Debian potatoの/usr/bin/m4は、一応gnu m4なので、/usr/bin/m4が採用されたんですが、その/usr/bin/m4はバージョンが古くて、「--debugfile」というオプションが無い、というのが原因っぽいです。
私も若いころだったら、
mv /usr/bin/m4 /usr/bin/m4-; ln -s /usr/pkg/bin/gm4 /usr/bin/m4
とかやってたかもしれないなぁ(笑)。
mk.conf に
返信削除TOOLS_PLATFORM.gm4= #empty
かな。
今日bmakeしたら、何もせずに、すんなり通ってしまいました。
返信削除config.logを見ると
configure:29738: checking for suitable m4
configure:29782: result: /usr/pkg/bin/gm4
となって/usr/bin/m4は使われておりませんでした。
config.statusを見ると、configureを実行するときに
M4=/usr/pkg/bin/gm4
というのがついてたんですが、これが効いたのかも?
pkgsrc/devel/gmpは、とくに関係しそうな変更は入ってないので、autoconfかautomakeか何か別のところで、うまくいくようになったのかもしれません。