 |
Stop the autoconf insanity! Why we need a new build system.
by Andrew McCall, in Editorials - Sat, Jun 21st 2003 00:00 UTC
Any veteran GNU/Linux user has, at one point or another, run across a
package which used the autoconf/automake toolset. There is a lot to be
said in favor of this emerging standard. Running "./configure && make
&& make install" usually results in a working installation of whatever
package you are attempting to compile. The autoconf tools are also
portable to almost every *nix platform in existence, which generally
makes it easier to release your program for a large variety of
systems. However, despite these few pluses, the auto* tools are
constantly a thorn in the side of users and developers alike.
Copyright notice: All reader-contributed material on freshmeat.net
is the property and responsibility of its author; for reprint rights, please contact the author
directly.
Problems for Users
Let's take a typical autoconf package.
I'll call it package-xyz. Joe GNU/Linux User has just downloaded and
untared this package. Like most users, the first thing he does is
change directory to the newly-unpacked source tree and run a quick
"ls" to see what files are there. To his delight, he discovers a
"configure" script, indicating that he probably doesn't have to do any
editing of Makefiles or other such craziness. Little does he realize
the troubles awaiting him.
He again does the typical thing and runs "./configure --prefix=/opt".
The configure script runs for a while, then exits with an error which
basically translates to "You have an autoconf version which is three
weeks old; please upgrade", but this is displayed in the most cryptic
manner possible. He won't realize this is indeed what the error
message means until he runs a few quick Google searches. He really
wants to install this program, so he doesn't give up quickly. A few
minutes later, he's run apt-get upgrade (or run whatever auto update
his distribution uses).
He decides that he would like to customize his package, so he runs
"./configure --help". A list of options puke themselves all over his
screen. Undeterred, he runs configure again, but this time pipes the
output to his favorite pager. He's forced to parse this output
because there is no real standard for the options to pass to
configure. He wants to use GTK, but how does he do it? Is it
"--with-gtk" or "--enable-gtk"? Perhaps this time it's
"--enable-gnome", or maybe "--with-toolkit=gtk". In any case, he
finally "gets" it and runs the configure script, customizing the
package to his heart's delight.
Then he discovers he's missing lib-lzw-3.2.3.4. He takes the time to
go through the same rigamarole with that package and, after a bit of
tinkering, gets it to install. Then he discovers that configure
still thinks that the library is not there. He does a bit of
investigation and discovers that he needs to delete config.cache.
That's if he's lucky and the "cached" option isn't in some other
random directory or file (in which case he would remove the source
tree and start again from scratch).
The configure script now runs properly and outputs a nice Makefile, so
Joe runs "make".
To his surprise, configure, for no apparent reason, decides to run
again. That's ok; Joe sits patiently through the same tests as
they run over and over (this time, hopefully, cached). While looking
through the log messages, he happens to wonder if there is, perhaps,
maybe, some way to not have to run the same 50 tests over and over and
over. After a while, make runs, starts compiling the program, and
errors out. Joe reruns make to see what the error is, redirecting
stderr so he can scroll up and see the original error message of the
95 presented. To his amazement, while configure picked up the fact
that he did indeed have lib-lzw-3.2.3.4 installed, it failed to
realize that the header files were located in /usr/include/lzw, not in
/usr/include. At this point, Joe has a real problem.
Our friend Joe is a seasoned *nix user, so his gut reaction is to
start Emacs (one thing the FSF got right) and edit the makefile. He
does this only to discover a 50,000-line-long monstrosity. He greps
it, looking for the right variable to edit. Of course, there are 500
different $(INCLUDE) settings spattered throughout. Little does he
realize that the variable he's looking for is three directories down
and called $(YOUD_NEVER_GUESS_THIS_VARIABLE_NAME_HAHA). He finally
finds it and edits it to the proper value. configure again decides to
run for no apparent reason (even though "make" skipped it the last
five times) and overwrites all this hard work.
Now, Joe is presented with an interesting problem. He realizes that
he needs to edit something besides the Makefile. But what does he look
at? configure.in? Makefile.am? Makefile.in? Makefile.yoyo?
Makefile.banana?
By now, the average user has done one of the following:
- Given up and tried a different package.
- Shot himself in the head with a twelve gauge shotgun.
Joe is feeling masochistic, and continues trying. I'll save you the
pain of talking about his later problems and the pain of hearing about
Sally FreeBSD user, who wants to configure a package to run under
GNU/Linux on her iPaq.
Problems for Developers
Your average developer has no clue what m4 is or how it
works. Most Unix people (except the old diehards) have not even heard
of m4. That didn't stop the autoconf guys from using it.[1]
Here's the issue: In order to be able to write your autoconf setup
files properly (without a considerable amount of pain and suffering),
you must first learn m4. Let's follow the path of a GNU/Linux
developer, a creative lady named Jane.
Jane is a seasoned developer. She is accustomed to writing Makefiles,
but decides she wants the extra portability that autoconf allows. She
isn't familiar with m4, but thinks she can wade through building her
files anyway.
First, she looks for a tutorial on how to use autoconf. Sadly, she
will spend a lot of time looking. If she's lucky, she'll discover a
five-year-old online copy of a book that might help her accomplish 5%
of what she needs to do.
The GNU info system isn't much help, either. The documentation she
needs is spread over 50 info pages, divided into three packages.
These divisions don't help much, as configure.in sometimes makes
Makefile.am do strange things. Eventually, she gives up writing the
files and does what every other developer does with the auto* tools:
copy someone else. There are perhaps 30 developers worldwide who
understand the autoconf tool chain. (I doubt there is anyone who quite
understands the braindead Makefile that is puked out.) This very
problem is what caused many of Joe's issues. Well-written configure
scripts are rare things of beauty. (They are mostly found in GNU
projects, but I've seen a few others.)
The Root of the Problem
The autoconf/configure system is clever, but in the end, it is just a
very creative hack to work around the deficiencies of Makefiles.
Those who have used *nix for a long while have seen several such
workarounds. There's the Sleepy-Cat libdb approach of having 50
Makefiles, one for each architecture. There's the "config.h" approach
seen in several packages. There's "imake", used by X11 projects.[2]
It's easy to see why autoconf resorts to outputting 50,000-line-long
Makefiles. Makefiles lack support for complex dependencies and
complicated error checking. Many of the above tools use the same
hacks, like using "touch" to create files used for dependencies, with
complicated build rules for making those files. A paper on the
various Makefile techniques could fill volumes.
Solutions
There are several unique and innovative projects being developed to
help sort out the quagmire in build processes.
Two such solutions are "SCons" and "Cons". Both try to
replace Make with something far more flexible. However, they both
depend on tools which are a bit less standard than sh and m4: Perl and
Python. Still, both languages are quickly becoming standard on the
major Unixes. SCons is a bit less mature, but is preferred by the
author of this paper. Using either allows a much clearer build process
for complicated software. There is no requirement to generate a set of
build instructions from a template.
Another interesting piece of software is A-A-P. It allows a
user to create "recipes" for building software.
Any of these is cleaner and easier than autoconf. I like the
familiarity that Make brings to the table, but it's time to face up to
the fact that Makefiles introduce far more complexity than needs to
be.
- To be fair, m4 is a nice tool if you know how to use it.
- imake is perhaps the only thing that makes autoconf look sane, but I digress.
Author's bio:
Andrew McCall is a
software consultant and student at the University of Texas, Dallas. In
addition to working on Free Software, he spends his free time playing
piano and biking.
T-Shirts and Fame!
We're eager to find people interested in writing articles on
software-related topics. We're flexible on length, style, and
topic, so long as you know what you're talking about and back up
your opinions with facts. Anyone who writes an article gets a
t-shirt from ThinkGeek
in addition to 15 minutes of fame. If you think you'd like to try
your hand at it, let jeff.covey@freshmeat.net
know what you'd like to write about.
[Comments are disabled]
Comments
[»]
Missing features in scons
by John Calcote - Oct 23rd 2006 09:33:04
I've been working with autotools for about 4 years now - the first 3 years
I didn't know what I was doing, and just tried to hack my way through when
there was a problem. This last year, I decided to really understand it.
It's been painful, but worth the effort. The really sad part is that it
didn't have to be that painful. If there were a really good tutorial on not
just the mechanics of autotools, but on the underlying motivation for it,
and if all of this documentation were gathered into a single place, it
would have been almost painless. Here's the basis for understanding
autotools, step by step:
1. Learn what the intent behind autotools is
2. Learn how the toolchain works - what generates what?
3. Learn the underlying language (m4).
Now you have a half a chance at understanding what it does. Quit trying to
think you can hack your way through autotools input files without
understanding what they are for and how they work.
Before you decide to look at other tools, please try to compare apples to
apples. Don't sit there and tell me that scons is a great replacement for
autotools. For the things that scons does, it's a wonderful replacement.
But if you need the additional functionality provided by autotools, then
you just can't do it well in scons. What are these things? Mostly they have
to do with package building, maintenance, and distribution.
I'm a packager for SuSE, as well as an open source software project
administrator (for multiple projects). Scons is great if I want to build,
but it does nothing to help me package and distribute my software. I've
been on the mailing lists for scons for some time now, and I've commented
on this missing feature set. One of the originators of scons (Steven
Knight) has responded to my comments, and the crux of his responses are
this: You're right, we need to add these features - why don't you start
such a project and add them?
If you want to create a project for inhouse use, then by all means, use
scons. If, however, you want to create a project to be packaged for
distribution in a GNU/Linux distribution, you'd better use autotools, or be
prepared to emulate all of the functionality that autotools gives you with
a custom makefile. But don't even dream that a packager for a major distro
is going to pick up your project and add it to a distro unless you've done
just this. You must have support for all of the following targets in your
custom makefile:
all dist distcheck install check installcheck
And all of these targets have to build cleanly on most *nix platforms in
order to be considered as a candidate for packaging with a distro such as
SuSE, RedHat, Ubuntu, or Debian.
Even now, there is a recent (may 2006) news posting on the scons web site
- quote:
"Google's Summer of Code will fund a project proposed by Philipp
Scholl to add support for packaging and release dependencies to SCons.
Stefan Seefeld will be mentoring Philipp's proposal for the next several
months. Congratulations to Philipp, and thanks to Stefan for
mentoring."
Summary: Let's not be premature in trying to replace autotools with other
build management tools - they're not ready yet - and don't forget, this
article was written in 2003 - it's now 2006, and we STILL don't have a
proper replacement tool chain for autotools. Perhaps soon...
[reply]
[top]
[»]
Autoconf/Automake not as bad it used properly
by Pavel Roskin - Feb 1st 2006 18:07:56
The configure script runs for a while, then exits with an error which
basically translates to "You have an autoconf version which is three weeks
old; please upgrade"
This is a clear sign that the package maintainer used Automake but failed
to use "make distcheck" to create the package. Properly generated packages
don't have this problem.
He's forced to parse this output because there is no real standard for the
options to pass to configure. He wants to use GTK, but how does he do it?
Is it "--with-gtk" or "--enable-gtk"?
It's "--with-gtk", since gtk is an external package. Sure, there are
corner cases when it's hard to say if "with" or "enable" should be used,
like support for GNOME that doesn't involve linking to GNOME libraries.
Anyway, users doing customization are supposed to read what such
customization will do.
Then he discovers that configure still thinks that the library is not
there. He does a bit of investigation and discovers that he needs to delete
config.cache.
This was fixed in Autoconf 2.5x many years ago. Using obsolete Autoconf
is impolite towards users.
That's if he's lucky and the "cached" option isn't in some other random
directory or file
This has never been a default. Developers shouldn't be doing this, and
users should be responsible for unsafe customization of their systems.
The configure script now runs properly and outputs a nice Makefile, so Joe
runs "make". To his surprise, configure, for no apparent reason, decides to
run again.
Another case of not using "make distcheck".
While looking through the log messages, he happens to wonder if there is,
perhaps, maybe, some way to not have to run the same 50 tests over and over
and over.
Correct tests should cache results unless those tests are really fast
(e.g. checking that a file exists).
To his amazement, while configure picked up the fact that he did indeed
have lib-lzw-3.2.3.4 installed, it failed to realize that the header files
were located in /usr/include/lzw, not in /usr/include
Proper configure script should find it at the configure time.
He finally finds it and edits it to the proper value. configure again
decides to run for no apparent reason (even though "make" skipped it the
last five times) and overwrites all this hard work
Editing Makefile is not a good idea. Variables should be overridden on
the make command line. Of course, it should be the last resort. Normally,
it's easier to re-run configure.
Now, Joe is presented with an interesting problem. He realizes that he
needs to edit something besides the Makefile. But what does he look at?
configure.in? Makefile.am? Makefile.in? Makefile.yoyo? Makefile.banana?
Or maybe read the manuals. Or maybe write to the mailing list or to the
package developer. After all, it's the developers that should have read
the manuals in the first place.
By now, the average user has done one of the following:
1. Given up and tried a different package.
2. Shot himself in the head with a twelve gauge shotgun.
Actually, reporting such problems to the developers works too. Maybe
they'll be motivated to use Autoconf and Automake properly.
[reply]
[top]
[»]
Re: Autoconf/Automake not as bad it used properly
by Ron - Mar 1st 2006 06:14:43
>
> The configure script runs for a while,
> then exits with an error which basically
> translates to "You have an autoconf
> version which is three weeks old; please
> upgrade"
>
>
> This is a clear sign that the package
> maintainer used Automake but failed to
> use "make distcheck" to create the
> package. Properly generated packages
> don't have this problem.
Oh? And that works every time even if the user unpacked the files using
"tar -xmf yourWonderfulAutoPackage.tgz"?
Took me a long time to figure out that the auto* tools get totally
confused in that case and tell me that I need to install the newest version
of them, instead of also warning me that it could be because file mod times
have changed. Ah, right, I forgot, I should have read all the
documentation!
[reply]
[top]
[»]
Re: Autoconf/Automake not as bad it used properly
by Pavel Roskin - Apr 6th 2006 22:42:16
If it doesn't work for you, report it as a bug to the package maintainer.
If the maintainer used "make distcheck", report the bug to Automake
developers. They will welcome bug reports.
[reply]
[top]
[»]
Bakefile
by Francesco Montorsi - Nov 17th 2005 08:19:29
Basically, I don't agree with this article.
You can have troubles with *any* tool you use, if you don't know how to
use it or you're too lazy to read docs.
Anyway I agree that auto* error messages are quite cryptic and that a lot
of things could be made better.
Also, a newer integrated build system would be a great thing. But on
various distro I tried (FC, Mandriva, SuSE) I could only find the classic
GNU make and GCC. Never found Scons, Cons, Cmake, tmake, gconfigure,
buildtool, A-A-P, Ant installed by default.
The common user doesn't even know they exist.
The common unix user knows of "./configure && make && make install".
This is why I prefer to keep my project standards with 'configure' stuff
but also get all the benefits from a modern tool.
Using bakefile (http://bakefile.sourceforge.net) you can
write all your build logic in a single XML file in a nice syntax (BIG
advantage: using XML you don't have to learn a new syntax like for cmake
and others) and generate using it the makefiles you need for a *lot* of
build tools (autoconf on unix, MSVC, borland, mingw, watcom on win32, xcode
on MacOS, etc).
Then you pack all the makefiles in your project and ship it to the user.
If he's a unix user he will just need a "./configure && make && make
install" (the Makefile.in is written by bakefile automatically; the
AC_BAKEFILE macro allows you to write the configure.in files in few
minutes).
If he's a win32 user, then he can use the compiler/IDE he wants.
This just out-of-the-box.
All other tools require that the end-user install it on their computers,
first.
Bakefile is used only by the developer who created the software and is
completely hidden to the end user.
Can you imagine something more backward-compatible (and backward
compatibility is one of the major issues which led to the use of systems
like autoconf!!) and more easier to use from end-user POV than Bakefile ?
If yes, let me know ;)
Francesco Montorsi
[reply]
[top]
[»]
Re: Bakefile
by Francesco Montorsi - Nov 17th 2005 08:22:43
hmm, sorry. My comment ended up with no newlines. Here it is a more
readable version ;)
Basically, I don't agree with this article.
You can have troubles with *any* tool you use, if you don't know how to
use it or you're too lazy to read docs.
Anyway I agree that auto* error messages are quite cryptic and that a lot
of things could be made better.
Also, a newer integrated build system would be a great thing. But on
various distro I tried (FC, Mandriva, SuSE) I could only find the classic
GNU make and GCC. Never found Scons, Cons, Cmake, tmake, gconfigure,
buildtool, A-A-P, Ant installed by default.
The common user doesn't even know they exist.
The common unix user knows of "./configure && make && make install".
This is why I prefer to keep my project standards with 'configure' stuff
but also get all the benefits from a modern tool.
Using bakefile (http://bakefile.sourceforge.net) you can
write all your build logic in a single XML file in a nice syntax (BIG
advantage: using XML you don't have to learn a new syntax like for cmake
and others) and generate using it the makefiles you need for a *lot* of
build tools (autoconf on unix, MSVC, borland, mingw, watcom on win32, xcode
on MacOS, etc).
Then you pack all the makefiles in your project and ship it to the user.
If he's a unix user he will just need a "./configure && make && make
install" (the Makefile.in is written by bakefile automatically; the
AC_BAKEFILE macro allows you to write the configure.in files in few
minutes).
If he's a win32 user, then he can use the compiler/IDE he wants.
This just out-of-the-box.
All other tools require that the end-user install it on their computers,
first.
Bakefile is used only by the developer who created the software and is
completely hidden to the end user.
Can you imagine something more backward-compatible (and backward
compatibility is one of the major issues which led to the use of systems
like autoconf!!) and more easier to use from end-user POV than Bakefile
?
If yes, let me know ;)
Francesco Montorsi
[reply]
[top]
[»]
missed point - cross development
by sja - Aug 24th 2005 00:47:54
You didn't mention one major deficit in autoconf and friends. They don't
play nicely with cross-development environments.
[reply]
[top]
[»]
Cons is a solution ? I can't agree.
by sja - Aug 24th 2005 00:43:20
Having used cons for two years I can state without equivocation that it is
powerful, and works reasonably well, but somehow every project that used
cons ended up with massive conscripts that looked ... aweful. Classic
spagetti code where an apparently innocuous change in one spot creates
havoc due to hidden side-effects.
I believe there is too little structure in the scripting language. It's
the write-only language problem.
[reply]
[top]
[»]
Alternatives for automake/autoconf? What about alternatives for makefiles?
by thenewme91 - Jan 28th 2005 20:39:00
I've read over the page and most of the comments, and many points seem
relatively valid. It should be noted that maybe 95% of the world
population that has access to computers are "lazy idiots" in
terms of reading docs and programming and such. This is probably what drew
them to computers in the first place - since typing is so much easier and
more convienent than writing and talking.
At the same time as people are saying that developers should learn how to
use automake/autoconf and learn to check spelling errors and read
thousands, if not millions of pages, of assorted, cryptic, and ocassionally
incomplete or inaccurate "documentation", software developers are
trying to get as many developers to join their teams and use their
programs. I believe this is kind of ironic.
You look at the people who write HTML, and yes, it is markup, not
programming. But there are similar cases everywhere. Look at things like
Basic, Logo, and Turning, and you find that the english-like syntax makes
it very close to not-programming. Java and C++, by this thinking, aren't
that far behind, either.
Personally, I've been using linux for maybe 3 years as a 14 year old
child, and I've never heard of m4. At the same time, I've learned the
rudimentries of Java and C++, and don't seem to have many problems with
them. As for compiling programs, I find that while most programs work,
starting autoconf/automake projects is very cumblesome for the inexprienced
(like everything else in the Linux world). In that kind of an environment,
it doesn't seem uncommon to have to redo things 5 or 10 times. You have to
be really patient.
In terms of the portability issues, it's obvious that people will use old
programs and operating systems. Upgrading to a newer version or switching
operating systems takes time and/or money, and is rather inconvienent.
That kind of thinking isn't uncommon, especially among adults.
It's said that autogenerated makefiles and configure scripts are rather
cryptic, and therefore hard to edit. It seems to me that there are also
issues with the variants. Wouldn't it make sense to look at all the bugs,
history, and features of makefiles, and then create something simple,
machine-producable, close to english (or some other common
"language", like C++, Java, Perl, Python, or Turing) and easy to
parse, and make a replacement for make and makefiles and create versions
for all the OSes out there (e.g. Solaris, Unix, Linux, Windows 3.1, Windows
9x, Windows NT, Windows XP, HP-AX, 64-bit OSes, whatever comes out in the
future) and redub them something else?
Instead of ./configure, maybe we should have a ./installme script, and
instead of Makefile we should have a Make2src or something in our programs.
Of course, if we did this, we'd still include configure scripts and
makefiles with our pcs. And any new tools would have to be really small
(e.g. under 1-2 MB, preferably under 512 kb) before people would use it if
they have any bandwidth concerns (e.g. dial-up users, DSL users that have
transfer limits).
Just my two (well, rather twenty) cents.
-- -Michael C
[reply]
[top]
[»]
Be fair
by Stefan Kost - Jul 19th 2004 23:20:29
Everyone who uses not Linux but e.g. Solaris, the autotools are a great
thing. If you ever downloaded a packages that just uses Makefiles and
assues that stuff is there where is is under linux, then you know what I
mean.
The auto-tools are not optimal and I agreee that it is really urgent to
put all the docs into a shape where they can easilly be updated (e.g.
docbook via media-wiki), but the tools work and are somewhat the standart
way of doing it. Users have aquainted basic knowledge of them. If the
unpackage something that requires them to do something else, then the
experience is not always better.
And finally there are ways to make the auto-stuff easier. It started with
packages providing the *-config files and continues with having
pgk-config.
The next time, you write such an article, please be preceice and fair. And
if you don't like the state of documentation of the autotools, do something
against that. You are very welcome for sure and can earn a lot of fame when
you are succesful with that (definitely more that by writing such an
article).
[reply]
[top]
[»]
Re: Be fair
by merlin262 - Sep 19th 2004 00:56:31
Note: I am the author of the original article.
I think some background information would be useful about this article, I
place the blame on autoconf, squarely here, when in retrospect, it should
have been placed on lazy developers misusing autoconf. The article was
written out of shear frustration of the following:
1. Trying to get an existing (large) project moved over to autoconf
instead of traditional makefiles, and having numerous troubles along the
way.
and
2. The fact that at the time, I was working on a linux distribution, and
constantly found myself running into poorly written, badly designed,
unacceptable configure scripts, or projects that where shipped with only an
autogen.sh, relying on you having a copy of configure there. (Where you run
into problems with having the right version of autoconf installed.)
I freely admit it was a rant, but I'd like to think that some people at
least started looking at the problems with their autoconf scripts and
fixing them, because many of the problems I listed, are now, not as
apparant. Newer versions of autoconf, and automake have definate
improvements, and I'm pleased to be using them, despite the high learning
curve. Although, last I checked, documentation was still sorely lacking.
Perhaps if I get some spare time, I'll take up your suggestion and write a
tutorial for it.
I still think that we could do better though, as evidenced by software
like scons, the linux kernel build system, and ant.
> Everyone who uses not Linux but e.g.
> Solaris, the autotools are a great
> thing. If you ever downloaded a packages
> that just uses Makefiles and assues that
> stuff is there where is is under linux,
> then you know what I mean.
>
> The auto-tools are not optimal and I
> agreee that it is really urgent to put
> all the docs into a shape where they can
> easilly be updated (e.g. docbook via
> media-wiki), but the tools work and are
> somewhat the standart way of doing it.
> Users have aquainted basic knowledge of
> them. If the unpackage something that
> requires them to do something else, then
> the experience is not always better.
>
> And finally there are ways to make the
> auto-stuff easier. It started with
> packages providing the *-config files
> and continues with having pgk-config.
>
> The next time, you write such an
> article, please be preceice and fair.
> And if you don't like the state of
> documentation of the autotools, do
> something against that. You are very
> welcome for sure and can earn a lot of
> fame when you are succesful with that
> (definitely more that by writing such an
> article).
>
[reply]
[top]
[»]
Re: Be fair
by multi_io - May 7th 2006 13:01:40
> Everyone who uses not Linux but e.g.
> Solaris, the autotools are a great
> thing.
More than once I've spent hours on Solaris 9 building automake-based
projects only because the Makefile is absolutely incomprehensible and you
have to do everything yourself if something didn't work. You run "make", it
runs into some random error. You copy the command that caused the error to
the command line and run it manually -- if that doesn't reproduce the
error, you've lost. If it does -- hooray. You correct the mistake in the
command line (that's only possible of course if this was some commonly used
command like a compiler or linker call, and you know how to use those tools
-- and if you do, you didn't really need auto*bloat in the 1st place). Ok,
so the corrected command works and produces its output file. Great. You
re-run "make", expecting it to not run this command again, since the output
is already there. After all, this is "make", and "make" is more that a
shell, it respects dependencies, right? Wrong. Virtually all Makefile these
days are more or less degenerated, and automake-generated Makefiles are an
especially bad joke. More often than not, it will happen that the make run
*deletes* your manually created file and runs the erroneous command again.
I don't know why it does this, but it does, trust me. If that happens,
you've lost -- the Makefile is a mess, thousands of lines long and totally
incomprehensible. You won't find your erroneous command in there unless you
have three days
of your time to spare, or you're the author of automake.
Automake must die, the sooner the better. That's all.
[reply]
[top]
[»]
Build system not mentioned
by andres salomon - Jul 11th 2004 15:50:46
Check out cmake (http://www.cmake.org/) sometime. I've recently started
using it for my projects, and I've found it to be very flexible.
[reply]
[top]
[»]
an immense number of details are embodied in auto*
by Horned Owl Flying - Feb 16th 2004 10:24:51
An immense number of details are now embodied in
the autoconf/automake/libtool system. No doubt
when these tools where fist coded, the programmer
coded for what would be "common sense". Then the
idiosyncrasies of the target systems came along
and caused bugs. Each bug is a patch in the long
history of one of the tools. To replace these
tools the history of autoconf/automake/libtool
must be understood in detail or repeated. (Those
who forget history are condemed to repeat it.)
Noone wants to do it, when there are more fun
things to do. Most of the tools suggested as
replacements do not have as wide usage as the
auto* tools. If they did have such a wide usage,
they would begin to have the long bugfix
history.In short the auto* tools are complex
because they help manage an immense amount of
complexity! They are definately easier to use
than to manage that complexity by hand or to
rewrite the auto* tools! It is unlikely that
anyone will want to rewrite those tools now.
The mice agreed that the cat should be belled.
But who will bell the cat?
-- It's been absolutely impossible to work through
these Earth creatures. Their soul is too
controlled. Eros (Plan 9 from outer space)
[reply]
[top]
[»]
hum
by Trejkaz Xaoza - Sep 24th 2003 21:05:37
Maybe what we need is just to educate every developer in creating something
like an ebuild, so a single command will install any program regardless of
what build system it actually uses...
It won't solve the problem, though, because then include files move,
libraries move, etc. We would also need something like KDE's 'kde-config'
script for every single package on the system. Better yet, if every
package did it, you would just need one program reading the installation
paths from a database. We already know what files each package holds, why
not just store the CFLAGS a package requires to be used?
[reply]
[top]
[»]
Re: hum
by jasen - Jul 30th 2006 16:12:30
> It won't solve the problem, though,
> because then include files move,
> libraries move, etc. We would also need
> something like KDE's 'kde-config' script
> for every single package on the system.
something like pkg-config perhaps...
it works quite well here (linux), it's a bit of a pain
to get it working right for doing cross-compiles (MinGW)
Where working right requires it to completely ignore the native config
data.
I haven't managed to get autoconf to work for cross compiling, scons can
be convinced though.
[reply]
[top]
[»]
Put the blame where it belongs: Automake
by Gre.g - Sep 7th 2003 17:06:51
All the complaints in the article are PRECISELY the kinds
of complaints that autoconf programmers worked very
hard to avoid. For example, it's IMPOSSIBLE to have
version skew with autoconf because the configure script
is completely pre-generated before being shipped. As
far as the user is concerned it's a simple sh script.
ALL of these problems stem from the "automake"
monstrosity that creates many more problems than it
ever solved. Unfortunately people now tar autoconf with
the same brush as automake and libtool whenever they
run into problems with these. Sigh.
[reply]
[top]
[»]
Re: Put the blame where it belongs: Automake
by CLG - Oct 6th 2003 09:14:18
Yes, yes and yes !
This article doesn't apply to autoconf at all, at least from the user
point of view, since the user never use autoconf.
From the developper point of view autoconf is a useful set of
"metaprogrammation" tool to create a shell script.
When some install complains about the autoconf version it only proove that
the Makefile have been generated by automake, which indeed generate Mafiles
that rely on autoconf. IMHO this is an heresy.
From my developper point of view I like to have the control on a minimum
of 50% of the file present on a directory (ie to, at least, understand what
they are there for). With makefile (generated by some custom script-shell
of hand written) and autoconf, I do control everything.
If I add the complete auto* chain, the work turn more difficult than it
would be to write everything in plain sh.
In short autoconf rules, automake sucks, and I'm happy to see that this
opinion is shared by at least 1 other person in the world.
[reply]
[top]
[»]
Amen.
by dP - Sep 4th 2003 06:04:56
This is the best article I have ever read on Freshmeat!
You know, I actually miss just editing a config.h or
whatever, it seemed so much easier (when the
dependencies was <10:)
-- dP
[reply]
[top]
[»]
Check out MakeXS
by Gianni Mariani - Aug 26th 2003 13:54:09
I just published MakeXS which solves
some of the issues you bring up.
Needless to say, I agree with many of the issues you talk about. The
approach taken by MakeXS is to make it as easy as possible for the
developer.
[reply]
[top]
[»]
Never
by Macdaddy - Aug 18th 2003 19:32:02
Has anyone else never had a single problem that Andrew points out? Or does
anyone else not see any of what he points out as a problem? I've been
building from source for a helluva long time and I have yet to find a auto*
problem that didn't have a simple fix. Is anyone else NOT have problems?
[reply]
[top]
[»]
Re: Never
by jespa - Sep 10th 2003 00:16:53
Well, I must say that I usually compile all my packages manually (every
gnome package, for example) and It is NOT usual to find these problems.
There is an honorable exception : I have tried 10 times to compile
evolution-1.4 and it has EVERY problem described in the article. Problem
whit DB3 versions, with gtkhtml-3 location, and many more....
[reply]
[top]
[»]
Re: Never
by Blake Matheny - Sep 24th 2003 14:08:59
As a project admin, I run into these problems. But that's only because I am
having to generate all the configure files. As a user, you should never run
into these issues using the Autotools, since the files you get have all
been generated before hand. There is no need for m4, autoconf, automake, or
any of the other autotools if you are an end user. The only tools you
should need as an end user for compilation, are the bourne shell and a
version of make. If you are a developer using the autotools, accept the
fact that all the developers need to roughly be using the same version of
the Autotools. Making this concession is a pretty reasonable tradeoff
considering the ease it brings to your users in compilation, and the ease
it brings to developers in terms of both increasing portability (autoconf
does system checks I wouldn't otherwise think of) as well as decreasing the
ammount of time needed for a development cycle.
> Has anyone else never had a single
> problem that Andrew points out? Or does
> anyone else not see any of what he
> points out as a problem? I've been
> building from source for a helluva long
> time and I have yet to find a auto*
> problem that didn't have a simple fix.
> Is anyone else NOT have problems?
[reply]
[top]
[»]
Jam
by Sam Thursfield - Aug 8th 2003 16:40:36
I can't say enough nice things about Jam. I use the
Freetype version rather than the
original (it nets me support for Windows 9x and junk).
Basically, imagine Make, but with a whole bunch of builtin rules and
portability already there, so you don't have to screw around with
anything. It'll even work with Autoconf :)
[reply]
[top]
[»]
Buildtool
by Julio M. Merino Vidal - Aug 8th 2003 02:55:32
I have seen this article has mentioned several
alternatives to the auto* tools. I would like
to recommend buildtool
(my own project ;). It can be used to write
configure scripts and makefiles in a very easy
way; it provides
functionality like libtool and pkgconfig, plus
some other minor things...
It is a single, integrated
tool, instead of multiple independant ones. And
it does not generate files in the sense of auto*
tools. Configure scripts and makefiles are kept
short and simple and parsed at runtime.
And it will (hopefully) not suffer auto*
tools versioning problems when it's marked
stable ;). Cheers
[reply]
[top]
[»]
GConfigure
by Tim Thomas - Jul 23rd 2003 06:11:06
For those who haven't seen it yet you should try out GConfigure:
http://freshmeat.net/projects/gconfigure/?topic_id=46%2C1009
It's not a completely mature package and may require some hacking to get
working on your system, but there's nothing more satisfying than being
prompted by a GUI to check off your autoconf options and after clicking ok,
ending up with an RPM installed on your system.
[reply]
[top]
[»]
Re: GConfigure
by Artichoke - Jul 24th 2003 05:42:41
> but there's nothing more
> satisfying than being prompted by a GUI
> to check off your autoconf options and
> after clicking ok, ending up with an RPM
> installed on your system.
Especially on your head-less Debian boxen :)
-- FreeShade - window shading, for Windows, for free -
http://www.hmmn.org/FreeShade
[reply]
[top]
[»]
CMake
by Bill Hoffman - Jul 30th 2003 12:54:51
CMake is an open-source tool developed to stop the insanity. See
www.cmake.org for information about CMake
Before developing CMake, its developers had years of experience with
autoconf. CMake is truly cross platform and supports running autoconf like
tests even on windows platforms without having to install a UNIX emulator.
CMake does not depend on any additional tools like m4, or perl, or python.
The only requirement is that CMake itself is installed. There are binaries
for most platforms, and the source is C++ that can be compiled for most
platforms.
CMake generates native build files. So for UNIX it generates makefiles
(with full support for automatic C/C++ depend information generation), and
for Windows it can generate IDE project files and various makefiles.
The input to CMake is a simple extendable command language. We have found
it easy to port many autoconf based projects to CMake.
Here is a small example of some autoconf like tests in CMake:
CHECK_INCLUDE_FILE_CONCAT("sys/types.h" HAVE_SYS_TYPES_H)
CHECK_SYMBOL_EXISTS(socket "${CURL_INCLUDES}" HAVE_SOCKET)
Creating executables and libraries (shared and static) can be done with
simple commands:
To create an executable:
SET(FOO_SOURCES foo.cxx bar.cxx car.cxx)
ADD_EXECUTABLE(foo ${FOO_SOURCES})
To create a library:
ADD_LIBRARY(bar ${BAR_SOURCES})
CMake also provides a nice interface to allow users to adjust build
options. This avoids the problem of how to enable GTK. The interface can
be programmed from the input files to cmake to give users good feedback on
what they need to enable a feature.
[reply]
[top]
[»]
He's talking about automake, not autoconf
by Pierre Phaneuf - Jul 16th 2003 13:25:14
Most of the bad things he found with autoconf are actually problems in
automake.
autoconf by itself doesn't make configure run itself, it doesn't check
for autoconf or automake on your system, doesn't generate makefiles (it can
mess an existing makefile, but it is automake that *writes* makefiles, not
autoconf), etc...
My current solution (in XLPC, for example) is to
avoid automake like the plague and write my own makefiles. It's a pain, but
automake is so awful, it's clearly the lesser evil.
[reply]
[top]
[»]
On the other hand...
by Jeffrey Fulmer - Jul 12th 2003 22:45:11
If a rookie developer is intimidated by m4 and sh, then I guarantee he's
not producing complex work. In that case, he can surely get by without
writing an m4 macro. Out of the box, it's trivial to employ autotools to
test for C funtions and determine the compiler and linker. But if a
developer is smart enough to determine that a system is without strdup, is
he smart enough to code around it? Probably not.
The author notes the prevalence of autotools based projects. Price is not
an issue here. Autotools grabbed mindshare not because it was free, but
because it was good. At a time when significant projects have switched from
alternatives TO autotools, the author picked a curious moment to complain
about it...
[reply]
[top]
[»]
Bravo! A debugger for Make? or M4?
by R. Bernstein - Jul 11th 2003 19:58:54
I commend Andrew McCall for a funny, insightful and thought-provoking
Editorial. Clearly he has touched on such a sore nerve shared by many
others (including myself) that the discusson provoked the most people and
contains the most verbiage of any that I've read for a freshmeat editorial.
And although the editorial made my day and served to vent my frustration in
a entertaining way, I am also grateful to the author for having
enlightened me a little on SCONS, CONS, and A-A-P.
There is a lot in the editorial and discussion I agree with and won't
repeat. However I'd like to share a couple of my experiences.
I wrote a debugger for bash (http://bashdb.sourceforge.net or
look on freshmeat) in large part to be able to debug configure scripts. And
I felt the debugger was industrial strength when I was able to debug even
the most trivial configure script. A 4-line configure script will generate
hundreds of lines. In fact, the first time I tried to debug a real
configure script I thought the debugger was in an infinite loop. On
debugging the debugger, I realized, it just was that the configure script
was 30 thousand lines long and it was just taking a long time to read the
script into an array. After that I put something in the debugger to print
out the line count every 1000 lines.
Shortly after feeling elevated that I could henceforth debug the configure
scripts, I was immediately depressed in realizing that many times I'd like
to be able to debug "make" and there is not really any sort of debugger for
that. One can get verbose output, but I don't consider that a debugger
which lets you stop at some point in the execution, specifiy variables to
examine and run commands at that point.
Ditto, I think, for m4. (Pssst... debuggers have been around for 40 years
if not more -- even older than these tools).
Of course Perl and Python both have debuggers and there are even GUI
frontends for them. (I use GNU/Emacs, but check out the modernization to
ddd I did with Daniel Schepler). The reason a configure script is something
like 3000 lines long is precisely because lowest common denominator shell
(perhaps not even POSIX) so configure can't doesn't use arrays or hash
tables let alone functions or modules.
Which brings me finally to one last comment on automake - how unnaturally
it seems to me to work for Perl programs or to have Perl replace parts of
the automake system. I have a number of Perl projects that use automake.
See for example ps-watcher.
Perl programs tend to use their own configure system: the MakeMaker module
which I've found lacking for standalone programs like ps-watcher or recycle-logs. The Perl
testing system I think has always been a little superior to that used by
the default automake system. But somehow the two seem to me a little at
odds with each other or at least they don't have provisions for working
with each other; in my opinion there is something I can't really quantify
that makes using the two together a little awkward. Likewise, I've used
Perl for post-configure scripts (in packages written in Perl so the
argument about having to install Perl is moot, because its a strong
requirement of the package). Again there's something I can't really define,
but it always feels a little foreign when I do this.
[reply]
[top]
[»]
Re: Bravo! A debugger for Make? or M4?
by R. Bernstein - Jun 13th 2004 16:47:07
Well, after about a year later and no takers on my call for a debugger for
GNU Make, I've written one myself. See the freshmeat announcement
here.
[reply]
[top]
[»]
Autotools are cool; new tools could be cooler
by amoe - Jul 2nd 2003 09:00:03
I think we should keep the autotools around purely on the grounds of
their esotericism. They're probably the most widely used programs around
to have been written in shell (raw, ancient Bourne, no functions), M4 (an
arcane macro processor) and Make (syntactic tabs). And yet they've held up
surprisingly well over the years, and enabled porting of C programs to *BSD
and all sorts of proprietary *nixes. So much respect to autotools, because
they are an extremely clever hack in the spirit of Unix.
However, if we are thinking about replacing them, we should not limit
our scope to mere building: we should be sure to create a fully featured
system for end-user installation as well, and one that is cross platform.
This is a tough goal, but doable, and if we can deploy programs on Win, Mac
and *nix with equal ease, it will be a boon to the community.
[reply]
[top]
[»]
Portability is always hard to achieve
by Paolo Bonzini - Jun 29th 2003 04:52:31
I completely disagree. Lack of proficiency in using the tools is not an
excuse for the problems encountered when building programs. Yes, autotools
(especially autoconf) do have quite a steep learning curve, but not because
they involve learning m4 or unraveling 20kb Makefiles (not 20k lines of
code -- that's the configure script :-), rather because a tool that helps
making programs portable still asks you to know the pitfalls of
portability. The mentioned book is wonderful and taught me all that I know
about Autoconf, Automake and libtool: it is not a book for users, because
users *would not* need to know anything about the autotools if the
developers tried to learn rather than improvise.
Autoconf helps testing for features and works like a charm, but programs
still have to be coded in order to degrade gracefully when such features
are absent. It is surely easier to use for the developer than trying to
compile the program on a thousand architectures and figuring out what's
present on each of them and what's not; and if configure scripts were
written sanely, it would be surely easier to use for the user than
modifying a Makefile to suit his OS.
Autoconf is wonderfully extensible, but is indeed wonderfully hard to
extend it *in a proper way*. So Autoconf does help testing for packages,
but it does it slightly worse, because developers still have to know
whether the APIs changed in different versions of the libraries and to code
the appropriate tests. Anyway it gives better error messages than a
compiler or linker error at make time -- if it does not, it is a bug,
because a properly autoconfiscated program should *never ever* fail to
build after the configure script has run.
Finally, Autoconf has evolved taking into account some of the problems
mentioned in the article. config.cache is disabled by default nowadays,
too bad many programs use a six-years-old version of Autoconf (2.13) only
because the developer is lazy and does not want to type
"autoupdate" (yes, this tool was very buggy in 2.50 but it has
been completely rewritten since and is now foolproof). As a result, many
configure scripts do not work under zsh (i.e. under MacOS X), are bound to
use obsolete versions of Automake and libtool which carry their own share
of bugs, and so on.
Any tool meant to replace the autotools would have exactly the same
pitfalls of the latest Autoconf. Developers should learn to use the
autotools properly instead of agreeing with users who bash against them.
[reply]
[top]
[»]
Re: Portability is always hard to achieve
by Harald Korneliussen - Jul 20th 2007 04:28:46
> Developers should
> learn to use the autotools properly
> instead of agreeing with users who bash
> against them.
>
I think that if almost no one manage to make a "proper" autotools project,
that says more about the project than the developers. If it was easy to
learn to use the autotools properly, people would have done it, and every
open source project of any size would pretty soon run into a guy who said
"here, I'll fix your build scripts, they're too ugly right now". That just
isn't happening...
[reply]
[top]
[»]
SCons stability, autoconf functionality
by Steven Knight - Jun 23rd 2003 09:46:40
Two such solutions are "SCons" and "Cons". Both try to replace Make with
something far more flexible. However, they both depend on tools which are a
bit less standard than sh and m4: Perl and Python. Still, both languages
are quickly becoming standard on the major Unixes. SCons is a bit less
mature, but is preferred by the author of this paper. Using either allows a
much clearer build process for complicated software. There is no
requirement to generate a set of build instructions from a template.
A few quick items of note about SCons:
SCons is actually a lot more stable than its alpha status would
suggest. We've still been tweaking end-cases in the user interface, but
the base functionality has been in production use for a lot of projects for
the last year and a half. And we have a very large suite of regression
tests that have been implemented incrementally with the code, so
functionality tends to stay fixed once a bug has been identified. Plus,
we're going to go to beta very soon, anyway.
Also, the functionality in SCons at this point is almost a superset of
that in Cons classic, modulo a few smaller features, the absence of which
doesn't seem get in too many users' way.
Last, the current version of SCons added integrated support for
autoconf-like functionality, starting with the ability to search for header
files and libraries. It also provides a framework for adding your own
tests, so you're not restricted only to what's available in the tool
itself. The next version will add the ability to check for specific
functions and types, and may add config.h-like header file generation,
too.
[reply]
[top]
[»]
Comments and alternatives
by Bluebird - Jun 23rd 2003 07:03:26
- the author is gentle: he forgot to mention the issue with configure:
imagine you type
./configure --with-qt-lib=/opt/my_qt
Configure runs and stops because he can't find Qt. Indeed, the right
option with --with-qt-libs=/opt/my_qt (notice the s after lib). But why did
this stupid program not check his arguments ?
Even worse, if there is a standard qt, configure will use it and I won't
notice that is is not using my special version of qt because of a trivial
spelling error.
- other issue: the user is a clever user and wants to separate its build
tree from the sources, for example to have multiple builds with multiple
options (this guy is a masochist). So he creates a directory my_build, cd
to it and then runs ../configure . 50% of the free software will fail with
this although configure has been thought out to handle this case.
- tmake from Trolltech tries to bite the problem from the other hand: it
generates Makefiles based on a set of platform specific templates. What I
like with it is that it is very simple to use, and can generate msvc (yes,
I need that) project files. It is not extraordinalrily good but sufficient
for my needs. It misses a few dependancies. I really regret that Trolltech
has switched to a cpp based version in Qt3, the perl version was easier to
hack.
- boost.org uses its own make, bjam, which looks to me even more
complicated than autoconf/automake. Like tmake, it is based on a set of
platform-specific templates.
- Java has its ant thing.
- autoconf/automake is even more fun with projects like KDE, where every
possible hack has been used to generate extra-stuff and to patch the
generated makefiles. Only two people in KDE really understand the complete
makefile generation process. There is a python script in KDE, unsermake,
that should replace part of automake (or is it autoconf ?)
Anyway, the author is 100% right. Automake/autoconf is an horror that only
has one quality for it: it does not work too bad.
[reply]
[top]
[»]
Re: Comments and alternatives
by Thamer Alharbash - Jun 26th 2003 09:05:34
> - the author is gentle: he forgot to
> mention the issue with configure:
> imagine you type
> ./configure --with-qt-lib=/opt/my_qt
>
> Configure runs and stops because he
> can't find Qt. Indeed, the right option
> with --with-qt-libs=/opt/my_qt (notice
> the s after lib). But why did this
> stupid program not check his arguments
> ?
Maybe you should read the documentation sometime. Unknown options are
silently passed to any other configure script run by the top level
configure script.
Also there's no need to use such options to the configure script. The
correct way is to override LDADD INCLUDES and PATH so that the configure
script can find everything it needs.
I'll agree that there currently is no fixed way of doing things. Some
configure scripts allow you to specificy an option, and others expect you
to pass variables down.
> Anyway, the author is 100% right.
> Automake/autoconf is an horror that only
> has one quality for it: it does not work
> too bad.
The author like you, has not read up on the autotools documentation.
-- Thamer Alharbash
[reply]
[top]
[»]
Re: Comments and alternatives
by Bluebird - Jun 27th 2003 00:34:00
% Maybe you should read the documentation
> sometime.
Why should I ? I am just a user. The point of configure is to
make it easy to distribute programs, so that the user has
only simple steps to accomplish to get the program compiling:
./configure; make; make install
Now you are telling me that I should read the whold autoconf
documentation just to compile a program that was distributed
?
> Unknown options are silently
> passed to any other configure script run
> by the top level configure script.
I am sure there is a reason for that. The problem is that it
makes it a pain in the ass to use. So we have a tool that is a
pain in the ass to use for a developer and for a user. The only
thing auto* tools have good is that they work.
> Also there's no need to use such options
> to the configure script.
Then why do they provide them, can you tell me ? Why is it
so standard if it is so useless ?
> The correct way
> is to override LDADD INCLUDES and PATH
> so that the configure script can find
> everything it needs.
In this case yes, but there are other cases where you really
need the option. For example, when compiling vim, you can
choose with KDE, Gnome, Gtk and X gui. If I make a mistake
in the spelling, I will end up with a Gnome GUI and no error
notification. Not acceptable. I have to dig through the 20
pages of output of configure to check that he has accepted
my options.
> I'll agree that there currently is no
> fixed way of doing things. Some
> configure scripts allow you to specificy
> an option, and others expect you to pass
> variables down.
And none of them report an error which the most annoying.
> The author like you, has not read up on
> the autotools documentation.
Personally, I won't bother. I distribute my programs with a
Makefile. Yes, it is not portable. But any developer can fix it in
20 seconds if it does not compile.
[reply]
[top]
[»]
Re: Comments and alternatives
by Thamer Alharbash - Jun 28th 2003 01:58:03
> In this case yes, but there are other
> cases where you really
> need the option. For example, when
> compiling vim, you can
> choose with KDE, Gnome, Gtk and X gui.
> If I make a mistake
> in the spelling, I will end up with a
> Gnome GUI and no error
> notification. Not acceptable. I have to
> dig through the 20
> pages of output of configure to check
> that he has accepted
> my options.
>
Well I neither use GNOME nor KDE, so I have no idea what you had to go
through. I avoid both desktop managers because they are not necessary as
long as you use a reasonably lightweight window manager.
Also I don't use a graphical editor (emacs in console mode is fine in a
large terminal).
But I digress.
If a package has you looking through tons of output without good
documentation, then maybe you should ask questions on the mailing list and
alert the maintainers/authors to the lack of clarity.
Free software is about choice, and freedom. Try to keep that in mind.
> And none of them report an error which
> the most annoying.
Actually this isn't always true. It depends on what mistake you make. Try
"configure --foobar" and then try "configure --enable-foobar."
It's a design decision not to check the option completely because as long
as it "looks" right you can pass it down to other configure scripts.
Can this be fixed? It probably can with some redesign by the autoconf
poeple. Has anyone bothered to yet? No.
> Personally, I won't bother. I distribute
> my programs with a
> Makefile. Yes, it is not portable. But
> any developer can fix it in
> 20 seconds if it does not compile.
There's a lot more to be gained than just compile time options. The whole
autotool set gives you incredibly good dependency checking, a slick and
streamlined installation procedure, along with complete portability for
building libraries (see libtool).
Redoing all of the autotools work will hurt for each project you maintain
with big makefiles will hurt.
Maybe you should put that effort toward solving this problem in the
autotools if it annoys you so much. Remember, free software is about
freedom and choice.
-- Thamer Alharbash
[reply]
[top]
[»]
Re: Comments and alternatives
by Laurent Bercot - Jul 27th 2003 05:20:46
> The only thing auto* tools have good is that they work.
Not even. I am a
diet libc user, and I find it
very difficult to link autotools-using programs against the diet libc. Why?
Because the configure scripts detect that my system is Linux, and
immediately assume that I'm using the glibc. Did I hear "open-mindedness"
?
So, as far as portability is concerned, autotools are a failure - I can't
even make them work on my i386-Linux.
> Personally, I won't bother. I distribute
> my programs with a
> Makefile. Yes, it is not portable. But
> any developer can fix it in
> 20 seconds if it does not compile.
I think this is the way of wisdom.
Personally, I have developed my own set of libraries hiding
non-portabilities
(skalibs), and
build my software on top of it. Any portability problem is centralized in
skalibs, and the build-time tests are understandable. I have no need for
autotools, and I believe that no one has, either.
-- Laurent
[reply]
[top]
[»]
Re: Comments and alternatives
by Anton Persson - Jul 30th 2003 08:56:19
% Why should I ? I am just a user. The
> point of configure is to
> make it easy to distribute programs, so
> that the user has
> only simple steps to accomplish to get
> the program compiling:
> ./configure; make; make install
Yes, but yet you keep hacking distributions that
don't compile... If a distribution does not compile
you can't blame the compiler, the configure script
or anything like that. It is the developers responsibility
to see to that it works, and that they understand
the tools that they are using.
The problem as we all know is that there is no standard
for anything really, different *IXs can be very different..
And therefore we need something like autoconf/automake.
It's the developers choice to make, so if something doesn't
build, contact the developer about it.
I wonder how many programs that are downloaded, and then fail to build and
the user just throws it in the trash. Then the user goes on and on, nagging
and nagging. What he/she should do is something CONSTRUCTIVE.. It's free
software, if it doesn't work either fix it, or live with it.
[reply]
[top]
[»]
Before Posting Learn
by Caffinee Hacker - Jun 22nd 2003 20:43:26
For those of you looking for a good tutorial or information about making a
Makefile and configure script using auto* tools should go here http://www2.dystance.net:8080/software/docs/pdf/automake.pdf
It is a great tutorial and will teach you all you need to know to
understand how great a system these auto* tools really are. Don't be scared
by the length either, the first section really gives you all you need to
know for a simple program and then you can skim and add the pieces you
need. It's not hard so read before posting,
~Tim~
[reply]
[top]
[»]
A coindience?
by David Necas (Yeti) - Jun 22nd 2003 13:36:01
Most ranting comes from people who don't understand the auto* tools
(proving that by writing things like you have to have automake installed to
compile things or you have to know m4 to create autoconf macros) and who
don't remember how software distribution looked like before autoconf and
automake. Their posts reveal a primitive fear of unknown -- while one can
emphatize with them, fear is not an argument. They would probably say the
same anything complex they would have to learn. And creating portable C
programs is inherently complex.
So you can use some HLL like Python or Java and let the language creators
and porters do most of the dirty work for you. This limits the range of
platforms the program will run on and the range of programs you can write
-- well, you *can* write a network monitoring utility in Java, but then you
can't run it on your i486 router. But of course it allows build systems
with much more built-in assumptions, IOW much simplier.
Most of the other proposed solutions are no solutions at all. Trying to
solve portability by seriously limiting the number of platforms is
silly.
Binary packages work only in a very uniform environment (in fact, it
doesn't completely work even on MS-Windows), people simply need to
compile programs on not-so-standard systems.
Make replacements are nice, but I want to compile my program on IRIX,
SunOS, and who-knows-what. I don't have any make replacements there.
The same holds for configure systems written in Python, or Perl, or
whatever. I love Python and get along well with Perl, but too often I write
a Python script and then find it doesn't run on Debian Woody, because of
too old Python (not speaking about other Unices). The same for Perl. So
where's the portability?
So after all, a portable build system has to use what is available --
make, shell, sed, and such simple stuff. It doesn't have to look exactly
like the GNU one, but it *will* be complex and it *will* use some kind of
expansion of higher-level constructs to the simple ones available
everywhere.
I'm one of the of people who learned the GNU build system and I think it's
great. And yes, it is because I do understand it. Except for the badly
written ones, all programs using it build essentially the same way, have
the same means of enabling and disabling optional stuff, Makefiles have the
same targets, etc.
Of course, there are issues. So go ahead and fix them.
[reply]
[top]
[»]
Re: A coindience?
by PhrozenSmoke - Jun 23rd 2003 04:29:50
> Most ranting comes from people who don't
> understand the auto* tools (proving that
> by writing things like you have to have
> automake installed to compile things or
> you have to know m4 to create autoconf
> macros) and who don't remember how
> software distribution looked like before
> autoconf and automake. Their posts
> reveal a primitive fear of unknown --
> while one can emphatize with them, fear
> is not an argument. They would probably
> say the same anything complex they would
> have to learn. And creating portable C
> programs is inherently complex.
>
> So you can use some HLL like Python or
> Java and let the language creators and
> porters do most of the dirty work for
> you. This limits the range of platforms
> the program will run on and the range of
> programs you can write -- well, you
> *can* write a network monitoring utility
> in Java, but then you can't run it on
> your i486 router. But of course it
> allows build systems with much more
> built-in assumptions, IOW much
> simplier.
>
> Most of the other proposed solutions are
> no solutions at all. Trying to solve
> portability by seriously limiting the
> number of platforms is silly.
>
> Binary packages work only in a very
> uniform environment (in fact, it doesn't
> completely work even on MS-Windows),
> people simply need to compile programs
> on not-so-standard systems.
>
> Make replacements are nice, but I want
> to compile my program on IRIX, SunOS,
> and who-knows-what. I don't have any
> make replacements there.
>
> The same holds for configure systems
> written in Python, or Perl, or whatever.
> I love Python and get along well with
> Perl, but too often I write a Python
> script and then find it doesn't run on
> Debian Woody, because of too old Python
> (not speaking about other Unices). The
> same for Perl. So where's the
> portability?
>
> So after all, a portable build system
> has to use what is available -- make,
> shell, sed, and such simple stuff. It
> doesn't have to look exactly like the
> GNU one, but it *will* be complex and it
> *will* use some kind of expansion of
> higher-level constructs to the simple
> ones available everywhere.
>
> I'm one of the of people who learned the
> GNU build system and I think it's great.
> And yes, it is because I do understand
> it. Except for the badly written ones,
> all programs using it build essentially
> the same way, have the same means of
> enabling and disabling optional stuff,
> Makefiles have the same targets, etc.
>
> Of course, there are issues. So go ahead
> and fix them.
>
I disagree with this guy completely, and agree with the author COMPLETELY.
I write code in a variety of languages: Python, Java, C/C++, and the whole
autoconf/Makefile process has become antiquated and barbaric when compared
to newer installation methods available. The author says the 'make' process
just uses what's available on the system: WRONG. The problem is when every
single version of the 10,000+ dependencies for a program don't line up to a
'T', the 'make' process just whines and quits. The problem with the make
process is all of the dependencies. You can easily spend more time
installing packages for the 'make' process than installing packages for the
PROGRAM you are trying to compile: First upgrade autoconf, automake, m4,
libtool, some programs require assembly compilers like nasm - so upgrade
that. When you spend more time 'getting ready to install' then installing
and running the program, there is a problem. Who are these people trying to
run network monitoring tools on i486 'routers'? Who is using i486 as a
router anyway? AOL Keyword: UPGRADE. It sounds ridiculous to make an
installation process unnecessarily complicated because some loser somewhere
'MIGHT' be trying to compile the package on some Commodore-64 somewhere in
the backwoods of the Tundra. Chances are, the package may compile on such a
system, but will not RUN well on such a system anyways. So, we can't
sacrifice progress in the name of ridiculous amounts of backwards
compatiblity. I am in favor of not only moving away from the 'make'
process, but moving away from raw C/C++ programs altogether. It is much
better for a programs to be written in programming languages that use
'wrapped' versions of the C libraries, programming languages such as
Python, Perl, etc., because it ends up (in most cases) limiting the number
of dependencies. It is much easier to upgrade Python or Perl ONCE, then
have to upgrade autoconf-automake-m4-libtool-etc for every single package
you want to compile. Also, 'wrapped' programming languages like Python
introduce something that is really missing from C: ERROR CATCHING. Which is
why you see so many C/C++ programs seg-faulting. It is stupid to use an
'unwrapped' version of a programming language that assumes ANYBODY is
capable of writing a 'bug free' program. There is no such thing as a 'bug
free' program, as you can only test for the PRESENCE of bugs, not their
absence. So, programming languages with error catching greatly add to the
stability of the program. (I have yet to see a Python or Perl program 'seg
fault' unless the program was making calls to some third-party wrapped
C/C++ library made with swig or the like.). A Python program's dependencies
tend to be simple (needs version 2.2 of Python, or version 2.3, etc.) Aside
from getting stuff like PyGtk or special GUI toolkits, Python programs
don't whine as much about dependencies because Python and Perl include all
the necessary versions of the basic libraries in their tool kits. So, with
Python you don't get whining like "need to upgrade libxml", because if a
program will run with a certain version of Python it will run with the XML
libraries IN that version of Python. So, I would rather spend 40 minutes
upgrading Python ONCE every year or so, then having to upgrade my whole
'make' configuration every 2 weeks. Also, the 'make' process is not
user-friendly for new *nix users at all. And, personally, I think if we
ever want to see more people choosing *nix platforms over Windows, we have
to show them something other than a bunch of tech-geek junk scrolling up a
console. While people will say "well newbies shouldn't compile source
packages": That is stupid, because we ALL know many times there may be only
1 or 2 programs out there that do a special task that you need to do, but,
often times, no distros have binary versions available, so the user has no
choice but to grab the source packages and try to compile it. (Though, if
it was written in Python, Perl, Java, etc. it could be run immediately and
not have to be compiled.) The same people that are saying "if you whine
about the GNU make system, you have a fear of learning", have a fear of
CHANGE. The time has come to move to higher-level Fourth Generation
programming languages and more civilized installation processes, instead of
trying to 'live in the past' and hang onto programming languages that have
served their purpose. Their is nothing wrong with writing a program that
relies on 'wrapped' versions of C in a language like Python/Perl, etc,
because your Python program inherits the stability of the Python base. I've
noticed that alot of people in the open source community love having FREE
software available, but have a FEAR of using someone else's knowledge.
Instead, they try to reinvent the wheel, writing C programs from scratch
that 'seg fault' for all the same reasons 40,000+ C programs have
seg-faulted. That's stupid when you can use Perl or Python with 'wrapped' C
code that has protection against millions of known bugs, glitches, and
common mistakes (and, yes, I admit I'm human and my intelligence is not
flawless) and present the user with an application that is overall more
stable than a raw C application. In Python, my errors are CAUGHT, not "core
dumped" with an unexpected QUIT, scaring the hell out of any newbie (and,
yes, I do make ERRORS- I am human and admit it. Do all of you?) Critical
errors in raw C programs leave you with exactly one option when the program
is running: QUIT. (Even the nice seg-fault catchers in Gnome and Kde lead
to the program having to QUIT.) That's really stupid: sorry. If you used
wrapped Python, Perl, or Java code - that 'wraps' the C-library, your
program can continue anyways - working around the problem however you code
it do so. The result: My Python programs get more positive feedback than
'bug reports'. The whole point of writing programs is to create something
useful, not keep 'gdb' busy debugging core dumps. When you own up to
being human, you will understand the value of using higher level languages
that 'wrap' the C code, instead of writing raw C programs. It's not the
quantity of programs you write, it's the QUALITY. Truth be told, a lot of
open source programs written in C seem great because they are free, but the
'seg faults' and 'core dumps' caused by uncaught errors (and people trying
to re-invent the wheel by coding C programs from scratch rather than
constructing from a stable code-base) make a lot of open source programs
not worth the tar-ball they are packaged in. Sometimes you have to put the
'do it myself from scratch' pride thing aside and start the development
from a stable code base - even if it is somebody else's- like the Python,
Perl, Java code base etc. No, you won't have the 'glory' of saying "I coded
all of this in C...from scratch", but the program will actually WORK with
way fewer bugs. By the way, BUGS also limit the portability of programs,
and C/C++ programs using the 'make' process have PLENTY of them for
everybody.
[reply]
[top]
[»]
Re: A coindience?
by Andrew Suffield - Jun 23rd 2003 07:30:58
I considered replying to this. Then I decided that the formatting and
overuse of capitals spoke for themselves.
[reply]
[top]
[»]
Re: A coindience?
by Tim Lesher - Jun 30th 2003 12:49:42
> I considered replying to this. Then I
> decided that the formatting and overuse
> of capitals spoke for themselves.
Not to mention the 31337 user name and the full-quoting of the original
message. As a Python advocate myself, this embarrasses me.
[reply]
[top]
[»]
Re: A coindience?
by Steven Knight - Jun 23rd 2003 09:21:17
> The same holds for configure systems
> written in Python, or Perl, or whatever.
> I love Python and get along well with
> Perl, but too often I write a Python
> script and then find it doesn't run on
> Debian Woody, because of too old Python
> (not speaking about other Unices). The
> same for Perl. So where's the
> portability?
We implement SCons internals in Python 1.5.2, precisely to minimize this
sort of portability issue.
The issue of SCons not being implemented in a more "modern" version of
Python comes up periodically, but the advantages of delivering something
that works on just about every installed Python out there outweigh any
small benefit we'd get from being able to use Python 2.x language features
in the internal implementation. So we're probably going to stick with the
lowest-common-denominator 1.5.2 release for quite a while. (You can still
use Python 2.x in your SCons configuration scripts if you wish, at the
expense of your own build's portability.)
Similarly, we'll be adding (soon, I hope) a pre-built package with a
pre-built executable that will not require separate installation of Python
to use successfully.
This is all part of our philosophy of trying to deliver a build tool that
works as well as possible for as many platforms and people as possible out
of the box. It's not impossible to do this just because you use a
scripting language like Python, it just takes a little more work on the
part of those of us implementing the build tool.
[reply]
[top]
[»]
Re: A coindience?
by MC - Jun 23rd 2003 11:06:07
> Most ranting comes from people who don't
> understand the auto* tools (proving that
> by writing things like you have to have
> automake installed to compile things or
> you have to know m4 to create autoconf
> macros) and who don't remember how
> software distribution looked like before
> autoconf and automake. Their posts
> reveal a primitive fear of unknown --
> while one can emphatize with them, fear
> is not an argument. They would probably
> say the same anything complex they would
> have to learn. And creating portable C
> programs is inherently complex.
>
> So you can use some HLL like Python or
> Java and let the language creators and
> porters do most of the dirty work for
> you. This limits the range of platforms
> the program will run on and the range of
> programs you can write -- well, you
> *can* write a network monitoring utility
> in Java, but then you can't run it on
> your i486 router. But of course it
> allows build systems with much more
> built-in assumptions, IOW much
> simplier.
>
> Most of the other proposed solutions are
> no solutions at all. Trying to solve
> portability by seriously limiting the
> number of platforms is silly.
>
> Binary packages work only in a very
> uniform environment (in fact, it doesn't
> completely work even on MS-Windows),
> people simply need to compile programs
> on not-so-standard systems.
>
> Make replacements are nice, but I want
> to compile my program on IRIX, SunOS,
> and who-knows-what. I don't have any
> make replacements there.
>
> The same holds for configure systems
> written in Python, or Perl, or whatever.
> I love Python and get along well with
> Perl, but too often I write a Python
> script and then find it doesn't run on
> Debian Woody, because of too old Python
> (not speaking about other Unices). The
> same for Perl. So where's the
> portability?
>
> So after all, a portable build system
> has to use what is available -- make,
> shell, sed, and such simple stuff. It
> doesn't have to look exactly like the
> GNU one, but it *will* be complex and it
> *will* use some kind of expansion of
> higher-level constructs to the simple
> ones available everywhere.
>
> I'm one of the of people who learned the
> GNU build system and I think it's great.
> And yes, it is because I do understand
> it. Except for the badly written ones,
> all programs using it build essentially
> the same way, have the same means of
> enabling and disabling optional stuff,
> Makefiles have the same targets, etc.
>
> Of course, there are issues. So go ahead
> and fix them.
>
I absolutely agree with you!
autoconf/automake is really the RIGHT way to do that thing.
IMHO it's insane that I'd have install python (which i personaly hate) and
perl (which I like) or java (...) to build a software package.
I know that for all those RH folks Python or Perl is something as usuall
like bash (which I replace by tcsh BTW ;), but for most platforms or
environments it's absolutely undesirable to have them.
The autocont is designed with portability in Mind.
If the author of above article read autoconf documentation he'd probably
found an answer why configure cannot check parameters at startup.
[reply]
[top]
[»]
Re: A coindience?
by Eric Lee Green - Jun 26th 2003 22:17:49
> Most ranting comes from people who don't
> understand the auto* tools (proving that
> by writing things like you have to have
> automake installed to compile things or
> you have to know m4 to create autoconf
> macros) and who don't remember how
Indeed. For example, the cryptic error message that
he described is something that happens with
automake, not with autoconf. I do
not use automake so I don't have that
problem with the various programs that I maintain --
my generated 'configure' scripts run pretty much
*everywhere*, even in places that have no
'autoconf' or 'automake' installed -- such as, e.g.,
the typical IRIX or AIX system.
He whangs on autoconf when the real problem is
automake. Typical of someone who doesn't
understand the tool -- he picked on the wrong
target!
(This is not to say that autoconf isn't hairy enough
as it is! Just that blaming 'autoconf' for the problems
of 'automake' is, as Spock would put it, "illogical"!).
[reply]
[top]
[»]
Re: A coindience?
by Juan J. Martínez - Jul 14th 2003 07:09:33
>
> % Most ranting comes from people who
> don't
> % understand the auto* tools (proving
> that
> % by writing things like you have to
> have
> % automake installed to compile things
> or
> % you have to know m4 to create autoconf
>
> % macros) and who don't remember how
>
>
> Indeed. For example, the cryptic error
> message that
> he described is something that happens
> with
> automake, not with autoconf. I do
> not use automake so I don't have that
>
> problem with the various programs that I
> maintain --
> my generated 'configure' scripts run
> pretty much
> *everywhere*, even in places that have
> no
> 'autoconf' or 'automake' installed --
> such as, e.g.,
> the typical IRIX or AIX system.
>
> He whangs on autoconf when the real
> problem is
> automake. Typical of someone who doesn't
>
> understand the tool -- he picked on the
> wrong
> target!
>
> (This is not to say that autoconf isn't
> hairy enough
> as it is! Just that blaming 'autoconf'
> for the problems
> of 'automake' is, as Spock would put it,
> "illogical"!).
I agree with you, even using automake.
I've developed a little game using SDL and it compiles and runs without
problems... even in Solaris 8/9. And I'm a auto-tools novice. My be that
was my lucky day? Dunno :-)
I cannot understand the article when that dude says you need auto-tools
installed in order to make configure run. Well, that's not true (oh, not
needed, I don't want to say what's true or false). I can realize just one
case: the configure stuff is wrong.
And the fact someone distribute a wrong configure, is that auto-tools'
problem? I think not :-)
No matter ant, buildtool, or whatever you wanna use is great... if the
developer using it is a jerk, you'll get the same good configure & build
environment you had with auto-tools :-)
May be all the problem is auto-tools are not trivial to use, and people
is sometimes lazy to read the docs available. I must admit it took me about
3 hours and quite tests to be sure all the stuff was ok.
I don't agree at all with the article and I think your point of view is
almost OK.
[reply]
[top]
[»]
Re: A coindience?
by smithdev - Jul 5th 2003 18:14:40
I'll chip in for the fairly sophisticated user who is new to the
autotools.
I've the goat book, the potto book (that O'Reilly one) and a couple of
others. I've read the info bits.
I couldn't even get started until I found the autoproject script here on
Freshmeat.
I think that the best thing that could reasonably happen is cribbing an
idea from the kernel community: a make menuconfig to streamline the
process.
-- gentoo is all that
[reply]
[top]
[»]
agreed
by Simon Howard - Jun 21st 2003 23:41:01
I cannot stress how far I agree with this article. I have been saying to
people for the past year at least that the whole auto* system is a horrible
horrible mess.
I tend to find myself spending several hours for each new package I make,
just setting up the build system. Once it works, it works fairly well, but
it is quite simply way too complicated to set up. To be quite blatant I
should NOT be spending HOURS settings this up.
I think part of the problem is that the whole system seems to be built
upon layers on layers of hacks. Autoconf wasnt quite enough, so they wrote
automake. Then autoheader. Autom4te. Repeat ad infinitum.
I dont think the idea of shell scripts that generate makefiles is
neccesarily a bad one, but it would be nice if the whole system could be
rewritten in a coherent form, preferably using sane tools (who the hell
uses m4?).
It would also be nice if there was a GUI option so less experienced people
could install without having to use the console.
[reply]
[top]
[»]
Re: agreed
by Eric Lee Green - Jun 26th 2003 22:22:04
> coherent form, preferably using sane
> tools (who the hell uses m4?).
I used to generate my entire web site via a complex
set of m4 macros. Not my fault if you're not geek
enough to do that :-).
> It would also be nice if there was a GUI
> option so less experienced people could
> install without having to use the
> console.
There is such a tool. It is called 'krpm' or 'gnorpm',
my friend. Less experienced people should not be
messing with source code, and shouldn't even
know what a compiler *IS*, much less be invoking
it.
[reply]
[top]
[»]
Re: agreed
by smithdev - Jul 13th 2003 14:00:25
>
> % coherent form, preferably using sane
>
> % tools (who the hell uses m4?).
>
>
> I used to generate my entire web site
> via a complex
> set of m4 macros. Not my fault if you're
> not geek
> enough to do that :-).
>
>
> % It would also be nice if there was a
> GUI
> % option so less experienced people
> could
> % install without having to use the
> % console.
>
>
> There is such a tool. It is called
> 'krpm' or 'gnorpm',
> my friend. Less experienced people
> should not be
> messing with source code, and shouldn't
> even
> know what a compiler *IS*, much less be
> invoking
> it.
>
In addition to the auto-tools and sendmail, this is about the 4th
application I've ever heard of that uses m4.
I beg to differ on your Less Experienced People comment. If LEPpers don't
get in and figure stuff out, how will their leprosy be cured?
-- gentoo is all that
[reply]
[top]
[»]
this is a geek world! ... or not?
by Emil Perhinschi - Jul 27th 2003 09:34:48
> I used to generate my entire web site via a complex
> set of m4 macros. Not my fault if you're not geek
>
I thought that the editorial was about tools that make common peoples'
life complicated; geekishness is another issue ....
> [...]
>
> There is such a tool. It is called 'krpm' or 'gnorpm',
> my friend. Less experienced people should not be
> messing with source code, and shouldn't even
> know what a compiler *IS*, much less be invoking
> it.
>
Why should't they? Are you afraid that the less experienced people
might like it, learn it and take your job ;-) ?
The editorial was also about taking care that the user, experienced or
not, does not loose precious time.
I am not experienced as far as C or C++ programming is concerned, but I
can survive if
$ configure;make;su;make install
does not work smothly.
I don't expect the developers to see the future and make room for all the
changes that might occur and I don't expect them to addapt their source
code to those changes even if they lost interest in the program. I am happy
if I can find out that I have to make some soft links to persuade the
configure or make programs that I run RedHat and not Debian or Slackware,
or that I have to modify some lines in config.h, and I am extremely
gratefull when I find in config.h or some place else
# for debian users ...
or
# for slackware users ...
The contemporary "unexperienced users" are not smarter that those that
caused the term "user friendly" to be coined, but neither are they using
hardware worth bilions on a time sharing basis. Most of them are going to
waist their personal time and run the risk of trashing hardware worth about
800$. Why not let them choose if they want to spend some time solving a
problem and learning more about their tools in the process?
I am not an authority in what m4, autoconf or such other "thingies" are
concerned. They worked great for me most of the time, and when I decided
that I loose too much time recompiling I decided to switch from Slackware
to Debian for the sake of those 9000+ of precompiled packages. I guess that
m4 etc. are good enough, but if there are simpler solutions, why not use
them if they can make both the developer and the end user happy?
[reply]
[top]
[»]
No ones mentioned qmake?
by Jarvis Cochrane - Jun 21st 2003 21:24:14
I agree that the whole business of building software
from source, and coping with the dependency
disaster, and coping with the differences between
platforms, is fundamentally broken.
The two best things the FSF ever did are gcc and
gtar. The two worst are their texinfo documentation
and the auto* tools.
I like the approach (and yes, I realise it's pretty
much a Qt specific thing) taken by qmake. It seems
to solve much the same problems as auto*, but
without the pointless complexity.
It's simple and it works.
Granted, it doesn't try and solve the cross platform
issue - that's palmed off to the qt library. Maybe
that's the problem with auto* - it tries to solve too
many problems at once.
Perhaps we should break *the problem* into three
parts:
1. Cross platform compatibility
2. Building the software
3. Managing dependencies
I don't know.... just my 1.5 cents worth...
[reply]
[top]
[»]
Re: No ones mentioned qmake?
by e8johan - Jun 22nd 2003 22:21:33
> Granted, it doesn't try and solve the
> cross platform
> issue - that's palmed of |