#1067957 FTBFS: error: call of overloaded ‘__gmp_expr(__time64_t&)’ is ambiguous

Package:
src:maude
Source:
src:maude
Submitter:
Andrey Rakhmatullin
Date:
2025-08-17 18:11:36 UTC
Severity:
normal
Tags:
#1067957#5
Date:
2024-03-29 13:17:53 UTC
From:
To:
https://buildd.debian.org/status/fetch.php?pkg=maude&arch=armhf&ver=3.2-2%2Bb1&stamp=1711717901&raw=0

In file included from timeManagerSymbol.cc:64:
timeActions.cc: In member function ‘void
TimeManagerSymbol::getTimeSinceEpoch(FreeDagNode*,
ObjectSystemRewritingContext&)’:
timeActions.cc:43:41: error: call of overloaded ‘__gmp_expr(__time64_t&)’ is
ambiguous
   43 |   mpz_class nanoSeconds(timeValue.tv_sec);
      |                                         ^

#1067957#12
Date:
2024-04-07 11:07:36 UTC
From:
To:
We believe that the bug you reported is fixed in the latest version of
maude, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1067957@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Nilesh Patra <nilesh@iki.fi> (supplier of updated maude package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Sun, 07 Apr 2024 16:28:11 +0530
Source: maude
Architecture: source
Version: 3.4-1
Distribution: unstable
Urgency: medium
Maintainer: Debian Med Packaging Team <debian-med-packaging@lists.alioth.debian.org>
Changed-By: Nilesh Patra <nilesh@iki.fi>
Closes: 1067957
Changes:
 maude (3.4-1) unstable; urgency=medium
 .
   * Team Upload.
   * New upstream version 3.4 (Closes: #1067957)
   * Refresh, update patches
   * Drop patch file
   * Update Builddep from libncurses5-dev => libncurses-dev
     (former is a virtual package)
   * Bump Standards-Version to 4.6.2 (no changes needed)
   * Remove copyright for superfluous file
Checksums-Sha1:
 250e0c8f7b749f5e31ef7711821d820d27e6f6a8 1387 maude_3.4-1.dsc
 fdd386d89b978a5193aacde26dd6cf883d1f360a 2660916 maude_3.4.orig.tar.gz
 097237c3d76b0684126108440fbbeb6655ba49a7 6544 maude_3.4-1.debian.tar.xz
 9ffc04f6d2744686754642346a6bafacd5b97959 6883 maude_3.4-1_source.buildinfo
Checksums-Sha256:
 8612b0072ed70f01b992528ce4a18f76c96aab52b264f475c7420ecd4b57a55f 1387 maude_3.4-1.dsc
 2175845809a1dfcf0da4d4adf709cea4b933859d3d37e012b4edb09f97514fca 2660916 maude_3.4.orig.tar.gz
 91cd6595e04bb058cdc6154cd86931dfd2ec88d6dc207744fa5f3f2df2b36764 6544 maude_3.4-1.debian.tar.xz
 b4fc1988fcf65b4ba0add7d0dab72f59618e385b633fd133d7217f635d92b0e4 6883 maude_3.4-1_source.buildinfo
Files:
 b5bf1b95c73d39781a97482170561b0f 1387 science optional maude_3.4-1.dsc
 97c92148c42d6b78efc645d64f00e910 2660916 science optional maude_3.4.orig.tar.gz
 0421b2f2d2854aa2d3d3cd0acdd4b824 6544 science optional maude_3.4-1.debian.tar.xz
 bfa4e93dc509ca214d09cbdd980e0260 6883 science optional maude_3.4-1_source.buildinfo
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQSglbZu4JAkvuai8HIqJ5BL1yQ+2gUCZhJ8wAAKCRAqJ5BL1yQ+
2kLbAP4y5OnBa6kxFk+YBJ57lGilrViQ5AZUW1ED1Mh5WOJ7JgD9EtjYA9j826Bq
nJGNoRaO4PcoWIKkTTtqr6dimydG+wU=
=RzXW
-----END PGP SIGNATURE-----

#1067957#17
Date:
2024-04-07 12:50:50 UTC
From:
To:
Control: reopen -1

It failed the same way with 3.4-1: https://buildd.debian.org/status/fetch.php?pkg=maude&arch=armhf&ver=3.4-1&stamp=1712489526&raw=0

Cheers

#1067957#26
Date:
2024-04-07 15:28:04 UTC
From:
To:
This patch fixes the issue at hand but I am unsure if it is sensible to apply
it.

diff --git a/src/ObjectSystem/timeActions.cc b/src/ObjectSystem/timeActions.cc
index 77395aa..63aa028 100644
--- a/src/ObjectSystem/timeActions.cc
+++ b/src/ObjectSystem/timeActions.cc
@@ -40,7 +40,7 @@ TimeManagerSymbol::getTimeSinceEpoch(FreeDagNode* message, ObjectSystemRewriting
   DebugSave(r, clock_gettime(CLOCK_REALTIME, &timeValue));
   Assert(r == 0, "clock_gettime() failed: " << strerror(errno));

-  mpz_class nanoSeconds(timeValue.tv_sec);
+  mpz_class nanoSeconds(static_cast<unsigned long>(timeValue.tv_sec));
   nanoSeconds *= BILLION;
   nanoSeconds += timeValue.tv_nsec;


Best,
Nilesh

#1067957#31
Date:
2024-04-08 22:38:50 UTC
From:
To:
Hi Nilish,

I don't have a 32-bit machine to test on, but my understanding is that
Linux has moved to a 64-bit signed integer for time_t and this is a long
long on 32-bit machines which is explicitly not supported by GMP's C++ API.

https://en.wikipedia.org/wiki/Year_2038_problem
https://gmplib.org/manual/C_002b_002b-Interface-Integers

I'm not happy converting a signed value to an unsigned value for all
architectures. But

   mpz_class nanoSeconds(static_cast<Index>(timeValue.tv_sec));

should fix the problem, at least until 2038. Can you check that this
works? If so I'll put it in the next public alpha.

Steven

#1067957#36
Date:
2024-04-09 07:01:45 UTC
From:
To:
Hi Steven

This sounds like it needs to fixed in GMP then.

And this does not sound like a fix which we want.

Best
Sebastian

#1067957#41
Date:
2024-04-09 17:56:53 UTC
From:
To:
Hi Sebastian,

The lack of long long support in GMP has been the subject of some
discussions:

https://gmplib.org/list-archives/gmp-bugs/2020-June/thread.html#4771
https://gmplib.org/list-archives/gmp-discuss/2021-January/thread.html#6625

I don't see it happening soon - it took years for the x18 issue on Apple
silicon to be fixed.
In my development version I've modified the code to:

   Index seconds = timeValue.tv_sec;  // this is 32-bit on 32-bit
machines so mpz_class constuctor is defined
   mpz_class nanoSeconds(seconds);
   nanoSeconds *= BILLION;
   nanoSeconds += timeValue.tv_nsec;

This is harmless on 64-bit architectures since Index will be a signed
64-bit integer and if it works on 32-bit architectures, it's a work
around until GMP is fixed (hopefully before 2038).

Steven

#1067957#46
Date:
2024-04-10 14:49:29 UTC
From:
To:
Hi,

I'd suggest to set

  Build-Depends: architecture-is-64-bit, architecture-is-little-endian

and remove 32bit architectures of maude.

Kind regards
   Andreas.

#1067957#51
Date:
2024-04-10 21:59:27 UTC
From:
To:
Steven Eker <eker@csl.sri.com> writes:

I know this suggestion is unorthodox, and quite possibly moot at this
point in the context of official Debian packages -- but you might want
to consider formally going through double here, at least on the relevant
platforms.  Precision loss shouldn't be a concern for another 140
million years or so by my reckoning, and I expect the additional
conversion overhead would be negligible in practice.

Thanks!

#1067957#56
Date:
2024-04-10 22:33:53 UTC
From:
To:
I like that solution since I believe there are 64-bit platforms where
long is 32-bits. I've updated my development version thus:

   //
   //    timeValue.tv_sec is 64-bit since Linux kernel 5.6 but GMP
doesn't yet have support
   //    for long long which is a problem on platforms where long is
less than 8 bytes.
   //
#if SIZEOF_LONG < 8
   double seconds = timeValue.tv_sec;
#else
   long seconds = timeValue.tv_sec;
#endif
   mpz_class nanoSeconds(seconds);

Of course I expect to drop support for 32-bit before 2038 - certainly
when one our dependencies drops support. But I've gotten a bug report
for building Maude on a Raspberry Pi.

Steven

#1067957#61
Date:
2024-04-11 05:53:08 UTC
From:
To:
Hi,

Am Wed, Apr 10, 2024 at 03:33:53PM -0700 schrieb Steven Eker:

Sounds like some working solution.  It would help if you could tag a new
released to enable us fetching a fresh tarball incorporatinig this
change.

Raspian is based on Debian and if the 32bit ARM architectures fail here
Raspian people have a problem.

Kind regards
   Andreas.

#1067957#66
Date:
2024-04-12 08:11:17 UTC
From:
To:
Hi,

maude has been -rm'ed on 32-bit archs as per https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1068766
So this issue is now moot and I am downgrading the severity.
Best,
Nilesh