2008年3月15日土曜日

(pkgsrc) 古いDebian GNU/Linux (potato) でdevel/gmpがビルドできなかった ~ /usr/bin/m4: unrecognized option `--debugfile=autom4te.cache/traces.0t'

理由あって古いまま維持している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



とかやってたかもしれないなぁ(笑)。



2 件のコメント:

  1. mk.conf に
    TOOLS_PLATFORM.gm4= #empty
    かな。

    返信削除
  2. 今日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か何か別のところで、うまくいくようになったのかもしれません。

    返信削除