gawk: 5.4.0 -> 5.4.1, apply upstream patch for bug when building without gmp/mpfr (#541941)
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
fetchpatch,
|
||||
removeReferencesTo,
|
||||
runtimeShellPackage,
|
||||
texinfo,
|
||||
@@ -25,13 +26,23 @@ assert (doCheck && stdenv.hostPlatform.isLinux) -> glibcLocales != null;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gawk" + lib.optionalString interactive "-interactive";
|
||||
version = "5.4.0";
|
||||
version = "5.4.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnu/gawk/gawk-${version}.tar.xz";
|
||||
hash = "sha256-PdQw8M07RCjGw/avwCG5zTwfjJP3pojcJoykKKkLSsE=";
|
||||
hash = "sha256-B/b3NCt/6+QxP8LCVCrZPWT+IK2HFyABCfEFqCb1/Tc=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# When building gawk without gmp and mpfr, gawk 5.4.1 causes build failures
|
||||
# in downstream packages such as GCC and libpng.
|
||||
# Discussion on bug-gawk:
|
||||
# https://lists.gnu.org/archive/html/bug-gawk/2026-07/msg00013.html
|
||||
# Vendored since we can't use fetchpatch:
|
||||
# https://gitweb.git.savannah.gnu.org/gitweb/?p=gawk.git;a=commit;h=bf85f8a3175af703597082d4c7e0abc2066a44d3
|
||||
./node-struct-without-gmp-mpfr.patch
|
||||
];
|
||||
|
||||
# When we do build separate interactive version, it makes sense to always include man.
|
||||
outputs = [
|
||||
"out"
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
From bf85f8a3175af703597082d4c7e0abc2066a44d3 Mon Sep 17 00:00:00 2001
|
||||
From: "Arnold D. Robbins" <arnold@skeeve.com>
|
||||
Date: Tue, 14 Jul 2026 10:14:50 +0300
|
||||
Subject: [PATCH] Workaround fix for systems without MPFR and GMP.
|
||||
|
||||
---
|
||||
ChangeLog | 8 ++++++++
|
||||
awk.h | 23 ++++++++++++++---------
|
||||
2 files changed, 22 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 6a955eed..42bd2c48 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -3,6 +3,14 @@
|
||||
* builtin.c (do_dump_node): Add the size of each object to
|
||||
the printout.
|
||||
|
||||
+ Unrelated: Make things works when built on systems without
|
||||
+ the GMP and MPFR libraries. Thanks to Thomas Trepl <ttrepl@yahoo.de>
|
||||
+ and Bruce Dubbs <bdubbs@linuxfromscratch.org> for the reports.
|
||||
+
|
||||
+ * awk.h (struct exp_node): Add alignment padding when we don't
|
||||
+ have MPFR. This is a hack, pending a total refactoring of
|
||||
+ the NODE structure.
|
||||
+
|
||||
2026-07-08 Arnold D. Robbins <arnold@skeeve.com>
|
||||
|
||||
* 5.4.1: Release tar ball made.
|
||||
diff --git a/awk.h b/awk.h
|
||||
index dbad0d81..f4a84300 100644
|
||||
--- a/awk.h
|
||||
+++ b/awk.h
|
||||
@@ -406,17 +406,24 @@ typedef struct exp_node {
|
||||
} nodep;
|
||||
|
||||
struct {
|
||||
-#ifdef HAVE_MPFR
|
||||
union {
|
||||
AWKNUM fltnum;
|
||||
+#ifdef HAVE_MPFR
|
||||
mpfr_t mpnum;
|
||||
mpz_t mpi;
|
||||
- } nm;
|
||||
- int rndmode;
|
||||
#else
|
||||
- AWKNUM fltnum;
|
||||
- int for_alignment_only; // especially on 32-bit
|
||||
-#endif
|
||||
+ // 7/2026:
|
||||
+ // This is a workaround for systems that build
|
||||
+ // gawk without MPFR and GMP. The NODE struct
|
||||
+ // desperately needs to be refactored.
|
||||
+#if SIZEOF_VOID_P == 4
|
||||
+ char alignment[28];
|
||||
+#else // SIZEOF_VOID_P != 4
|
||||
+ char alignment[48];
|
||||
+#endif // SIZEOF_VOID_P != 4
|
||||
+#endif // HAVE_MPFR
|
||||
+ } nm;
|
||||
+ int rndmode; // only used for MPFR.
|
||||
char *sp;
|
||||
size_t slen;
|
||||
int idx;
|
||||
@@ -561,10 +568,8 @@ typedef struct exp_node {
|
||||
#ifdef HAVE_MPFR
|
||||
#define mpg_numbr sub.val.nm.mpnum
|
||||
#define mpg_i sub.val.nm.mpi
|
||||
-#define numbr sub.val.nm.fltnum
|
||||
-#else
|
||||
-#define numbr sub.val.fltnum
|
||||
#endif
|
||||
+#define numbr sub.val.nm.fltnum
|
||||
#define typed_re sub.val.typre
|
||||
|
||||
/*
|
||||
--
|
||||
2.54.0
|
||||
|
||||
Reference in New Issue
Block a user