Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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

Original file line number Diff line number Diff line change
@@ -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

13 changes: 12 additions & 1 deletion pkgs/development/interpreters/python/cpython/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down