[tlbuild] autoconf-2.71 and tl

Karl Berry karl at freefriends.org
Wed Jun 30 19:12:14 CEST 2021

FYI, I've reautoconf-d TL with autoconf 2.71 and committed the new
configure/Makefile.in/etc. files (r59767). Hopefully this will be
invisible, but it's a big enough change that I wanted to mention it.
Last year's 2.70 was the first new autoconf release in many years.

Luigi and anyone else running (re)autoconf in TL: please grab
ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.xz and use it going forward,
to avoid version skew problems.

Our top-level reautoconf script now passes -Wno-obsolete, because
Autoconf 2.70 and 2.71 obsoleted quite a few commonly used macros. (I am
not happy about this, but the Autoconf maintainer is firm.) Otherwise
there are hundreds and hundreds of warnings, obscuring any real issues.

Fortunately it is not necessary, currently or for the foreseeable
future, to actually replace the obsoleted macros. It's not even clear
to me that it's desirable, for the sake of distros which are not using
2.70+ yet.

I wrote more about all this in m4/README. Heck, I might as well append
that text. Good luck to us all. -k

$Id: README 59748 2021-06-29 01:19:16Z karl $


---- "Obsolete" AC_* macros in Autoconf.

In Autoconf 2.70, many commonly used AC_ macros were designated obsolete
(though they still work fine), and now their use generates warnings. In
the case of TeX Live, many hundreds of warnings, obscuring any real
diagnostics. Therefore our top-level reautoconf script now passes
-Wno-obsolete to autoreconf in order to eliminate the "obsolete"
warnings (so glad this option is provided).

To undo this and see the warnings, our reautoconf can be given the option
--warn-obsolete. One reason to do this would be to work on updating our
configure.ac/etc. source files (an onerous task); and communicate
changes to upstream (even more onerously), who probably won't want to
require the latest Autoconf anyway (though we can). All in all, it feels
like a tremendous amount of time to spend merely to end up in the same
place, with no discernible benefit. Thus there is no particular
timeframe, or, apparently, need, for fixing the warnings.

Most of the obsolete macros are straightforward to replace with the new
"approved" macros, and described in the Autoconf manual. In a few cases
(marked with "caveat" in the list below), however, the replacement is
not obvious or does not have exactly the same behavior, and therefore
requires further checking.

The following is a terse list of the deprecated macros used in TL
(typically many times each), and the replacement given in the Autoconf
manual -- which needs to be referenced to do any actual work in this
area; these are just hints about what's going on.

AC_ERROR - replaced by AC_MSG_ERROR
AC_FOREACH - alias of m4_foreach_w
AC_HEADER_STDC - This macro is obsolescent. Its sole effect ...
AC_LANG_C - Same as AC_LANG([C])
AC_PROG_CC_C99 - now done by AC_PROG_CC
AC_TRY_RUN - same as AC_RUN_IFELSE(...
AC_TYPE_SIGNAL - just use void
AC_UNISTD_H - same as AC_CHECK_HEADERS([unistd.h])

AC_HEADER_TIME - (caveat) although it does still define TIME_WITH_SYS_TIME 

AC_PROG_LEX - (caveat) still does this if neither the yywrap nor
  the noyywrap option is given.

AC_FUNC_VFORK - (caveat) does not appear in manual (except in index).
  Same as AC_FUNC_FORK?

More information about the tlbuild mailing list.