pycocci man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

pycocci(1)							    pycocci(1)

NAME
       pycocci - Coccinelle wrapper for SmPL patch development

       pycocci [-h | --help] [-p | --profile-cocci] [-j | --jobs <job-digit> ]
       [-v | --verbose] [-s | --show-proof] <SmPL-patch.cocci> <target> ]

DESCRIPTION
       pycocci is wrapper around spatch, it enables a set of default arguments
       and  also uses a bit of heuristics to infers which arguments you likely
       want enabled. It takes two arguments, the <SmPL-patch.cocci>  and  your
       <target>	 which	can  either be a directory or file. The actual command
       run is always displayed on standard output.

       Coccinelle spatch is a very rich tool, it provides a large set of  fea‐
       tures for use with the Coccinelle engine. Typical day to day SmPL patch
       development may only require a base set of features though, we can also
       infer a set of features depending on your target. pycocci enables a set
       of flags which over time have been determined to be required for day to
       day  Linux  kernel development, for instance through a cronjob, it also
       uses a set of heuristics to infer a set of arguments to	use  depending
       on your release of Coccinelle. pycocci also checks to see which version
       of Coccinelle you have installed and looks to enable arguments  depend‐
       ing on what version of Coccinelle you have installed.

       pycocci	can  also  be  used to help write and verify SmPL patches when
       replacing a regular patch series. pycocci checks the version of	spatch
       installed  and  based  on this enables a set of features. This man page
       will document what options it always enables by	default,  why  it  has
       done  this  and	it  will  also	document the heuristics used and logic
       behind them.

DEFAULT ARGUMENTS
       By default pycocci will always enable when running spatch:

       --in-place

       --recursive-includes

       --relax-include-path

       --timeout 120

       --dir <target>

       The --in-place option is enabled by default as most  development	 these
       days  happens  on  version control systems and built-in version control
       systems can typically display differences better.

       --relax-include-path and --relax-include-path are  enabled  by  default
       given  that  at least for Linux kernel development some C files tend to
       include headers in paths only specified by a target's Makefile  through
       utilities  such	as  subdir-ccflags or ccflags-y making it difficult to
       ensure all required header files are read by Coccinelle. We are	agres‐
       sive with headers search and inclusion.

       A  default timeout of 120 seconds is used by default. Not using a time‐
       out is typically not a good idea. The value of 120 is used  by  default
       and  is	considered  significantly  large  enough  to support most SmPL
       patches.

       We make use of --dir to enable use of a target directory and its subdi‐
       rectories recursively.

MULTITHREAD ARGUMENT HEURISTICS
       Coccinelle  spatch  prior  to release 1.0.0 provided support for multi‐
       threading but required the developer to spawn each thread on their own,
       and  provide  an	 index	reference number identifying each thread. Coc‐
       cinelle would divide the amount of work required to be done  and	 based
       on  the	index  grant  the  thread  a specific set of work.  Some shell
       scripts could be used to help split the work out for you.  pycocci  was
       originally  written  to supercede these scripts and use Python's multi‐
       threaded support,  while	 also  enabling	 some  sensible	 arguments  by
       default.

       If  you	have a version of spatch older than 1.0.2 pycocci will provide
       its own built-in multithreaded  batched	solution,  the	spatch	--jobs
       argument	 is  enabled  on  spatch >= 1.0.2. The spatch --jobs arguments
       takes advantage of Coccinelle's built-in paramap support,  and  perfor‐
       mance-wise yields better results than pycocci's multithreaded solution.
       The number of threads used will always default to the number of	number
       of  CPUs	 on  your system, this is taken from what Python multiprocess‐
       ing.cpu_count() returns. You can override the number of threads pycocci
       will use with the --jobs argument.

