Samba 4 build system (was: Re: Samba3 build farm can't execute
jelmer at samba.org
Mon Dec 31 00:34:53 GMT 2007
On Wed, Dec 26, 2007 at 06:58:28PM +0100, Jelmer Vernooij wrote:
> Am Mittwoch, den 26.12.2007, 14:30 +0100 schrieb Jelmer Vernooij:
> > > But while I can use our build system, the closest I've got to working on
> > > it is the auto-generation of .mk files from the asn.1 sources.
> > > > The build system looks like a good example of Not-Invented-Here.
> > > > However, about a year ago, I did an inquiry into the various
> > > > alternatives that were available at the time and didn't come up with
> > > > anything better. Most alternatives either require installing another
> > > > application and are too big to include in Samba or don't care about
> > > > working on platforms like AIX, Solaris, etc.
> > > Has this changed now that Python is a reasonable dependency to require?
> > > (Given the move to python for our internal scripting)
> > I quite liked scons (written in Python) and it'd probably be small
> > enough to include. It's not perfect, but easy to understand, portable
> > and flexible.
> > One of the advantages of scons is also that it also uses checksums
> > rather than just timestamps to determine whether a file is out-of-date.
> > That means it should be possible to support automatic dependencies and
> > parallel builds because changing a prototype header doesn't cause
> > everything to be rebuilt if you didn't change any function signatures.
> > The main two problems with scons when I looked at it back then were the
> > fact it was written in Python and the speed. The first would no longer
> > be a problem. The second has improved, but I'm not sure if it's improved
> > enough.
> > So that's certainly something to have a look at again as well. I wonder
> > though whether we shouldn't go back to something we know works before we
> > consider switching to something experimental again. OTOH, it would be a
> > waste of effort to switch build systems twice in a short period of time.
> I looked into SCons a bit more again and tried to convert
> tdb/talloc/ldb. That was quite easy, and intuitive. However, propagating
> paths and flags is still not easy and it also doesn't support sonames
> out of the box.
To respond to some more of your comments about this on IRC: I think
replacing the build system is less important than replacing the EJS
with Python, because there is a lot less code to rewrite when changing
this, and the effect on external developers is less high.
However, I think it is still important to get rid of the current build
system because it is making a lot of things harder. I would rather go
forward with something we know works than having to add another hack
to the current system every week... I think converting to such a
system will not be as much work as the conversion to Python, and I'll
see if I can propose a patch for this soon.
Jelmer Vernooij <jelmer at samba.org> -- http://samba.org/~jelmer/
More information about the samba-technical