code duplication in ccan (was: Re: snprintf on SunOS)

Andrew Bartlett abartlet at
Fri Jun 8 16:40:51 MDT 2012

On Fri, 2012-06-08 at 18:23 +0200, Jelmer Vernooij wrote:
> On Thu, Jun 07, 2012 at 02:34:52PM +1000, Andrew Bartlett wrote:
> > On Wed, 2012-06-06 at 03:13 -0700, Mihai-Radu, Orza wrote:
> > > Thank you for the patch. I managed to go past the asn1 linkage problem, so it helped.
> > > 
> > > But now I get the following build error:
> > > [ 522/3534] Compiling lib/ccan/failtest/failtest.c
> > > ../lib/ccan/failtest/failtest.c:8:17: err.h: No such file or directory
> > > Waf: Leaving directory `/tmp/samba-4.0.0beta1/bin'
> > > Build failed:  -> task failed (err #1):
> > >         {task: cc failtest.c -> failtest_1.o}
> > > 
> > > The err.h C header does not come with SunOS so I guess the compiler should use the replacement functions defined in source4\heimdal_build\replace.c. Is there some config param I'm missing?
> > > 
> > > Thanks again and regards,
> > > Mihai
> > 
> > In the short term, it seems you should be able to
> > 
> > rm -rf lib/ccan/failtest
> > 
> > as this code is unused.  You may have noticed I've mailed the ccan
> > maintainer to understand what we are going to use the code for, and how
> > to best handle this in the future. 
> This is related to something I've been wondering about for a while.
> Ccan reinvents the wheel and is separate from lib/util (of which it
> duplicates a lot) and has its own test infrastructure. 

One problem is that tdb2/ntdb uses ccan (but it uses a lot of it for
only for failtest), and is an 'independent' (or at least able to be
built as independent) package.  

We could deprecate parts of libsamba-util for ccan of course.
Presumably the licences also set much the same course (ccan being LGPL
or less to build an LGPL tdb2/ntdb).

> In addition, it
> looks like most of ccan isn't actually used anywhere in Samba.

I was surprised how much of this was the case when I worked with rusty
to re-enable failtest (the tdb2 tests didn't match a glob, and so were
never built).  

The ccan modules not just used in failtest are:

ccan-hash ccan-ilog ccan-likely ccan-tally

> Can we remove it in favor of libsamba-util?

I don't think we can, but for all the fuss and bother this thing has
caused, what is left to be installed on disk is quite an almost trivial
amount of code. 

Andrew Bartlett

Andrew Bartlett                      
Authentication Developer, Samba Team 

More information about the samba-technical mailing list