[Top][All Lists]

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

autoconf-2.69d released [beta]

From: Zack Weinberg
Subject: autoconf-2.69d released [beta]
Date: Tue, 3 Nov 2020 12:04:30 -0500 (EST)

Hash: SHA256

We are pleased to announce beta release 2.69d of GNU Autoconf.

This release includes five weeks' worth of bug fixes since the
previous beta release, 2.69c.  We are closing in on a final release,
but there are some known, important regressions from 2.69 that still
need to be fixed before we can make a final release.  See yesterday's
release status update,
for details.

Please test this beta thoroughly and report bugs **to the Savannah bug
(Sending mail to bug-autoconf does not file the report in the bug
tracker, unfortunately, and then it has a good chance of getting
forgotten about.)  Please be clear about whether each bug you report
is a regression from 2.69 or not; at this stage, I will only be adding
regressions to the release blocker list, not other bugs.

I need to reiterate something I said in the status announcement
yesterday: the funding I had to work on the 2.70 release has been
completely used up.  I will continue as volunteer release manager for
2.70, but I cannot promise to fix all of the regressions myself as an
unpaid volunteer.  If you have time to help by developing and testing
patches for the release blockers, please do.


Here are the compressed sources:   (2.0MB)   (1.3MB)

Here are the GPG detached signatures[*]:

Use a mirror for higher download bandwidth:

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

  gpg --verify autoconf-2.69d.tar.gz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

  gpg --keyserver --recv-keys 

and rerun the 'gpg --verify' command.

This release was bootstrapped with the following tools:
  Automake 1.16.2


* Noteworthy changes in release 2.69d (2020-11-03) [beta]

** Backward incompatibilities:

*** Warnings about obsolete constructs are now on by default.

  These warnings can be turned off with ‘-Wno-obsolete’.

  Many of these warnings advise maintainers to run autoupdate.
  Be aware that autoupdate cannot solve all backward compatibility
  problems, and cannot completely solve all of the problems it does
  address.  A configure script edited by autoupdate is likely to
  need further manual fix-ups.

*** Many macros have become pickier about argument quotation.

  If you get a shell syntax error from your generated configure
  script, or seemingly impossible misbehavior (e.g. entire blocks of
  the configure script not getting executed), check first that all
  macro arguments are properly quoted. The “M4 Quotation” section of
  the manual explains how to quote macro arguments properly.

  It is unfortunately not possible for autoupdate to correct
  quotation errors.

*** Many macros no longer AC_REQUIRE as many other macros as they used to.

  This can expose several classes of latent bugs.  These are the ones
  we know about:

   - Make sure to explicitly invoke all of the macros that set result
     variables used later in the configure script, or in generated

   - Autoconf macros that use AC_REQUIRE are not safe to use in shell
     control-flow constructs that appear outside of macros defined by
     AC_DEFUN.  Use AS_IF, AS_CASE, etc. instead.  (See the
     “Prerequisite Macros” section of the manual for details.)

     The set of macros that use AC_REQUIRE internally may change from
     release to release.  The only macros that are guaranteed *not* to
     use AC_REQUIRE are the macros for acting on the results of a

   - AC_REQUIRE cannot be applied to macros that need to be used with
     arguments.  Instead, invoke the macro normally, with its arguments.

*** More macros use config.sub and config.guess internally.

  As a consequence of improved support for cross compilation (see below),
  more macros now use the auxiliary scripts ‘config.sub’ and 
  If you use any of the affected macros, these scripts must be available
  when your configure script is run, even if you have no intention of
  ever cross-compiling your program.

  autoreconf will issue an error if any auxiliary scripts are needed but
  cannot be found.  (It is not currently possible to make autoconf
  itself issue this error.)

  ‘autoreconf --install’ will add ‘config.sub’, ‘config.guess’, and
  ‘install-sh’ to your source tree if they are needed.  If you are
  using Automake, scripts added to your tree by ‘autoreconf --install’
  will automatically be included in the tarball produced by ‘make dist’;
  otherwise, you will need to arrange for them to be distributed

  See the “Input” section of the manual for more detail, including
  where to get the auxiliary scripts that may be needed by autoconf macros.

*** Older versions of automake and aclocal (< 1.8) are no longer supported.

