tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: individual software releases for third parties

On Sat, Sep 01, 2012 at 05:46:04PM -0400, matthew sporleder wrote:
 > >> The right way to approach portability has never been tried: to
 > >> construct a database of alternatives, keyed approximately by os, libc,
 > >> and compiler version. That list is orders of magnitude smaller than the
 > >> number of build hosts, and that approach has the property of aiding our
 > >> understanding instead of obscuring the problem.
 > >
 > > I think this is a good, albeit simplistic way of looking at things.
 > > It does imply a static view of system software and characteristics.
 > >
 > > It doesn't, however, address [...]
 > >
 > > In fact, the whole discussion is reminiscent of the calls to have a
 > > central autoconf cache when building to speed things up (which fails
 > > for the same reasons given above).
 > A few years ago I was able to make netbsd's awk into an auto-tools build
 > with ~zero knowledge of either.
 > Adding new auto-tools based packages to pkgsrc is trivial to do.
 > This is also true for rpm, which has %setup, %configure, etc.

So, speaking as someone who's laid out a lot of projects, written a
lot of makefiles, shipped quite a bit of software, and also spends a
good bit of time patching uncompilable packages in pkgsrc, I offer the
following ranking of build environments:

less annoying

        make library + file (with or w/o script to generate it)
        old-style "edit the toplevel makefile" build
        autoconf without automake or libtool
        cargo cult cut+pasted makefiles
        automake without libtool
        other typical "autotools alternatives"
        automake with libtool
        hand-rolled makefile generation using cpp
        typical attempts to rewrite or reinvent make
        modula-3's build system

more annoying

This list, however, has two very distinct types of entries: build
systems generated by something (automake, imake, scons, etc.) and
build systems written by hand. If you write a build system by hand,
the results can go anywhere on the chart, depending on how much you
know (or think you know) about the subject. If you use one of the
generators, unless you screw up particularly badly you're guaranteed a
certain minimum baseline.

Since most people don't know very much about setting up build systems,
and many think they know a lot more than they actually do, using
automake is a conservative way both to avoid putting in a lot of
effort and to avoid making a much worse mess than automake generates.

It would be nice if a better generator tool than automake existed, but
that turns out to be hard. Very hard, actually. I've tried several
times; each time I discovered that my ideas weren't good enough.

David A. Holland

Home | Main Index | Thread Index | Old Index