mirror of
https://git.FreeBSD.org/ports.git
synced 2024-10-18 19:49:40 +00:00
lang/pypy(3): update to 5.9
- add lubunwind as dependency: required by vmprof - disable vmprof on FreeBSD 10: missing base support - implement support for handles with ctypes.CDLL: fix dynamic loading of shared objects - enable various tests that were not working on FreeBSD 9 - mark get_profile_path as xfail on FreeBSD - handle definition of char16_t and char32_t on libc++ for __cplusplus < 201103L (libstdc++ does not do this) - other minor fixes ChangeLog: - NumPy and Pandas now work on lang/pypy - Cython 0.27.1 supports more projects with PyPy - JSON parser improvements decrease memory by up to 50% and increase speed by up to 15% - CFFI updated to 1.11.1
This commit is contained in:
parent
45a2358a50
commit
4cb488e0ff
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=453445
@ -2,7 +2,7 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME?= pypy
|
||||
DISTVERSION?= 5.8.0 # Also update bsd.pypy.cffi.mk
|
||||
DISTVERSION?= 5.9.0 # Also update bsd.pypy.cffi.mk
|
||||
CATEGORIES= lang python
|
||||
MASTER_SITES= https://bitbucket.org/pypy/pypy/downloads/ http://buildbot.pypy.org/mirror/
|
||||
DISTNAME?= ${PORTNAME}2-v${PORTVERSION}-src
|
||||
@ -15,7 +15,8 @@ LICENSE_COMB= multi
|
||||
LICENSE_FILE_MIT= ${WRKSRC}/LICENSE
|
||||
|
||||
LIB_DEPENDS= libexpat.so:textproc/expat2 \
|
||||
libffi.so:devel/libffi
|
||||
libffi.so:devel/libffi \
|
||||
libunwind.so:devel/libunwind
|
||||
TEST_DEPENDS= ${LOCALBASE}/${PYPY_DIR}/lib_pypy/_gdbm_cffi.${PYPY_CFFI_VER}.so:databases/pypy-gdbm \
|
||||
${LOCALBASE}/${PYPY_DIR}/lib_pypy/_sqlite3_cffi.${PYPY_CFFI_VER}.so:databases/pypy-sqlite3 \
|
||||
${LOCALBASE}/${PYPY_DIR}/lib_pypy/_tkinter/tklib_cffi.${PYPY_CFFI_VER}.so:x11-toolkits/pypy-tkinter
|
||||
@ -104,12 +105,9 @@ PLIST= ${.CURDIR}/pkg-plist
|
||||
.include "${MASTERDIR}/bsd.pypy.mk"
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
.if ${ARCH} == "i386" || ${ARCH} == "armv6"
|
||||
PYPY_BITS= 32
|
||||
.elif ${ARCH} == "amd64" || ${ARCH} == "powerpc64"
|
||||
PYPY_BITS= 64
|
||||
.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1100000
|
||||
PYPY_ARGS= --withoutmod-_vmprof
|
||||
.endif
|
||||
PLIST_SUB+= PYPY_BITS="${PYPY_BITS}"
|
||||
|
||||
post-extract:
|
||||
${FIND} ${WRKSRC} -name '*.swn' -delete
|
||||
@ -120,7 +118,7 @@ pre-build:
|
||||
${MKDIR} ${WRKDIR}/build; \
|
||||
(cd ${WRKSRC}/pypy/goal; \
|
||||
${SETENV} ${MAKE_ENV} TMPDIR=${WRKDIR}/build \
|
||||
${PYTHON_CMD} ../../rpython/bin/rpython --source -Ojit targetpypystandalone.py); \
|
||||
${PYTHON_CMD} ../../rpython/bin/rpython --source -Ojit targetpypystandalone.py ${PYPY_ARGS}); \
|
||||
fi
|
||||
|
||||
post-build:
|
||||
|
@ -11,7 +11,7 @@ PLIST_FILES= %%PYPY_DIR%%/lib_pypy/${CFFI_MODULE}_cffi.%%PYPY_CFFI_VER%%.so
|
||||
CFFI_MODULE?= _${PORTNAME}
|
||||
|
||||
PYTHON_IMPL= pypy
|
||||
PYTHON_PORTVERSION?= 5.8.0
|
||||
PYTHON_PORTVERSION?= 5.9.0
|
||||
PYTHON_PKGNAMEPREFIX= pypy-
|
||||
PYTHON_CMD= ${LOCALBASE}/bin/${PYTHON_IMPL}
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
TIMESTAMP = 1497478804
|
||||
SHA256 (pypy2-v5.8.0-src.tar.bz2) = 504c2d522595baf8775ae1045a217a2b120732537861d31b889d47c340b58bd5
|
||||
SIZE (pypy2-v5.8.0-src.tar.bz2) = 19163498
|
||||
TIMESTAMP = 1509042816
|
||||
SHA256 (pypy2-v5.9.0-src.tar.bz2) = de4bf05df47f1349dbac97233d9277bbaf1ef3331663ea2557fd5da3dbcfd0a7
|
||||
SIZE (pypy2-v5.9.0-src.tar.bz2) = 19175394
|
||||
|
26
lang/pypy/files/patch-lib-python_2.7_ctypes_____init____.py
Normal file
26
lang/pypy/files/patch-lib-python_2.7_ctypes_____init____.py
Normal file
@ -0,0 +1,26 @@
|
||||
--- lib-python/2.7/ctypes/__init__.py.orig 2017-10-03 10:49:20 UTC
|
||||
+++ lib-python/2.7/ctypes/__init__.py
|
||||
@@ -360,14 +360,15 @@ class CDLL(object):
|
||||
self._FuncPtr = _FuncPtr
|
||||
|
||||
if handle is None:
|
||||
- if flags & _FUNCFLAG_CDECL:
|
||||
- pypy_dll = _ffi.CDLL(name, mode)
|
||||
- else:
|
||||
- pypy_dll = _ffi.WinDLL(name, mode)
|
||||
- self.__pypy_dll__ = pypy_dll
|
||||
- handle = int(pypy_dll)
|
||||
- if _sys.maxint > 2 ** 32:
|
||||
- handle = int(handle) # long -> int
|
||||
+ handle = 0
|
||||
+ if flags & _FUNCFLAG_CDECL:
|
||||
+ pypy_dll = _ffi.CDLL(name, mode, handle)
|
||||
+ else:
|
||||
+ pypy_dll = _ffi.WinDLL(name, mode, handle)
|
||||
+ self.__pypy_dll__ = pypy_dll
|
||||
+ handle = int(pypy_dll)
|
||||
+ if _sys.maxint > 2 ** 32:
|
||||
+ handle = int(handle) # long -> int
|
||||
self._handle = handle
|
||||
|
||||
def __repr__(self):
|
@ -0,0 +1,58 @@
|
||||
--- pypy/module/_rawffi/alt/interp_funcptr.py.orig 2017-10-03 10:49:20 UTC
|
||||
+++ pypy/module/_rawffi/alt/interp_funcptr.py
|
||||
@@ -314,7 +314,7 @@ W_FuncPtr.typedef = TypeDef(
|
||||
# ========================================================================
|
||||
|
||||
class W_CDLL(W_Root):
|
||||
- def __init__(self, space, name, mode):
|
||||
+ def __init__(self, space, name, mode, handle):
|
||||
self.flags = libffi.FUNCFLAG_CDECL
|
||||
self.space = space
|
||||
if name is None:
|
||||
@@ -322,7 +322,7 @@ class W_CDLL(W_Root):
|
||||
else:
|
||||
self.name = name
|
||||
try:
|
||||
- self.cdll = libffi.CDLL(name, mode)
|
||||
+ self.cdll = libffi.CDLL(name, mode, handle)
|
||||
except DLOpenError as e:
|
||||
raise wrap_dlopenerror(space, e, self.name)
|
||||
except OSError as e:
|
||||
@@ -344,9 +344,9 @@ class W_CDLL(W_Root):
|
||||
def getidentifier(self, space):
|
||||
return space.newint(self.cdll.getidentifier())
|
||||
|
||||
-@unwrap_spec(name='fsencode_or_none', mode=int)
|
||||
-def descr_new_cdll(space, w_type, name, mode=-1):
|
||||
- return W_CDLL(space, name, mode)
|
||||
+@unwrap_spec(name='fsencode_or_none', mode=int, handle=int)
|
||||
+def descr_new_cdll(space, w_type, name, mode=-1, handle=0):
|
||||
+ return W_CDLL(space, name, mode, handle)
|
||||
|
||||
|
||||
W_CDLL.typedef = TypeDef(
|
||||
@@ -359,13 +359,13 @@ W_CDLL.typedef = TypeDef(
|
||||
)
|
||||
|
||||
class W_WinDLL(W_CDLL):
|
||||
- def __init__(self, space, name, mode):
|
||||
- W_CDLL.__init__(self, space, name, mode)
|
||||
+ def __init__(self, space, name, mode, handle):
|
||||
+ W_CDLL.__init__(self, space, name, mode, handle)
|
||||
self.flags = libffi.FUNCFLAG_STDCALL
|
||||
|
||||
-@unwrap_spec(name='fsencode_or_none', mode=int)
|
||||
-def descr_new_windll(space, w_type, name, mode=-1):
|
||||
- return W_WinDLL(space, name, mode)
|
||||
+@unwrap_spec(name='fsencode_or_none', mode=int, handle=int)
|
||||
+def descr_new_windll(space, w_type, name, mode=-1, handle=0):
|
||||
+ return W_WinDLL(space, name, mode, handle)
|
||||
|
||||
|
||||
W_WinDLL.typedef = TypeDef(
|
||||
@@ -380,4 +380,4 @@ W_WinDLL.typedef = TypeDef(
|
||||
# ========================================================================
|
||||
|
||||
def get_libc(space):
|
||||
- return W_CDLL(space, get_libc_name(), -1)
|
||||
+ return W_CDLL(space, get_libc_name(), -1, 0)
|
@ -0,0 +1,15 @@
|
||||
--- pypy/module/_vmprof/test/test__vmprof.py.orig 2017-10-30 18:35:14 UTC
|
||||
+++ pypy/module/_vmprof/test/test__vmprof.py
|
||||
@@ -1,3 +1,4 @@
|
||||
+import py
|
||||
import sys
|
||||
from rpython.tool.udir import udir
|
||||
from pypy.tool.pytest.objspace import gettestobjspace
|
||||
@@ -107,6 +108,7 @@ class AppTestVMProf(object):
|
||||
_vmprof.disable()
|
||||
assert _vmprof.is_enabled() is False
|
||||
|
||||
+ @py.test.mark.xfail(sys.platform.startswith('freebsd'), reason = "not implemented")
|
||||
def test_get_profile_path(self):
|
||||
import _vmprof
|
||||
tmpfile = open(self.tmpfilename, 'wb')
|
@ -0,0 +1,12 @@
|
||||
--- pypy/module/termios/test/test_termios.py.orig 2017-10-03 10:49:20 UTC
|
||||
+++ pypy/module/termios/test/test_termios.py
|
||||
@@ -7,9 +7,6 @@ from rpython.tool.udir import udir
|
||||
if os.name != 'posix':
|
||||
py.test.skip('termios module only available on unix')
|
||||
|
||||
-if sys.platform.startswith('freebsd'):
|
||||
- raise Exception('XXX seems to hangs on FreeBSD9')
|
||||
-
|
||||
class TestTermios(object):
|
||||
def setup_class(cls):
|
||||
try:
|
@ -0,0 +1,11 @@
|
||||
--- pypy/module/test_lib_pypy/cffi_tests/cffi1/test_recompiler.py.orig 2017-10-30 18:06:00 UTC
|
||||
+++ pypy/module/test_lib_pypy/cffi_tests/cffi1/test_recompiler.py
|
||||
@@ -2271,7 +2271,7 @@ def test_char16_char32_type(no_cpp=False
|
||||
char32_t foo_4bytes(char32_t);
|
||||
""")
|
||||
lib = verify(ffi, "test_char16_char32_type" + no_cpp * "_nocpp", """
|
||||
- #if !defined(__cplusplus) || __cplusplus < 201103L
|
||||
+ #if !defined(__cplusplus) || (!defined(_LIBCPP_VERSION) && __cplusplus < 201103L)
|
||||
typedef uint_least16_t char16_t;
|
||||
typedef uint_least32_t char32_t;
|
||||
#endif
|
@ -0,0 +1,9 @@
|
||||
--- pypy/module/test_lib_pypy/pyrepl/__init__.py.orig 2017-10-03 10:49:20 UTC
|
||||
+++ pypy/module/test_lib_pypy/pyrepl/__init__.py
|
||||
@@ -1,6 +1,3 @@
|
||||
import sys
|
||||
import lib_pypy.pyrepl
|
||||
sys.modules['pyrepl'] = sys.modules['lib_pypy.pyrepl']
|
||||
-
|
||||
-if sys.platform.startswith('freebsd'):
|
||||
- raise Exception('XXX seems to hangs on FreeBSD9')
|
@ -0,0 +1,11 @@
|
||||
--- pypy/module/test_lib_pypy/pyrepl/test_readline.py.orig 2017-10-30 18:28:08 UTC
|
||||
+++ pypy/module/test_lib_pypy/pyrepl/test_readline.py
|
||||
@@ -4,7 +4,7 @@ from .infrastructure import sane_term
|
||||
|
||||
|
||||
@pytest.mark.skipif("os.name != 'posix' or 'darwin' in sys.platform or "
|
||||
- "'kfreebsd' in sys.platform")
|
||||
+ "'freebsd' in sys.platform")
|
||||
def test_raw_input():
|
||||
import os
|
||||
import pty
|
19
lang/pypy/files/patch-pypy_tool_cpyext_extbuild.py
Normal file
19
lang/pypy/files/patch-pypy_tool_cpyext_extbuild.py
Normal file
@ -0,0 +1,19 @@
|
||||
--- pypy/tool/cpyext/extbuild.py.orig 2017-10-03 10:49:20 UTC
|
||||
+++ pypy/tool/cpyext/extbuild.py
|
||||
@@ -244,13 +244,13 @@ def get_sys_info_app(base_dir):
|
||||
if sys.platform == 'win32':
|
||||
compile_extra = ["/we4013"]
|
||||
link_extra = ["/LIBPATH:" + os.path.join(sys.exec_prefix, 'libs')]
|
||||
- elif sys.platform == 'darwin':
|
||||
- compile_extra = link_extra = None
|
||||
- pass
|
||||
elif sys.platform.startswith('linux'):
|
||||
compile_extra = [
|
||||
"-O0", "-g", "-Werror=implicit-function-declaration", "-fPIC"]
|
||||
link_extra = None
|
||||
+ else:
|
||||
+ compile_extra = link_extra = None
|
||||
+ pass
|
||||
return ExtensionCompiler(
|
||||
builddir_base=base_dir,
|
||||
include_extra=[get_python_inc()],
|
19
lang/pypy/files/patch-rpython_rlib_libffi.py
Normal file
19
lang/pypy/files/patch-rpython_rlib_libffi.py
Normal file
@ -0,0 +1,19 @@
|
||||
--- rpython/rlib/libffi.py.orig 2017-10-03 10:49:20 UTC
|
||||
+++ rpython/rlib/libffi.py
|
||||
@@ -434,11 +434,12 @@ class Func(AbstractFuncPtr):
|
||||
|
||||
# XXX: it partially duplicate the code in clibffi.py
|
||||
class CDLL(object):
|
||||
- def __init__(self, libname, mode=-1):
|
||||
+ def __init__(self, libname, mode=-1, lib=0):
|
||||
"""Load the library, or raises DLOpenError."""
|
||||
- self.lib = rffi.cast(DLLHANDLE, 0)
|
||||
- with rffi.scoped_str2charp(libname) as ll_libname:
|
||||
- self.lib = dlopen(ll_libname, mode)
|
||||
+ self.lib = rffi.cast(DLLHANDLE, lib)
|
||||
+ if lib == 0:
|
||||
+ with rffi.scoped_str2charp(libname) as ll_libname:
|
||||
+ self.lib = dlopen(ll_libname, mode)
|
||||
|
||||
def __del__(self):
|
||||
if self.lib:
|
14
lang/pypy/files/patch-rpython_rlib_rvmprof_cintf.py
Normal file
14
lang/pypy/files/patch-rpython_rlib_rvmprof_cintf.py
Normal file
@ -0,0 +1,14 @@
|
||||
--- rpython/rlib/rvmprof/cintf.py.orig 2017-10-03 10:49:20 UTC
|
||||
+++ rpython/rlib/rvmprof/cintf.py
|
||||
@@ -47,7 +47,10 @@ else:
|
||||
# Guessing a BSD-like Unix platform
|
||||
compile_extra += ['-DVMPROF_UNIX']
|
||||
compile_extra += ['-DVMPROF_MAC']
|
||||
- _libs = []
|
||||
+ if sys.platform.startswith('freebsd'):
|
||||
+ _libs = ['unwind']
|
||||
+ else:
|
||||
+ _libs = []
|
||||
|
||||
|
||||
eci_kwds = dict(
|
@ -1,20 +1,11 @@
|
||||
--- rpython/rlib/rvmprof/src/shared/machine.c.orig 2017-06-05 20:40:44 UTC
|
||||
--- rpython/rlib/rvmprof/src/shared/machine.c.orig 2017-10-03 10:49:20 UTC
|
||||
+++ rpython/rlib/rvmprof/src/shared/machine.c
|
||||
@@ -28,6 +28,8 @@ const char * vmp_machine_os_name(void)
|
||||
#endif
|
||||
@@ -28,7 +28,7 @@ const char * vmp_machine_os_name(void)
|
||||
#elif __linux__
|
||||
return "linux";
|
||||
+#elif __FreeBSD__
|
||||
#elif __FreeBSD__
|
||||
- return "freebsd"
|
||||
+ return "freebsd";
|
||||
#else
|
||||
#error "Unknown compiler"
|
||||
#endif
|
||||
@@ -39,7 +41,7 @@ long vmp_fd_to_path(int fd, char * buffe
|
||||
char proffs[24];
|
||||
(void)snprintf(proffs, 24, "/proc/self/fd/%d", fd);
|
||||
return readlink(proffs, buffer, buffer_len);
|
||||
-#elif defined(VMPROF_UNIX)
|
||||
+#elif defined(VMPROF_UNIX) && !defined(__FreeBSD__)
|
||||
fcntl(fd, F_GETPATH, buffer);
|
||||
return strlen(buffer);
|
||||
#endif
|
||||
|
@ -0,0 +1,10 @@
|
||||
--- rpython/rlib/rvmprof/src/shared/vmp_stack.c.orig 2017-10-03 10:49:20 UTC
|
||||
+++ rpython/rlib/rvmprof/src/shared/vmp_stack.c
|
||||
@@ -29,6 +29,7 @@ static int (*unw_get_proc_name)(unw_curs
|
||||
static int (*unw_is_signal_frame)(unw_cursor_t *) = NULL;
|
||||
static int (*unw_getcontext)(unw_context_t *) = NULL;
|
||||
#else
|
||||
+#define UNW_LOCAL_ONLY
|
||||
#include <libunwind.h>
|
||||
#endif
|
||||
|
@ -0,0 +1,20 @@
|
||||
--- rpython/rtyper/lltypesystem/ll2ctypes.py.orig 2017-10-03 10:49:20 UTC
|
||||
+++ rpython/rtyper/lltypesystem/ll2ctypes.py
|
||||
@@ -1142,7 +1142,7 @@ if ctypes:
|
||||
libc_name = get_libc_name() # Make sure the name is determined during import, not at runtime
|
||||
if _FREEBSD:
|
||||
RTLD_DEFAULT = -2 # see <dlfcn.h>
|
||||
- rtld_default_lib = ctypes.CDLL("RTLD_DEFAULT", handle=RTLD_DEFAULT, **load_library_kwargs)
|
||||
+ rtld_default_lib = ctypes.CDLL("ld-elf.so.1", handle=RTLD_DEFAULT, **load_library_kwargs)
|
||||
# XXX is this always correct???
|
||||
standard_c_lib = ctypes.CDLL(libc_name, **load_library_kwargs)
|
||||
|
||||
@@ -1238,7 +1238,7 @@ def get_ctypes_callable(funcptr, calling
|
||||
|
||||
if cfunc is None:
|
||||
if _FREEBSD and funcname in ('dlopen', 'fdlopen', 'dlsym', 'dlfunc', 'dlerror', 'dlclose'):
|
||||
- cfunc = get_on_lib(rtld_default_lib, funcname)
|
||||
+ cfunc = rtld_default_lib[funcname]
|
||||
else:
|
||||
cfunc = get_on_lib(standard_c_lib, funcname)
|
||||
# XXX magic: on Windows try to load the function from 'kernel32' too
|
@ -22,6 +22,8 @@ bin/pypy
|
||||
%%PYPY_DIR%%/include/code.h
|
||||
%%PYPY_DIR%%/include/compile.h
|
||||
%%PYPY_DIR%%/include/complexobject.h
|
||||
%%PYPY_DIR%%/include/cpyext_descrobject.h
|
||||
%%PYPY_DIR%%/include/cpyext_memoryobject.h
|
||||
%%PYPY_DIR%%/include/cpyext_object.h
|
||||
%%PYPY_DIR%%/include/cpyext_unicodeobject.h
|
||||
%%PYPY_DIR%%/include/datetime.h
|
||||
@ -2125,6 +2127,7 @@ bin/pypy
|
||||
%%PYPY_DIR%%/lib_pypy/cffi.egg-info/requires.txt
|
||||
%%PYPY_DIR%%/lib_pypy/cffi.egg-info/top_level.txt
|
||||
%%PYPY_DIR%%/lib_pypy/cffi/__init__.py
|
||||
%%PYPY_DIR%%/lib_pypy/cffi/_cffi_errors.h
|
||||
%%PYPY_DIR%%/lib_pypy/cffi/_cffi_include.h
|
||||
%%PYPY_DIR%%/lib_pypy/cffi/_embedding.h
|
||||
%%PYPY_DIR%%/lib_pypy/cffi/_pycparser/README
|
||||
|
@ -6,9 +6,6 @@ DISTNAME= ${PORTNAME}-v${DISTVERSION}-src
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../pypy
|
||||
|
||||
ONLY_FOR_ARCHS= amd64
|
||||
ONLY_FOR_ARCHS_REASON= pypy3 is in beta development and upstream only supported amd64 for now
|
||||
|
||||
WRKSRC= ${WRKDIR}/${PORTNAME}-v${DISTVERSION:C/-.*//}-src
|
||||
BUILD_WRKSRC?= ${WRKDIR}/build/usession-release-${PORTNAME}.5-v${DISTVERSION:C/-.*//}-0/testing_1
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
TIMESTAMP = 1497478958
|
||||
SHA256 (pypy3-v5.8.0-src.tar.bz2) = 9d090127335c3c0fd2b14c8835bf91752e62756e55ea06aad3353f24a6854223
|
||||
SIZE (pypy3-v5.8.0-src.tar.bz2) = 28986883
|
||||
TIMESTAMP = 1509472928
|
||||
SHA256 (pypy3-v5.9.0-src.tar.bz2) = a014f47f50a1480f871a0b82705f904b38c93c4ca069850eb37653fedafb1b97
|
||||
SIZE (pypy3-v5.9.0-src.tar.bz2) = 29055111
|
||||
|
26
lang/pypy3/files/patch-lib-python_2.7_ctypes_____init____.py
Normal file
26
lang/pypy3/files/patch-lib-python_2.7_ctypes_____init____.py
Normal file
@ -0,0 +1,26 @@
|
||||
--- lib-python/2.7/ctypes/__init__.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ lib-python/2.7/ctypes/__init__.py
|
||||
@@ -360,14 +360,15 @@ class CDLL(object):
|
||||
self._FuncPtr = _FuncPtr
|
||||
|
||||
if handle is None:
|
||||
- if flags & _FUNCFLAG_CDECL:
|
||||
- pypy_dll = _ffi.CDLL(name, mode)
|
||||
- else:
|
||||
- pypy_dll = _ffi.WinDLL(name, mode)
|
||||
- self.__pypy_dll__ = pypy_dll
|
||||
- handle = int(pypy_dll)
|
||||
- if _sys.maxint > 2 ** 32:
|
||||
- handle = int(handle) # long -> int
|
||||
+ handle = 0
|
||||
+ if flags & _FUNCFLAG_CDECL:
|
||||
+ pypy_dll = _ffi.CDLL(name, mode, handle)
|
||||
+ else:
|
||||
+ pypy_dll = _ffi.WinDLL(name, mode, handle)
|
||||
+ self.__pypy_dll__ = pypy_dll
|
||||
+ handle = int(pypy_dll)
|
||||
+ if _sys.maxint > 2 ** 32:
|
||||
+ handle = int(handle) # long -> int
|
||||
self._handle = handle
|
||||
|
||||
def __repr__(self):
|
23
lang/pypy3/files/patch-lib-python_3_ctypes_____init____.py
Normal file
23
lang/pypy3/files/patch-lib-python_3_ctypes_____init____.py
Normal file
@ -0,0 +1,23 @@
|
||||
--- lib-python/3/ctypes/__init__.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ lib-python/3/ctypes/__init__.py
|
||||
@@ -345,13 +345,13 @@ class CDLL(object):
|
||||
self._FuncPtr = _FuncPtr
|
||||
|
||||
if handle is None:
|
||||
- if flags & _FUNCFLAG_CDECL:
|
||||
- pypy_dll = _ffi.CDLL(name, mode)
|
||||
- else:
|
||||
- pypy_dll = _ffi.WinDLL(name, mode)
|
||||
- self.__pypy_dll__ = pypy_dll
|
||||
- handle = int(pypy_dll)
|
||||
- self._handle = handle
|
||||
+ handle = 0
|
||||
+ if flags & _FUNCFLAG_CDECL:
|
||||
+ pypy_dll = _ffi.CDLL(name, mode)
|
||||
+ else:
|
||||
+ pypy_dll = _ffi.WinDLL(name, mode)
|
||||
+ self.__pypy_dll__ = pypy_dll
|
||||
+ self._handle = int(pypy_dll)
|
||||
|
||||
def __repr__(self):
|
||||
return "<%s '%s', handle %x at 0x%x>" % \
|
11
lang/pypy3/files/patch-lib__pypy___curses__build.py
Normal file
11
lang/pypy3/files/patch-lib__pypy___curses__build.py
Normal file
@ -0,0 +1,11 @@
|
||||
--- lib_pypy/_curses_build.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ lib_pypy/_curses_build.py
|
||||
@@ -34,6 +34,8 @@ ffi.set_source("_curses_cffi", """
|
||||
#define NCURSES_OPAQUE 0
|
||||
#endif
|
||||
|
||||
+#define _XOPEN_SOURCE_EXTENDED 1
|
||||
+#define NCURSES_WIDECHAR 1
|
||||
#include <ncurses.h>
|
||||
#include <panel.h>
|
||||
#include <term.h>
|
@ -0,0 +1,58 @@
|
||||
--- pypy/module/_rawffi/alt/interp_funcptr.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ pypy/module/_rawffi/alt/interp_funcptr.py
|
||||
@@ -314,7 +314,7 @@ W_FuncPtr.typedef = TypeDef(
|
||||
# ========================================================================
|
||||
|
||||
class W_CDLL(W_Root):
|
||||
- def __init__(self, space, name, mode):
|
||||
+ def __init__(self, space, name, mode, handle):
|
||||
self.flags = libffi.FUNCFLAG_CDECL
|
||||
self.space = space
|
||||
if name is None:
|
||||
@@ -322,7 +322,7 @@ class W_CDLL(W_Root):
|
||||
else:
|
||||
self.name = name
|
||||
try:
|
||||
- self.cdll = libffi.CDLL(name, mode)
|
||||
+ self.cdll = libffi.CDLL(name, mode, handle)
|
||||
except DLOpenError as e:
|
||||
raise wrap_dlopenerror(space, e, self.name)
|
||||
except OSError as e:
|
||||
@@ -344,9 +344,9 @@ class W_CDLL(W_Root):
|
||||
def getidentifier(self, space):
|
||||
return space.newint(self.cdll.getidentifier())
|
||||
|
||||
-@unwrap_spec(name='fsencode_or_none', mode=int)
|
||||
-def descr_new_cdll(space, w_type, name, mode=-1):
|
||||
- return W_CDLL(space, name, mode)
|
||||
+@unwrap_spec(name='fsencode_or_none', mode=int, handle=int)
|
||||
+def descr_new_cdll(space, w_type, name, mode=-1, handle=0):
|
||||
+ return W_CDLL(space, name, mode, handle)
|
||||
|
||||
|
||||
W_CDLL.typedef = TypeDef(
|
||||
@@ -359,13 +359,13 @@ W_CDLL.typedef = TypeDef(
|
||||
)
|
||||
|
||||
class W_WinDLL(W_CDLL):
|
||||
- def __init__(self, space, name, mode):
|
||||
- W_CDLL.__init__(self, space, name, mode)
|
||||
+ def __init__(self, space, name, mode, handle):
|
||||
+ W_CDLL.__init__(self, space, name, mode, handle)
|
||||
self.flags = libffi.FUNCFLAG_STDCALL
|
||||
|
||||
-@unwrap_spec(name='fsencode_or_none', mode=int)
|
||||
-def descr_new_windll(space, w_type, name, mode=-1):
|
||||
- return W_WinDLL(space, name, mode)
|
||||
+@unwrap_spec(name='fsencode_or_none', mode=int, handle=int)
|
||||
+def descr_new_windll(space, w_type, name, mode=-1, handle=0):
|
||||
+ return W_WinDLL(space, name, mode, handle)
|
||||
|
||||
|
||||
W_WinDLL.typedef = TypeDef(
|
||||
@@ -380,4 +380,4 @@ W_WinDLL.typedef = TypeDef(
|
||||
# ========================================================================
|
||||
|
||||
def get_libc(space):
|
||||
- return W_CDLL(space, get_libc_name(), -1)
|
||||
+ return W_CDLL(space, get_libc_name(), -1, 0)
|
@ -0,0 +1,15 @@
|
||||
--- pypy/module/_vmprof/test/test__vmprof.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ pypy/module/_vmprof/test/test__vmprof.py
|
||||
@@ -1,3 +1,4 @@
|
||||
+import py
|
||||
import sys
|
||||
from rpython.tool.udir import udir
|
||||
from pypy.tool.pytest.objspace import gettestobjspace
|
||||
@@ -110,6 +111,7 @@ class AppTestVMProf(object):
|
||||
_vmprof.disable()
|
||||
assert _vmprof.is_enabled() is False
|
||||
|
||||
+ @py.test.mark.xfail(sys.platform.startswith('freebsd'), reason = "not implemented")
|
||||
def test_get_profile_path(self):
|
||||
import _vmprof
|
||||
tmpfile = open(self.tmpfilename, 'wb')
|
@ -0,0 +1,12 @@
|
||||
--- pypy/module/termios/test/test_termios.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ pypy/module/termios/test/test_termios.py
|
||||
@@ -7,9 +7,6 @@ from rpython.tool.udir import udir
|
||||
if os.name != 'posix':
|
||||
py.test.skip('termios module only available on unix')
|
||||
|
||||
-if sys.platform.startswith('freebsd'):
|
||||
- raise Exception('XXX seems to hangs on FreeBSD9')
|
||||
-
|
||||
class TestTermios(object):
|
||||
def setup_class(cls):
|
||||
try:
|
@ -0,0 +1,11 @@
|
||||
--- pypy/module/test_lib_pypy/cffi_tests/cffi1/test_recompiler.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ pypy/module/test_lib_pypy/cffi_tests/cffi1/test_recompiler.py
|
||||
@@ -2271,7 +2271,7 @@ def test_char16_char32_type(no_cpp=False
|
||||
char32_t foo_4bytes(char32_t);
|
||||
""")
|
||||
lib = verify(ffi, "test_char16_char32_type" + no_cpp * "_nocpp", """
|
||||
- #if !defined(__cplusplus) || __cplusplus < 201103L
|
||||
+ #if !defined(__cplusplus) || (!defined(_LIBCPP_VERSION) && __cplusplus < 201103L)
|
||||
typedef uint_least16_t char16_t;
|
||||
typedef uint_least32_t char32_t;
|
||||
#endif
|
@ -0,0 +1,9 @@
|
||||
--- pypy/module/test_lib_pypy/pyrepl/__init__.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ pypy/module/test_lib_pypy/pyrepl/__init__.py
|
||||
@@ -1,6 +1,3 @@
|
||||
import sys
|
||||
import lib_pypy.pyrepl
|
||||
sys.modules['pyrepl'] = sys.modules['lib_pypy.pyrepl']
|
||||
-
|
||||
-if sys.platform.startswith('freebsd'):
|
||||
- raise Exception('XXX seems to hangs on FreeBSD9')
|
@ -0,0 +1,11 @@
|
||||
--- pypy/module/test_lib_pypy/pyrepl/test_readline.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ pypy/module/test_lib_pypy/pyrepl/test_readline.py
|
||||
@@ -4,7 +4,7 @@ from .infrastructure import sane_term
|
||||
|
||||
|
||||
@pytest.mark.skipif("os.name != 'posix' or 'darwin' in sys.platform or "
|
||||
- "'kfreebsd' in sys.platform")
|
||||
+ "'freebsd' in sys.platform")
|
||||
def test_raw_input():
|
||||
import os
|
||||
import pty
|
19
lang/pypy3/files/patch-pypy_tool_cpyext_extbuild.py
Normal file
19
lang/pypy3/files/patch-pypy_tool_cpyext_extbuild.py
Normal file
@ -0,0 +1,19 @@
|
||||
--- pypy/tool/cpyext/extbuild.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ pypy/tool/cpyext/extbuild.py
|
||||
@@ -246,13 +246,13 @@ def get_sys_info_app(base_dir):
|
||||
if sys.platform == 'win32':
|
||||
compile_extra = ["/we4013"]
|
||||
link_extra = ["/LIBPATH:" + os.path.join(sys.exec_prefix, 'libs')]
|
||||
- elif sys.platform == 'darwin':
|
||||
- compile_extra = link_extra = None
|
||||
- pass
|
||||
elif sys.platform.startswith('linux'):
|
||||
compile_extra = [
|
||||
"-O0", "-g", "-Werror=implicit-function-declaration", "-fPIC"]
|
||||
link_extra = None
|
||||
+ else:
|
||||
+ compile_extra = link_extra = None
|
||||
+ pass
|
||||
return ExtensionCompiler(
|
||||
builddir_base=base_dir,
|
||||
include_extra=[get_python_inc()],
|
19
lang/pypy3/files/patch-rpython_rlib_libffi.py
Normal file
19
lang/pypy3/files/patch-rpython_rlib_libffi.py
Normal file
@ -0,0 +1,19 @@
|
||||
--- rpython/rlib/libffi.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ rpython/rlib/libffi.py
|
||||
@@ -434,11 +434,12 @@ class Func(AbstractFuncPtr):
|
||||
|
||||
# XXX: it partially duplicate the code in clibffi.py
|
||||
class CDLL(object):
|
||||
- def __init__(self, libname, mode=-1):
|
||||
+ def __init__(self, libname, mode=-1, lib=0):
|
||||
"""Load the library, or raises DLOpenError."""
|
||||
- self.lib = rffi.cast(DLLHANDLE, 0)
|
||||
- with rffi.scoped_str2charp(libname) as ll_libname:
|
||||
- self.lib = dlopen(ll_libname, mode)
|
||||
+ self.lib = rffi.cast(DLLHANDLE, lib)
|
||||
+ if lib == 0:
|
||||
+ with rffi.scoped_str2charp(libname) as ll_libname:
|
||||
+ self.lib = dlopen(ll_libname, mode)
|
||||
|
||||
def __del__(self):
|
||||
if self.lib:
|
14
lang/pypy3/files/patch-rpython_rlib_rvmprof_cintf.py
Normal file
14
lang/pypy3/files/patch-rpython_rlib_rvmprof_cintf.py
Normal file
@ -0,0 +1,14 @@
|
||||
--- rpython/rlib/rvmprof/cintf.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ rpython/rlib/rvmprof/cintf.py
|
||||
@@ -47,7 +47,10 @@ else:
|
||||
# Guessing a BSD-like Unix platform
|
||||
compile_extra += ['-DVMPROF_UNIX']
|
||||
compile_extra += ['-DVMPROF_MAC']
|
||||
- _libs = []
|
||||
+ if sys.platform.startswith('freebsd'):
|
||||
+ _libs = ['unwind']
|
||||
+ else:
|
||||
+ _libs = []
|
||||
|
||||
|
||||
eci_kwds = dict(
|
@ -1,20 +1,11 @@
|
||||
--- rpython/rlib/rvmprof/src/shared/machine.c.orig 2017-06-05 20:40:44 UTC
|
||||
--- rpython/rlib/rvmprof/src/shared/machine.c.orig 2017-10-03 10:53:54 UTC
|
||||
+++ rpython/rlib/rvmprof/src/shared/machine.c
|
||||
@@ -28,6 +28,8 @@ const char * vmp_machine_os_name(void)
|
||||
#endif
|
||||
@@ -28,7 +28,7 @@ const char * vmp_machine_os_name(void)
|
||||
#elif __linux__
|
||||
return "linux";
|
||||
+#elif __FreeBSD__
|
||||
#elif __FreeBSD__
|
||||
- return "freebsd"
|
||||
+ return "freebsd";
|
||||
#else
|
||||
#error "Unknown compiler"
|
||||
#endif
|
||||
@@ -39,7 +41,7 @@ long vmp_fd_to_path(int fd, char * buffe
|
||||
char proffs[24];
|
||||
(void)snprintf(proffs, 24, "/proc/self/fd/%d", fd);
|
||||
return readlink(proffs, buffer, buffer_len);
|
||||
-#elif defined(VMPROF_UNIX)
|
||||
+#elif defined(VMPROF_UNIX) && !defined(__FreeBSD__)
|
||||
fcntl(fd, F_GETPATH, buffer);
|
||||
return strlen(buffer);
|
||||
#endif
|
||||
|
@ -0,0 +1,10 @@
|
||||
--- rpython/rlib/rvmprof/src/shared/vmp_stack.c.orig 2017-10-03 10:53:54 UTC
|
||||
+++ rpython/rlib/rvmprof/src/shared/vmp_stack.c
|
||||
@@ -29,6 +29,7 @@ static int (*unw_get_proc_name)(unw_curs
|
||||
static int (*unw_is_signal_frame)(unw_cursor_t *) = NULL;
|
||||
static int (*unw_getcontext)(unw_context_t *) = NULL;
|
||||
#else
|
||||
+#define UNW_LOCAL_ONLY
|
||||
#include <libunwind.h>
|
||||
#endif
|
||||
|
@ -0,0 +1,20 @@
|
||||
--- rpython/rtyper/lltypesystem/ll2ctypes.py.orig 2017-10-03 10:53:54 UTC
|
||||
+++ rpython/rtyper/lltypesystem/ll2ctypes.py
|
||||
@@ -1142,7 +1142,7 @@ if ctypes:
|
||||
libc_name = get_libc_name() # Make sure the name is determined during import, not at runtime
|
||||
if _FREEBSD:
|
||||
RTLD_DEFAULT = -2 # see <dlfcn.h>
|
||||
- rtld_default_lib = ctypes.CDLL("RTLD_DEFAULT", handle=RTLD_DEFAULT, **load_library_kwargs)
|
||||
+ rtld_default_lib = ctypes.CDLL("ld-elf.so.1", handle=RTLD_DEFAULT, **load_library_kwargs)
|
||||
# XXX is this always correct???
|
||||
standard_c_lib = ctypes.CDLL(libc_name, **load_library_kwargs)
|
||||
|
||||
@@ -1238,7 +1238,7 @@ def get_ctypes_callable(funcptr, calling
|
||||
|
||||
if cfunc is None:
|
||||
if _FREEBSD and funcname in ('dlopen', 'fdlopen', 'dlsym', 'dlfunc', 'dlerror', 'dlclose'):
|
||||
- cfunc = get_on_lib(rtld_default_lib, funcname)
|
||||
+ cfunc = rtld_default_lib[funcname]
|
||||
else:
|
||||
cfunc = get_on_lib(standard_c_lib, funcname)
|
||||
# XXX magic: on Windows try to load the function from 'kernel32' too
|
@ -15,6 +15,9 @@ bin/pypy3
|
||||
%%PYPY_DIR%%/include/code.h
|
||||
%%PYPY_DIR%%/include/compile.h
|
||||
%%PYPY_DIR%%/include/complexobject.h
|
||||
%%PYPY_DIR%%/include/cpyext_descrobject.h
|
||||
%%PYPY_DIR%%/include/cpyext_genobject.h
|
||||
%%PYPY_DIR%%/include/cpyext_memoryobject.h
|
||||
%%PYPY_DIR%%/include/cpyext_moduleobject.h
|
||||
%%PYPY_DIR%%/include/cpyext_object.h
|
||||
%%PYPY_DIR%%/include/cpyext_unicodeobject.h
|
||||
@ -26,8 +29,8 @@ bin/pypy3
|
||||
%%PYPY_DIR%%/include/floatobject.h
|
||||
%%PYPY_DIR%%/include/frameobject.h
|
||||
%%PYPY_DIR%%/include/funcobject.h
|
||||
%%PYPY_DIR%%/include/genobject.h
|
||||
%%PYPY_DIR%%/include/import.h
|
||||
%%PYPY_DIR%%/include/intobject.h
|
||||
%%PYPY_DIR%%/include/listobject.h
|
||||
%%PYPY_DIR%%/include/longintrepr.h
|
||||
%%PYPY_DIR%%/include/longobject.h
|
||||
@ -60,6 +63,7 @@ bin/pypy3
|
||||
%%PYPY_DIR%%/include/sysmodule.h
|
||||
%%PYPY_DIR%%/include/traceback.h
|
||||
%%PYPY_DIR%%/include/tupleobject.h
|
||||
%%PYPY_DIR%%/include/typeslots.h
|
||||
%%PYPY_DIR%%/include/unicodeobject.h
|
||||
%%PYPY_DIR%%/include/warnings.h
|
||||
%%PYPY_DIR%%/lib-python/3/__future__.py
|
||||
@ -2206,6 +2210,8 @@ bin/pypy3
|
||||
%%PYPY_DIR%%/lib_pypy/_syslog_cffi.%%PYPY_CFFI_VER%%.so
|
||||
%%PYPY_DIR%%/lib_pypy/_testcapi.py
|
||||
%%PYPY_DIR%%/lib_pypy/_testcapimodule.c
|
||||
%%PYPY_DIR%%/lib_pypy/_testmultiphase.c
|
||||
%%PYPY_DIR%%/lib_pypy/_testmultiphase.py
|
||||
%%PYPY_DIR%%/lib_pypy/_tkinter/__init__.py
|
||||
%%PYPY_DIR%%/lib_pypy/_tkinter/app.py
|
||||
%%PYPY_DIR%%/lib_pypy/_tkinter/license.terms
|
||||
@ -2221,6 +2227,7 @@ bin/pypy3
|
||||
%%PYPY_DIR%%/lib_pypy/cffi.egg-info/requires.txt
|
||||
%%PYPY_DIR%%/lib_pypy/cffi.egg-info/top_level.txt
|
||||
%%PYPY_DIR%%/lib_pypy/cffi/__init__.py
|
||||
%%PYPY_DIR%%/lib_pypy/cffi/_cffi_errors.h
|
||||
%%PYPY_DIR%%/lib_pypy/cffi/_cffi_include.h
|
||||
%%PYPY_DIR%%/lib_pypy/cffi/_embedding.h
|
||||
%%PYPY_DIR%%/lib_pypy/cffi/_pycparser/README
|
||||
|
Loading…
Reference in New Issue
Block a user