*** AC_CONFIG_SUBDIRS no longer directly supports Cygnus configure.

  If you are still using an Autoconf script to drive configuration of
  a multi-package build tree where some subdirectories use Cygnus
  configure, copy or link $ac_aux_dir/configure into each subdirectory
  where it is needed.  Please also contact us; we were under the
  impression nobody used this very old tool anymore.

*** AC_CHECK_HEADER and AC_CHECK_HEADERS only do a compilation test.

  This completes the transition from preprocessor-based header tests
  begun in Autoconf 2.56.

  The double test that was the default since Autoconf 2.64 is no
  longer available.  You can still request a preprocessor-only test
  by specifying [-] as the fourth argument to either macro, but this
  is now deprecated.  If you really need that behavior use

*** AC_INCLUDES_DEFAULT assumes an ISO C90 compliant C implementation.

  Specifically, it assumes that the ISO C90 headers <stdlib.h> and
  <string.h> are available, without checking for them, and does not
  include the pre-standard header <memory.h> at all.  If the POSIX
  header <strings.h> exists, it will be included, without testing
  whether it is safe to include both <string.h> and <strings.h> in the
  same source file.

  For compatibility’s sake, the C preprocessor macros STDC_HEADERS,
  HAVE_STDLIB_H, and HAVE_STRING_H are defined unconditionally.
  These preprocessor macros should be considered obsolescent.

  Future releases of Autoconf may reduce the set of headers checked

*** AS_ECHO and AS_ECHO_N unconditionally use ‘printf’.

  This is substantially simpler, more reliable, and, in most cases,
  faster than attempting to use ‘echo’ at all.  However, if ‘printf’
  is not a shell builtin, configure scripts will run noticeably
  slower, and if ‘printf’ is not available at all, they will crash.
  The only systems where this is known to be a problem are extremely
  old, and unlikely to be able to handle modern C programs for other
  reasons (e.g. not having a C90-compliant compiler at all).

*** AC_INIT now trims extra white space from its arguments.

  For instance, AC_INIT([  GNU  Hello  ], [1.0]) will set PACKAGE_NAME
  to “GNU Hello”.

*** Macros that take whitespace-separated lists as arguments
    now always expand macros within those arguments.

  Formerly, these macros would *usually* expand those arguments, but
  the behavior was not reliable nor was it consistent between autoconf
  and autoheader.

  Macro expansion within these arguments is deprecated; if expansion
  changes the list, a warning in the “obsolete” category will be
  emitted.  Note that ‘dnl’ is a macro.  Putting ‘dnl’ comments inside
  any argument to an Autoconf macro is, in general, only supported
  when that argument takes more Autoconf code (e.g. the ACTION-IF-TRUE
  argument to AC_COMPILE_IFELSE).

  The affected macros are AC_CHECK_FILES, AC_CHECK_FUNCS,

*** AC_FUNC_VFORK no longer ignores a signal-handling bug in Solaris 2.4.

  This bug was being ignored because Emacs wanted to use ‘vfork’ on
  Solaris 2.4 anyway, but current versions of Emacs have dropped
  support for Solaris 2.4.  Most programs will want to avoid ‘vfork’
  on this OS because of this bug.

*** AC_FUNC_STRERROR_R assumes strerror_r is unavailable if it’s not declared.

  The fallback technique it used to probe strerror_r’s return type
  when the function was present in the C library, but not declared by
  <string.h>, was fragile and did not work at all when cross-compiling.
  The systems where this fallback was necessary were all obsolete.

  Programs that use AC_FUNC_STRERROR_R should make sure to test the
  preprocessor macro HAVE_DECL_STRERROR_R before using strerror_r at all.

*** AC_OPENMP can’t be used if you have files named ‘mp’ or ‘penmp’.

  Autoconf will now issue an error if AC_OPENMP is used in a configure
  script that’s in the same directory as a file named ‘mp’ or ‘penmp’.
  Configure scripts that use AC_OPENMP will now error out upon
  encountering files with these names in their working directory
  (e.g. when the build directory is separate from the source directory).

  If you have files with these names at the top level of your source
  tree, we recommend either renaming them or moving them into a
  subdirectory.  See the documentation of AC_OPENMP for further

** New features

*** Configure scripts now support a ‘--runstatedir’ option.

  This defaults to ‘${localstatedir}/run’.  It can be used, for
  instance, to place per-process temporary runtime files (such as pid
  files) into ‘/run’ instead of ‘/var/run’.

