|
|
Log in / Subscribe / Register

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

-----

Date: Wed, 21 Dec 2005 18:18:49 -0500 (EST)
From: Leon Shiman <leon@magic.shiman.com>
To: xorg@lists.x.org
X-Mailer: dtmail 1.3.0 @(#)CDE Version 1.4.2 SunOS 5.8 i86pc i386 
Subject: Landmark version X11R7.0 released today with X11R6.9 by the X.Org
	Foundation

Landmark version X11R7.0 released today with X11R6.9 by the X.Org Foundation

Brookline, Massachusetts, December 21 2005. The first major version release 
of the X Window System in more than a decade, X11R7.0 is the first release 
of the complete modularized and autotooled source code base for the X Window 
System. X11R6.9, its companion release, contains identical features, and 
uses the exact same source code as X11R7.0, but with the traditional imake 
build system.

These changes in source code management, giving openness and transparency to 
the source code base and employing current technology, invite a new 
generation of developers to contribute, building on the long tradition of 
the X Window System. The new modular format offers focused development, and 
rapid and independent updates and distribution of tested modular components 
as they are ready, freed from the biennial maintenance release timetable. 

X11R6.9 is comprised of many distinct components bonded in a single tree, 
based on imake. X11R7.0 splits that set of components into logically 
distinct modules, separately developed, built, and maintained by the 
community of X.Org developers. This simulaneous release gives a transition 
point for developers, builders, and vendors to adapt their practices to the 
new X.Org modular process. X11R7.0 supports Linux and Solaris at this time, 
with other support pending. X11R7.1, the first modular roll-up release, is 
scheduled mid-2006. While the monolithic tree will continue to be fully 
supported and released, new feature development is expected to be 
concentrated in the modular code base.

The X11R7.0 and X11R6.9 releases are the work of more than fifty volunteer 
contributors worldwide, working under the release management team of Kevin 
Martin (Head), Alan Coopersmith, and Adam Jackson, with the support of Red 
Hat, Sun Microsystems, and the unsupported generous contribution of effort 
by Adam Jackson.* 

All X Window System Releases are available from ftp.X.Org and mirror sites 
worldwide (see http://wiki.x.org/Mirrors). They are distributed under the 
MIT ("X") License by the X.Org Foundation LLC.  Information concerning 
organization, activities, and mailing lists can be found at 
http://www.X.Org. Membership is free and open to contributors. Sponsorship 
is encouraged to support the global activities of the X.Org Foundation. 
Current X.Org Sponsors include Sun Microsystems, HP, IBM, StarNet 
Communications, AttachmateWRQ, Hummingbird, and Integrated Computer 
Solutions Incorporated [ICS].* 

In continuous use for over 20 years, the X Window System provides the only 
standard platform-independent networked graphical window system bridging the 
heterogeneous platforms in today's enterprise: from network servers to 
desktops, thin clients, laptops, and hand-helds, independent of operating 
system and hardware.  


Submitted by Leon Shiman (secretary at X.Org).

* LINUX is a registered trademark of Linus Torvalds. "Solaris" is a tradmark 
of Sun Microsystems. Company names are trademarks of their registered 
owners.

_______________________________________________
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


to post comments

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

Posted Dec 22, 2005 23:02 UTC (Thu) by arcticwolf (guest, #8341) [Link] (6 responses)

Just out of curiosity, will /usr/X11R6 be renamed /usr/X11R7 now, too, or will the old name stick?

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

Posted Dec 22, 2005 23:09 UTC (Thu) by smoogen (subscriber, #97) [Link] (5 responses)

My understanding is that /usr/X11 goes away with the new layout. Everything will be in the "standard" path of /sbin,/usr/sbin,/bin, and /usr/bin

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

Posted Dec 23, 2005 0:07 UTC (Fri) by AndyBurns (guest, #27521) [Link] (2 responses)

That's certainly how it goes with FC5/rawhide, to force fglrx binary drivers to install I had to make soft links for the old X11R6 directories, but I've switched back to the xorg radeon drivers now :-)

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

Posted Dec 23, 2005 6:58 UTC (Fri) by tajyrink (subscriber, #2750) [Link] (1 responses)

Are you using r300 or r400 based card? Has vanilla Xorg 7.0 now got the r300 DRI/3D features enabled? It's been under heavy work recently, and it'd be nice to know if now 9500-X800 card would possibly have some (not great, but still something and in open source) 3D support out of the box. The "r300" driver works also for r4xx-based cards, as they are so similar to each other.

At some point I got the impression that the 3D features might be disabled by default because of some stability problems with specific 9800 cards. Anyway, the modularity of of Xorg 7.0 makes it easier of course for distributors and others to provide 3D-enabled ati drivers.

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

Posted Dec 23, 2005 12:20 UTC (Fri) by AndyBurns (guest, #27521) [Link]

> Are you using r300 or r400 based card?

PCIe X550 which is RV370

> Has vanilla Xorg 7.0 now got the r300 DRI/3D features enabled?

Not for my card, there is a message in Xorg.0.log saying it has disabled it, it think it is conditional on the card.

I'm more interested in 2D + video overlay which works ok since RC3

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

Posted Dec 23, 2005 4:08 UTC (Fri) by Duncan (guest, #6647) [Link]

To be more precise, everything (save for the config in /etc) should be
under /usr, since X wouldn't be considered critical enough to put it on
the root volume if /usr is a separate volume.

So, /usr/bin, /usr/${libdir} (lib/lib64/lib32, whatever). I'm still
running an earlier snapshot (on Gentoo for amd64), but still have
a /usr/lib64/X11 (which will likely go away), but /usr/X11R6 is a symlink
back to /usr, /usr/bin/X11 is a symlink back to /usr/bin, etc. On
the /etc side, everything is currently still in /etc/X11, which will
probably remain, just to keep all X related configuration stuff together.

Duncan

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

Posted Dec 23, 2005 17:38 UTC (Fri) by clump (subscriber, #27801) [Link]

I certainly hope /usr/X11 and kin go away. It seemed awkward that X11 really is an application, but had its own directory layout outside of the normal system. An important application, but an application nonetheless.

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

Posted Dec 22, 2005 23:19 UTC (Thu) by Felix.Braun (guest, #3032) [Link] (7 responses)

Any information on whether the existing closed-source graphics drivers will work with this release?

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

Posted Dec 23, 2005 0:48 UTC (Fri) by tomsi (subscriber, #2306) [Link]

I don't know. But in this world (aka climate) the closed world drivers will have to wait.

After all, it is a state affair that we want to get away from.

Tom

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

Posted Dec 23, 2005 6:25 UTC (Fri) by dberkholz (guest, #23346) [Link] (5 responses)

I'm fairly confident that recent releases of ati's and nvidia's work.

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

Posted Dec 23, 2005 10:11 UTC (Fri) by philips (guest, #937) [Link] (4 responses)

I have no first hand experience with binary drivers, but modularizations was (and is) mostly demanded by binary/closed source video drivers.

Due to licensing problems no open source drivers are in line of sight. (*)

So I would expect X11R7 to have more up-to-date nVidia/ATI drivers compared to XFree86.

(*) On ironic side, one of the contributors of nVidia driver is M$ (DX9/shaders related parts IIRC). So after all (whether they wanted or not) M$ does support Linux ;-)

P.S. That was one of the reasons of the developer community split: X.Org v. XFree86. Modularization to allow more people to work on and to contribute to the project - not just highly decorated elite Core developers of XFree86.

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

Posted Dec 23, 2005 13:54 UTC (Fri) by rknop (guest, #66) [Link]

I have no first hand experience with binary drivers, but modularizations was (and is) mostly demanded by binary/closed source video drivers.

Due to licensing problems no open source drivers are in line of sight. (*)

That's very sad. I think that modularization of X is probably a good thing for a lot of reasons-- but I'm also kind of sad to see things be made easier for binary/closed-source drivers. As it gets easier to use those, the push will be even less for open source drivers. Pretty soon, those of us who don't want to use binary-only drivers but do want 3D are going to be stuck scouring eBay for years-old Radeon cards that don't perform to modern standars, and praying that the AGP bus never goes away.

-Rob "sky is falling" Knop

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

Posted Dec 23, 2005 20:06 UTC (Fri) by daniels (subscriber, #16193) [Link] (2 responses)

I have no first hand experience with binary drivers, but modularizations was (and is) mostly demanded by binary/closed source video drivers.

That is completely, utterly, flat-out, wrong.

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

Posted Dec 23, 2005 23:34 UTC (Fri) by drag (guest, #31333) [Link] (1 responses)

Yep.

Modularization should help out a lot.

For example:

I had a notebook for a while that had the 854gm (or similar, I can't recall right now.) 'Intel Extreme Blaster'. Ok. For this I had a couple XFree86/X.org servers setup for this for a long time and it had 3d acceleration and the whole works. It wasn't without issues however.

So now there was this 915 driver that was suppose to supercede the older intel drivers for video cards. So I figured I'd give the newest driver revision a try, maybe it will improve performance and stability.

Ah, but since this was DRI and X.org drivers I couldn't just install the new driver.

I had to download and install the ENTIRE X server with all new libs and the whole crapload of other stuff, when all I wanted to do was build a new driver!

I did this on a Debian system which has apt-get for everything and their moms... So it's not like it was a clean install and it's not like it wouldn't get blown away next time Debian released a bug fix for one of the X libraries. Since they can only release X-related patches as a entire new X re-install.

And what if I wanted to try out the new (at the time) x composite extensions? Or xdamage? Or if I wanted to mess around with a new input extension? or wanted to build a alternative X.org X server like XGL? Or needed a library to be built with a slightly different compile time option for whatever obscure reason?

Again I'd have to download everything, apply patches to everything, and recompile everything.

This is a huge pain.

Now with X.org's new modular system.. If there is a security update for a library, I just update that library and don't have to reinstall X. If I want to try out a new driver, I can go to X.org get the sources for that driver and build it without having to reinstall X.

Anything to make it easier and less of a hassle for end users to update their systems for security reasons is a GREAT thing.

This should make it easier to build OS-specific extensions into X. Stuff to make X work with Linux hotplug and dbus notification services without breaking anything for the BSD users.

It should make it easier to have alternative X servers and try and develop new things without breaking everything else on the developer's or curious user's systems.

I am sure that this will make it easier to build propriatory drivers for X, but it will make pretty much everything easier to deal with with X.

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

Posted Dec 24, 2005 14:26 UTC (Sat) by tzafrir (subscriber, #11501) [Link]

Your example is incorrect. Binary-only drivers can be used with the current XFree.

Even before the revolutionary modularity of XFree 4 you could get binary-only drivers for some cards. They included the complete X server, though, because this is how XFree worked before 4.0. So it had to match your version exactly.

With XFree and current Xorg ("non modular") the binary driver is simply a shared object (.so library) that gets loaded by the X server. The binary driver's author wants a steady interface.

As long as everything comes from the same package, the interface between the X server and the card driver will remain subject to changes just like it used to be: if the change is important enough, it will happen.

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

Posted Dec 23, 2005 10:50 UTC (Fri) by Zarathustra (guest, #26443) [Link] (15 responses)

How sad to see X join the auto*hell insanity. Yes, the old monolithic build system was a mess, but why, oh why, did they have to switch to auto*hell during the process of breaking it up?

Here is a great t-shirt: http://www.cafepress.com/leuksman.7112875

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

Posted Dec 23, 2005 11:16 UTC (Fri) by philips (guest, #937) [Link] (10 responses)

Is there any other alternative?

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

Posted Dec 23, 2005 12:03 UTC (Fri) by hmh (subscriber, #3838) [Link] (1 responses)

Sure, "invented here" build systems that are no better than auto*, usually a lot more buggy because the author don't know anything about portability, and which are EVEN less understood than auto*.

Now, X.org imake was at least portable, but it is no easier to understand than auto*. "imake hell" is an expression that far predates "autohell".

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

Posted Dec 23, 2005 13:52 UTC (Fri) by rknop (guest, #66) [Link]

I've generally had no problems with automake. I've used it myself in code I've written, and kinda like it now that I'm used to it.

imake was something I learned to loathe early and loathed ever more as time went on.

I never fully figured out how to make imake work as a normal user, whereas I've done that frequently with autoconfig. (Whatever we're supposed to call the autohell thing.)

-Rob

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

Posted Dec 23, 2005 15:15 UTC (Fri) by Zarathustra (guest, #26443) [Link] (7 responses)

Alternative to what?

I have yet to find what problem auto*hell solves; it creates huge amounts of pain and suffering, that for sure; so if you are masochistic, it might be made for you, but I doubt your users will appreciate it.

As for "portability", now that has to be one of the greatest myths of the software industry. Auto*hell _hinders_ portability, it covers the portability problems with a layer of crud that then one has to drill thru when one has to port it anywhere.

Learn to write truly portable code, and learn to write proper make files, help reduce the pain and sorrow of the sad Unix world.

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

Posted Dec 23, 2005 18:49 UTC (Fri) by arcticwolf (guest, #8341) [Link] (6 responses)

I don't think you actually understand the purpose of the auto* tools.

They are not a magic wand you can wave at your code (existing or new) so it will suddenly become more portable, and they're not supposed to be, either. What they *are* supposed to do is collect all the knowledge of quirks of various platforms etc. in one place so that individual developers / projects don't have to worry about these things anymore.

If you want a good example of what they're supposed to help with, take a look at the Nethack sources. Nethack *is* pretty portable, even without the use of the auto* tools (naturally, since it predates those), but the portability parts at least are a heap of unmaintainable cruft, and if you're seriously suggesting that that's a good alternative to the use of the auto* tools, you're, well, quite out there.

That doesn't mean the auto* tools couldn't be improved, of course, but to say that they're worse than X11's imake or (even more) worse than no build tools at all just shows that you really don't know what you're talking about, and no links to silly t-shirts are going to change that.

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

Posted Dec 23, 2005 19:53 UTC (Fri) by Zarathustra (guest, #26443) [Link] (3 responses)

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.

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 (guest, #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 (guest, #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.

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

Posted Dec 24, 2005 9:34 UTC (Sat) by dwmw2 (subscriber, #2063) [Link] (1 responses)

Actually it's not clear that autohell would help nethack when it comes to cross-compiling. Nethack builds data files on the host and assumes that the endianness, structure sizes etc. are going to be compatible with the target. In my experience of cross-compiling projects, that's precisely the type of behaviour which made me come to loathe autohell. Not because such behaviour is mandated -- but just because it seems to be what comes naturally to most autohell users. They seem to like to run tests on the host and assume that the results will be valid for the target. Or compile for the target and then attempt to run the result on the host to find out the behaviour.

Autohell is just a tool -- it isn't inherently evil. But it's a tool which is very easy to use badly, and I'd really prefer to see it die out. Portable code and sane toolchains would be a much better answer.

I would personally pay for a licence for GNU ld for anyone and everyone who wanted it, if it meant that they'd then refrain from using libtool.

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

Posted Dec 24, 2005 10:25 UTC (Sat) by jbailey (guest, #16890) [Link]

Autoconf with gcc can detect a remarkable amount of things about the target system, including some information on structure size, and (IIRC) endianness.

Your comments make it seem like you perhaps haven't actually used autoconf and friends in the past half-decade.

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

Posted Dec 24, 2005 17:10 UTC (Sat) by dmantione (guest, #4640) [Link] (3 responses)

Actually, auto* is completely unusable for portability. The reason is it
assumes Unix. I'll sum up some OS-es: Linux, FreeBSD, Win32, WinCE,
NetBSD, AmigaOS 4, MorphOS, MacOS Classic, Mac OS X.

Now, for how many platforms does auto* help? About half of them. In other
words, auto* solves the portability problem for about 50% of the OS-es.
Now 50% is pretty impressive, right? Not at all, since Unixes have a lot
in common, the porting effort for the other OS-es is a lot more than 50%
of the porting effort, in case you should want to support them all.

To be able to build auto* crap on non-Unix systems, of which Win32 is one
of the most common, one needs a Unix-emulation environment, like Cygwin.
However, this does not produce native applications.


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

Posted Dec 26, 2005 14:25 UTC (Mon) by alvherre (subscriber, #18730) [Link] (2 responses)

Amazing how much a thread can drift from the original article. Did anybody take a look at why autotools were chosen, back when they were chosen? I remember reading an article about it, which mentioned that other build systems were considered but rejected for various reasons (SCons is the one I remember.) The X.Org developers didn't make an uninformed nor arbitrary decision.

About autotools themselves and non-Unix portability, let me point out that autoconf (but not automake) is used in PostgreSQL to produce native Win32 (MinGW) and Mac OS X binaries, besides the obvious Linux, various BSDs, Solaris, AIX, Irix, etc. At one point it supported QNX, BeOS and other systems as well, though those appear to be abandoned for lack of reporters (users with compiler access). So your comment about'em being Unix-only appears to be at least partially incorrect.

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

Posted Dec 28, 2005 10:45 UTC (Wed) by dmantione (guest, #4640) [Link] (1 responses)

Autotools are only usable outside Unix if you load a bunch of Unix junk,
i.e. cp, mv, sed, awk, and other Unix tools onto the OS you port to which
is effectively emulating Unix on such an OS. Besides that it is not fun
it causes portability problems since those tools must be ported as well.
There is no way to make Autotools use copy or move for example in Win32.

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

Posted Dec 28, 2005 14:00 UTC (Wed) by hppnq (guest, #14462) [Link]

Just a slight remark: autoconf and friends are mainly used by developers, as an ordinary user who wants to install a new piece of software you just run configure, so that's where your portability problems start.

No need to make things more complicated than they already are.

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

Posted Dec 23, 2005 18:23 UTC (Fri) by jg (guest, #17537) [Link] (14 responses)

To begin with:

Everyone agrees both autotools and imake suck, roughly similar amounts, but in different ways.

But one is now "standard" and almost everyone likely to contribute can deal with, and the other is now only used by X, and therefore inhbitory to new developers.

The point of this was to modularize the release. And imake would need serious work to enable such modularization.

So faced with one alternative, where nearly everyone can deal with the result, and doing yet more work on something noone but a few grok, what would you pick?

This was all about modularization; autotools was clearly the best choice since imake would have required more engineering and we'd still end up with a build system few could deal with.

Jim Gettys

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

Posted Dec 23, 2005 19:38 UTC (Fri) by Zarathustra (guest, #26443) [Link] (13 responses)

And why on earth you need auto*hell to accomplish modularization?

I think everyone agrees that dropping imake is a good idea, and that some modularization of the X monster had to be done, but none of those things justify in any way using auto*hell.

Why not instead learn to write proper Makefiles? But this days that is a lost art...

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

Posted Dec 23, 2005 20:17 UTC (Fri) by drag (guest, #31333) [Link] (11 responses)

because instead of X developers having to maintain their own 'make' generating software that they alone use, develop, and have to deal with.. they are using something that is more mature, developed and maintained by other people and used by pretty much every other free software project in existance and understood by pretty much every free software developer.

For most people imake is completely alien with no benifit over autotools.

Which would you rather have?

X developers working on imake? Or X developers working on X?

This will also make it easier for users used to dealing with autotools to build modules and it would make it easier for developers familar to hack on modules as well as help distros like Debian who have extensive automation built around autotools.

"Why not instead learn to write proper Makefiles?"

Because it's a waste of time if you don't have to.

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

Posted Dec 23, 2005 21:38 UTC (Fri) by Zarathustra (guest, #26443) [Link] (10 responses)

Apparently you can't read, so I'm not surprised you can't write makefiles either.

The whole idea of automatically generating makefiles is completely braindamaged and bound to fail miserably no matter who or how does it.

Sane developers still know how to write makefiles. I seriously doubt anyone understands auto*hell, not even it's own developers appear to understand it, much less understand the vomit it produces.

If you don't know how to use make, maybe you should be programming in VisualBasic or Perl.

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

Posted Dec 23, 2005 22:02 UTC (Fri) by duck (guest, #4444) [Link] (2 responses)

Oh just go away to the sites where insults are confused with discussions.

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

Posted Dec 23, 2005 22:39 UTC (Fri) by beagnach (guest, #32987) [Link]

seconded. this is not slashdot.

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

Posted Dec 23, 2005 22:51 UTC (Fri) by drag (guest, #31333) [Link]

No he's right. I misread what he was saying.

That's what I get for firing off a quick reply before running of to work and I would like to apologize to him for jumping the gun.

Imake sucks and on that he and I agrees.

The thing is that with autotools it's known and usefull for people that don't know the code.

I can take code directly off of the cvs server and run the autoconf stuff to generate a make file, compile, and install the software without having to know anything about the source code that I am dealing with..

Autotool/Autoconf/Autowhatever takes into account not only GNU/Linux-style systems, but other systems like windows, and dozens of other platforms and other toolchains.

This should help people with porting efforts, I expect. If your going to write a makefile for portable software you'd have to have intiment knowledge of not only your system your working on, but every other system that you expect people will want to use your software on.

I understand that it's probably not easy to deal with. But it's not going to be easy to make a portable code base with manually building make files either.

Maybe something like scons or whatnot would of been better, but it's not like those don't have their own problems either.

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

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

FYI it is possible to use autoconf without using automake. In fact autoconf has been around for much longer so many projects using the auto tools do have their own makefiles.

autoconf is OK, dunno about the rest

Posted Dec 24, 2005 11:28 UTC (Sat) by kleptog (subscriber, #1183) [Link] (1 responses)

I think there's some confusion here. Just because you use autoconf, doesn't mean the Makefiles are automatically generated.

For example, PostgreSQL uses autoconf. Why? Because it has a standard interface for specifying extensions and where they are. Because it has standard methods for determine if header file X exists, what is the signature of signal, does the compiler understand inline, does the function pstat exist, etc? You should have seen the mess it was before.

I think people seriously overestimate source code compatability once you step outside of gcc/glibc or linux/*BSD. PostgreSQL has some of the best code I've seen, no #ifdef scattered through the code. The code is written for sane platforms and the quirks are dealt with in the ports directory.

The results of all this creates one header file to #include and one Makefile.global with various parameters substituted. All the other Makefiles are hand written. And it definitly increases portability because now no-one needs to write code to differentiate different releases of AIX or to remember whether the C compiler can do 64-bit arithmetic, because configure simply tells you what you need to know. If a new release of BSD changed the default signal semantics to POSIX, we wouldn't even notice, because configure would set the flag and the code will be compiled accordingly.

I agree with the comments about libtool, I havn't seen a compelling reason to use it, it seems to cause more problems that it solves. PostgreSQL compiles and links shared libraries on a dozen different platforms without that much difficulty. Completely autogenerating makefiles seems like a mess too, but you don't need to do that. autoconf, by itself, *is* useful.

autoconf is OK, dunno about the rest

Posted Dec 25, 2005 7:01 UTC (Sun) by evgeny (subscriber, #774) [Link]

> Just because you use autoconf, doesn't mean the Makefiles are automatically generated.

Agreed here absolutely. In all my projects, I generate only two files with autoconf - a config.h and a Make.conf, which are #included into all other source files and makefiles, respectively. This also greatly helps in portabilty to other platforms lacking autoconf support: as a rule, these are pretty API/ABI-stable, so a replacement for "configure" is trivially written in the native script language which basically fills in a predefined template modulus a few options the user might want to alter (equivalents of --with-options etc).

Having said that, there is, undeniably, quite a way ahead of autoconf for many possible improvements.

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

Posted Dec 25, 2005 1:37 UTC (Sun) by khim (subscriber, #9252) [Link] (3 responses)

If you don't know how to use make, maybe you should be programming in VisualBasic or Perl.

And you can not write you programs without C compiler and assembler in hex code then you should not program at all, right ?

Fundamentally the goal of C, Make and Autotools is the same: reduce amount of hand-written code and make the same code usable on different systems. Sometimes things are not going well, C compiler miscompiles code, make forget to recompile something (especially parallel make) and creates mess, etc.

Now you happily swallow problems with C compilers and/or Make (it's not easy to write portable makefile BTW) but claim autotools do not solve real problems and are not needed. Sure: you can do anything doable with autotools with just Make and C compiler. Or with C compiler without Make. Or with just assembler. Or even with hex editor. But. With autotools you are doing less manual work. For the same end result (if you are carefull - and if you are not carefull nothing will help). What's not to like ?

Now, the question: why do you think autotools are evil, but gas, ld, gcc and make are not. They are solving the same problem!

NOf course autotools have bugs. Of course autotools can be misused. But the same is true for as, ld, make or gcc. Why are so hostile to autotools but not to your C compiler and linker ?

And if you need real problem autotools are solving - it's amount of hand-written code. Few simple lines per shared library, few lines per optional feature, etc. Portability can be achieved as well - but that's not the only goal. I'm yet to see the same thing done without autotools or some other makefile-generator with comparable amount of hand-written code.

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

Posted Dec 26, 2005 10:06 UTC (Mon) by oak (guest, #2786) [Link] (2 responses)

> Now, the question: why do you think autotools are evil, but gas, ld, gcc
> and make are not. They are solving the same problem!

Toolchain takes care of building, autotools take care of configuring
the software for building. These are completely different things.

Autotools is intended for configuring software for the environment
where it is built, and for most purposes it works quite fine for this.
If you instead try to do cross-configuring and cross-compiling, this base
assumption is false. As a result autotools shoots itself to both feet
and falls on its face.

For more information, see e.g. this:
http://www.scratchbox.org/documentation/general/tutorials...
(I also had a FOSDEM presentation on this subject a few years ago)

Base system tools like Glibc and coretools support cross-compilation,
most of the software using autotools doesn't and even if it would,
the Autotools cross-compilation support mainly consists of replacing
a test with a guess. In general this seems somewhat fragile, so
personally I would prefer being able to set these options directly
/ explicitly. (Note: OpenEmbedded has hacks for making it easier
to coax Autotools build systems to work with cross-compilation.)


Additionally, Autotools expects the underlying system to be POSIX and
maybe even some GNU variant of this. If it's not the case, Autotools
makes building the software much harder as if Autotools stuff doesn't
work, most of the Linux software doesn't have a functioning build system.
For a fun exercise, try building Gnome GARNOME using uClibc + Busybox
as base instead of Glibc + GNU core/file/text/etc/tools.

Much finer would be to use just Autoconf for default/optional configuring
of the software and for building depend completely on GNU Make. Even
Autoconf could be nowadays to a large extent removed if code is standard
ANSI-C, all dependencies support pkg-config (which was designed to
deal with the dependency stuff) and software doesn't have configurable
parts.

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

Posted Dec 26, 2005 14:29 UTC (Mon) by pizza (subscriber, #46) [Link] (1 responses)

Cross-compiling is an interesting beast, but by and large, autotools works here too. Granted, I don't do any desktop-type cross compiling.

All of the problems I've seen with autoconf screwing up on cross-compiliation environments are due to its users (ie the software devlopers, not the end-user trying to build) not knowing how to use it properly. A tweak to the autoconf.ac file later, and bang, it works. The assumptions about paths are the biggest offenders here; but more often than not these problems are due to things being hardcoded rather than mis-mis-configured.

Cross-compilation environments are unusual in that instead of having to figure things out, everything about the target environment is known. Many of the tests run aren't relevant, as you mentioned, and thus should be explicitly specified, but if not, it's not the fault of autoconf, but the original developer not allowing stuff to be overridden to begin with. File and Library paths are the worst offenders here. It's particularly frustrating when your target architechure is the same as the cross-tool architechure, albeit with different libraries (as you mentioned in your example)

That said, it's worth repeating that the autotools are under continual development, and are always improving. Bugs are fixable, but only if reported.

Still, the bottom line is that autoconf/automake/etc solves far more problems than it creates. It's complicated, but so is the problem it's trying to solve.

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

Posted Dec 26, 2005 18:55 UTC (Mon) by oak (guest, #2786) [Link]

> Still, the bottom line is that autoconf/automake/etc solves far more
> problems than it creates. It's complicated, but so is the problem
> it's trying to solve.

I'm not so convinced of this, or that that the problem is relevant anymore. If it's complicated, it's anyway going to require developer to do something also to his software, not just it's build system.

Build-deps could be handled with pkg-config much easily and writing something that implements the standard configure API (configure options and writing the defines to a config.h file) shouldn't be that hard to script.

I see there two approaches to the configuration problem:

  1. Autotools approach: Complex tool solving 99% of the problem and at the same time making the last 1% about impossible. Additionally, instead of aborting when finding a problem, it tries to go around it (the Microsoft way?) which will fail in non-obvious ways when developers do similar things with additional assumptions
  2. New system friendly approach: few simple tools and APIs which solve 90% of the problem and let the last 10% to be moderate manual effort. Additionally, this would stop if it finds incompatibility (the Unix way?)

For example if you want to port software to a system that doesn't have all the GNU/Posix tools or has versions with incompatible / missing options, your options in case 1) are:

  • Re-write the software build system completely from scratch, OR
  • Port a huge number (several dozens) of the GNU tools for the system first

Whereas in case 2), all that could be required might be to port GNU Make and pkg-config first and then compile the source.

The basic problem of Autoconf is that it's skitsofrenic, at the same time both too trusting and too paranoid. It both tests how to deal with trivialities which different working would surprise SW developers, and includes a huge number of assumptions about the underlying system. :-)

Better would be if Autotools would require a small set of very well documented/specified system functionality (commands and their options) and it would have a test suite to test this autotools / configure compatibility. This could be Autotools system API. This way SW developers could trust that underlying system has a certain functionality instead of Autotools "dealing" with the incompatibility and SW specific checks breaking in interesting ways. It would be good if as a result there would be less runnable code in configure scripts and it would be more readable (for reasons, see list below).

For non-autotools provided checks there has to be some better way than how autotools deals with SW specific checks. When the extensions (m4 macros) are installed, it's AFAIK not e.g. differentiated whether they are for build tools or for target tools.

Here's a list of lesser problems with autoconf:

  • Configure depends on a lot of tools and expects them to have certain options. However, the scripts don't log everything they do, and check whether everything succeeds[1]
  • Running configure etc. takes more time than building the actual software, especially if software re-building is using ccache to speed it up (and code is C, not C++). It would be interesting to know how much of a typical Gentoo build goes to running Autotools and how much to compiling the actual software
  • Configure scripts / automake makefiles are larger than the actual code for smaller projects. This is a problem if one would want to security audit what the whole SW will do when installed (from source). I know that people could autogenerate the configure and Makefiles, but that doesn't have any standard API and although somebody could check whether the C-code does something dubious, nobody's going to fully review configure scripts...
  • Autoconf versions are incompatible with each other and developers don't always know how they are incompatible, they just use the version their distro happens to have

[1] I've e.g. seen a problem where less compatible "sed" implementation resulted in successful build without any errors/warnings, the produced code just was not working. We knew the reason only after writing a wrapper for all shell commands which logged what command line tools were run, with which options and return codes.

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

Posted Jan 5, 2006 4:19 UTC (Thu) by elanthis (guest, #6227) [Link]

Have you actually had a problem compiling X.org on some platform because autotools broke? I think you're whining about hypothetical nonsense that has absolutely zero bearing on reality.

If autotools isn't good enough for some project you know of, great, don't use them. For X.org they are working just fine, so get off the soapbox and find something useful to whine about.


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