autoconf-patches
[Top][All Lists]
Advanced

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

Re: [PATCH] general: deprecate 'configure.in' as autoconf input


From: Stefano Lattarini
Subject: Re: [PATCH] general: deprecate 'configure.in' as autoconf input
Date: Tue, 22 May 2012 12:29:51 +0200

On 05/19/2012 10:25 AM, Stefano Lattarini wrote:
> It has been years since that has been deprecated in the documentation,
> in favour of 'configure.ac':
> 
>   Previous versions of Autoconf promoted the name configure.in, which
>   is somewhat ambiguous (the tool needed to process this file is not
>   described by its extension), and introduces a slight confusion with
>   config.h.in and so on (for which '.in' means "to be processed by
>   configure"). Using configure.ac is now preferred.
> 
> It's now time to start giving runtime warning about the use of
> 'configure.in', so that support for it can be removed in future
> versions of autoconf/automake.
> 
> * lib/Autom4te/Configure_ac.pm: Issue a warning in the 'obsolete'
> category if 'configure.in' is detected.  Since this module is synced
> from Automake, this change is to be backported there (and will be
> soon).
> * doc/autoconf.texi: Update.
> * tests/tools.at: Adjust to avoid spurious failures.
> 
> Signed-off-by: Stefano Lattarini <address@hidden>
> ---
> 
>  OK to apply?  I plan to backport the change done to Configure_ac.pm
>  to the Automake's master copy as soon as this patch is accepted into
>  the autoconf repository.
> 
>  Regards,
>    Stefano
> 
>  NEWS                         |    2 ++
>  doc/autoconf.texi            |    9 +++++----
>  lib/Autom4te/Configure_ac.pm |   19 ++++++++++---------
>  tests/tools.at               |   28 ++++++++++++++--------------
>  4 files changed, 31 insertions(+), 27 deletions(-)
> 
> diff --git a/NEWS b/NEWS
> index 61e3bd2..5429698 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -2,6 +2,8 @@ GNU Autoconf NEWS - User visible changes.
>  
>  * Noteworthy changes in release ?.? (????-??-??) [?]
>  
> +** The use of the long-deprecated name 'configure.in' for the autoconf
> +   input file now elicits a warning in the 'obsolete' category.
>  
>  * Noteworthy changes in release 2.69 (2012-04-24) [stable]
>  
> diff --git a/doc/autoconf.texi b/doc/autoconf.texi
> index 34ca213..bc70e55 100644
> --- a/doc/autoconf.texi
> +++ b/doc/autoconf.texi
> @@ -1004,10 +1004,9 @@ a file called @file{config.log} containing any 
> messages produced by
>  compilers, to help debugging if @command{configure} makes a mistake.
>  @end itemize
>  
> address@hidden @file{configure.in}
>  @cindex @file{configure.ac}
> -To create a @command{configure} script with Autoconf, you need to write an
> -Autoconf input file @file{configure.ac} (or @file{configure.in}) and run
> +To create a @command{configure} script with Autoconf, you need
> +to write an Autoconf input file @file{configure.ac} and run
>  @command{autoconf} on it.  If you write your own feature tests to
>  supplement those that come with Autoconf, you might also write files
>  called @file{aclocal.m4} and @file{acsite.m4}.  If you use a C header
> @@ -1095,12 +1094,14 @@ Programming}.  The @command{autoscan} program can 
> give you a good start
>  in writing @file{configure.ac} (@pxref{autoscan Invocation}, for more
>  information).
>  
> address@hidden @file{configure.in}
>  Previous versions of Autoconf promoted the name @file{configure.in},
>  which is somewhat ambiguous (the tool needed to process this file is not
>  described by its extension), and introduces a slight confusion with
>  @file{config.h.in} and so on (for which @samp{.in} means ``to be
>  processed by @command{configure}'').  Using @file{configure.ac} is now
> -preferred.
> +preferred, while the use of @file{configure.in} will cause warnings
> +from @command{autoconf}.
>  
>  @menu
>  * Shell Script Compiler::       Autoconf as solution of a problem
> diff --git a/lib/Autom4te/Configure_ac.pm b/lib/Autom4te/Configure_ac.pm
> index 924b23c..854ee0d 100644
> --- a/lib/Autom4te/Configure_ac.pm
> +++ b/lib/Autom4te/Configure_ac.pm
> @@ -75,19 +75,21 @@ sub find_configure_ac (;@)
>    my $configure_in =
>      File::Spec->canonpath (File::Spec->catfile ($directory, 'configure.in'));
>  
> -  if (-f $configure_ac)
> +  if (-f $configure_in)
>      {
> -      if (-f $configure_in)
> +      msg ('obsolete', "autoconf input should be named 'configure.ac'," .
> +                       " not 'configure.in'");
> +      if (-f $configure_ac)
>       {
>         msg ('unsupported',
>              "'$configure_ac' and '$configure_in' both present.\n"
>              . "proceeding with '$configure_ac'");
> +          return $configure_ac
>       }
> -      return $configure_ac
> -    }
> -  elsif (-f $configure_in)
> -    {
> -      return $configure_in;
> +      else
> +        {
> +          return $configure_in;
> +        }
>      }
>    return $configure_ac;
>  }
> @@ -102,8 +104,7 @@ Like C<find_configure_ac>, but fail if neither is present.
>  sub require_configure_ac (;$)
>  {
>    my $res = find_configure_ac (@_);
> -  fatal "'configure.ac' or 'configure.in' is required"
> -    unless -f $res;
> +  fatal "'configure.ac' is required" unless -f $res;
>    return $res
>  }
>  
> diff --git a/tests/tools.at b/tests/tools.at
> index 31d4aad..5a9ee63 100644
> --- a/tests/tools.at
> +++ b/tests/tools.at
> @@ -1135,7 +1135,7 @@ AT_SETUP([autoupdating with aclocal and 
> m4@&address@hidden)
>  AT_CHECK([aclocal --version || exit 77], [], [ignore], [ignore])
>  
>  mkdir m4 aclocal
> -AT_DATA([configure.in],
> +AT_DATA([configure.ac],
>  [[AC_INIT(x,0)
>  AC_UNCHANGED_MACRO
>  AC_OLD_MACRO
> @@ -1169,7 +1169,7 @@ AT_CHECK([automake --version || exit 77], [], [stdout], 
> [ignore])
>  AT_CHECK([[grep '[1-9]\.[0-9]' stdout || exit 77]], [], [ignore])
>  AT_CHECK([test ! -f $HOME/.autom4te.cfg || exit 77], [], [ignore], [ignore])
>  
> -AT_DATA([configure.in],
> +AT_DATA([configure.ac],
>  [[AC_INIT(GNU foo, 1.0)
>  AM_INIT_AUTOMAKE
>  AC_CONFIG_FILES([Makefile])
> @@ -1294,9 +1294,9 @@ do
>    export TMPDIR
>  
>    # skip if we cannot create such a file or directory
> -  AT_CHECK([mkdir "$dir" "$TMPDIR" && touch "$file.in" || exit 77])
> +  AT_CHECK([mkdir "$dir" "$TMPDIR" && touch "$file.ac" || exit 77])
>  
> -  cat >"$file.in" <<'END'
> +  cat >"$file.ac" <<'END'
>  [AC_INIT(x,0)
>  m4@&address@hidden([foo.m4])
>  AC_CONFIG_HEADERS([config.h:config.hin])
> @@ -1307,20 +1307,20 @@ END
>  [AC_DEFUN([AC_MACRO], [echo hi])]
>  END
>  
> -  AT_CHECK_AUTOHEADER([-B "$dir" "$file.in"])
> -  AT_CHECK_AUTOHEADER([--force -I "$dir" "$file.in"])
> -  AT_CHECK_AUTOUPDATE([-B "$dir" "$file.in"])
> -  AT_CHECK_AUTOUPDATE([--force -I "$dir" "$file.in"])
> -  AT_CHECK_AUTOUPDATE([-B "$dir" - < "$file.in"], [], [ignore])
> -  AT_CHECK_AUTOCONF([-B "$dir" -o "$file" "$file.in"])
> -  AT_CHECK_AUTOCONF([-I "$dir" -o "$file" "$file.in"])
> +  AT_CHECK_AUTOHEADER([-B "$dir" "$file.ac"])
> +  AT_CHECK_AUTOHEADER([--force -I "$dir" "$file.ac"])
> +  AT_CHECK_AUTOUPDATE([-B "$dir" "$file.ac"])
> +  AT_CHECK_AUTOUPDATE([--force -I "$dir" "$file.ac"])
> +  AT_CHECK_AUTOUPDATE([-B "$dir" - < "$file.ac"], [], [ignore])
> +  AT_CHECK_AUTOCONF([-B "$dir" -o "$file" "$file.ac"])
> +  AT_CHECK_AUTOCONF([-I "$dir" -o "$file" "$file.ac"])
>    # In autoconf, these exercise a slightly different code path:
> -  AT_CHECK_AUTOCONF([--prepend-include="$dir" -o "$file" "$file.in"])
> -  AT_CHECK_AUTOCONF([--include="$dir" -o "$file" "$file.in"])
> +  AT_CHECK_AUTOCONF([--prepend-include="$dir" -o "$file" "$file.ac"])
> +  AT_CHECK_AUTOCONF([--include="$dir" -o "$file" "$file.ac"])
>    AT_CHECK([autoscan -B "$dir"], [], [], [ignore])
>    AT_CHECK([autoscan --force -I "$dir"], [], [], [ignore])
>    # autoreconf requires a sane input file name.  Also, disable aclocal.
> -  mv -f "$file.in" configure.in
> +  mv -f "$file.ac" configure.ac
>    AT_DATA([aclocal.m4])
>    AT_CHECK([autoreconf -B "$dir"])
>    AT_CHECK([autoreconf --force -I "$dir"])
>
Ping?

Regards,
  Stefano



reply via email to

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