GNU bug report logs - #68674
recommending autoreconf -f when version mismatch

Previous Next

Package: automake-patches;

Reported by: Karl Berry <karl <at> freefriends.org>

Date: Tue, 23 Jan 2024 16:11:01 UTC

Severity: normal

Done: Karl Berry <karl <at> freefriends.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 68674 in the body.
You can then email your comments to 68674 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to automake-patches <at> gnu.org:
bug#68674; Package automake-patches. (Tue, 23 Jan 2024 16:11:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Karl Berry <karl <at> freefriends.org>:
New bug report received and forwarded. Copy sent to automake-patches <at> gnu.org. (Tue, 23 Jan 2024 16:11:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Karl Berry <karl <at> freefriends.org>
To: automake-patches <at> gnu.org
Subject: recommending autoreconf -f when version mismatch
Date: Tue, 23 Jan 2024 09:10:09 -0700
The patch below changes the wording of the "version mismatch" errors to
recommend running autoreconf -f. If anyone sees any problems with the
idea, or the wording, let me know.

I discovered this when trying out the last automake pretest. After
configuring with the new automake, I then went back to the released
automake version, provoking the error:

  configure.ac:26: error: version mismatch.  This is Automake 1.16.5,
  configure.ac:26: but the definition used by this AM_INIT_AUTOMAKE
  configure.ac:26: comes from Automake 1.16j.  You should recreate
  configure.ac:26: aclocal.m4 with aclocal and run automake again.

However, running aclocal && automake did not change anything. The 
problem was not (just) aclocal.m4, but the autom4te.cache/ files, which
aclocal and automake do not touch.

The new message is:

  configure.ac:6: error: version mismatch.  This is Automake 1.16.90,
  configure.ac:6: but the definition used by this AM_INIT_AUTOMAKE
  configure.ac:6: comes from Automake 1.16.5.  You should run
  configure.ac:6: autoreconf -f (or otherwise erase all old files, run
  configure.ac:6: aclocal to recreate aclocal.m4, and rerun automake).

I also tweaked the manual to suggest autoreconf in another place.

Comments/corrections/criticisms/whatever welcome ... --thanks, karl.

-----------------------------------------------------------------------------
automake: recommend autoreconf -f with version mismatches.

* bin/automake.in (scan_autoconf_traces): change error
to suggest running autoreconf -f. The version mismatch is
most likely to happen due to the cache files, which
aclocal && automake (the previous recommendation) does not delete.
(scan_autoconf_files): likewise.
* doc/automake.texi (Auto-generating aclocal.m4): mention autoreconf.
Other minor wording changes.
diff --git a/bin/automake.in b/bin/automake.in
index f568773eb..0499d81eb 100644
--- a/bin/automake.in
+++ b/bin/automake.in
@@ -5442,8 +5442,9 @@ sub scan_autoconf_traces
 	  error ($where,
 		 "version mismatch.  This is Automake $VERSION,\n" .
 		 "but the definition used by this AM_INIT_AUTOMAKE\n" .
-		 "comes from Automake $args[1].  You should recreate\n" .
-		 "aclocal.m4 with aclocal and run automake again.\n",
+		 "comes from Automake $args[1].  You should run\n" .
+		 "autoreconf -f (or otherwise erase all old files,\n" .
+		 "recreate aclocal.m4 with aclocal, and rerun automake).",
 		 # $? = 63 is used to indicate version mismatch to missing.
 		 exit_code => 63)
 	    if $VERSION ne $args[1];
@@ -5621,9 +5622,10 @@ sub scan_autoconf_files ()
 	  if (-f 'aclocal.m4')
 	    {
 	      error ($seen_init_automake,
-		     "your implementation of AM_INIT_AUTOMAKE comes from " .
-		     "an\nold Automake version.  You should recreate " .
-		     "aclocal.m4\nwith aclocal and run automake again",
+                     "your implementation of AM_INIT_AUTOMAKE comes from\n" .
+                     "an old Automake version.  You should run\n" .
+                     "autoreconf -f (or otherwise erase all old files, run\n" .
+                     "aclocal to remake aclocal.m4, and rerun automake).",
 		     # $? = 63 is used to indicate version mismatch to missing.
 		     exit_code => 63);
 	    }
@@ -5632,8 +5634,8 @@ sub scan_autoconf_files ()
 	      error ($seen_init_automake,
 		     "no proper implementation of AM_INIT_AUTOMAKE was " .
 		     "found,\nprobably because aclocal.m4 is missing.\n" .
-		     "You should run aclocal to create this file, then\n" .
-		     "run automake again");
+		     "You should run autoreconf -f (or aclocal to create\n" .
+		     "this file, then rerun automake).");
 	    }
 	}
     }
