1
0
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:
David Naylor 2017-11-04 09:33:51 +00:00
parent 45a2358a50
commit 4cb488e0ff
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=453445
35 changed files with 514 additions and 45 deletions

View File

@ -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:

View File

@ -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}

View File

@ -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

View 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):

View File

@ -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)

View File

@ -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')

View File

@ -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:

View File

@ -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

View File

@ -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')

View File

@ -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

View 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()],

View 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:

View 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(

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View 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):

View 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>" % \

View 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>

View File

@ -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)

View File

@ -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')

View File

@ -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:

View File

@ -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

View File

@ -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')

View File

@ -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

View 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()],

View 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:

View 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(

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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