GNU Automake 1.20 改用 GPLv3 並加入 jobserver 支援

GNU Automake 於十一月七日發布 1.20 穩定版,距離上一個版本 1.19 只有約兩個月。維護者 Kamila Szewczyk 在 autotools-announce 郵件列表公開消息,指新版本把授權由 GPLv2 或更新版本升級至 GPLv3 或更新版本,同時加入 jobserver 支援、錯誤時刪除目標檔案等選項,並修正多項長年存在的建置問題。由 1.19 到 1.20 的 58 天內,共有三位貢獻者提交 104 個 commit,其中 Szewczyk 佔 99 個。[1]

授權與 Autoconf 看齊

NEWS 指出,轉用 GPLv3+ 是跟隨 Autoconf 的做法,亦符合自由軟體基金會建議新項目採用 GPLv3 或更新版本的立場。圖言強調,這次授權變更不影響 Automake 產生的 Makefile.in,使用 Automake 的項目也不需要因此改用 GPL;隨發行版本附帶的支援檔案,原有例外條款繼續有效。

編譯與連結可用 make 的 jobserver

1.20 新增 configure 選項 –enable-jobserver,讓編譯器與連結器繼承 GNU make 的 pipe jobserver,例如配合 GCC 的 -flto=jobserver 進行並行連結。新選項 delete-on-error 會在產生的 Makefile.in 加入 .DELETE_ON_ERROR 特殊目標,當某條規則執行失敗並已改動目標檔案時,make 會刪除該目標,避免下次建置誤以為目標已完成;此選項只對 GNU make 有效。另設 print-distfiles 目標,列出 make dist 將會打包的檔案。

減少對 TeX 的依賴

過往 distcheck 預設會執行 make dvi,令沒有安裝 TeX 的環境無法完成發布檢查。1.20 起 distcheck 不再預設執行 dvi,如仍要驗證 Texinfo 文件能否建置,可在 Makefile.am 設定 AM_DISTCHECK_DVI_TARGET 為 dvi、pdf 或 html。源碼標籤亦重新整理,歷史 ChangeLog、開發規劃與 NEWS-future 移至 attic/ 目錄,維護中的 TAP driver 則保留為 lib/tap-driver.sh。

修正與建置安全

多項舊問題在這次版本處理:LIBADD 或 LDADD 對其他目標物件的依賴,不再受目標處理次序影響;distcheck 會檢測過載後遺留在安裝腳本的符號連結,包含斷開空連結;VPATH 建置輸出的 lex 與 yacc 檔案,不再帶有指向建置目錄的 #line 指令;dist-zstd 正確處理數值形式的 ZSTD_CLEVEL;lex 與 yacc 規則會先建立輸出目標。安全方面,configure 現時拒絕包含 空格、\`、() 的源碼目標路徑,亦會對含有 ; 或 | 的 srcdir 報錯 “unsafe srcdir value”,避免路徑被當成 shell 重定向或語法。

重拾建置系統地位

Szewczyk 在公告中表達,對 GNU Build System(Autotools)整體有較大規劃,會繼續解決舊有限制並加入新功能,最終目標是讓它再次成為新項目首選建置系統。在 CMake 與 Meson 已成為主流的今天,這個目標仍需要時間驗證。[1]

參考資料

[1] automake 1.20 穩定版公告(2026-11-07)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*