*** autoreconf will now run gtkdocize and intltoolize when appropriate.

*** autoheader handles secondary config headers better.

  It is no longer necessary to duplicate AC_DEFINE templates in the
  main configuration header for autoheader to notice them.

*** AC_PROG_CC now enables C2011 mode if the compiler supports it.

  If not, it will fall back to C99 and C89, as before.  Similarly,
  AC_PROG_CXX now enables C++2011 if available, falling back on C++98.

*** New macro AC_C__GENERIC tests for C2011 _Generic support.

*** AC_C_VARARRAYS has been aligned with C2011.

  It now defines __STDC_NO_VLA__ if variable-length arrays are not
  supported but the compiler does not define __STDC_NO_VLA__.

  For backward compatibility with Autoconf 2.61-2.69 AC_C_VARARRAYS
  still defines HAVE_C_VARARRAYS, but this result macro is obsolescent.


  This macro can be used more than once and accepts a list of
  directories to search for local M4 macros.  With Automake 1.13 and
  later, use of this macro eliminates a reason to use ACLOCAL_AMFLAGS

  The older AC_CONFIG_MACRO_DIR, which could only be used once, is
  still supported but considered deprecated.

*** AC_USE_SYSTEM_EXTENSIONS knows about more extensions to enable.

  System extensions will now be enabled on HP-UX, macOS, and MINIX.
  Optional ISO C library components (e.g. decimal floating point) will
  also be enabled.

*** New compatibility macro AC_CHECK_INCLUDES_DEFAULT.

  This macro runs the checks normally performed as a side-effect by
  AC_INCLUDES_DEFAULT, if they haven’t already been done.  Autoupdate
  will replace certain obsolete constructs, whose only remaining
  useful effect is to trigger those checks, with this macro.  It is
  unlikely to be useful otherwise.

*** AC_REQUIRE_AUX_FILE has been improved.

  Configure scripts now check, on startup, for the availability of all
  the aux files that were mentioned in an AC_REQUIRE_AUX_FILE
  invocation.  This should help prevent certain classes of packaging

  Also, it is no longer necessary for third-party macros that use
  if you are using AC_CONFIG_AUX_DIR_DEFAULT *without* also using
  AC_REQUIRE_AUX_FILE, please start using AC_REQUIRE_AUX_FILE to
  specify the aux files you actually need, so that the check can be

*** AC_PROG_LEX has an option to not look for yywrap.

  AC_PROG_LEX now takes one argument, which may be either ‘yywrap’ or
  ‘noyywrap’.  If it is ‘noyywrap’, AC_PROG_LEX will only set LEXLIB
  to ‘-lfl’ or ‘-ll’ if a scanner that defines both main and yywrap
  itself still needs something else from that library.  On the other
  hand, if it is ‘yywrap’, AC_PROG_LEX will fail (setting LEX to ‘:’
  and LEXLIB to nothing) if it can’t find a library that defines yywrap.

  In the absence of arguments, AC_PROG_LEX’s behavior is bug-compatible
  with 2.69, which did neither of the above things (see the manual for
  details).  This mode is deprecated.

  We encourage all programs that use AC_PROG_LEX to use the new
  ‘noyywrap’ mode, and to define yywrap themselves, or use %noyywrap.
  The yywrap function in lib(f)l is trivial, and self-contained
  scanners are easier to work with.

** Obsolete features and new warnings

*** Use of the long-deprecated name ‘’ for the autoconf
    input file now elicits a warning in the “obsolete” category.

*** Use of the undocumented internal shell variables $as_echo and
    $as_echo_n now elicits a warning in the “obsolete” category.
    The macros AS_ECHO and AS_ECHO_N should be used instead.

*** autoconf will now issue warnings (in the “syntax” category)
    if the input file is missing a call to AC_INIT and/or AC_OUTPUT.

*** autoconf will now issue warnings (in the “syntax” category)
    for a non-literal URL argument to AC_INIT, and for a TARNAME
    argument to AC_INIT which is either non-literal or contains
    characters that should not be used in file names (e.g. ‘*’).

*** AC_PROG_CC_STDC, AC_PROG_CC_C89, AC_PROG_CC_C99 are now obsolete.

  Applications should use AC_PROG_CC.

