パッチ修行
適当なのを探すのがアレですね。とりあえずソースファイルの数が少なくて checkpatch.pl なエラーの数が適当で、現時点でコンパイル対象になっている serqt_usb2 をチョイスしてみることにする方向ですが、これ何のドライバなんでしょ。
$ cat drivers/staging/serqt_usb2/Makefile obj-$(CONFIG_USB_SERIAL_QUATECH2) += serqt_usb2.o $ grep QUATECH .config CONFIG_COMEDI_QUATECH_DAQP_CS=m CONFIG_USB_SERIAL_QUATECH2=m $
usb serial 系なのかな。中身覗いてみたら以下なナニが
/* Version Information */ #define DRIVER_VERSION "v2.14" #define DRIVER_AUTHOR "Tim Gobeli, Quatech, Inc" #define DRIVER_DESC "Quatech USB to Serial Driver"
ちなみに出てる warning ですが _line over 80 characters_ でしてインデントが深い部分がある模様。あと属性な変数名自体が長かったりする、ってのもありますね。
とは言え、これもスルーした方が良さげな気がしてきました。
初心者的に何をチョイスするかがアレ
探す、というのも大変ですね。条件的に
- ソースファイルの数が少ない
- checkpatch.pl のエラーが少ない
- .config に記述があってコンパイル対象になってる
という位か。次に候補にあがったのは cptm1217 というナニ。
$ find drivers/staging/cptm1217/ -name "*.[ch]"|xargs ./scripts/checkpatch.pl --file --terse drivers/staging/cptm1217/cp_tm1217.h:5: ERROR: open brace '{' following struct go on the same line total: 1 errors, 0 warnings, 9 lines checked drivers/staging/cptm1217/clearpad_tm1217.c:400: WARNING: quoted string split across lines total: 0 errors, 1 warnings, 676 lines checked $ cat drivers/staging/cptm1217/Makefile obj-$(CONFIG_TOUCHSCREEN_CLEARPAD_TM1217) += clearpad_tm1217.o $ grep TM1217 .config CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m $
この程度であればなんとかなりそげ。
changelog
以下なカンジになるのかどうか。
- Moved open brace '{' following struct to same line
- Refactored split printk strings onto a single line
微妙だなぁ。とりあえず微妙な changelog は適切なのかどうか。
って lkml 確認してみたら以下なナニを発見。
Subject [PATCH 6/8] net/ipv6/fib6_rules.c: Checkpatch cleanup fib6_rules.c:26: ERROR: open brace '{' following struct go on the same line Signed-off-by:
うーん。でも標題が_ファイル名: Checkpatch cleanup で changelog がエラーメセジ、なパターンは多いみたいですね。今回はこれで送付してみようかな。
つーことは、標題は CHeckpatch cleanup で changelog は checkpatch.pl のエラーメセジを記載、ということになるのか。
つうことで
- branch 作って
- 盛り込んで
- commit 作って
- patch 作って
- 動作試験して
- 送付
ということになるのかどうなのか。以下、順にログがアレであれば控える方向で。
branch 作成
なんか裏で make が動いているのですがorz
とりあえず盛り込んで checkpatch.pl なエラーが減ったのは確認。diff が以下。
diff --git a/drivers/staging/cptm1217/cp_tm1217.h b/drivers/staging/cptm1217/cp_tm1217.h index a0ce31d..30bad35 100644 --- a/drivers/staging/cptm1217/cp_tm1217.h +++ b/drivers/staging/cptm1217/cp_tm1217.h @@ -1,8 +1,7 @@ #ifndef __LINUX_I2C_CP_TM1217_H #define __LINUX_I2C_CP_TM1217_H -struct cp_tm1217_platform_data -{ +struct cp_tm1217_platform_data { int gpio; /* If not set uses the IRQ resource 0 */ };
make もエラーを吐いてないのでここでとりあえず commit を作るのか。
$ git add cp_tm1217.h $ git commit
commit しようとしてエラーメセジを控えていないことに気づく。
- git stash して
- git checkout master して
- checkpatch.pl でエラーメセジ確認
- 控える
cptm1217/cp_tm1217.h:5: ERROR: open brace '{' following struct go on the same line
- 元に戻す
- git checkout cptm1217
- git stash pop
で、commit すれば良いのか。あ、add も必要らしい。コミットメセジは以下で試験。
Checkpatch cleanup cptm1217/cp_tm1217.h:5: ERROR: open brace '{' following struct go on the same line Signed-off-by: Toshiaki Yamane <yamanetoshi@gmail.com>
で、パッチを作ってみます。
$ git format-patch -o ~/tmp/patch.20120715/ origin
中身を見てみるに以下。
Subject: [PATCH] Checkpatch cleanup cptm1217/cp_tm1217.h:5: ERROR: open brace '{' following struct go on the same line Signed-off-by: Toshiaki Yamane <yamanetoshi@gmail.com>
Subject が微妙。コミットメセジな先頭行にパスな情報も入れれば良いのか。
巻き戻し
git reset --hard ~HEAD で良いのかな。これだと修正内容もステ、になるのかも、と言ってたらそうでした。再度盛り込んで commit 作ります。
つうか、この手順はダウトな気がしてきた。あ、でも標題が以下なカンジであれば OK なのかなぁ。
[PATCH 7/8] staging/ft1000-pcmcia: fix checkpatch warnings
あとは changelog に以下が列挙されてるカンジ。
The below checkpatch warns fixed, drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c:38: ERROR: that open brace { should be on the previous line drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c:45: ERROR: that open brace { should be on the previous line drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c:57: ERROR: that open brace { should be on the previous line Signed-off-by: Devendra Naga <devendra.aaru@gmail.com>
むむ。これ 7/7 な patch だな。でもこないだ懇切丁寧に changelog な指導が入った、という意味では沢山ある場合、集約した方が良いのかどうなのか。
とりあえず今回はこれ的フォーマットで送付してみます。
もうひとつ修正
以下か。
drivers/staging/cptm1217/clearpad_tm1217.c:400: WARNING: quoted string split across lines
commit 作ってるので、このままアレすれば良いのかな。ちなみに現時点での git log てき直前 commit なログが以下。
commit 6dfe26f6351b18aeb1a361856ed7abde5c6b9e8c Author: Toshiaki Yamane <yamanetoshi@gmail.com> Date: Sun Jul 15 21:48:40 2012 +0900 staging/cptm1217/cp_tm1217.h: fix checkpatch warnings drivers/staging/cptm1217/cp_tm1217.h:5: ERROR: open brace '{' following struct go on the same line Signed-off-by: Toshiaki Yamane <yamanetoshi@gmail.com>
とりあえず 次の TODO を確認。
$ find drivers/staging/cptm1217/ -name "*.[ch]"|xargs ./scripts/checkpatch.pl --file --terse drivers/staging/cptm1217/clearpad_tm1217.c:400: WARNING: quoted string split across lines total: 0 errors, 1 warnings, 676 lines checked $
以下に修正。直上なカンジだと checkpatch.pl が駄目って言ってますね。
dev_err(ts->dev, "cp_tm1217: GPIO to IRQ failedi, error %d\n", retval);
で、以下なナニで commit 作成。
staging/cptm1217/clearpad_tm1217.c: fix checkpatch warnings drivers/staging/cptm1217/clearpad_tm1217.c:400: WARNING: quoted string split across lines Signed-off-by: Toshiaki Yamane <yamanetoshi@gmail.com>
そして patch を作成。
$ git format-patch -o ~/tmp/patch.20120715/ origin
もう随分燃料が入ってるので、これを云々するのは明日ってことにします。残りのナニとしては
- 作った patch を apply してみて動作確認
- 自分に patch を送付
- lkml 方面に patch を送付
なのかどうなのか。