python3*: backport fix for armv7l, aarch64, riscv64

Co-Authored-By: Florian Klink <flokli@flokli.de>
Signed-off-by: Yureka <fork-nixpkgs-with@yuka.dev>
This commit is contained in:
Yureka 2024-07-03 21:13:40 +02:00 committed by Florian Klink
parent 79316737d6
commit 8cfb27bc21
3 changed files with 118 additions and 1 deletions

View File

@ -0,0 +1,53 @@
From 04bfb877c8ccbd431dcae429abb487c1e3390801 Mon Sep 17 00:00:00 2001
From: Yureka <yuka@yuka.dev>
Date: Sun, 30 Jun 2024 09:37:49 +0200
Subject: [PATCH] Fix build with _PY_SHORT_FLOAT_REPR == 0
---
Include/internal/pycore_dtoa.h | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/Include/internal/pycore_dtoa.h b/Include/internal/pycore_dtoa.h
index 4d9681d59a..899d413b05 100644
--- a/Include/internal/pycore_dtoa.h
+++ b/Include/internal/pycore_dtoa.h
@@ -11,8 +11,6 @@ extern "C" {
#include "pycore_pymath.h" // _PY_SHORT_FLOAT_REPR
-#if _PY_SHORT_FLOAT_REPR == 1
-
typedef uint32_t ULong;
struct
@@ -22,15 +20,15 @@ Bigint {
ULong x[1];
};
-#ifdef Py_USING_MEMORY_DEBUGGER
+#if defined(Py_USING_MEMORY_DEBUGGER) || _PY_SHORT_FLOAT_REPR == 0
struct _dtoa_state {
int _not_used;
};
-#define _dtoa_interp_state_INIT(INTERP) \
+#define _dtoa_state_INIT(INTERP) \
{0}
-#else // !Py_USING_MEMORY_DEBUGGER
+#else // !Py_USING_MEMORY_DEBUGGER && _PY_SHORT_FLOAT_REPR != 0
/* The size of the Bigint freelist */
#define Bigint_Kmax 7
@@ -65,8 +63,6 @@ PyAPI_FUNC(char *) _Py_dg_dtoa(double d, int mode, int ndigits,
int *decpt, int *sign, char **rve);
PyAPI_FUNC(void) _Py_dg_freedtoa(char *s);
-#endif // _PY_SHORT_FLOAT_REPR == 1
-
#ifdef __cplusplus
}
#endif
--
2.45.1

View File

@ -0,0 +1,53 @@
From 94d8a9efe6ec86a6e5b4806dbfb82ac926286456 Mon Sep 17 00:00:00 2001
From: Yureka <yuka@yuka.dev>
Date: Sun, 30 Jun 2024 09:45:58 +0200
Subject: [PATCH] Fix build with _PY_SHORT_FLOAT_REPR == 0
---
Include/internal/pycore_dtoa.h | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/Include/internal/pycore_dtoa.h b/Include/internal/pycore_dtoa.h
index c5cfdf4ce8..e4222c5267 100644
--- a/Include/internal/pycore_dtoa.h
+++ b/Include/internal/pycore_dtoa.h
@@ -11,8 +11,6 @@ extern "C" {
#include "pycore_pymath.h" // _PY_SHORT_FLOAT_REPR
-#if _PY_SHORT_FLOAT_REPR == 1
-
typedef uint32_t ULong;
struct
@@ -22,15 +20,15 @@ Bigint {
ULong x[1];
};
-#ifdef Py_USING_MEMORY_DEBUGGER
+#if defined(Py_USING_MEMORY_DEBUGGER) || _PY_SHORT_FLOAT_REPR == 0
struct _dtoa_state {
int _not_used;
};
-#define _dtoa_interp_state_INIT(INTERP) \
+#define _dtoa_state_INIT(INTERP) \
{0}
-#else // !Py_USING_MEMORY_DEBUGGER
+#else // !Py_USING_MEMORY_DEBUGGER && _PY_SHORT_FLOAT_REPR != 0
/* The size of the Bigint freelist */
#define Bigint_Kmax 7
@@ -66,8 +64,6 @@ extern char* _Py_dg_dtoa(double d, int mode, int ndigits,
int *decpt, int *sign, char **rve);
extern void _Py_dg_freedtoa(char *s);
-#endif // _PY_SHORT_FLOAT_REPR == 1
-
extern PyStatus _PyDtoa_Init(PyInterpreterState *interp);
extern void _PyDtoa_Fini(PyInterpreterState *interp);
--
2.45.1

View File

@ -367,7 +367,18 @@ in with passthru; stdenv.mkDerivation (finalAttrs: {
};
in [
"${mingw-patch}/*.patch"
]);
]) ++ optionals (pythonAtLeast "3.12" && (stdenv.hostPlatform != stdenv.buildPlatform) && (
stdenv.hostPlatform.isAarch32 || stdenv.hostPlatform.isAarch64 || stdenv.hostPlatform.isRiscV
)) [
# backport fix for various platforms; armv7l, riscv64
# https://github.com/python/cpython/pull/121178
(
if (pythonAtLeast "3.13") then
./3.13/0001-Fix-build-with-_PY_SHORT_FLOAT_REPR-0.patch
else
./3.12/0001-Fix-build-with-_PY_SHORT_FLOAT_REPR-0.patch
)
];
postPatch = optionalString (!stdenv.hostPlatform.isWindows) ''
substituteInPlace Lib/subprocess.py \