diff --git a/doc/automake.texi b/doc/automake.texi
index ecefe2dc6..d30905e0f 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -3276,7 +3276,7 @@ macros installed in a system-wide directory; @pxref{aclocal Invocation}).

 @node aclocal Invocation
 @section Auto-generating aclocal.m4
-@c This node used to be named "Invoking automake".  This @anchor
+@c This node used to be named "Invoking aclocal".  This @anchor
 @c allows old links to still work.
 @anchor{Invoking aclocal}

@@ -3335,9 +3335,15 @@ autoconf, The Autoconf Manual}) in order to trace the macros that are
 used, and omit from @file{aclocal.m4} all macros that are mentioned
 but otherwise unexpanded (this can happen when a macro is called
 conditionally).  @command{autom4te} is expected to be in the
-@env{PATH}, just as @command{autoconf}.  Its location can be
+@env{PATH}, just like @command{autoconf}.  Its location can be
 overridden using the @env{AUTOM4TE} environment variable.

+Although this section explains the details of @command{aclocal}, in
+practice it is usually simpler to run @command{autoreconf}, instead of
+worrying about the required order of the various tools
+(@pxref{autoreconf Invocation, , Using @command{autoreconf},
+autoconf, The Autoconf Manual}).
+
 @menu
 * aclocal Options::             Options supported by aclocal
 * Macro Search Path::           How aclocal finds .m4 files
@@ -5686,13 +5692,13 @@ this issue because older Automake versions used to call
 @command{libtoolize}.

 Since Automake 1.6, it has been decided that running
-@command{libtoolize} was none of Automake's business.  Instead, that
+@command{libtoolize} was not Automake's business.  Instead, that
 functionality has been moved into the @command{autoreconf} command
 (@pxref{autoreconf Invocation, , Using @command{autoreconf}, autoconf,
 The Autoconf Manual}).  If you do not want to remember what to run and
-when, just learn the @command{autoreconf} command.  Hopefully,
-replacing existing @file{bootstrap} or @file{autogen.sh} scripts by
-a call to @command{autoreconf} should also free you from any similar
+when, just remember the @command{autoreconf} command.  Hopefully,
+replacing existing @file{bootstrap} or @file{autogen.sh} scripts by a
+call to @command{autoreconf} should also free you from any similar
 incompatible change in the future.

 @node Objects created both with libtool and without
@@ -8092,8 +8098,8 @@ Here are the current support plans.
 Currently Automake provides support for Texinfo and man pages.

 @menu
-* Texinfo::                     Texinfo
-* Man Pages::                   Man pages
+* Texinfo::
+* Man Pages::
 @end menu


@@ -8214,7 +8220,7 @@ included when @command{automake} is invoked with the
 If you have multiple Texinfo files, and you want to use the
 @file{version.texi} feature, then you have to have a separate version
 file for each Texinfo file.  Automake will treat any include in a
-Texinfo file that matches @file{vers*.texi} just as an automatically
+Texinfo file that matches @file{vers*.texi} just like an automatically
 generated version file.

 Often an Info file depends on more than one @file{.texi} file.  For

compile finished at Mon Jan 22 18:13:52 2024




Reply sent to Karl Berry <karl <at> freefriends.org>:
You have taken responsibility. (Thu, 25 Jan 2024 21:53:04 GMT) Full text and rfc822 format available.

Notification sent to Karl Berry <karl <at> freefriends.org>:
bug acknowledged by developer. (Thu, 25 Jan 2024 21:53:04 GMT) Full text and rfc822 format available.

Message #10 received at 68674-done <at> debbugs.gnu.org (full text, mbox):

From: Karl Berry <karl <at> freefriends.org>
To: 68674-done <at> debbugs.gnu.org
Date: Thu, 25 Jan 2024 14:52:48 -0700



bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 23 Feb 2024 12:24:14 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 118 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.