カーネルモジュールのコンパイル
make-kpkg が云々とか紆余曲折があったんですがカーネルパケジが導入されてなくてもなんとかなることにようやく行きついた。
以下な Makefile があるので
obj-$(CONFIG_ASUS_OLED) += asus_oled.o
ググッてみると、-C でカーネルソースのディレクトリ、SUBDIRS にカレントディレクトリを渡してあげれば良いのかどうか。
$ make -C $(KERNELSRCDIR) M=`pwd` modules
を、イケた。これでとりあえず commit 作ることが可能な状態になったのか。
commit 作るの巻
今居る branch を確認して drivers/staging/asus_oled/asus_oled.c を add して commit を作成。メセジは以下なカンジででっち上げます。
Fix checkpatch.pl issue. -printk(KERN_ERR, to pr_err(... Signed-off-by: Toshiaki Yamane <yamanetoshi@gmail.com>
で、パッチ取得。
$ mkdir ~/tmp/patch $ git format-patch -o ~/tmp/patch origin
ちょっと設定盛り込み
ええと、gmail 経由で送付したいので以下を確認させて頂きつつ盛り込みを。
以下を導入すれば良いのかな
- git-email
- msmtp
- ca-certificates
$ sudo apt-get install -fy git-email msmtp ca-certificates
で、上記ドキュメント参照しつつ ~/.msmtprc を書いて git config してやれば良いのかな。で、できたパッチをもっかい checkpatch.pl に吸わせてますね。
$ ./scripts/checkpatch.pl ~/tmp/patch/0001-Fix-checkpatch.pl-issue.patch total: 0 errors, 0 warnings, 23 lines checked /home/rms/tmp/patch/0001-Fix-checkpatch.pl-issue.patch has no obvious style problems and is ready for submission. $
で、早速ですが自分にパッチ送付してみます。
$ git send-email --to hoge@fuga ~/tmp/patch/0001-Fix-checkpatch.pl-issue.patch
~/.msmtprc の属性が 600 になってなくて送付失敗したのは秘密。
試験
ええと、gmail に送付したんですが mbox 形式に変換できん。とりあえず diff 取得して
$ git diff origin HEAD diff --git a/drivers/staging/asus_oled/asus_oled.c b/drivers/staging/asus_oled/asus_oled.c index 510d796..f63c1d3 100644 --- a/drivers/staging/asus_oled/asus_oled.c +++ b/drivers/staging/asus_oled/asus_oled.c @@ -782,20 +782,20 @@ static int __init asus_oled_init(void) oled_class = class_create(THIS_MODULE, ASUS_OLED_UNDERSCORE_NAME); if (IS_ERR(oled_class)) { - printk(KERN_ERR "Error creating " ASUS_OLED_UNDERSCORE_NAME " class\n"); + pr_err("Error creating " ASUS_OLED_UNDERSCORE_NAME " class\n"); return PTR_ERR(oled_class); } retval = class_create_file(oled_class, &class_attr_version.attr); if (retval) { - printk(KERN_ERR "Error creating class version file\n"); + pr_err("Error creating class version file\n"); goto error; } retval = usb_register(&oled_driver); if (retval) { - printk(KERN_ERR "usb_register failed. Error number %d\n", retval); + pr_err("usb_register failed. Error number %d\n", retval); goto error; } $
試験用の branch 作成して
$ git checkout master Switched to branch master $ git checkout -b testpatch Switched to a new branch testpatch $
て patch のアテ方が分からんなorz
てか、git apply というソレがあるの?
$ git apply ~/tmp/patch/0001-Fix-checkpatch.pl-issue.patc
お、できたできた。checkpatch.pl も make も無問題 (当たり前)。後始末をして元に戻ります。
$ git checkout drivers/staging/asus_oled/asus_oled.c $ git checkout asus_oled $ git branch -d testpatch
で、get_maintainer.pl するんですか。
$ ./scripts/get_maintainer.pl ~/tmp/patch/0001-Fix-checkpatch.pl-issue.patch Jakub Schmidtke <sjakub@gmail.com> (odd fixer:STAGING - ASUS OLED) Greg Kroah-Hartman <gregkh@linuxfoundation.org> (supporter:STAGING SUBSYSTEM,commit_signer:6/7=86%) Pekka Paalanen <pq@iki.fi> (commit_signer:2/7=29%) Toshiaki Yamane <yamanetoshi@gmail.com> (commit_signer:1/7=14%) Peter Huewe <peterhuewe@gmx.de> (commit_signer:1/7=14%) "Ken O'Brien" <kernel@kenobrien.org> (commit_signer:1/7=14%) devel@driverdev.osuosl.org (open list:STAGING SUBSYSTEM) linux-kernel@vger.kernel.org (open list) $
む、TODO 見た方が良さげ。
$ cat drivers/staging/asus_oled/TODO TODO: - checkpatch.pl cleanups - sparse fixes - audit the userspace interface - sysfs vs. char? - Documentation/ABI/ needs to be added - put the sample .txt files and README file somewhere. Please send patches to Greg Kroah-Hartman <greg@kroah.com> and Cc: Jakub Schmidtke <sjakub@gmail.com> $
つうことで以下かな。
$ git send-email --to greg@kroah.com --cc sjakub@gmail.com \ --cc linux-kernel@vger.kernel.org \ ~/tmp/patch/0001-Fix-checkpatch.pl-issue.patc
投げますー
別途
整理してエントリ投入するかも。