LWN.net Logo

More information on the X11R7.0/X11R6.9 release

More information on the X11R7.0/X11R6.9 release

Posted Dec 23, 2005 19:53 UTC (Fri) by Zarathustra (guest, #26443)
In reply to: More information on the X11R7.0/X11R6.9 release by arcticwolf
Parent article: More information on the X11R7.0/X11R6.9 release

Auto*hell encourages people to write non-portable code with the illusion that auto*hell will cover their asses, but auto*hell fails miserably to do so, because auto*hell can only know about the platforms it has been tested on, and fails miserably everywhere else(oh, and don't get me started with crosscompilation).

Auto*hell basically makes sure that a package will be almost impossible to port to any new platform that auto*hell doesn't understand, and it even fails miserably in the platforms it's supposed to understand, because it tries to guess stuff it has no clue about and it just can't know, so it blows up, and you are left with >20.000 lines of generated make vomit to swim thru.

Just because most programmers have no clue about how to properly write portable code doesn't mean auto*hell is any better.

If you don't write portable code, auto*hell will only provide a false sense of portability and make it harder for others to make your code portable, and if you write portable code there is no use for auto*hell.


(Log in to post comments)

More information on the X11R7.0/X11R6.9 release

Posted Dec 23, 2005 21:35 UTC (Fri) by pizza (subscriber, #46) [Link]

So, I'm curious.

Have you ever written portable code?

What is your definition of "portable"?

Have you ever used the auto* tools?

What platforms do the auto* tools not understand? Do these exotic platforms come with their own build system?

Have you ever written a non-trivial software package that has optional components and multiple external dependencies that can be installed in arbitrary locations on the system?

Again, just curious.

Auto tools

Posted Dec 23, 2005 23:03 UTC (Fri) by Ross (subscriber, #4065) [Link]

I'm sorry but you aren't making any sense. I suspect you don't like auto tools due to a ban encounter with some program using them which wasn't written very well, rather than actual experience with it as a developer. What you describe is not how the auto tools work. They do tests dynamically to determine which features work/don't work, which libraries and headers exist, etc. at compile time. This means that you get rid of horrible, horrible code like:

#if defined(Linux) || defined(SYSV)
#include <something.h>
#endif
#ifdef BSD
#include <somethingelse.h>
#endif

etc.

and replace it with:

#ifdef HAVE_SOMETHING_H
#include <something.h>
#endif
#ifdef HAVE_SOMETHINGELSE_H
#include <somethingelse.h>
#endif

Which pretty much makes it work automatically even if you have never heard of the operating system which the program is being compiled for.

Maybe what you are talking about is the configure documentation that says not to use autodetection... ignore that. The config.guess stuff figures it out usually, and when not, picking a close match is easier than editing a .h file, like programs used to require before the auto tools (or even worse, an interactive script, like with Perl).

More information on the X11R7.0/X11R6.9 release

Posted Jan 5, 2006 8:09 UTC (Thu) by ekj (subscriber, #1524) [Link]

because auto*hell can only know about the platforms it has been tested on, and fails miserably everywhere else

And since auto* is only knows about and has been tested on around 10e7 different platforms, this is a serious limitation.

Copyright © 2008, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds