9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Dave Eckhardt <davide+p9@cs.cmu.edu>
To: 9fans@cse.psu.edu
Subject: Re: [9fans] First-timer help
Date: Wed, 20 Jul 2005 12:38:49 -0400	[thread overview]
Message-ID: <1228.1121877529@piper.nectar.cs.cmu.edu> (raw)

> it might be `ironic' if `autoconf' had ever met
> its notional specification.  `autoconf' is not
> even an `oxymoron', just a `moron'.

The old (pre-autoconf) idea was that each package would
try to encapsulate platform dependencies into a couple
of files, maybe SysV.c, BSD.c, etc.  When a new release
of one of those came out, somebody on that platform would
have to hack that file.  Often the code for SysV.c and
BSD.c would have lots of similar chunks in it.  If you
had N platforms some chunks might appear in N/3 of the
platform files.  More likely, *almost*-identical chunks
would be gratuitously different just because they were
maintained by different people.  And while the package
would build on M releases of N platforms, it would build
on *only* them--anything new was guaranteed to break
something.

The vision of autoconf was to focus on the chunks, not
the platforms, with probe code (in "portable /bin/sh")
choosing which chunks to use on each release of each
platform.  This way when a package finds itself on a new
platform it can automatically choose a locking method
from column A, a networking API from column B, etc., thus
*theoretically* working with zero porting effort by
anybody.

But this approach has a fatal flaw.  It turns out that
the *probe* code is non-portable.  Just one example: I
saw a piece of code designed to check whether to link
against Heimdal or MIT Kerberos libraries.  It "worked"
by testing for the existence of a particular function,
which at one moment in history was present in MIT Kerberos
but not Heimdal.  Six months later, of course, the Heimdal
guys caught up and the probe code broke.

The result of auto* is that a package will build on
M releases of N platforms, but will build on *only*
them--anything new is guaranteed to break something.
In other words, pretty much the same as before.

The bad news is that a large complex infrastructure
has been deployed against a problem and the problem
is still there.  The *awful* news is that now when
something goes wrong it isn't a matter of fixing a
snippet of C code inside BSD.c, but of finding,
decoding, and increasing the brittleness of some
probe code written in a punitively complex mixture
of sh and m4.

For example, maybe
  AC_MUMBLE(foo,[bletch blobble])
works on Linux but on Solaris it has to be
  AC_MUMBLE(foo,[[bletch blobble]])
Good luck figuring that out when the error you get is
  sh: configure.sh: 7225: syntax error