*** AC_HEADER_STDC and AC_HEADER_TIME are now stubs.

  They still define the C preprocessor macros STDC_HEADERS and
  TIME_WITH_SYS_TIME, respectively, but they no longer check for the
  ancient, non-ISO-C90 compliant systems where formerly those macros
  would not be defined.  Autoupdate will remove them.

  These macros were already labeled obsolete in the manual.

    replaced with modern equivalents by autoupdate.

  These macros were already labeled obsolete in the manual.

*** AC_CONFIG_HEADER is now diagnosed as obsolete, and replaced with
    AC_CONFIG_HEADERS by autoupdate.

  This macro has been considered obsolete for many years and was not
  documented at all.

*** The macro AC_OBSOLETE is obsolete.

  Autoupdate will replace it with m4_warn([obsolete], [explanation]).
  If possible, macros using AC_OBSOLETE should be converted to use
  AU_DEFUN or AU_ALIAS instead, which enables autoupdate to replace
  them, but this has to be done by hand and is not always possible.

  This macro has been considered obsolete for many years, but was not
  officially declared as such.

*** Man pages for config.guess and config.sub are no longer provided.

  They were moved to the master source tree for config.guess and

** Notable bug fixes

*** Compatible with current Automake, Libtool, Perl, Texinfo, and shells.

  All of autoconf’s tools and generated scripts, and the build process
  and testsuite for autoconf itself, have been tested to work
  correctly with current versions of Automake, Libtool, Perl, Texinfo,
  bash, ksh93, zsh, and FreeBSD and NetBSD /bin/sh.

  Generated configure scripts are expected to work reliably with an
  even wider variety of shells, including BusyBox sh and various
  proprietary Unixes’ /bin/sh, as long as they are minimally compliant
  with the Unix95 shell specification.  Notably, support for
  shell-script functions and the ‘printf’ builtin are required.

*** Checks compatible with current language standards and compilers.

  Many individual macros have been improved to accommodate changes in
  recent versions of the C and C++ language standards, and new
  features and quirks of commonly used compilers (both free and

*** Improved support for cross compilation.

  Many individual macros have been improved to produce more accurate
  results when cross-compiling.

*** Improved robustness against unusual build environments.

  Many bugs have been fixed where generated configure scripts would
  fail catastrophically under unusual conditions, such as stdout being
  closed, or $TMPDIR not being an absolute path, or the root directory
  being mentioned in $PATH.

*** AC_CHECK_FUNCS_ONCE and AC_CHECK_HEADERS_ONCE now support multiple
    programming languages.  They no longer perform all checks in the
    language active upon the first use of the macro.

*** AC_CHECK_DECL and AC_CHECK_DECLS will now detect missing declarations for
    library functions that are also Clang compiler builtins.

*** AC_PATH_X and AC_PATH_XTRA don’t search for X11 when cross-compiling.

  Libraries and headers found by running xmkmf or searching /usr/X11,
  /usr/X11R7, etc. are likely to belong to a native X11 installation
  for the build machine and to be inappropriate for cross compilation.

  To cross-compile programs that require X11, we recommend putting the
  headers and libraries for the host system in your cross-compiler’s
  default search paths.  Alternatively, use configure’s --x-includes
  and --x-libraries command line options to tell it where they are.

*** AC_PROG_CC is now defined via AC_DEFUN_ONCE.

  This means configure scripts will no longer check repeatedly for the
  C compiler under some combinations of macro use.

*** AC_HEADER_MAJOR detects the location of the major, minor, and
    makedev macros correctly under glibc 2.25 and later.

*** AC_FC_LINE_LENGTH now documents the maximum portable length of
    “unlimited” Fortran source code lines to be 250 columns, not 254.

*** AC_INIT and AS_INIT no longer embed (part of) the path to the
    source directory in generated files.

  We believe this was the only case where generated file contents
  could change depending on the environment outside the source tree
  itself.  If you find any other cases please report them as bugs.

*** config.log properly escapes arguments in the header comment.

*** config.status --config output is now quoted in a more readable fashion.

** Autotest enhancements

*** Autotest provides a new macro AT_DATA_UNQUOTED, similar to AT_DATA
    but processing variable substitutions, command substitutions and
    backslashes in the contents argument.

*** AC_CONFIG_TESTDIR will automatically pass EXEEXT to a testsuite (via
    the atconfig file).

*** AT_TESTED arguments can use variable or command substitutions, including
    in particular $EXEEXT



reply via email to

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