$ quilt check
[ Home | Feed | Twitter | Vector Art | Ascii Art | Tutorials ]
Linux kernel developers adhere to a coding style, documented in Documentation/CodingStyle. Patches submitted to the Linux kernel, should comply with the style. The kernel tree has a Perl script scripts/checkpatch.pl that can be used for checking style violations. People who use quilt to manage their patches might find it convenient if the style checking facility is built to quilt. So for example to check the topmost patch, one would just do
$ quilt check
It turns out this is not hard after all.
All quilt sub-commands are scripts located at /usr/share/quilt (referred to as $QUILT_DIR). To implement your own sub-command just add a script to this directory. I started with a very simple quilt sub-command top and made the following changes to create check.
--- top 2006-11-27 15:05:03.000000000 +0530 +++ check 2009-04-12 19:05:41.000000000 +0530 @@ -19,12 +19,11 @@ usage() { - printf $"Usage: quilt top\n" + printf $"Usage: quilt check\n" if [ x$1 = x-h ] then printf $" -Print the name of the topmost patch on the current stack of applied -patches. +Run checkpatch.pl on the topmost patch. " exit 0 else @@ -58,7 +57,16 @@ fi top=$(find_top_patch) || exit 2 -echo "$(print_patch $top)" +top_file=$(patch_file_name $top) + +checkpatch=$QUILT_PATCHES/../scripts/checkpatch.pl +if [ -e $checkpatch ]; +then + $checkpatch --emacs --strict $top_file +else + echo "checkpatch.pl not found. Is this a kernel tree?" + exit 1 +fi ### Local Variables: ### mode: shell-script
The changes are fairly straight forward. quilt has a library of useful functions in $QUILT_DIR/scripts/patchfns. The library is included in all sub-commands as the first step. The library inclusion is not shown in the above patch.
Instead of printing the topmost patch, the following operations are performed.
We determine the filename of the patch using the patch_file_name function.
quilt's patches directory path is available using $QUILT_PATCHES variable. We check if the checkpatch.pl is present, by looking for a file $QUILT_PATCHES/../scripts/checkpatch.pl. Note that, here we are assuming that quilt's patches directory is located at the Linux kernel’s root directory.
We then invoke checkpatch.pl with the patch filename as argument.
This can be taken a little further and the refresh sub-command can be modified to perform the check after refreshing the patch. This could be the default behaviour of the refresh sub-command, or the behaviour could be invoked through an option to refresh.
Permalink | Add Comment | Share: Twitter, Facebook, Buzz, ... | Tags: linux-kernel