autoconf
[Top][All Lists]
Advanced

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

Re: MinGW GLib


From: Soren A
Subject: Re: MinGW GLib
Date: Sun, 29 Sep 2002 22:47:13 +0000 (UTC)
User-agent: Xnews/5.04.25

[I've tried to set the 'follow-up' field to only the Autoconf List since
I think with this my reply to Tor, the specific relevence to the MinGW
User's List will have been about used up; but Gmane / my newsreader
wouldn't allow it. Sorry.] 

Tor Lillqvist <address@hidden> wrote in 
news:address@hidden:

> Ouch. This is even stronger than JMD's postings.
> 
> I'll refrain from feeding a flame war, and comment on just one point:
> 
> Soren A writes:
> > In case it isn't clear yet, I am not going to budge on my views
> > about how bad automake is.
> 
> (and presumably also autoconf, autoheader and libtool?)

Incorrect presumption.

Earlier today someone asked me privately:
> Would you really refuse to use some software because it used
> automake?

Yes, definitely. If I could detect in advance that the author had hacked 
together a careless set of build configuration files and particularly had 
not updated or checked them in a while, especially.

> And, since you dislike automake so much, what do you prefer to use
> instead?

This deserves a longer answer, but basically I will mention that I have 
been playing around with a GNU package named "mfg" (you can find it at the 
GNU Software Directory page). "mfg" has been around for years and it is a 
template-based "makefile generator".

Rhetorical Argument:

"I have has only just started learning automake, but haven't run into 
anything horrifying yet."

Answer:

What's horrifying is what happens when the Makefile generated by using 
Automake upstream (by running 'configure', of course) decides that 
something in the build configuration is a prerequisite to itself (the 
Makefile) as a target-prerequisite of the source files you actually want to 
build. IOW, the way Automake is designed is to make keeping a very complex 
package's dependencies tracked so that it can be smarter than the developer 
-- so that if the developer (package author / maintainer) forgets to update 
something by running the appropriate Autotool command, the Makefile will 
cause it to happen for him/her. This means nests inside nests inside nests 
of recursive interdependency, a hideous logical mess to try to mentally 
untangle and the primary thing that makes standard Automake-generated 
Makefiles unreadable by humans.

It also means the whole thing is unacceptably brittle. And when a
human-authored Makefile isn't doing what you need, you go in and edit
it. When an Automake-generated makefile goes wrong, it does so like a
Hannibal Lecter of wrongness. Very, very hard to fix and it can feel
like it leaves a trail of semi-devoured corpses behind it. 

As a basic principle Automake has taught me to be very wary of software 
that tries to be much smarter than *I* myself, the developer, am. IMHO this 
is an error of Greek-Epic proportions on the part of the Automake author, a 
deranged distortion of the Virtue of Hubris (I am assuming that readers are 
sufficiently acquainted with Perl to know the reference). A system that 
tries to relieve the developer to THAT degree, of ordinary vigilance and 
concentration on his/her task, is IMO a major mistake and something to be 
regarded with deep healthy skepticism.

Nothing about the GNU documentation for Autotools claims that you *have to* 
use Automake at all. In principle it is perfectly possible to use Autoconf, 
and even Libtool, without using Automake.

> So, what are you going to do about it? To put it bluntly, hasn't it
> always been like this in the Open Source world: there are lots of
> people who complain (and often rightly) when something is broken (by
> design, perhaps). But, it's those who show working code that get the
> attention and peer recognition.

Attention is relative and comes as cumulative impact of many instances of 
complaints as well as response to single-authored instances of cogent 
critique. Whether that is good or not (because I happen to think that such 
a thing as "mob rule" is a real phenomenon in human affairs and can be 
extremely destructive) is another question. Anyway, I can only do my best 
on any given occasion to present cogent arguments expressing my viewpoint.


> I am certain that if somebody would create an elegant, working,
> unified cross-platform replacement for auto*+libtool+make, written in
> *one* language of choice (preferrably some Lisp variant, or Perl,
> instead of the current mixture of C, /bin/sh, m4, and Perl), many
> software writers would embrace it.

There are a *lot* of build-configuration systems already out there and I 
have investigated some of them (it wouldn't be fair to say "all of them" 
because it is very likely that I haven't found some or many yet). It isn't 
that people haven't been thinking about this. But nothing that I have 
looked at thus far seems truly ambitious enough to challenge Autotools -- 
none so far seems to address the true "problem domain" in its true 
magnitude.

To sum my short answer to the thrust of your questions (and the most
important aspect of the answer is,  "what I am going to try to put more
work into, so that I can *demonstrate some solutions*" to others rather
than merely posting tirades): my current thinking is that a GNU-based
build system is fine ||AND|| you can provide one ||WITHOUT|| employing
Automake for many, many different types of packages, large and small.

And I would be neglectful if I didn't add that GNU 'make' is one of the
neatest tools ever devised, and learning how to author good GNUmakefiles
can go a long way towards providing whatever support the package author
thinks s/he needs to get the software built right. IMO requiring people
who want to build your package to use GNU 'make' to do so is *not*
unreasnable considering how freely-available and widely-ported 'gmake'
is. 

   Regards,
     Soren A







reply via email to

[Prev in Thread] Current Thread [Next in Thread]