"libtool" performance... / was: Re: Announcing Dolt, a drop-in Libtool replacement which cuts build timesin half
- To: Josh Triplett <firstname.lastname@example.org>
- Cc: email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org
- Subject: "libtool" performance... / was: Re: Announcing Dolt, a drop-in Libtool replacement which cuts build timesin half
- From: Roland Mainz <email@example.com>
- Date: Fri, 11 Apr 2008 16:15:30 +0200
- Message-id: <[🔎] 47FF7282.1C34336A@nrubsig.org>
- Reply-to: firstname.lastname@example.org
- References: <[🔎] 47FC9BAA.email@example.com>
Josh Triplett wrote:
> Many packages use GNU autotools (automake and autoconf) to build, to
> the point that "./configure && make" represents one of the most common
> build procedures for Free Software packages. Libraries using
> autotools typically use GNU Libtool, partly because it works on almost
> any system and partly because autotools makes it difficult to do
> otherwise. Packages which use these libraries sometimes use libtool
> as well.
> Yet for many of these libraries and other packages, more than half of
> the build time goes into running the libtool shell script.
> Libtool knows how to handle libraries for umpteen different systems,
> including many ancient systems that have terrible shared library
> support. It has some extensive shell script logic to figure out how
> to build libraries for your system, and how to compile objects that go
> in those libraries. This logic does an amazingly impressive job of
> coping with adverse conditions. However, this logic all lives in an
> ~8500 line, ~250kB shell script, which runs *every single time you
> compile a source file*.
> This does not do wonders for performance.
Uhm... a while ago we hit the same problem and did some research on the
issue and a diffent route by switching the shell used by libtool from
"bash" to "ksh93" and did some minor modifications (e.g. enable more
ksh93 builtin commands, replace some of the "sed" usage by
builtin-string operators (which are common between "bash" and "ksh93"
but libtool didn't use them) etc. (the resulting script no longer does
unneccesary |fork()|+|exec()| calls (since ksh93 doesn't |fork()| for
subshells&co.))) ... and as a result we hit a similar performance
improvement as seen with the "dolt" tool...
__ . . __
(o.\ \/ /.o) firstname.lastname@example.org
\__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer
/O /==\ O\ TEL +49 641 7950090
(;O/ \/ \O;)