GNU Automake 1.19 fixes a 14-year-old dist bug
DEV Community

GNU Automake 1.19 fixes a 14-year-old dist bug

GNU Automake 1.19 Fixes a 14-Year-Old Dist Bug

GNU Automake 1.19 is out, the first new release of the widely used build-system tool in 15 months. The GNU Automake project's NEWS file and Phoronix's report, both published September 10, 2026, describe a release built almost entirely around fixing existing bugs rather than adding new features.

Automake is a tool that generates portable Makefiles from a simpler template. It is one part of the GNU "autotools" chain, alongside Autoconf and Libtool. It remains common in C and C++ projects that have not switched to newer build systems like Meson or CMake. Older projects tend to stick with it, since switching would mean rewriting the entire build setup. A 15-month gap between releases is long for a tool this widely depended on. Most of that time produced no visible change for users.

Version 1.19 adds only one real feature. The rest of its changes fix bugs that had been sitting in the tracker, some for over a decade.

Bug Fixes in Automake 1.19

The Release's Headline Fix

A 14-year-old bug, fixed

The release's headline fix addresses a problem that has existed for 14 years. Running two compression targets together, such as make dist-bzip2 dist-xz, used to fail. Automake 1.19 fixes this by having concurrent compression targets share intermediate tarballs through GNU make's .INTERMEDIATE mechanism, according to the project's NEWS file.

New Macro for Optional Archive Formats

A second, related change adds a new macro, AM_OPTIONAL_AUTOMAKE. It lets a project's build system generate an archive format, such as dist-bzip2 or dist-xz, only if the matching compression tool is actually installed. Formats without an available tool are skipped instead of failing the whole build. The release documentation describes the goal as building each archive "if the given tool for archive creation/compression is available and skip the ones otherwise without erroring out." The macro covers eight formats: dist-bzip2, dist-bzip3, dist-xz, dist-lzip, dist-zstd, dist-zip, dist-shar, and dist-tarZ.

Other Fixes in 1.19

Change What it fixes
make dist and tar failures make dist now fails when tar fails, instead of silently producing a truncated archive
Recursive make handling make dist no longer passes internal cleanup overrides down to nested operations, which used to break distcheck
License file detection COPYINGv2, COPYINGv3, COPYING.LESSERv2, and COPYING.LESSERv3 are now recognized for automatic distribution
BusyBox tar detection No longer misidentified as GNU tar based on --version output alone
Filename length checks Now reject only filenames that exceed the configured limit, not ones that exactly match it
Objective-C/C++ tagging Sources now get --tag=OBJC / --tag=OBJCXX automatically with Libtool 2.6.0 or newer

What This Means for Developers

If your project's build has ever failed when you ran two make dist-* targets in the same command, that failure is fixed now. You still need to upgrade to Automake 1.19 and regenerate your build files with autoreconf first. If you maintain a release script that assumes certain compression tools are always present, the new AM_OPTIONAL_AUTOMAKE macro is worth adopting. It removes the need to hand-write availability checks for tools like bzip2, xz, and zstd. Check your project's license file name before you upgrade, too. If it uses a variant such as COPYING.LESSERv3 that was not recognized before, Automake 1.19 will now pick it up and include it in distributed archives automatically. That only matters if you were relying on it being excluded.

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.