9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: "Gary V. Vaughan" <gary@vaughan.pe>
To: weigelt@metux.de, Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] Plan9 development
Date: Sun, 14 Nov 2010 09:17:46 +0700	[thread overview]
Message-ID: <AA291601-9BEF-444D-B3D1-D7CCA75AF316@vaughan.pe> (raw)
In-Reply-To: <20101113192425.GC22589@nibiru.local>

[-- Attachment #1: Type: text/plain, Size: 4285 bytes --]

[[resent from my subscribed email address after the mailing list rejected the original]]

Hi Enrico,

On 14 Nov 2010, at 02:24, Enrico Weigelt wrote:
> * ron minnich <rminnich@gmail.com> wrote:
> 
>> If you're the kind of guy who can't resist changing things that don't
>> need changing, then you won't get it; perhaps you'd be better off
>> working on libtool. But Plan 9 is far from dead.
> 
> Nobody with at least half-sane mind voluntarily works on or even
> with libtool ... it's basic concepts are fundamentally insane ;-o

People like to beat on GNU Libtool, and in some cases that criticism is
not undeserved... but in my experience, many critics of the tool come
from a perspective of building on a single architecture.  If you have
never tried to build and link shared libraries from the same code-base
on 30 (or even 3) separate incompatible architectures, then you are
probably missing the point, and needn't read any further.

I'll be the first to admit that the complexity of the shell code inside
GNU Libtool is asymptotically approaching unmaintainable... and if I had
a lot more hacking time, I'd be spending more of it on untangling the
spaghetti.  But that is an implementation issue, not a design problem.

That said, your comment strikes me as entirely unsubstantiated. Why do
you think the concepts themselves are insane?  Setting aside the admitted
implementation shortcomings for the sake of argument; if you were
designing GNU Libtool from scratch, how would you do it differently?

AFAICT, without rewriting the entire GNU build system from the ground
up (and there is far too much momentum behind it to ever gain enough
traction to switch the GNU eco-system to an entirely new and different
build system anyway) the following precepts are immutable:

 1. Unix variants (including POSIX layers of non-Unix architectures)
    build shared libraries in vastly different ways, GNU Libtool
    needs to handle all of them;
 2. Similarly, there are many binary formats that handle run-time
    loading of code in vastly different ways, all of which must be
    handled too;
 3. There's no use in fighting against GNU Autoconf and GNU Automake,
    (and, believe me, I hate Perl as much as the next guy), so
    integration with these is required - Libtool is not a build system
    it just wants to provide a uniform interface to building and
    loading dynamic shared objects;
 4. GNU Libtool is a system bootstrap tool that is used to build some
    of the very lowest level components of a Unix installation, so
    it needs to have the smallest number of runtime dependencies as
    reasonable possible (GNU M4 is a *build* time dependency, and
    even that is forced on me by Autoconf).
 5. When you link your project code against dependent libraries, you
    should only have to specify the libraries that you use directly -
    the indirect libraries should be taken care of by the operating
    system, and when the OS is deficient, libtool should do the heavy
    lifting.

The current implementation of GNU Libtool also has the following (IMHO
desirable) aspects, which are not immutable, but make Libtool easier to
use than it would be otherwise:

 1. Once installed, it is useable outside the GNU eco-system by any
    build-system that is prepared to call libtool rather than the
    C-compiler for building and linking against shared compilation
    units;
 2. It can be used to bootstrap the C compiler (and is used by GNU
    gcc in that capacity to simplify tracking all the varied options
    for bootstrapping it's own runtime with the vendor compiler on all
    the systems it supports).

I could probably think of others, but don't want to make this post any
longer than it already is.

I'm entirely open to reasoned criticism, and especially to useable
suggestions on how to improve the design of GNU Libtool.  I probably
won't pay too much attention if you tell me that I should rewrite the
entire GNU build system and expect several thousand packages to pay
any attention to me.  I only maintain GNU Libtool and GNU M4, so my
scope, and hacking time, is much smaller than that.

Thanks for reading this far!

Cheers,
-- 
Gary V. Vaughan (gary@gnu.org)

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 202 bytes --]

  reply	other threads:[~2010-11-14  2:17 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-04  9:36 Admiral Fukov
2010-11-04  9:47 ` Lucio De Re
2010-11-04 10:20   ` Steve Simon
2010-11-04 11:30 ` Brantley Coile
2010-11-04 15:39 ` David Leimbach
2010-11-04 15:55   ` Stanley Lieber
2010-11-04 16:01     ` John Floren
2010-11-04 16:39       ` ron minnich
2010-11-04 16:57         ` Stanley Lieber
2010-11-04 17:01         ` Don Bailey
2010-11-04 17:19         ` Jeff Sickel
2010-11-04 22:20           ` Charles Forsyth
2010-11-05  1:41             ` Venkatesh Srinivas
2010-11-05  3:50               ` Bruce Ellis
2010-11-05  7:11                 ` Lucio De Re
2010-11-05  7:55                   ` Bruce Ellis
2010-11-05 13:31                     ` Eric Van Hensbergen
2010-11-05 15:16                       ` C H Forsyth
2010-11-05 17:07                       ` dexen deVries
2010-11-05 17:18                         ` Nick LaForge
2010-11-05 17:32                           ` dexen deVries
2010-11-05 17:39                             ` andrey mirtchovski
2010-11-05 17:55                               ` dexen deVries
2010-11-05 17:45                             ` David Leimbach
2010-11-05 18:14                               ` erik quanstrom
2010-11-05 18:37                                 ` roger peppe
2010-11-05 19:06                                   ` erik quanstrom
2010-11-08 11:04                                     ` roger peppe
2010-11-08 21:24                                       ` Bruce Ellis
2010-11-08 22:22                                         ` Charles Forsyth
2010-11-08 22:25                                           ` Bruce Ellis
2010-11-08 22:33                                           ` Charles Forsyth
2010-11-09  2:10                                             ` Jeff Sickel
2010-11-09  3:18                                               ` EBo
2010-11-09  8:10                                                 ` Bruce Ellis
2010-11-13 19:15                                             ` Enrico Weigelt
2010-11-05 20:37                         ` Eric Van Hensbergen
2010-11-06  0:55                           ` Charles Forsyth
2010-11-06  2:20                         ` Bruce Ellis
2010-11-06 20:24                           ` dexen deVries
2010-11-05 18:43             ` Bakul Shah
2010-11-13 19:24         ` Enrico Weigelt
2010-11-14  2:17           ` Gary V. Vaughan [this message]
2010-11-14  5:47             ` Anthony Sorace
2010-11-14  6:24               ` erik quanstrom
2010-11-14  8:13                 ` Gary V. Vaughan
2010-11-14 15:56                   ` Jacob Todd
2010-11-14 16:24                     ` ron minnich
2010-11-14  6:26               ` Russ Cox
2010-11-14  8:03                 ` Anthony Sorace
2010-11-14 15:23                 ` erik quanstrom
2010-11-14 17:46                   ` Russ Cox
2010-11-14 22:16                     ` erik quanstrom
2010-11-14  9:10             ` tlaronde
2010-11-14  9:32               ` Gary V. Vaughan
2010-11-14 10:22                 ` tlaronde
2010-11-14 10:50               ` Carl-Daniel Hailfinger
2010-11-14 11:47                 ` tlaronde
2010-11-14 21:44                 ` Charles Forsyth
2010-11-14 21:47                   ` Ori Bernstein
2010-11-18  5:30                   ` Joel C. Salomon
2010-11-18  5:57                     ` erik quanstrom
2010-11-18 22:50                     ` Federico G. Benavento
2010-11-19  2:06                       ` Joel C. Salomon
2010-11-19  3:13                         ` Federico G. Benavento
2010-11-25  9:39                       ` Greg Comeau
2010-11-15  4:29                 ` Gary V. Vaughan
2010-11-15  5:05                   ` Carl-Daniel Hailfinger
2010-11-15 15:48                   ` Dan Cross
2010-11-15 16:24                     ` Lucio De Re
2010-11-15 17:26                       ` Brian L. Stuart
2010-11-16  3:32                         ` lucio
2010-11-16  4:53                           ` erik quanstrom
2010-11-16  5:09                             ` lucio
2010-11-16 22:18                           ` Christopher Nielsen
2010-11-15 18:11                   ` Dave Eckhardt
2010-11-15 20:04                     ` Steve Simon
     [not found]           ` <79E9F966-3C4E-44D9-8B1F-D22C9548CE74@gnu.org>
2010-11-15  1:02             ` Enrico Weigelt
2010-11-15  4:17               ` Gary V. Vaughan
2010-11-15 16:22                 ` erik quanstrom
2010-11-17 23:48                 ` Enrico Weigelt
2010-11-04 16:00   ` erik quanstrom
2010-11-04 17:12     ` Admiral Fukov
2010-11-04 17:19       ` andrey mirtchovski
2010-11-04 17:30         ` Admiral Fukov
2010-11-04 20:27     ` David Leimbach
2010-11-04 12:15 dexen deVries
2010-11-04 12:48 ` Venkatesh Srinivas
2010-11-04 17:14   ` Admiral Fukov
2010-11-17  7:38 Pavel Zholkover
2010-11-17  7:44 ` Lucio De Re

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=AA291601-9BEF-444D-B3D1-D7CCA75AF316@vaughan.pe \
    --to=gary@vaughan.pe \
    --cc=9fans@9fans.net \
    --cc=weigelt@metux.de \
    /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).