bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: My plans for Bison: simplify autotools use


From: Paul Eggert
Subject: Re: My plans for Bison: simplify autotools use
Date: Wed, 13 Feb 2019 18:51:33 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.0

On 2/13/19 2:29 PM, Eric S. Raymond wrote:
So, for a start, there is not one HAVE_ in Bison's code.
Which is a pretty powerful*argument*  that the "bootstrap" and
"configure" steps are useless weight.

But there are lots of "HAVE_"s in the Bison tarball that people use to build Bison. These "HAVE_"s may not be in the Bison git repository and they're not something the Bison maintainers have to think about, but they're pulled in by 'bootstrap' for porting to various platforms and although many of these platforms are no longer relevant (and I'd welcome pruning Gnulib to stop worrying about them), some platform variations still matter.

Plus, looking for HAVE_ does not suffice. One must look for all the symbols that configure.ac and/or m4/*.m4 potentially define, and they don't all begin with "HAVE_".

One way to get a handle on the porting issues involved, would be to look at the Gnulib modules that Bison uses (see bootstrap.conf's gnulib_modules), and then go to the Gnulib documentation to see what porting issues they address. One should take the transitive closure of the Gnulib modules explicitly listed in bootstrap.conf, together with all the Gnulib modules they depend on.

For example, bootstrap.conf lists obstack, and obstack depends on alignof, gettext-h, exitfail, stdint, and stdlib, which in turn depend on a bunch of other stuff. Much of this stuff is older and is irrelevant if we assume C99 and/or POSIX-2001 or later, but not all of it is. For starters, alignof is a C11-ism and it's still too soon to assume C11. And even C99's stdint has porting problems: <https://www.gnu.org/software/gnulib/manual/html_node/stdint_002eh.html> says that the Gnulib stdint module fixes some bugs in pre-C++-11 compilers, and some other bugs in glibc 2.24 (2016), and these platforms (though not bleeding-edge) are still common enough to be of some practical porting concern.

I think Gnulib and Bison's configure.ac could stand a lot of pruning; I have little doubt that more than half could go. I'm not sure we could get rid of it all, though.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]