[notmuch] [PATCH] Add SCons build files.

Carl Worth cworth at cworth.org
Sun Nov 22 19:11:55 PST 2009

On Sun, 22 Nov 2009 07:47:10 -0600, "Jeffrey C. Ollie" <jeff at ocjtech.us> wrote:
> The SCons build files included here *should* do everything that the
> current Makefiles do, plus a little bit of configuration checking.  To
> build/install:

Hi Jeffrey,

Thanks for your effort to code all this up.

But I'm afraid I really don't want to switch away from just using (GNU)
make for the actual compilation.

I don't know anything about scons, but if you can use it to write a
python script that just does the configuration step, (outputting a
Makefile.config say), then that might be very interesting. Some people
have recently told me that python would be a much more sane language for
doing configuration in than shell.

I don't know if they're right or not, but I'm (somewhat) willing to have
multiple implementations of the configure script (since there's always
the option to just skip it and configure Makefile.config manually). But
I'm definitely not willing to have multiple build systems.

> Yes, I'm sure that make is widely available, but as notmuch gets used
> on a wider variety of systems some sort of configuration system will
> become necessary.  If I can prevent another project from going down
> the autoconf/automake path I'll be happy.  I started creating CMake
> build files but I don't know CMake well enough to come up with a
> working build.

I'm totally glad to try to avoid autoconf/automake. I know for sure that
I never want to use libtool again, (I've learned that the hard way). I
don't have as much prejudice against automake, but I've heard a rumor
that it's hard to make it *not* use libtool.

Meanwhile, the only advantage I know for automake is that once it's
setup, adding a new file to compile is as simple as adding one file to a
list in the Makefile.am. We've already got notmuch as easy as that with
just adding a file to a list in Makefile.local.

So then all that's left is a configuration system. The notion of how the
final "configure" script from autoconf works seems just fine to me, but
I'm not sure the implementation of autoconf itself is sound. I've been
maintaining a project for years (cairo) where the m4-complexity in
configure.ac has far outgrown my ability to understand it. And I'm
extremely uncomfortable with a build system I can't understand.

Meanwhile, cairo *still* has a shell script needed just to bootstrap the
autconf/automake/libtool house of cards, and that shell script alone is
194 lines.

So I'd very much like to continue exploring what we can do with our own
configuration system, (in whatever language/language(s) make sense). In
the meantime, I'm happy that I can just checkout and build notmuch on a
Linux system with no configure step at all. I also like that the
build-system doesn't trigger constant re-runs of configure all the
time. I've spent too many days of my life watching autoconf output
scroll by, and I'd really like to avoid going down that road.

So yes, Jeffrey, if avoiding autoconf is the motivation, then I'm right
there with you. But I'm not convinced that throwing out GNU make is the
right thing to do as well.

Thanks for listening,


More information about the notmuch mailing list