The current version of generate-kernel-patch does not remove preprocessor
statements that should have been removed because intended for another kernel
version (surrounded by #if LINUX_VERSION_CODE ... KERNEL_VERSION(...) / #endif).
The patch below fixes this.
I have verified the patch below by comparing the patch generated by the
old and the new versions of the generate-kernel-patch script:
$ diff p1 p2
7190d7189
< +#if defined(EXTRACHECKS)
7196c7195,7196
< +#endif
---
> > +
> > +
13056d13055
< +#ifdef STRICT_SERIALIZING
13058d13056
< +#elif !defined(SCSI_EXEC_REQ_FIFO_DEFINED)
13060d13057
< +#else
13062c13059,13062
< +#endif
---
> > +
> > +
> > +
> > +
Signed-off-by: Bart Van Assche <bart.vanassche@gmail.com>
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@392 d57e44dd-8a1f-0410-8b47-8ef2f437770f
The patch below implements the following changes:
- Make sure the output of the make command does not appear in the generated
kernel patch.
- Changed interpreter of scripts/specialize-patch from /usr/bin/gawk to
/usr/bin/awk in order to make sure this awk script also runs on systems
where awk is installed but not gawk.
- Added an extra evaluation rule such that expressions like (0) are rewritten
as 0.
- Fixed a spelling error.
- Expressions that can only be partially evaluated are now partially evaluated.
E.g. #if defined(EXTRACHECKS) && (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18))
becomes #if defined(EXTRACHECKS) && 0 in the output.
- Code between #if 0 / #endif or #if 1 / #endif is included in the generated
kernel patch, including the surrounding preprocessor directives.
- Preprocessor statements with spaces behind # are now recognized (e.g. "# if").
- Expression evaluator now supports ! (logical not) and () (braces).
- #elif is now evaluated correctly.
- Nested #if / #elif / #else / #endif are now interpreted correctly.
Signed-off-by: Bart Van Assche <bart.vanassche@gmail.com>
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@385 d57e44dd-8a1f-0410-8b47-8ef2f437770f
The patch below contains a script that removes C preprocessor tests on the
LINUX_VERSION_CODE macro, depending on the kernel version that was passed as
an argument to that script. Furthermore, the generate-kernel-patch script has
been modified such that its output is filtered by the specialize-patch script.
This eliminates another class of checkpatch errors.
Note: due to the way the specialize-patch script is implemented, #if 0 and
#if 1 statements are also processed.
The patch below has been verified as follows:
- Checked that checkpatch does no longer complain about LINUX_VERSION_CODE
on the generated patch.
- Checked that the generated kernel patch applies cleanly to the 2.6.25.4
kernel.
- Checked that the patched kernel compiles and installs cleanly, and that
after reboot it was possible to load the iscsi-scst and ib_srpt kernel modules.
I will wait with sending more patches until this and the previous two patches
have been reviewed and/or applied.
Signed-off-by: Bart Van Assche <bart.vanassche@gmail.com>
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@384 d57e44dd-8a1f-0410-8b47-8ef2f437770f