makeしたLinuxカーネルのバージョンに+ (プラス) が付いてしまう
Linuxカーネルをmakeすると、バージョンに+ (プラス) が付いたり付かなかったりします。これが厄介でならないので、なんとかやめさせられないか調べてみました。
結論から言うと、コードをGitで管理していて、かつdirtyな (コミットされていない変更が作業ディレクトリに存在する) 状態の場合に+が付きます。無効化するconfigはありません。私は参考のリンク先にあるようにscripts/setlocalversion
の該当する処理をコメントアウトしてしまいましたが、あまりよいことをしている感じはしないので、実践するかどうかの判断は読者のみなさんにお任せします。
# scm version string if not at a tagged commitif test "$CONFIG_LOCALVERSION_AUTO" = "y"; then # full scm version string res="$res$(scm_version)"#else# # append a plus sign if the repository is not in a clean# # annotated or signed tagged state (as git describe only# # looks at signed or annotated tags - git tag -a/-s) and# # LOCALVERSION= is not specified# if test "${LOCALVERSION+set}" != "set"; then# scm=$(scm_version --short)# res="$res${scm:++}"# fifi
余談ですが、シェルスクリプトではelse節の中身が空だとsyntax errorになるんですね。今まで知りませんでした。
それにしても、なんでこんな仕様になっているのでしょうか。開発中に+ありと+なしのどっちが更新されるのか常に意識しなければならないのはほんとに面倒です。GRUB_DEFAULTに頼れなくなってしまいますし。LOCALVERSION_AUTOでリビジョンが付くことと矛盾しないようにするためでしょうかね。だとしたらLOCALVERSION_AUTOを使っていない時には+を付ける処理も無効化してほしいものですが。