From 7e09ffe3a7c9b93970073ca35fa7aa3ef9df0a1c Mon Sep 17 00:00:00 2001 From: Matti Picus Date: Fri, 5 Feb 2021 13:00:44 +0200 Subject: backport changes from py3.7-big-sur-dyld-cache to default --- lib_pypy/_ctypes/__init__.py | 21 ++++++++++++++++----- lib_pypy/pypy_tools/build_cffi_imports.py | 28 +++++++++++++++------------- 2 files changed, 31 insertions(+), 18 deletions(-) (limited to 'lib_pypy') diff --git a/lib_pypy/_ctypes/__init__.py b/lib_pypy/_ctypes/__init__.py index da30f5f6d9..6a0de8d703 100644 --- a/lib_pypy/_ctypes/__init__.py +++ b/lib_pypy/_ctypes/__init__.py @@ -13,15 +13,15 @@ from _ctypes.builtin import ( _string_at_addr, _wstring_at_addr, set_conversion_mode) from _ctypes.union import Union +try: from __pypy__ import builtinify +except ImportError: builtinify = lambda f: f + import os as _os if _os.name in ("nt", "ce"): from _rawffi import FormatError from _rawffi import check_HRESULT as _check_HRESULT - try: from __pypy__ import builtinify - except ImportError: builtinify = lambda f: f - @builtinify def CopyComPointer(src, dst): from ctypes import c_void_p, cast @@ -32,8 +32,6 @@ if _os.name in ("nt", "ce"): dst[0] = cast(src, c_void_p).value return 0 - del builtinify - LoadLibrary = dlopen from _rawffi import FUNCFLAG_STDCALL, FUNCFLAG_CDECL, FUNCFLAG_PYTHONAPI @@ -43,6 +41,19 @@ from _ctypes.builtin import get_errno, set_errno if _os.name in ("nt", "ce"): from _ctypes.builtin import get_last_error, set_last_error +import sys as _sys +if _sys.platform == 'darwin': + try: + from ._ctypes_cffi import lib as _lib + if hasattr(_lib, 'dyld_shared_cache_contains_path'): + @builtinify + def _dyld_shared_cache_contains_path(path): + return _lib.dyld_shared_cache_contains_path(path.encode()) + except ImportError: + pass + +del builtinify + __version__ = '1.1.0' #XXX platform dependant? RTLD_LOCAL = 0 diff --git a/lib_pypy/pypy_tools/build_cffi_imports.py b/lib_pypy/pypy_tools/build_cffi_imports.py index 12e791d695..47b3559310 100644 --- a/lib_pypy/pypy_tools/build_cffi_imports.py +++ b/lib_pypy/pypy_tools/build_cffi_imports.py @@ -1,5 +1,5 @@ from __future__ import print_function -import sys, shutil, os, tempfile, hashlib +import sys, shutil, os, tempfile, hashlib, collections import sysconfig from os.path import join @@ -22,18 +22,20 @@ class MissingDependenciesError(Exception): pass -cffi_build_scripts = { - "_ssl": "_ssl_build.py", - "sqlite3": "_sqlite3_build.py", - "audioop": "_audioop_build.py", - "_tkinter": "_tkinter/tklib_build.py", - "curses": "_curses_build.py" if sys.platform != "win32" else None, - "syslog": "_syslog_build.py" if sys.platform != "win32" else None, - "gdbm": "_gdbm_build.py" if sys.platform != "win32" else None, - "grp": "_pwdgrp_build.py" if sys.platform != "win32" else None, - "resource": "_resource_build.py" if sys.platform != "win32" else None, - "xx": None, # for testing: 'None' should be completely ignored - } +cffi_build_scripts = collections.OrderedDict({ + ("_ctypes._ctypes_cffi", + "_ctypes/_ctypes_build.py" if sys.platform == 'darwin' else None), + ("_ssl": "_ssl_build.py"), + ("sqlite3": "_sqlite3_build.py"), + ("audioop": "_audioop_build.py"), + ("_tkinter": "_tkinter/tklib_build.py"), + ("curses": "_curses_build.py" if sys.platform != "win32" else None), + ("syslog": "_syslog_build.py" if sys.platform != "win32" else None), + ("gdbm": "_gdbm_build.py" if sys.platform != "win32" else None), + ("grp": "_pwdgrp_build.py" if sys.platform != "win32" else None), + ("resource": "_resource_build.py" if sys.platform != "win32" else None), + ("xx": None), # for testing: 'None' should be completely ignored + }) # for distribution, we may want to fetch dependencies not provided by # the OS, such as a recent openssl/libressl. -- cgit v1.2.3-65-gdbad