summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/pypy3-bin/files/pypy3-2.4.0-libressl.patch')
-rw-r--r--dev-python/pypy3-bin/files/pypy3-2.4.0-libressl.patch187
1 files changed, 0 insertions, 187 deletions
diff --git a/dev-python/pypy3-bin/files/pypy3-2.4.0-libressl.patch b/dev-python/pypy3-bin/files/pypy3-2.4.0-libressl.patch
deleted file mode 100644
index 5852939c5075..000000000000
--- a/dev-python/pypy3-bin/files/pypy3-2.4.0-libressl.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-From 66bef80988c9efe60b61c6bc05f3206b4c3df7e8 Mon Sep 17 00:00:00 2001
-From: hasufell <hasufell@gentoo.org>
-Date: Mon, 12 Oct 2015 20:43:50 +0200
-Subject: [PATCH] Add LibreSSL support, patches backported from upstream
-
-https://bitbucket.org/pypy/pypy/pull-requests/333/deal-with-platforms-without-rand_egd-take/diff
----
- pypy/module/_ssl/interp_ssl.py | 34 +++++++++++++++-----------
- pypy/module/_ssl/test/test_ssl.py | 8 +++---
- rpython/rlib/ropenssl.py | 6 ++++-
- rpython/rtyper/tool/rffi_platform.py | 12 ++++++---
- rpython/rtyper/tool/test/test_rffi_platform.py | 24 +++++++++++++++++-
- 5 files changed, 61 insertions(+), 23 deletions(-)
-
-diff --git a/pypy/module/_ssl/interp_ssl.py b/pypy/module/_ssl/interp_ssl.py
-index 0cac165..f210167 100644
---- a/pypy/module/_ssl/interp_ssl.py
-+++ b/pypy/module/_ssl/interp_ssl.py
-@@ -310,20 +310,26 @@ if HAVE_OPENSSL_RAND:
- res = libssl_RAND_status()
- return space.wrap(res)
-
-- @unwrap_spec(path=str)
-- def RAND_egd(space, path):
-- """RAND_egd(path) -> bytes
--
-- Queries the entropy gather daemon (EGD) on socket path. Returns number
-- of bytes read. Raises socket.sslerror if connection to EGD fails or
-- if it does provide enough data to seed PRNG."""
-- with rffi.scoped_str2charp(path) as socket_path:
-- bytes = libssl_RAND_egd(socket_path)
-- if bytes == -1:
-- raise ssl_error(space,
-- "EGD connection failed or EGD did not return "
-- "enough data to seed the PRNG")
-- return space.wrap(bytes)
-+ if HAVE_OPENSSL_RAND_EGD:
-+ @unwrap_spec(path=str)
-+ def RAND_egd(space, path):
-+ """RAND_egd(path) -> bytes
-+
-+ Queries the entropy gather daemon (EGD) on socket path. Returns number
-+ of bytes read. Raises socket.sslerror if connection to EGD fails or
-+ if it does provide enough data to seed PRNG."""
-+ with rffi.scoped_str2charp(path) as socket_path:
-+ bytes = libssl_RAND_egd(socket_path)
-+ if bytes == -1:
-+ raise ssl_error(space,
-+ "EGD connection failed or EGD did not return "
-+ "enough data to seed the PRNG")
-+ return space.wrap(bytes)
-+ else:
-+ # Dummy func for platforms missing RAND_egd(). Most likely LibreSSL.
-+ @unwrap_spec(path=str)
-+ def RAND_egd(space, path):
-+ raise ssl_error(space, "RAND_egd unavailable")
-
-
- class SSLSocket(W_Root):
-diff --git a/pypy/module/_ssl/test/test_ssl.py b/pypy/module/_ssl/test/test_ssl.py
-index 3204610..9722fd5 100644
---- a/pypy/module/_ssl/test/test_ssl.py
-+++ b/pypy/module/_ssl/test/test_ssl.py
-@@ -33,7 +33,8 @@ class AppTestSSL:
- assert isinstance(_ssl.OPENSSL_VERSION_INFO, tuple)
- assert len(_ssl.OPENSSL_VERSION_INFO) == 5
- assert isinstance(_ssl.OPENSSL_VERSION, str)
-- assert 'openssl' in _ssl.OPENSSL_VERSION.lower()
-+ lower_version = _ssl.OPENSSL_VERSION.lower()
-+ assert 'openssl' in lower_version or "libressl" in lower_version
-
- def test_RAND_add(self):
- import _ssl
-@@ -64,8 +65,9 @@ class AppTestSSL:
-
- def test_sslwrap(self):
- import ssl, _socket, sys, gc
-- if sys.platform == 'darwin' or 'freebsd' in sys.platform:
-- skip("hangs indefinitely on OSX & FreeBSD (also on CPython)")
-+ if sys.platform == 'darwin' or 'freebsd' in sys.platform or \
-+ 'openbsd' in sys.platform:
-+ skip("hangs indefinitely on OSX & BSD (also on CPython)")
- s = _socket.socket()
- ss = ssl.wrap_socket(s)
-
-diff --git a/rpython/rlib/ropenssl.py b/rpython/rlib/ropenssl.py
-index c36779d..6fe45d0 100644
---- a/rpython/rlib/ropenssl.py
-+++ b/rpython/rlib/ropenssl.py
-@@ -168,6 +168,9 @@ OBJ_NAME = rffi.CArrayPtr(OBJ_NAME_st)
-
- HAVE_OPENSSL_RAND = OPENSSL_VERSION_NUMBER >= 0x0090500f
- HAVE_SSL_CTX_CLEAR_OPTIONS = OPENSSL_VERSION_NUMBER >= 0x009080df
-+HAVE_OPENSSL_RAND_EGD = rffi_platform.has('RAND_egd("/")',
-+ '#include <openssl/rand.h>',
-+ libraries=['ssl', 'crypto'])
-
- def external(name, argtypes, restype, **kw):
- kw['compilation_info'] = eci
-@@ -194,7 +197,8 @@ ssl_external('CRYPTO_set_id_callback',
- if HAVE_OPENSSL_RAND:
- ssl_external('RAND_add', [rffi.CCHARP, rffi.INT, rffi.DOUBLE], lltype.Void)
- ssl_external('RAND_status', [], rffi.INT)
-- ssl_external('RAND_egd', [rffi.CCHARP], rffi.INT)
-+ if HAVE_OPENSSL_RAND_EGD:
-+ ssl_external('RAND_egd', [rffi.CCHARP], rffi.INT)
- ssl_external('SSL_CTX_new', [SSL_METHOD], SSL_CTX)
- ssl_external('SSL_get_SSL_CTX', [SSL], SSL_CTX)
- ssl_external('TLSv1_method', [], SSL_METHOD)
-diff --git a/rpython/rtyper/tool/rffi_platform.py b/rpython/rtyper/tool/rffi_platform.py
-index 1760877..1d56c20 100755
---- a/rpython/rtyper/tool/rffi_platform.py
-+++ b/rpython/rtyper/tool/rffi_platform.py
-@@ -17,12 +17,15 @@ from rpython.rlib.rarithmetic import r_uint, r_longlong, r_ulonglong, intmask
- #
- # Helpers for simple cases
-
--def eci_from_header(c_header_source, include_dirs=None):
-+def eci_from_header(c_header_source, include_dirs=None, libraries=None):
- if include_dirs is None:
- include_dirs = []
-+ if libraries is None:
-+ libraries = []
- return ExternalCompilationInfo(
- post_include_bits=[c_header_source],
-- include_dirs=include_dirs
-+ include_dirs=include_dirs,
-+ libraries=libraries,
- )
-
- def getstruct(name, c_header_source, interesting_fields):
-@@ -75,9 +78,10 @@ def getintegerfunctionresult(function, args=None, c_header_source='', includes=[
- CConfig._compilation_info_.includes = includes
- return configure(CConfig)['RESULT']
-
--def has(name, c_header_source, include_dirs=None):
-+def has(name, c_header_source, include_dirs=None, libraries=None):
- class CConfig:
-- _compilation_info_ = eci_from_header(c_header_source, include_dirs)
-+ _compilation_info_ = \
-+ eci_from_header(c_header_source, include_dirs, libraries)
- HAS = Has(name)
- return configure(CConfig)['HAS']
-
-diff --git a/rpython/rtyper/tool/test/test_rffi_platform.py b/rpython/rtyper/tool/test/test_rffi_platform.py
-index bfa069e..4feae87 100644
---- a/rpython/rtyper/tool/test/test_rffi_platform.py
-+++ b/rpython/rtyper/tool/test/test_rffi_platform.py
-@@ -271,12 +271,34 @@ def test_array():
- [("d_name", lltype.FixedSizeArray(rffi.CHAR, 1))])
- assert dirent.c_d_name.length == 32
-
--def test_has():
-+def test_has_0001():
- assert rffi_platform.has("x", "int x = 3;")
- assert not rffi_platform.has("x", "")
- # has() should also not crash if it is given an invalid #include
- assert not rffi_platform.has("x", "#include <some/path/which/cannot/exist>")
-
-+def test_has_0002():
-+ assert rffi_platform.has("pow", "#include <math.h>", libraries=["m"])
-+
-+def test_has_0003():
-+ """multiple libraries"""
-+ assert rffi_platform.has("pow", "#include <math.h>", libraries=["m", "c"])
-+
-+def test_has_0004():
-+ """bogus symbol name"""
-+ assert not rffi_platform.has("pow", "#include <math.h>",
-+ libraries=["boguslibname"])
-+
-+def test_has_0005():
-+ """bogus symbol name and lib name"""
-+ assert not rffi_platform.has("bogus_symbol_name", "#include <math.h>",
-+ libraries=["boguslibname"])
-+
-+def test_has_0006():
-+ """missing include"""
-+ assert not rffi_platform.has("pow", "", libraries=["m"])
-+
-+
- def test_verify_eci():
- eci = ExternalCompilationInfo()
- rffi_platform.verify_eci(eci)
---
-2.6.1
-