diff options
-rw-r--r-- | Documentation/coccinelle.txt | 19 | ||||
-rwxr-xr-x | scripts/coccicheck | 14 |
2 files changed, 33 insertions, 0 deletions
diff --git a/Documentation/coccinelle.txt b/Documentation/coccinelle.txt index b50ac7e126e8..1c26908ebc16 100644 --- a/Documentation/coccinelle.txt +++ b/Documentation/coccinelle.txt | |||
@@ -277,6 +277,25 @@ thus active by default. However, by indexing the code with | |||
277 | one of these tools, and according to the cocci file used, | 277 | one of these tools, and according to the cocci file used, |
278 | spatch could proceed the entire code base more quickly. | 278 | spatch could proceed the entire code base more quickly. |
279 | 279 | ||
280 | SmPL patch specific options | ||
281 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
282 | |||
283 | SmPL patches can have their own requirements for options passed | ||
284 | to Coccinelle. SmPL patch specific options can be provided by | ||
285 | providing them at the top of the SmPL patch, for instance: | ||
286 | |||
287 | // Options: --no-includes --include-headers | ||
288 | |||
289 | SmPL patch Coccinelle requirements | ||
290 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
291 | |||
292 | As Coccinelle features get added some more advanced SmPL patches | ||
293 | may require newer versions of Coccinelle. If an SmPL patch requires | ||
294 | at least a version of Coccinelle, this can be specified as follows, | ||
295 | as an example if requiring at least Coccinelle >= 1.0.5: | ||
296 | |||
297 | // Requires: 1.0.5 | ||
298 | |||
280 | Proposing new semantic patches | 299 | Proposing new semantic patches |
281 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 300 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
282 | 301 | ||
diff --git a/scripts/coccicheck b/scripts/coccicheck index 081ba5bff79c..f9293ab04a8b 100755 --- a/scripts/coccicheck +++ b/scripts/coccicheck | |||
@@ -5,6 +5,7 @@ | |||
5 | # version 1.0.0-rc11. | 5 | # version 1.0.0-rc11. |
6 | # | 6 | # |
7 | 7 | ||
8 | DIR="$(dirname $(readlink -f $0))/.." | ||
8 | SPATCH="`which ${SPATCH:=spatch}`" | 9 | SPATCH="`which ${SPATCH:=spatch}`" |
9 | 10 | ||
10 | if [ ! -x "$SPATCH" ]; then | 11 | if [ ! -x "$SPATCH" ]; then |
@@ -12,6 +13,9 @@ if [ ! -x "$SPATCH" ]; then | |||
12 | exit 1 | 13 | exit 1 |
13 | fi | 14 | fi |
14 | 15 | ||
16 | SPATCH_VERSION=$($SPATCH --version | head -1 | awk '{print $3}') | ||
17 | SPATCH_VERSION_NUM=$(echo $SPATCH_VERSION | ${DIR}/scripts/ld-version.sh) | ||
18 | |||
15 | USE_JOBS="no" | 19 | USE_JOBS="no" |
16 | $SPATCH --help | grep "\-\-jobs" > /dev/null && USE_JOBS="yes" | 20 | $SPATCH --help | grep "\-\-jobs" > /dev/null && USE_JOBS="yes" |
17 | 21 | ||
@@ -171,6 +175,16 @@ coccinelle () { | |||
171 | COCCI="$1" | 175 | COCCI="$1" |
172 | 176 | ||
173 | OPT=`grep "Option" $COCCI | cut -d':' -f2` | 177 | OPT=`grep "Option" $COCCI | cut -d':' -f2` |
178 | REQ=`grep "Requires" $COCCI | cut -d':' -f2 | sed "s| ||"` | ||
179 | REQ_NUM=$(echo $REQ | ${DIR}/scripts/ld-version.sh) | ||
180 | if [ "$REQ_NUM" != "0" ] ; then | ||
181 | if [ "$SPATCH_VERSION_NUM" -lt "$REQ_NUM" ] ; then | ||
182 | echo "Skipping coccinele SmPL patch: $COCCI" | ||
183 | echo "You have coccinelle: $SPATCH_VERSION" | ||
184 | echo "This SmPL patch requires: $REQ" | ||
185 | return | ||
186 | fi | ||
187 | fi | ||
174 | 188 | ||
175 | # The option '--parse-cocci' can be used to syntactically check the SmPL files. | 189 | # The option '--parse-cocci' can be used to syntactically check the SmPL files. |
176 | # | 190 | # |