GNU bug report logs - #72157
Current master (commit 4e6eff3597649782def55fc1dfeeec92cec4b15e) is unusable

Previous Next

Package: automake;

Reported by: Dario Gjorgjevski <dario.gjorgjevski <at> gmail.com>

Date: Wed, 17 Jul 2024 15:00:02 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 72157 in the body.
You can then email your comments to 72157 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 bug-automake <at> gnu.org:
bug#72157; Package automake. (Wed, 17 Jul 2024 15:00:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Dario Gjorgjevski <dario.gjorgjevski <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-automake <at> gnu.org. (Wed, 17 Jul 2024 15:00:02 GMT) Full text and rfc822 format available.

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

From: Dario Gjorgjevski <dario.gjorgjevski <at> gmail.com>
To: bug-automake <at> gnu.org
Subject: Current master (commit 4e6eff3597649782def55fc1dfeeec92cec4b15e) is
 unusable
Date: Wed, 17 Jul 2024 16:58:59 +0200
Automake installed from the current master (commit
4e6eff3597649782def55fc1dfeeec92cec4b15e) is unusable:

automake: error: version is incorrect: 1.17.0.90
automake: Please contact <bug-automake <at> gnu.org>.
 at $prefix/share/automake-1.17/Automake/Channels.pm line 661, <GEN0> line 73.
    Automake::Channels::msg("automake", "", "version is incorrect:
1.17.0.90") called at
$prefix/share/automake-1.17/Automake/ChannelDefs.pm line 233
    Automake::ChannelDefs::prog_error("version is incorrect:
1.17.0.90") called at $prefix/share/automake-1.17/Automake/Version.pm
line 128
    Automake::Version::check("1.17.0.90", "1.16.3") called at
$prefix/share/automake-1.17/Automake/Options.pm line 384
    Automake::Options::_process_option_list(HASH(0x7fdb82147640),
HASH(0x7fdb84872710), HASH(0x7fdb84872770), HASH(0x7fdb848727d0),
HASH(0x7fdb84872830)) called at
$prefix/share/automake-1.17/Automake/Options.pm line 428
    Automake::Options::process_global_option_list(HASH(0x7fdb84872710),
HASH(0x7fdb84872770), HASH(0x7fdb848727d0), HASH(0x7fdb84872830))
called at $prefix/bin/automake line 5499
    Automake::scan_autoconf_traces("configure.ac") called at
$prefix/bin/automake line 5599
    Automake::scan_autoconf_files() called at $prefix/bin/automake line 8501
autoreconf: error: automake failed with exit status: 29

I suppose Automake::Version::split fails when given "1.17.0.90" as input?

Best regards,
Dario




Information forwarded to bug-automake <at> gnu.org:
bug#72157; Package automake. (Wed, 17 Jul 2024 21:46:02 GMT) Full text and rfc822 format available.

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

From: Karl Berry <karl <at> freefriends.org>
To: dario.gjorgjevski <at> gmail.com
Cc: 72157 <at> debbugs.gnu.org
Subject: Re: bug#72157: Current master (commit
 4e6eff3597649782def55fc1dfeeec92cec4b15e) is unusable
Date: Wed, 17 Jul 2024 15:45:34 -0600
    Automake installed from the current master (commit
    4e6eff3597649782def55fc1dfeeec92cec4b15e) is unusable:

Thanks for the report. Will look into it asap. Hopefully someone else
(Bogdan?) will beat me to it. --best, karl.




Information forwarded to bug-automake <at> gnu.org:
bug#72157; Package automake. (Tue, 10 Sep 2024 22:47:02 GMT) Full text and rfc822 format available.

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

From: Karl Berry <karl <at> freefriends.org>
To: dario.gjorgjevski <at> gmail.com
Cc: 72157 <at> debbugs.gnu.org
Subject: Re: bug#72157: Current master (commit
 4e6eff3597649782def55fc1dfeeec92cec4b15e) is unusable
Date: Tue, 10 Sep 2024 16:46:06 -0600
Hi Dario - thanks for the report. I've made the changes below to try to
support the new four-part numeric version numbers, like 1.17.0.91 (which
is now the current dev version). 

All the tests pass for me, so I hope it's also usable. I won't be
surprised if something is still messed up somewhere, but hoping for the
best, so will provisionally close this.  --thanks, karl.

-----------------------------------------------------------------------------
automake: recognize all-numeric MAJ.MIN.MICROa.ALPHA versions better.

* HACKING: more doc on version numbers.
* configure.ac (AC_INIT): 1.17.0.91, since we want (I guess)
to retain odd numbers for development and even numbers for pretests.
* m4/amversion.m4 (AM_AUTOMAKE_VERSION): 1.17.0.91 (auto-update).
(AM_SET_CURRENT_AUTOMAKE_VERSION): likewise.
* lib/Automake/Options.pm (_process_option_list): recognize
four-part numeric versions as Automake options.
* lib/Automake/Version.pm (split): recognize four-part numeric
versions.
* t/pm/Version.pl (@tests, @bad_versions): update test
to check (not reject) four-part numeric versions.

