[pypy-svn] r56412 - in pypy/dist/pypy: module/_rawffi/test rlib rlib/test
henrikv at codespeak.net
henrikv at codespeak.net
Thu Jul 10 14:57:33 CEST 2008
Author: henrikv
Date: Thu Jul 10 14:57:32 2008
New Revision: 56412
Modified:
pypy/dist/pypy/module/_rawffi/test/test__rawffi.py
pypy/dist/pypy/rlib/libffi.py
pypy/dist/pypy/rlib/test/test_libffi.py
Log:
(henrikv, fijal) Make libffi work on MACOSX
Modified: pypy/dist/pypy/module/_rawffi/test/test__rawffi.py
==============================================================================
--- pypy/dist/pypy/module/_rawffi/test/test__rawffi.py (original)
+++ pypy/dist/pypy/module/_rawffi/test/test__rawffi.py Thu Jul 10 14:57:32 2008
@@ -8,10 +8,6 @@
import os, sys, py
-def setup_module(mod):
- if sys.platform not in ('linux2', 'win32'):
- py.test.skip("Linux & win32 only tests by now")
-
class AppTestFfi:
def prepare_c_example():
from pypy.tool.udir import udir
@@ -162,17 +158,20 @@
prepare_c_example = staticmethod(prepare_c_example)
def setup_class(cls):
+ from pypy.rlib.libffi import get_libc_name
space = gettestobjspace(usemodules=('_rawffi','struct'))
cls.space = space
cls.w_lib_name = space.wrap(cls.prepare_c_example())
+ cls.w_libc_name = space.wrap(get_libc_name())
if sys.platform == 'win32':
cls.w_iswin32 = space.wrap(True)
- cls.w_libc_name = space.wrap('msvcrt')
cls.w_libm_name = space.wrap('msvcrt')
else:
cls.w_iswin32 = space.wrap(False)
- cls.w_libc_name = space.wrap('libc.so.6')
cls.w_libm_name = space.wrap('libm.so')
+ if sys.platform == "darwin":
+ cls.w_libm_name = space.wrap('libm.dylib')
+
cls.w_sizes_and_alignments = space.wrap(dict(
[(k, (v.c_size, v.c_alignment)) for k,v in TYPEMAP.iteritems()]))
Modified: pypy/dist/pypy/rlib/libffi.py
==============================================================================
--- pypy/dist/pypy/rlib/libffi.py (original)
+++ pypy/dist/pypy/rlib/libffi.py Thu Jul 10 14:57:32 2008
@@ -11,11 +11,13 @@
from pypy.translator.tool.cbuild import ExternalCompilationInfo
import py
import os
+import sys
import ctypes.util
DEBUG = False # writes dlerror() messages to stderr
_MS_WINDOWS = os.name == "nt"
+_MAC_OS = sys.platform == "darwin"
if _MS_WINDOWS:
from pypy.rlib import rwin32
@@ -23,7 +25,10 @@
if not _MS_WINDOWS:
includes = ['dlfcn.h', 'ffi.h']
include_dirs = []
- pot_incl = py.path.local('/usr/include/libffi')
+ if _MAC_OS:
+ pot_incl = py.path.local('/usr/include/ffi')
+ else:
+ pot_incl = py.path.local('/usr/include/libffi')
if pot_incl.check():
include_dirs.append(str(pot_incl))
lib_dirs = []
@@ -31,7 +36,12 @@
if pot_lib.check():
lib_dirs.append(str(pot_lib))
+ if _MAC_OS:
+ pre_include_bits = ['#define MACOSX']
+ else:
+ pre_include_bits = []
eci = ExternalCompilationInfo(
+ pre_include_bits = pre_include_bits,
includes = includes,
libraries = ['ffi', 'dl'],
include_dirs = include_dirs,
Modified: pypy/dist/pypy/rlib/test/test_libffi.py
==============================================================================
--- pypy/dist/pypy/rlib/test/test_libffi.py (original)
+++ pypy/dist/pypy/rlib/test/test_libffi.py Thu Jul 10 14:57:32 2008
@@ -13,9 +13,6 @@
import time
def setup_module(mod):
- if not (sys.platform.startswith('linux') or
- sys.platform == 'win32'):
- py.test.skip("Fragile tests, linux & win32 only by now")
for name in type_names:
# XXX force this to be seen by ll2ctypes
# so that ALLOCATED.clear() clears it
@@ -28,20 +25,16 @@
def test_dlopen(self):
py.test.raises(OSError, "dlopen(rffi.str2charp('xxxxxxxxxxxx'))")
- if sys.platform == 'win32':
- assert dlopen(rffi.str2charp('kernel32.dll'))
- else:
- assert dlopen(rffi.str2charp('/lib/libc.so.6'))
+ assert dlopen(rffi.str2charp(get_libc_name()))
def get_libc(self):
- if sys.platform == 'win32':
- return CDLL('msvcrt.dll')
- else:
- return CDLL('/lib/libc.so.6')
+ return CDLL(get_libc_name())
def get_libm(self):
if sys.platform == 'win32':
return CDLL('msvcrt.dll')
+ elif sys.platform == "darwin":
+ return CDLL('libm.dylib')
else:
return CDLL('libm.so')
More information about the Pypy-commit
mailing list