Choosing a new build system for Samba

Andrew Bartlett abartlet at
Fri Mar 19 01:09:40 MDT 2010

Since the proposal for CMake earlier this year, we have seen a lot of
debate about build systems.  

It seems to me absolutely critical that Samba adopts a new, common build
system, before we can complete our stated goal of a combined Samba 4.0

But I have to say I don't feel like I have the full picture,
particularly, so I wanted to ask a few direct questions, in the hope
that it may enlighten us all.

What are the remaining actual proposals?

Is there still a CMake proposal?  I've seen the wiki page and I also saw Dmitri's mail in
but I've not seen anything from Andreas or Simo.  I don't ask this to
gloat or embarrass, but as there is still a proposed talk at SambaXP I'm simply confused as to the
status of this proposal.  

Clearly there is a very real waf proposal.  Tridge has it on a build
farm host already
+Builds and has it passing almost all of 'make test'.  The wiki page is

Is there any objection to the idea of moving to a new build system?

I'm particularly asking this question to those of my fellow team members
who work primarily on Samba3.  Any new build system will need to be for
the whole of Samba, or else we move backwards from our commitment to a
combined Samba 4.0.  In particular the merged build gives a quite
delicate dependency between Samba3 and Samba4.

If we maintain the existing system, who will maintain it?  
Should we maintain any new build system in parallel, or will we have a
'flag day' that we switch on?

The reason I ask is that I'm worried that any second system (either the
new or old one, depending on popularity) would bitrot quickly and add to
the testing matrix.  But a parallel move would make it much easier for
developers to adjust to the new system (whichever is chosen) in the
short term. 

What must a new system do?
Aside from the things Tridge listed in
what additional requirements are there for a new build system?  I'm just
worried that we don't have a good yardstick by which to measure it,
other than 'must do what the old one did'.  

What particular things does the current system (particularly the Samba3
system) do, that a new system must also do?  What things does the
current system do, that a new system need not do?

What are the benefits of a new build system?

The reason we hack Samba is to improve it, and while change is hard, it
also brings new opportunities.  I would like to see a little more
written about what a new build system would allow.  (I know I've heard a
lot about waf in private conversations, but that's not a good way for us
all to hear).

In particular, I would like to hear about how any new system would make
it easier to merge code between Samba3 and Samba4, and make the merged
build less special.  

How will we decide?

Even if we decide to use two systems in parallel for a time, how will we
decide to actually make the switch?  I think this is something the whole
team needs to accept and adopt - because we all need to be willing to
use and work with the new system for a very long time.  

My worry is that if we don't evaluate the build systems on their merits,
and then live with our decisions, we risk later recriminations based on
hindsight.  No Samba developer deserves that fate. 

Anyway, I'm just hoping to get some clarification.  Some of the things I
ask here I could guess, but I've found guessing leads to errors, so
rather than jump to conclusions, could those involved please fill in the
blanks for me?  


Andrew Bartlett

Andrew Bartlett                      
Authentication Developer, Samba Team 
Samba Developer, Cisco Inc.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part
URL: <>

More information about the samba-technical mailing list