Skip to content
Tech AI Wire

GNU Automake 1.19、14年来のdistバグを修正

GNU Automake(オートメイク)1.19は15か月ぶりのリリースで、make dist-bzip2 dist-xzのような同時実行コマンドを壊していた14年来のバグを修正しました。

著者 Tech AI Wire Team

3 分で読めます

机の上のワイドモニターに、読み取れないほど小さなコードがエディタいっぱいに表示されている。横にはデスクランプとキーボードがある。

数字で見る

since Automake's previous release, 1.18.1
15 months
age of the concurrent-compression bug now fixed
14 years
archive formats the new AM_OPTIONAL_AUTOMAKE macro can build conditionally
8

GNU Automake 1.19が公開されました。広く使われているビルドシステムツールの、15か月ぶりの新リリースです。GNU AutomakeプロジェクトのNEWSファイルPhoronixの報道は、いずれも2026年9月10日に公開され、このリリースがほぼ全面的に既存のバグ修正に充てられており、新機能の追加はほとんどないと伝えています。

Automakeは、より単純なテンプレートから移植性の高いMakefileを生成するツールです。AutoconfやLibtoolと並ぶ、GNUの「autotools」チェーンの一部です。MesonやCMakeといった新しいビルドシステムに移行していないC言語やC++のプロジェクトでは、いまも広く使われています。古いプロジェクトほどこれを使い続ける傾向があります。移行するとなると、ビルド設定全体を書き直すことになるからです。

リリース間隔が15か月というのは、これほど広く依存されているツールとしては長い方です。その期間の大半、ユーザーにとって目に見える変化はありませんでした。バージョン1.19が加える本当に新しい機能は一つだけです。残りの変更は、課題管理システムに長く放置されていた、中には10年以上前からのバグの修正です。

14年来のバグを修正

このリリースの目玉となる修正は、14年間存在していた問題に対応するものです。make dist-bzip2 dist-xzのように、二つの圧縮ターゲットを同時に実行すると、これまでは失敗していました。Automake 1.19は、同時実行される圧縮ターゲットがGNU makeの.INTERMEDIATE機構を通じて中間の圧縮アーカイブを共有するようにすることで、これを修正しました。プロジェクトのNEWSファイルによる説明です。

もう一つ、これに関連する変更として、新しいマクロAM_OPTIONAL_AUTOMAKEが追加されました。これにより、プロジェクトのビルドシステムは、対応する圧縮ツールが実際にインストールされている場合に限り、dist-bzip2dist-xzのようなアーカイブ形式を生成するようになります。ツールが利用できない形式はスキップされ、ビルド全体が失敗することはありません。リリースの文書は、この目的を「アーカイブ作成・圧縮用のツールが利用可能であればそのアーカイブを作り、そうでなければエラーを出さずにスキップする」ことだと説明しています。このマクロはdist-bzip2、dist-bzip3、dist-xz、dist-lzip、dist-zstd、dist-zip、dist-shar、dist-tarZの8つの形式に対応しています。

1.19のそのほかの修正

変更点何を修正したか
make distとtarの失敗make distは、tarが失敗した場合に黙って壊れたアーカイブを作るのではなく、失敗するようになった
再帰的なmakeの扱いmake distが内部のクリーンアップの上書き設定を入れ子の処理に伝えなくなり、以前はdistcheckを壊すことがあった問題を解消
ライセンスファイルの検出COPYINGv2、COPYINGv3、COPYING.LESSERv2、COPYING.LESSERv3が、自動配布のために認識されるようになった
BusyBox tarの検出--versionの出力だけを根拠にGNU tarと誤認識しなくなった
ファイル名の長さチェック設定された上限を超えるファイル名だけを拒否するようになり、上限にちょうど一致するものは拒否しなくなった
Objective-C/C++のタグ付けLibtool 2.6.0以降では、ソースに自動的に--tag=OBJC / --tag=OBJCXXが付くようになった

開発者にとっての意味

同じコマンドで二つのmake dist-*ターゲットを実行して失敗した経験があるなら、その失敗はもう修正されています。ただし、そのためにはまずAutomake 1.19にアップグレードし、autoreconfでビルドファイルを再生成する必要があります。

特定の圧縮ツールが常に存在すると仮定したリリーススクリプトを保守しているなら、新しいAM_OPTIONAL_AUTOMAKEマクロを採用する価値があります。bzip2、xz、zstdのようなツールの有無を手作業でチェックするコードが不要になります。

アップグレードの前に、プロジェクトのライセンスファイル名も確認してください。これまで認識されていなかったCOPYING.LESSERv3のような形式を使っている場合、Automake 1.19はそれを自動的に認識し、配布アーカイブに含めるようになります。これが問題になるのは、これまでそれが除外されることをあてにしていた場合だけです。

出典

  1. GNU Automake 1.19 Released With More Than One Year Worth Of Fixes - Phoronix
  2. Automake NEWS - v1.19 - GNU Savannah

関連記事

A terminal running benchcmp to compare a scalar Go benchmark against a vectorised one, with the delta column showing the speed-up.
Coding

Debian Code Search、最後のcgo依存を削除

Michael Stapelberg氏が7年前のCライブラリを、実験的なSIMDパッケージを使った純粋なGo実装に置き換え、C版と同等の速度に到達しました。