INDEXING ARGUMENT HEURISTICS
       Coccinelle pycocci supports using a series of indexing alternatives:

       --use-glimpse

       --use-gitgrep

       --use-coccigrep

       Coccinelle  puts	 the  onus  of which indexing feature to enable on the
       developer.  pycocci will figure things out for you and make  sure  that
       only  supported options are used in specific supported releases of coc‐
       cinelle. So for instance, although --use-gitgrep has been available  on
       1.0.1  pycocci  will only it on 1.0.2. The order of preference for what
       indexing option to uses the following heuristics: If your target direc‐
       tory  has  a  .glimpse_index file we assume you will want to use --use-
       glimpse. Glimpse is now released under the ISC license and performance-
       wise  is known to work as the best indexing alternative, this is why we
       always check for a glimpse index first. This heuristic is however  lim‐
       ited,  you  need	 the  target  path  to be the base directory where the
       .glimpse_index file exists, otherwise pycocci will not recurse below on
       sub-directories.	 If  we	 determine glimpse cannot be used then pycocci
       will use git rev-parse --toplevel on the specified path to determine if
       the  provided  path is part of a git directory to enable --use-gitgrep.
       Although coccinelle provides a fail-safe mechanism  to  enable  use  of
       --use-gitgrep  and  fall back onto --use-coccigrep if a git tree is not
       used, we avoid the failure case ahead of time. pycocci  will  be	 tuned
       through	each release to infer the best indexing option known to use on
       your target path.

       Further	information  about  spatch   is	  available   at   http://coc‐
       cinelle.lip6.fr/.

OPTIONS
       Here is a summary of the options available on pycocci:

SYNOPSIS
       pycocci [-h | --help] [-p | --profile-cocci] [-j | --jobs] [-v | --ver‐
       bose] [-s | --show-proof] <SmPL patch> <target> ]

       -h | --help
	      print short help menu

       p | --profile-cocci
	      Profile the <SmPL patch> when run against <target>

       j | --jobs <job-digit>
	      Override the default number of jobs to use with <job-digit>. You
	      really  only  need this if the heuristics for the default number
	      of jobs is determined to be incorrect.

       v | --verbose
	      Output all possible information when  run.  By  default  pycocci
	      will provide no output unless an error is found.

       s | --show-proof
	      Show  that  the  <SmPL-patch.cocci>  can	replace	 a  series  of
	      patches. The <SmPL-patch.cocci> must have a  .cocci  postfix.  A
	      series  of  patches are expected to exist in the directory named
	      after the <SmPL-patch.cocci> with the  .cocci  postfix  removed.
	      pycocci  will  use  git  in order to show a proof of equivalence
	      between the two. A new git branch will be created	 and  used  to
	      apply  the  series  of  patches ("pycocci-patch-8-random-chars")
	      onto the <target>, another git branch will be created  and  used
	      to apply the <SmPL-patch.cocci> ("pycocci-smpl-8-random-chars").
	      pycocci will display name of  the	 newly	created	 branches  and
	      finally	provide	 the  output  of  git  diff  --stat  <pycocci-
	      patch-8-random-chars>..<pycocci-smpl-8-random-chars>. You should
	      see  no changes, and therefore a perfect SmPL patch equivalence,
	      when the diffstat on the ouput shows  no	changes.  The  way  to
	      interpet	a  positive diffstat is that the <SmPL-patch.cocci> is
	      introducing more changes than  the  patch	 series.  The  way  to
	      interpret	 a negative diffstat is that the <SmPL-patch.cocci> is
	      lacking some changes in place on the patch series. pycocci  will
	      use  git rev-parse --toplevel against the <target> to see if the
	      <target> is part of a git tree. If the <target> is not part of a
	      git  tree	 a git tree is created for you on <target> if <target>
	      is a directory or on the base directory of <target> if  <target>
	      is a file.  pycocci will return you to the branch previously set
	      on the <target> if one was previously set, otherwise  if	a  new
	      git  tree	 was created for you pycocci will set the tree back to
	      the master branch. Each run of pycocci --show-proof will	create
	      two  new	git branches. 8 random characters are postixed to each
	      new git branch created to avoid conflicts with previous runs.

AUTHOR
       pycocci and this man page was written by Luis R. Rodriguez  <mcgrof@do-
       not-panic.com>

REPORTING BUGS
       Send an mail to <cocci@systeme.lip6.fr>

COPYRIGHT
       Copyright  2015,	 Luis  R.  Rodriguez pycocci is free software: you can
       redistribute it and/or modify it under the terms	 of  the  GNU  General
       Public  License as published by the Free Software Foundation, according
       to version 2 of the License.

SEE ALSO
       spatch(1), pycocci(1), diff(1)

				 July 20, 2015			    pycocci(1)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net