diff --git a/HACKING b/HACKING
index f8d2fb043..cd28dbe82 100644
--- a/HACKING
+++ b/HACKING
@@ -529,16 +529,23 @@
 * Check NEWS; in particular, ensure that all the relevant differences
   with the last release are included.

-* Update the AC_INIT version number in configure.ac.  Leading up to a release,
-  say 1.17, pretests should be numbered from 1.16.90. Even numbers
-  (1.16.90, 1.16.92, ...) should be the pretest releases; odd numbers
-  (1.16.91, 1.16.93, ...) should be only the development versions.
-  Leading up to a release 1.17.1, we would have 1.17.0.90, etc.
-  Before 1.17 (July 2024), we used suffixed letters for pretests,
-  as is traditional, but deficient sorting algorithms did not like that.
+* Update the AC_INIT version number in configure.ac.  Leading up to a
+  minor release (x.y), say 1.17, pretests should be numbered from
+  1.16.90. Even numbers (1.16.90, 1.16.92, ...) should be pretest
+  releases; odd numbers (1.16.91, 1.16.93, ...) should be only
+  development versions.  Leading up to a micro release (x.y.z), say
+  1.17.1, we would have 1.17.0.91 for the initial post-release
+  development version, 1.17.0.92 for the first pretest, etc.
+  
+  Before 1.17 (July 2024), we used suffixed letters for pretests, as is
+  traditional, but deficient sorting algorithms did not like that. The
+  code in lib/Automake/Version.pm, along with the regexp in
+  lib/Automake/Options.pm, has to be updated to understand any change in
+  version number schemes. The test t/pm/Version[.pl] comprehensively
+  checks valid and invalid version strings.

 * If making a minor or major release (1.x), also update APIVERSION
-  in configure.ac.
+  in configure.ac. But not micro.

 * Create an announcement message with "make announcement".  Edit the
   generated 'announcement' file appropriately, in particularly filling
@@ -602,9 +609,10 @@
        make web-manual

     The ready-to-be-uploaded manuals (in several formats) will be left
-    in the 'doc/web-manuals' directory.
+    in the 'doc/web-manual' directory.

-  - Commit the updated manuals to web CVS:
+  - Commit the updated manuals to web CVS. This requires the "cvsu"
+    utility from the "cvsutils" package.
       make web-manual-update

     If your local username is different from your username at Savannah,
diff --git a/configure.ac b/configure.ac
index 54cd709d1..e4c7a126c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,7 +16,7 @@
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.

 AC_PREREQ([2.69])
-AC_INIT([GNU Automake], [1.17.0.90], [bug-automake <at> gnu.org])
+AC_INIT([GNU Automake], [1.17.0.91], [bug-automake <at> gnu.org])

 AC_CONFIG_SRCDIR([bin/automake.in])
 AC_CONFIG_AUX_DIR([lib])
diff --git a/lib/Automake/Options.pm b/lib/Automake/Options.pm
index 98d3fd9e5..2dc7899f8 100644
--- a/lib/Automake/Options.pm
+++ b/lib/Automake/Options.pm
@@ -378,7 +378,8 @@ sub _process_option_list (\%@)
               $ret = 0;
             }
         }
