diff --git a/pkgs/development/interpreters/python/cpython/3.14/hacl-static-ldeps-for-static-modules.patch b/pkgs/development/interpreters/python/cpython/3.14/hacl-static-ldeps-for-static-modules.patch new file mode 100644 index 000000000000..8501ab38a940 --- /dev/null +++ b/pkgs/development/interpreters/python/cpython/3.14/hacl-static-ldeps-for-static-modules.patch @@ -0,0 +1,50 @@ +From ee1b8479cff97ca7e5ed4d51d6aa24ccb47deb8b Mon Sep 17 00:00:00 2001 +From: Ihar Hrachyshka +Date: Sat, 21 Mar 2026 18:34:50 -0400 +Subject: [PATCH] gh-146264: Use static HACL deps for static module builds + +--- + .../next/Build/2026-03-21-18-51-31.gh-issue-146264.Q9Ej4m.rst | 3 +++ + configure | 2 +- + configure.ac | 2 +- + 3 files changed, 5 insertions(+), 2 deletions(-) + create mode 100644 Misc/NEWS.d/next/Build/2026-03-21-18-51-31.gh-issue-146264.Q9Ej4m.rst + +diff --git a/Misc/NEWS.d/next/Build/2026-03-21-18-51-31.gh-issue-146264.Q9Ej4m.rst b/Misc/NEWS.d/next/Build/2026-03-21-18-51-31.gh-issue-146264.Q9Ej4m.rst +new file mode 100644 +index 00000000000..1fdafe56043 +--- /dev/null ++++ b/Misc/NEWS.d/next/Build/2026-03-21-18-51-31.gh-issue-146264.Q9Ej4m.rst +@@ -0,0 +1,3 @@ ++Fix static module builds on non-WASI targets by linking HACL dependencies as ++static libraries when ``MODULE_BUILDTYPE=static``, preventing duplicate ++``_Py_LibHacl_*`` symbol errors at link time. +diff --git a/configure b/configure +index 23f24d51c79..db5c861f601 100755 +--- a/configure ++++ b/configure +@@ -33009,7 +33009,7 @@ fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HACL* library linking type" >&5 + printf %s "checking for HACL* library linking type... " >&6; } +-if test "$ac_sys_system" = "WASI"; then ++if test "$ac_sys_system" = "WASI" || test "$MODULE_BUILDTYPE" = "static"; then + LIBHACL_LDEPS_LIBTYPE=STATIC + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: static" >&5 + printf "%s\n" "static" >&6; } +diff --git a/configure.ac b/configure.ac +index 635fce3f2e6..59166d63e63 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -8171,7 +8171,7 @@ AC_SUBST([LIBHACL_BLAKE2_SIMD256_OBJS]) + # HACL*-based cryptographic primitives + + AC_MSG_CHECKING([for HACL* library linking type]) +-if test "$ac_sys_system" = "WASI"; then ++if test "$ac_sys_system" = "WASI" || test "$MODULE_BUILDTYPE" = "static"; then + LIBHACL_LDEPS_LIBTYPE=STATIC + AC_MSG_RESULT([static]) + else +-- +2.53.0 + diff --git a/pkgs/development/interpreters/python/cpython/default.nix b/pkgs/development/interpreters/python/cpython/default.nix index e674de90810f..62a699d02483 100644 --- a/pkgs/development/interpreters/python/cpython/default.nix +++ b/pkgs/development/interpreters/python/cpython/default.nix @@ -427,6 +427,11 @@ stdenv.mkDerivation (finalAttrs: { # backport fix for https://github.com/python/cpython/issues/95855 ./platform-triplet-detection.patch ] + ++ optionals (static && pythonAtLeast "3.14") [ + # https://github.com/python/cpython/issues/146264 + # https://github.com/python/cpython/pull/146265 + ./3.14/hacl-static-ldeps-for-static-modules.patch + ] ++ optionals (version == "3.13.10" || version == "3.14.1") [ # https://github.com/python/cpython/issues/142218 ./${lib.versions.majorMinor version}/gh-142218.patch