ABI checking in waf build in master

tridge at samba.org tridge at samba.org
Sat Apr 17 23:12:03 MDT 2010

Hi All,

I've just pushed a set of changes to the waf build of s4, talloc, tdb,
tevent and ldb in master that adds automatic ABI checking on library

The ABI checking is at build time, rather than at dist time (as it was
for the old build with talloc).

I've documented how it works and how to deal with the error msgs you
will get on ABI changes here:


Simo and Jelmer, I'd particularly appreciate comments from you on

Now that we have this, we should start to go through some of our
libraries are be more careful about marking symbols as _PUBLIC_ or
_PRIVATE_. For example, we should set hide_symbols=True in the waf
build of tevent, and mark the right functions at _PUBLIC_. I've
already done that for talloc.

The resulting ABI signature files are committed into git as
ABI/LIBNAME-VERSION.sigs. For example, see


There are a few more things we will need to do. For example, if you
look at the talloc signatures, you'll see this one:

  talloc_vasprintf_append_buffer: char *(char *, const char *, struct __va_list_tag *)

I think we'll probably need to extend normalise_signature() in
samba_abi.py to cope with different type definitions for things like
__va_list_tag. I can add that as we run across it. We may need the
same sort of thing for _Bool <-> bool.

Cheers, Tridge

More information about the samba-technical mailing list