-      elsif (/^\d+\.\d+(?:\.\d+)?[a-z]?(?:-[A-Za-z0-9]+)?$/)
+      elsif (/^\d+\.\d+(?:\.\d+)?(?:\.\d+)?[a-z]?(?:-[A-Za-z0-9]+)?$/)
+            # MAJOR.MINOR (all digits) are required, all else optional.
         {
           # Got a version number.
           if (Automake::Version::check ($VERSION, $&))
diff --git a/lib/Automake/Version.pm b/lib/Automake/Version.pm
index daba71ffe..7da0560c9 100644
--- a/lib/Automake/Version.pm
+++ b/lib/Automake/Version.pm
@@ -39,12 +39,12 @@ as they are used in Automake.

 A version is a string that looks like
 C<MAJOR.MINOR[.MICRO][ALPHA][-FORK]> where C<MAJOR>, C<MINOR>, and
-C<MICRO> are digits, C<ALPHA> is a character, and C<FORK> any
-alphanumeric word.
+C<MICRO> are digits, C<ALPHA> is either a character or another C<.NUM>,
+and C<FORK> any alphanumeric word.

 Usually, C<ALPHA> is used to label alpha releases or intermediate
 snapshots, C<FORK> is used for git branches or patched releases, and
-C<MICRO> is used for bug fixes releases on the C<MAJOR.MINOR> branch.
+C<MICRO> is used for bug fix releases on the C<MAJOR.MINOR> branch.

 For the purpose of ordering, C<1.4> is the same as C<1.4.0>, but
 C<1.4g> is the same as C<1.4.99g>.  The C<FORK> identifier is ignored
@@ -53,6 +53,18 @@ versions were labeled like C<1.4-p3a>, this is the same as an alpha
 release labeled C<1.4.3a>.  Yes, it's horrible, but Automake did not
 support two-dot versions in the past.

+In 2024, Automake switched from using letter suffixes like C<1.4g> for
+pretests to the C<.90> form (used by nearly all other GNU packages),
+e.g., C<1.16.90> was a pretest leading up to C<1.17>. Thus we also have
+to support four-part version numbers, since test releases leading up to
+C<1.17.1> have to be C<1.17.0.92>, etc., to follow the pattern. In this
+case, all four version parts have to be present and all-numeric; the
+C<-FORK> is still optional (but entirely ignored).
+
+Aggravatingly, version number syntax is also recognized in
+lib/Automake/Options.pm, since bare version numbers are also valid
+Automake options, as tested in C<version6[.sh]>.
+
 =head2 FUNCTIONS

 =over 4
@@ -61,7 +73,8 @@ support two-dot versions in the past.

 Split the string C<$version> into the corresponding C<(MAJOR, MINOR,
 MICRO, ALPHA, FORK)> tuple.  For instance C<'1.4g'> would be split
-into C<(1, 4, 99, 'g', '')>.  Return C<()> on error.
+into C<(1, 4, 99, 'g', '')> and C<'1.17.0.91'> into C<1, 17, 0, 91, ''>.
+Return C<()> on error.

 =cut

@@ -69,16 +82,22 @@ sub split ($)
 {
   my ($ver) = @_;

-  # Special case for versions like 1.4-p2a.
+  # Recognize MAJOR.MINOR, plus special case for versions like 1.4-p2a.
   if ($ver =~ /^(\d+)\.(\d+)(?:-p(\d+)([a-z]+)?)$/)
   {
     return ($1, $2, $3, $4 || '', '');
   }
-  # Common case.
+  # Recognize MAJOR.MINOR and MAJOR.MINOR.MICRO, as well as
+  # the pre-2024 case with possible letters in the alpha part.
   elsif ($ver =~ /^(\d+)\.(\d+)(?:\.(\d+))?([a-z])?(?:-([A-Za-z0-9]+))?$/)
   {
     return ($1, $2, $3 || (defined $4 ? 99 : 0), $4 || '', $5 || '');
   }
+  # 2024ff. case with all numbers: MAJOR.MINOR.MICRO.ALPHA[-FORK].
+  elsif ($ver =~ /^(\d+)\.(\d+).(\d+)\.(\d+)(?:-([A-Za-z0-9]+))?$/)
+  {
+    return ($1, $2, $3, $4, $5 || '');
+  }
   return ();
 }

diff --git a/m4/amversion.m4 b/m4/amversion.m4
index eaf900ea7..5a5ec0868 100644
--- a/m4/amversion.m4
+++ b/m4/amversion.m4
@@ -15,7 +15,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
 [am__api_version='1.17'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.17.0.90], [],
+m4_if([$1], [1.17.0.91], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])

@@ -31,7 +31,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.17.0.90])dnl
+[AM_AUTOMAKE_VERSION([1.17.0.91])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
diff --git a/t/pm/Version.pl b/t/pm/Version.pl
index b33d74b94..1312eb258 100644
--- a/t/pm/Version.pl
+++ b/t/pm/Version.pl
@@ -92,6 +92,11 @@ my @tests = (
   ['1.5.1a', '1.5.1f', -1],
   ['1.5.1f', '1.5.1a', 1],
   ['1.5.1f', '1.5.1f', 0],
+# with four-part numeric versions, starting 2024
+  ['1.17.0.91', '1.17.0.91', 0],
+  ['1.17.0.91', '1.17.0.92', -1],
+  ['1.17.0.91', '1.17.1', -1],
+  ['1.17.0.91', '1.17', 1],
 # special exceptions
   ['1.6-p5a', '1.6.5a', 0],
   ['1.6', '1.6-p5a', -1],
@@ -103,7 +108,7 @@ my @tests = (
 );

 my @bad_versions = (
-  '', 'a', '1', '1a', '1.2.3.4', '-1.2'
+  '', 'a', '1', '1a', '-1.2'
 );

 test_version_compare (@{$_}) foreach @tests;

compile finished at Tue Sep 10 15:44:43 2024




Reply sent to Karl Berry <karl <at> freefriends.org>:
You have taken responsibility. (Tue, 10 Sep 2024 22:47:03 GMT) Full text and rfc822 format available.

Notification sent to Dario Gjorgjevski <dario.gjorgjevski <at> gmail.com>:
bug acknowledged by developer. (Tue, 10 Sep 2024 22:47:03 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 09 Oct 2024 11:24:09 GMT) Full text and rfc822 format available.

This bug report was last modified 45 days ago.

Previous Next


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