[Samba] BUILD Systems for Samba 4.0 (python-based waf in particular)

Charles Tryon charles.tryon at gmail.com
Wed May 30 15:04:55 MDT 2012

Quick question:  You mention here using the "./configure" command, but the
HOWTO and everything else I've seen up to this point recommend using
"./configure.developer".  Is this still the recommendation, or is it better
to just use "./configure" if you really aren't doing development (which
includes, debugging, testing and general mucking around with stuff you
aren't sure yet if it works....)


On Tue, May 29, 2012 at 8:02 PM, Andrew Bartlett <abartlet at samba.org> wrote:

> (This is the Team's agreed statement explaining the role of the two
> build systems in Samba 4.0.  Please, if you have can't use the waf build
> system, and so need the autoconf system for 4.0, reply and let us know
> your reasons and needs here or in the specific threads I'm raising on
> samba-technical).
> Thanks,
> Andrew Bartlett
> (which build system to use and why)
> ===================================
> The waf build
> -------------
> Samba 4.0 ships with a new build system, based on waf.  A background to
> this build system can be found at https://wiki.samba.org/index.php/Waf
> This is the build system that is used when you run ./configure && make
> in the top level of a Samba 4.0 release tree.
> For the vast majority of our users, this is the build system you should
> use.  It supports parallel and incremental builds, and builds the whole
> Samba suite, the file server, the print server, the NT4 domain
> controller, winbind, the AD Domain Controller, the client libraries and
> the python libraries.
> A key feature for many of our distributors and OEMs is that despite the
> range of additional features, the resulting binaries and libraries are
> substantially smaller, because we use shared libraries extensively.
> For distributions that have a requirement to use the system-supplied
> Kerberos library, we support building against a Heimdal or system MIT
> Kerberos library, provided the version is recent enough (otherwise we
> will use our internal version of Heimdal).  Please note that builds
> with MIT krb5 support will not have AD DC features.
> By the time of the first release candidate, we will finish renaming
> the binaries that we ship so that where we provide a tool under a name
> that was used in Samba 3.x, it continues to behave in the same way it
> always has.  This will ensure that our change in build system does not
> impact on our user's ability to use Samba as they always have.
> For developers, this build system backs a comprehensive 'make test',
> which provides code coverage of around 48% of our code by line:
> https://build.samba.org/lcov/data/coverage/samba_4_0_test/
> This build system also implements important features such as ABI
> checking (which protects you as users from accidental changes to our
> published libraries), symbol versions and dependency checked incremental
> rebuilds after header-file changes.
> The waf build also assists developers by providing fully-linked binaries
> that run from bin/ without needing to set LD_LIBRARY_PATH.
> For users who do not have python installed on their systems, we provide
> a install_with_python.sh script, which will install a local copy of
> python sufficient to run the build system, without impacting on the rest
> of the system.
> Within this requirement, we expect that this build will run on all our
> supported platforms, and will actively deal with any portability issues
> that users can bring to our attention.
> For all these reasons, we highly recommend this new build system to all
> our users, for whatever purpose you want to put Samba to.
> The autoconf build
> ------------------
> For a small number of users, the requirement to have access to Python
> 2.4 and perl will be unacceptable, and for these users we continue to
> provide the 'autoconf' build system used in Samba 3.x under the
> source3/.  This will build fewer parts of Samba, but should not be seen
> as 'the file server build' (typical file server deployments should use
> the top level build), but as a measure provided with limited features
> for systems and organisations unable to meet the requirements for the
> new build system.
> If you do need to use the autoconf build system, please let us know:
> both why you cannot use the 'waf' build in the top level, and what
> features of the source3 build that you require.  We need this
> information to assess the continuing demand for this parallel
> infrastructure, and to determine which features need to remain available
> in both build systems.
> Optional Libraries
> ------------------
> To assist users and distributors to build Samba with the full feature
> set, by the first release candidate the build system will abort if our
> dependent libraries and their header files are not found on the target
> system.  This will mean for example, that xattr, acl and ldap headers
> must be installed for the default build to complete.  The configure
> system will check for these headers, and the error message will
> indicate:
>  - the required header and library
>  - the option (such as --without-acl-support) that can be specified to
>   skip this requirement, and
>  - the feature (ACL support optional for file servers, mandatory for AD
>   Domain Controller) being skipped.
> This will assist users and in particular distributors in building fully
> functional packages, while allowing those on systems truly without these
> facilities to continue to build Samba after careful consideration.
> --
> Andrew Bartlett                                http://samba.org/~abartlet/
> Authentication Developer, Samba Team           http://samba.org

    Charles Tryon
  “Risks are not to be evaluated in terms of the probability of success,
but in terms of the value of the goal.”
                - Ralph D. Winter

More information about the samba mailing list