MESSAGE
DATE | 2021-01-21 |
FROM | Tom Tromey
|
SUBJECT | Re: [Hangout - NYLXS] Future plans for Autotools
|
Zack> Now we've all had a while to recover from the long-awaited Autoconf Zack> 2.70 release, I'd like to start a conversation about where the Zack> Autotools in general might be going in the future. Clearly any future Zack> development depends on finding people who will do the work, but before Zack> we worry about that I think we might want to figure out what work we Zack> _want_ to do.
Thank you very much for writing this.
Zack> Followup discussion should go to the Autoconf mailing list.
I trimmed the CCs.
Zack> Tarball releases produced by Autotools have a predictable, Zack> standardized (literally; it’s a key aspect of the GNU Coding Zack> Standards) interface for setting build-time options, building them, Zack> testing them, and installing them.
This is maybe the biggest thing I've missed when I've had to tinker with other build systems.
Zack> Automake tries very hard to generate Makefiles that will work with any Zack> Make implementation, not just GNU make, and not even just (GNU or BSD) Zack> make.
Paul Eggert mentioned the Emacs experience here.
For gdb we also started relying on GNU make a while ago. I have never heard a complaint about this. I imagine the BSDs simply build it with gmake. We've occasionally had to work around a GNU make bug but otherwise it's been straightforward.
Some parts of the gdb tree do use Automake, but other parts do not.
Based on this experience I tend to think that make portability isn't that important any more.
Zack> And weak coordination with other Autotools compounds the issue.
Zack> Building an Autotools-based project directly from its VCS checkout is Zack> often significantly harder than building it from a tarball release, Zack> and may involve tracking down and installing any number of unusual Zack> tools.
Zack> Coordination among the Autotools is weak, even though the tools are Zack> tightly coupled to each other.
Zack> Division of labor among the Autotools, and the sources of third-party Zack> macros, is ad-hoc and unclear. (Which macros should be part of Zack> Autoconf proper? Which should be part of Gnulib? Which should be part Zack> of the Autoconf Macro Archive? Which should be shipped with Automake? Zack> Which tools should autoreconf know how to run? Etc.)
A couple of ideas come to mind here.
One is that perhaps autoconf, automake, and libtool (but see below) should be combined into a single project. This would help eliminate the coordination problem.
In the past Automake had a much quicker release cadence than Autoconf, but those days are past. Maybe this would allow for the elimination of some hacks. Maybe aclocal could go away, or be redone in some way that makes more sense.
Another idea is that Autoconf should incorporate many of the third party extension macros. Similarly, GCC and GDB ship with a directory full of macros, some of which should probably just be standard.
I'm not sure if this is related or not, but pkg-config always seemed both like something that would go into this general umbrella, as well as a workaround for a fundamental hole in the toolchain. Maybe this could be addressed.
Zack> Libtool is notoriously slow, brittle, and difficult to modify (even Zack> worse than Autoconf proper). This is partially due to technical debt Zack> and partially due to maintaining support for completely obsolete Zack> platforms (e.g. old versions of AIX).
Can it be removed? In ancient times it seemed very necessary. Any more I tend to think that the cure is worse than the disease.
>> Autotools are too difficult to work on
Zack> Yes indeed. On the assumption that we are stuck with shell, M4, and Zack> Perl, however, what can we do about it?
FWIW, Automake is in Perl but this does not leak through to the user. So, there's some freedom in that regard. RMS asked me to rewrite it in Guile once, though I never did get around to that.
The rest remains difficult though.
Tom _______________________________________________ Hangout mailing list Hangout-at-nylxs.com http://lists.mrbrklyn.com/mailman/listinfo/hangout
|
|