(yes, that's a seven thousand line shell script, and of
course it's machine-generated code for maximal readability).
Maybe the problem was gnu m4 versus m4, maybe it was bash
versus sh, more likely you'll never know.

Dave Eckhardt


             reply	other threads:[~2005-07-20 16:38 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-20 16:38 Dave Eckhardt [this message]
  -- strict thread matches above, loose matches on Subject: below --
2005-07-21 23:25 Francisco J. Ballesteros
2005-07-21 23:36 ` Devon H. O'Dell
2005-07-19 16:33 Ben Huntsman
2005-07-20  4:09 ` Ronald G. Minnich
2005-07-19 15:48 Ben Huntsman
2005-07-19 16:01 ` Ronald G. Minnich
2005-07-19 16:07   ` Jack Johnson
2005-07-19 16:10   ` Russ Cox
2005-07-19 16:23     ` Ronald G. Minnich
2005-07-19 16:46       ` Martin C. Atkins
2005-07-19 16:40     ` Bakul Shah
2005-07-19 16:51     ` andrey mirtchovski
2005-07-19 17:14     ` Devon H. O'Dell
2005-07-19 20:08       ` David Leimbach
2005-07-19 20:29         ` Devon H. O'Dell
2005-07-20  6:39     ` William K. Josephson
2005-07-19 20:05   ` David Leimbach
2005-07-20  4:40     ` Ronald G. Minnich
2005-07-20  5:02       ` andrey mirtchovski
2005-07-20  8:46       ` Charles Forsyth
2005-07-20 13:44         ` David Leimbach
2005-07-20  0:57   ` Brian L. Stuart
2005-07-20  4:47     ` Ronald G. Minnich
2005-07-21  2:33       ` Brian L. Stuart
2005-07-21  3:02         ` Ronald G. Minnich
2005-07-21  3:46           ` Brian L. Stuart
2005-07-21  2:32 ` Tim Newsham
2005-07-18 20:42 Ben Huntsman
2005-07-17 18:27 John Floren
2005-07-17 18:26 ` Gorka guardiola
2005-07-17 19:18   ` John Floren
2005-07-17 19:20     ` Russ Cox
2005-07-17 23:12       ` Charles Forsyth
2005-07-18  9:23         ` Martin C. Atkins
2005-07-18 10:45           ` lucio
2005-07-18 18:24             ` Jack Johnson
2005-07-19  6:01             ` Martin C. Atkins
2005-07-19 13:29               ` Axel Belinfante
2005-07-19 13:57               ` Ronald G. Minnich
2005-07-19 16:11                 ` Martin C. Atkins
2005-07-19 15:38               ` Charles Forsyth
2005-07-19 16:12                 ` Skip Tavakkolian
2005-07-19 16:39                 ` Martin C. Atkins
2005-07-21  2:30                 ` Tim Newsham
2005-07-20  1:43               ` Brian L. Stuart
2005-07-18 13:08           ` Steve Simon
2005-07-21  2:17             ` Tim Newsham
2005-07-21  4:34               ` arisawa
2005-07-21  2:11         ` Tim Newsham
2005-07-21  2:57           ` Ronald G. Minnich
2005-07-22  9:44             ` Richard Miller
2005-07-22  9:49               ` Charles Forsyth
2005-07-22 15:09                 ` Gorka guardiola
2005-07-22 14:14               ` Wes Kussmaul
2005-07-22 15:36               ` David Leimbach
2005-07-22 18:13                 ` jmk
2005-07-23  3:30                 ` LiteStar numnums
2005-07-23 16:19                   ` Ronald G. Minnich
2005-07-21 16:12           ` Dave Eckhardt
2005-07-21 16:23             ` Russ Cox
2005-07-21 17:33             ` Wes Kussmaul
2005-07-21 18:13             ` Tim Newsham
2005-07-22  6:16               ` Dave Eckhardt
2005-07-22  6:20                 ` Charles Forsyth
2005-07-21 23:00             ` Ronald G. Minnich
2005-07-22  1:28               ` David Leimbach
2005-07-22  1:48               ` Russ Cox
2005-07-22  3:54                 ` Ronald G. Minnich
2005-07-22  5:57                   ` lucio
2005-07-17 19:20     ` andrey mirtchovski
2005-07-17 19:47       ` John Floren
2005-07-17 19:44         ` andrey mirtchovski
2005-07-17 20:17           ` John Floren
2005-07-17 20:20             ` andrey mirtchovski
2005-07-17 20:58               ` Russ Cox
2005-07-17 19:45         ` Christopher Nielsen
2005-07-17 23:17         ` Charles Forsyth
2005-07-18  0:33           ` Dave Lukes
2005-07-18  7:31             ` lucio
2005-07-18 15:24             ` Jack Johnson
2005-07-18 15:33               ` David Leimbach
2005-07-18 13:51         ` Ronald G. Minnich
2005-07-18 15:54           ` arisawa
2005-07-18 16:46             ` Jack Johnson
2005-07-17 19:29     ` Tim Wiess
2005-07-19  0:33     ` arisawa
2005-07-19  1:04       ` arisawa
2005-07-17 18:26 ` andrey mirtchovski
2005-07-17 18:30   ` andrey mirtchovski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1228.1121877529@piper.nectar.cs.cmu.edu \
    --to=davide+p9@cs.cmu.edu \
    --cc=9fans@cse.psu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).