Re: Scons slowness.
> Just thought I'd mention that the
> slowness of scons mostly comes from it
> MD5 summing the files to check if source
> files have changed.
I wonder whether this is the case---if it's true, then I can only imagine they've written some code with very poor I/O characteristics, or are using a slow implementation of the hash function. In the project I mentioned in the previous article, we have about 6000 object files built with non-recursive gnu make. A "do-nothing" build, including the time to stat the files, takes 4 seconds. It takes only 0.7 seconds to md5sum 184 megabytes of source files, include files, and objects, from hot cache. (time sh -c 'find ... | xargs -P4 md5sum > /dev/null', best of 4 runs)
I've never used scons.
Re: maybe it's your requirements that are the problem
> Well, Tom, this is not quite a mature
> argument. Complexity comes with the size
> of the project, trust me on it. Imagine
> the following scenario:
> A software company decides to embarque
> in a million dollar project with a big
> automotive manufacturer. The software
> product has many thoushand C/C++ files,
> it has a 5 years history already
> (meaning the design is even older than
> that) and it is developed by about 50
> people on 2 continents. They want to
> hire you as release manager. What do you
> do? Decline the offer and go to Alaska
> to build 50 files projects on Linux that
> are fine with make? I guess not. Me at
> least, I would get excited about the
> job. And if they take me I would do what
> is in my power to do: search the best
> tool for the job. I simply cannot scale
> down the requirements, I simply cannot
> redesign the software and quiting the
> job would simply make me a coward,
> wouldn't you agree?
You're right. I'd use GNU Make for this project. Developers would either run their editors remotely on a single site, or use local editors but store all files on the remote site using a network filesystem. New binaries would be sent to the second site using "xdelta" or similar technology to reduce the amount of data transferred.
If necessary, I would place a full, independent build system at each site, but this leads to integration problems that are completely outside the purview of the build system.
And don't scare me with talk of a 5-year-old system, as though that's positively ancient. The system I work on displays the message "Copyright (C) 1983-2005" on startup. This is the system I mentioned in an earlier reply to this article, where we use a non-recursive make crafted by one of my co-workers after learning the lessons of Recursive Make Considered Harmful.