GNU Automake 1.19、14年来のdistバグを修正
GNU Automake(オートメイク)1.19は15か月ぶりのリリースで、make dist-bzip2 dist-xzのような同時実行コマンドを壊していた14年来のバグを修正しました。
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-bzip2やdist-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はそれを自動的に認識し、配布アーカイブに含めるようになります。これが問題になるのは、これまでそれが除外されることをあてにしていた場合だけです。
出典
- GNU Automake 1.19 Released With More Than One Year Worth Of Fixes - Phoronix
- Automake NEWS - v1.19 - GNU Savannah
関連記事

LLVM、ClangIRを既定でビルドするか議論
ClangIRをClangに既定で組み込むRFCが出ました。使うにはフラグが必要ですが、ビルド時間が2倍以上になるという見積もりもあります。

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

改ざんされたstripがNixOS全体にバックドアを仕込める
研究者が、Ken Thompsonのtrusting-trust攻撃をコンパイラではなくGNU stripで構成し、NixOSインストーラのほぼ全バイナリにバックドアを仕込みました。