summary refs log tree commit diff
path: root/pkgs/development/interpreters
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/interpreters')
-rw-r--r--pkgs/development/interpreters/python/cpython/2.7/default.nix6
-rw-r--r--pkgs/development/interpreters/python/cpython/3.7/no-win64-workaround.patch37
-rw-r--r--pkgs/development/interpreters/python/cpython/default.nix5
3 files changed, 48 insertions, 0 deletions
diff --git a/pkgs/development/interpreters/python/cpython/2.7/default.nix b/pkgs/development/interpreters/python/cpython/2.7/default.nix
index 37d43e33d8e..adeafa80e6c 100644
--- a/pkgs/development/interpreters/python/cpython/2.7/default.nix
+++ b/pkgs/development/interpreters/python/cpython/2.7/default.nix
@@ -106,6 +106,12 @@ let
 
       ./CVE-2021-3177.patch
 
+      # The workaround is for unittests on Win64, which we don't support.
+      # It does break aarch64-darwin, which we do support. See:
+      # * https://bugs.python.org/issue35523
+      # * https://github.com/python/cpython/commit/e6b247c8e524
+      ../3.7/no-win64-workaround.patch
+
     ] ++ optionals (x11Support && stdenv.isDarwin) [
       ./use-correct-tcl-tk-on-darwin.patch
     ] ++ optionals stdenv.isLinux [
diff --git a/pkgs/development/interpreters/python/cpython/3.7/no-win64-workaround.patch b/pkgs/development/interpreters/python/cpython/3.7/no-win64-workaround.patch
new file mode 100644
index 00000000000..685b1e83944
--- /dev/null
+++ b/pkgs/development/interpreters/python/cpython/3.7/no-win64-workaround.patch
@@ -0,0 +1,37 @@
+From e6b247c8e524dbe5fc03b3492f628d0d5348bc49 Mon Sep 17 00:00:00 2001
+From: Victor Stinner <vstinner@redhat.com>
+Date: Tue, 18 Dec 2018 14:47:21 +0100
+Subject: [PATCH] bpo-35523: Remove ctypes callback workaround (GH-11211)
+
+Remove ctypes callback workaround: no longer create a callback at startup.
+Avoid SELinux alert on "import ctypes" and "import uuid".
+---
+ Lib/ctypes/__init__.py                                       | 5 -----
+ .../next/Library/2018-12-18-13-52-13.bpo-35523.SkoMno.rst    | 2 ++
+ 2 files changed, 2 insertions(+), 5 deletions(-)
+ create mode 100644 Misc/NEWS.d/next/Library/2018-12-18-13-52-13.bpo-35523.SkoMno.rst
+
+diff --git a/Lib/ctypes/__init__.py b/Lib/ctypes/__init__.py
+index 6146773988648..5f78beda5866e 100644
+--- a/Lib/ctypes/__init__.py
++++ b/Lib/ctypes/__init__.py
+@@ -266,11 +266,6 @@ def _reset_cache():
+     # _SimpleCData.c_char_p_from_param
+     POINTER(c_char).from_param = c_char_p.from_param
+     _pointer_type_cache[None] = c_void_p
+-    # XXX for whatever reasons, creating the first instance of a callback
+-    # function is needed for the unittests on Win64 to succeed.  This MAY
+-    # be a compiler bug, since the problem occurs only when _ctypes is
+-    # compiled with the MS SDK compiler.  Or an uninitialized variable?
+-    CFUNCTYPE(c_int)(lambda: None)
+ 
+ def create_unicode_buffer(init, size=None):
+     """create_unicode_buffer(aString) -> character array
+diff --git a/Misc/NEWS.d/next/Library/2018-12-18-13-52-13.bpo-35523.SkoMno.rst b/Misc/NEWS.d/next/Library/2018-12-18-13-52-13.bpo-35523.SkoMno.rst
+new file mode 100644
+index 0000000000000..94a9fd257383e
+--- /dev/null
++++ b/Misc/NEWS.d/next/Library/2018-12-18-13-52-13.bpo-35523.SkoMno.rst
+@@ -0,0 +1,2 @@
++Remove :mod:`ctypes` callback workaround: no longer create a callback at
++startup. Avoid SELinux alert on ``import ctypes`` and ``import uuid``.
diff --git a/pkgs/development/interpreters/python/cpython/default.nix b/pkgs/development/interpreters/python/cpython/default.nix
index 1ae8d19ac58..fdf022213c5 100644
--- a/pkgs/development/interpreters/python/cpython/default.nix
+++ b/pkgs/development/interpreters/python/cpython/default.nix
@@ -185,6 +185,11 @@ in with passthru; stdenv.mkDerivation {
     # Backport a fix for discovering `rpmbuild` command when doing `python setup.py bdist_rpm` to 3.5, 3.6, 3.7.
     # See: https://bugs.python.org/issue11122
     ./3.7/fix-hardcoded-path-checking-for-rpmbuild.patch
+    # The workaround is for unittests on Win64, which we don't support.
+    # It does break aarch64-darwin, which we do support. See:
+    # * https://bugs.python.org/issue35523
+    # * https://github.com/python/cpython/commit/e6b247c8e524
+    ./3.7/no-win64-workaround.patch
   ] ++ optionals (isPy37 || isPy38 || isPy39) [
     # Fix darwin build https://bugs.python.org/issue34027
     ./3.7/darwin-libutil.patch