Samba 4 build system - more thoughts on scons
jelmer at samba.org
Wed Oct 19 22:09:01 GMT 2005
-----BEGIN PGP SIGNED MESSAGE-----
While I was very positive about scons a month ago, I must admit that
enthusiasm has faded a bit now that we tried out to use it for building
Samba4. The idea behind it is good, but there are some issues when using
it in real life (some of these I knew about before I started or were
predicted by others):
- - It assumes the relations between subsystems are compositional. If dir
a is processed before dir b, dir a can not depend on any object files
from dir b. This is a major problem for Samba.
- - Running the configure tests (even with caching) each time you run a
build takes way too much time for a project with as much tests as Samba
(althought there are hacks around it).
- - No easy way to add configure test functions
- - Python
- - Slow. Calculating checksums for each file rather then relying on
modification times may be nice for those that have their sources on NFS,
but it slows scons down a lot.
- - Very much focussed on files and conversions between files - generating
a list of init functions like we do at the moment is quite hard.
- - While in theory it should be possible to generate a configure script
and Makefile.in from a set of SConscript files, this proved to be a bit
harder then I'd hoped.
Of course, it's not all bad. Some good things about scons:
- - Can transparently handle portability issues with different compilers,
- - The support for multiple build types is very neat and useful
- - Automatic support for header dependencies
- - Easy to extend. Scanning for dependencies, adding file types, adding
compilers is trivial.
- - Compositional to a high extend. Being able to put the list of files
and the list of functions/headers a subsystem needs in one file in that
subsystems dir is very useful.
- - Configure scripts and tests are much easier to read
It was fun to try scons, but I am no longer convinced scons is the right
way to go. Some of the ideas from scons can be implemented in the
current build system, that's probably what I'll do.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
-----END PGP SIGNATURE-----
More information about the samba-technical