Linux Daily Topics

2021年9月10日 Linusもたまには折れる!? "-Werror"問題は「"COMPILE_TEST"有効時」で決着

この記事を読むのに必要な時間:およそ 1 分

次期カーネル「Linux 5.15」の最初のリリース候補(RC1)版は9月12日に出る予定だが,Linusがマージしようとしたある機能 ―カーネルのコンパイラオプション「-Werror」の扱いをめぐって,ちょっとした論争が巻き起こった。

9月5日(米国時間⁠⁠,Linusはすべてのカーネルビルドにおいて,警告(warnings)をエラーとして処理するフラグ「-Werror」をデフォルトで有効とするパッチをマージした。

kernel/git/torvalds/linux.git -Linux kernel source tree

「我々はつねにクリーンなビルドを実践すべきであり,修正できないような警告なら無効にしたほうがいい⁠⁠ ― Linusのこの突然のマージに対し,LLVM Clangのビルドなどを担当するメンテナーのNick Desaulniers(Google所属)「-Werrorを有効にすることは支持したいが,すべての開発者に対してこれを適用するのは良い方法だと思わない」と,Linusの意向に理解を示しながらもすべてのカーネルビルドで-Werrorを有効にするのは厳しすぎるとして,適用範囲の緩和(Kbuildメンテナーのみ)を求めた。

[PATCH] Revert "Enable '-Werror' by default for all kernel builds" -Nick Desaulniers

Linusは-Werrorをデフォルトにしたのは「何年も味わってきた痛みへの反動」だとしている。Desaulniersへの返信でLinusは「警告が表示されるコードを担当するメンテナーなら,誰もが"この警告(が出る状態)が修正されればいいのに"と思っているはず」と自分も含めたメンテナーがビルドのたびに警告に悩まされている状況を強調,さらに付け加えて「僕は昨日,何時間も警告の削除に費やしてしまった。僕の時間は本来,他人のコードを直したり,警告を吐くようなクソコード(crap)を送ってくる人々がいるという事実に気付かされるためのものじゃない」と警告を修正する作業に心底辟易しているという。⁠僕の"no warnings"ポリシーはいまに始まったことじゃない」とあらためて記しているところからも,Linusが強い意志をもって-Werrorをデフォルト有効にしようとしたことがうかがえる。

Re: [PATCH] Revert "Enable '-Werror' by default for all kernel builds" -Linus Torvalds

もっとも,Desaulniersの丁寧で現実的な提案にはLinusも心が動いたようだ。9月7日,LinusはDesaulniersと同じGoogleに所属するMarco Eleverによるパッチをコミットしているが,これは「COMPILE_TEST」が有効な場合にのみ-Werrorがデフォルトになるという内容で,当初のLinus案からは大幅に緩和されている。ただし,Linusが主張する"no"warnings"は開発者のコーディングへの姿勢をあらためて問うものでもあり,今後のカーネル開発でも議論が続くトピックとなりそうだ。

著者プロフィール

階戸アキラ(かいとあきら)

起きてからまず海外ニュースサイトのハシゴをしないと1日を始められない海外ニュースウォッチャー。英語は英検準一級の資格を持ち,日本人と話すより英語圏の人のほうがウマが合う。