パッチ修行

適当なのを探すのがアレですね。とりあえずソースファイルの数が少なくて 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 を送付

なのかどうなのか。