[Date Prev][Date Next] [Chronological] [Thread] [Top]

Variadic Debug() macro

I think it is time to modernise the debug logging a bit, this would make
our life easier when logging and running make (with the copious warnings
compilers will generate unless one passes -Wno-format-extra-args).

The major obstacle to this is the thousands of lines that need
adjusting, luckily there is a tool named Coccinelle[0], co-developed
with the Linux kernel. It can work with so-called semantic patches and
apply them on a code base to prepare a final patch.

The work so far (that seems to pass the same tests that master does on
loglevel any) is available here:

If you want to replicate the generated patches, you will have to use the
latest version of Coccinelle from git[1] to have them correctly
processed. To help Coccinelle parse OpenLDAP sources, you will also have
to pass "--macro-file-builtins macros.h". You can skip
02-shortcut.cocci, but expect to wait a few days before Coccinelle
processes some of the more if()fy files if you do so.

Sample command line:
spatch --sp-file 01-variadic.cocci --macro-file-builtins macros.h --dir .

If we aim to apply this to master+2.5, we will have the time to
stabilise any unexpected fallout before 2.5 is ready since the resulting
patches are still rather large. It is probably too late to touch 2.4,
however hard it might make to backport any fixes, unless we start to
depend on Coccinelle for backporting just like the Linux kernel does.

I welcome your review and suggestions.

[0]. http://coccinelle.lip6.fr/
[1]. https://github.com/coccinelle/coccinelle

Ondřej Kuzník
Senior Software Engineer
Symas Corporation                       http://www.symas.com
Packaged, certified, and supported LDAP solutions powered by OpenLDAP