-*- org -*-


* How to install coccinelle 
------------------------------

** CVS 

export CVS_RSH=ssh
export CVSROOT=:ext:topps.diku.dk:/var/cvs/cocci

You must be a member of the cocci group on the topps.diku.dk machine.

Then 
cvs checkout coccinelle.

** Dependencies

See install.txt

** Tools

OCaml, Emacs.

** Compile

make depend
make


* How to use coccinelle 
------------------------------

** Test

** Tutorial 

I have put demos/examples.

** spatch, sgrep

** Emacs coccinelle mode

See emacs/cocci.el for instructions.

** Manual

See docs/manual.tex

* How to extend coccinelle 
------------------------------


Send us a semantic patch :)


* Documentation on coccinelle internals
----------------------------------------
- look at the papers from the coccinelle website:
    http://www.emn.fr/x-info/coccinelle
- look in docs from
    cvs checkout working-documents
- look at the code :)



** Software architecture 

See docs/graph-module-dependencies.ps

** coccinelle/ organization 

See authors.txt

* Being a coccinelle developer
------------------------------

** Conventions/advices
Do not use the 'open' OCaml module instruction.
Qualify, like in 'Cocci.full_engine x'.

Have a makefile in each directory with a clean:, depend:, 
and possibly all: and all.opt: targets.


* How to contribute to Linux 
------------------------------

** How to use git
** How to use spatch
** How to prepare a patch for Linus

* Tools 
------------------------------

** Emacs

** debugging: ocamldebug, the ocaml replay debugger

** profiling: gprof (but can also use the -profile option of spatch)

** CVS tricks 

*** To remove <directory>:

    cvs release -d <directory>

*** To update the code and allow the checkout of new directories but
pruning empty (obsolete but still there because CVS sux) directories:
 
    cvs update -d -P

*** To see what has changed since 2 days

    cvs diff -u -D "2 days ago"

*** To create a new CVS module:

    mkdir nameofdir; 
    cd nameofdir; 
    cvs import -m"your commit message" <nameofdir> yoyo start
    cd ..;
    rm -rf nameofdir;
    cvs checkout nameofdir

yoyo is a dummy name




* Coders
------------------------------

See authors.txt
