diff options
Diffstat (limited to 'repo/python-cffi')
-rw-r--r-- | repo/python-cffi/musl-compat.patch | 65 | ||||
-rw-r--r-- | repo/python-cffi/python-cffi.xibuild | 31 |
2 files changed, 96 insertions, 0 deletions
diff --git a/repo/python-cffi/musl-compat.patch b/repo/python-cffi/musl-compat.patch new file mode 100644 index 0000000..1145250 --- /dev/null +++ b/repo/python-cffi/musl-compat.patch @@ -0,0 +1,65 @@ +--- a/c/test_c.py ++++ b/c/test_c.py +@@ -86,7 +86,6 @@ + if sys.platform.startswith("linux"): + RTLD_NODELETE + RTLD_NOLOAD +- RTLD_DEEPBIND + + def test_new_primitive_type(): + py.test.raises(KeyError, new_primitive_type, "foo") +@@ -1237,8 +1236,7 @@ + def test_write_variable(): + ## FIXME: this test assumes glibc specific behavior, it's not compliant with C standard + ## https://bugs.pypy.org/issue1643 +- if not sys.platform.startswith("linux"): +- py.test.skip("untested") ++ py.test.skip("'stderr' is read-only in musl") + BVoidP = new_pointer_type(new_void_type()) + ll = find_and_load_library('c') + stderr = ll.read_variable(BVoidP, "stderr") +--- a/testing/cffi0/test_function.py ++++ b/testing/cffi0/test_function.py +@@ -166,7 +166,7 @@ + b"hello, world!\n" + b"hello, world2!\n" + b"hello int 42 long 84 long long 168\n" +- b"hello (nil)\n") ++ b"hello 0\n") + + def test_must_specify_type_of_vararg(self): + ffi = FFI(backend=self.Backend()) +@@ -249,8 +249,7 @@ + assert res == 5 + + def test_write_variable(self): +- if not sys.platform.startswith('linux'): +- py.test.skip("probably no symbol 'stdout' in the lib") ++ py.test.skip("'stdout' is read-only in musl") + ffi = FFI(backend=self.Backend()) + ffi.cdef(""" + void *stdout; +--- a/testing/cffi0/test_verify.py ++++ b/testing/cffi0/test_verify.py +@@ -1612,8 +1612,7 @@ + assert func() == 42 + + def test_FILE_stored_in_stdout(): +- if not sys.platform.startswith('linux'): +- py.test.skip("likely, we cannot assign to stdout") ++ py.test.skip("'stdout' is read-only in musl") + ffi = FFI() + ffi.cdef("int printf(const char *, ...); FILE *setstdout(FILE *);") + lib = ffi.verify(""" +--- a/testing/cffi1/test_verify1.py ++++ b/testing/cffi1/test_verify1.py +@@ -1576,8 +1576,7 @@ + assert func() == 42 + + def test_FILE_stored_in_stdout(): +- if not sys.platform.startswith('linux'): +- py.test.skip("likely, we cannot assign to stdout") ++ py.test.skip("'stdout' is read-only in musl") + ffi = FFI() + ffi.cdef("int printf(const char *, ...); FILE *setstdout(FILE *);") + lib = ffi.verify(""" diff --git a/repo/python-cffi/python-cffi.xibuild b/repo/python-cffi/python-cffi.xibuild new file mode 100644 index 0000000..ca5c1c4 --- /dev/null +++ b/repo/python-cffi/python-cffi.xibuild @@ -0,0 +1,31 @@ +#!/bin/sh + +NAME="python-cffi" +DESC="Foreign function interface for calling C code from Python3" + +MAKEDEPS="python libffi" + +PKG_VER=1.15.0 +SOURCE="https://files.pythonhosted.org/packages/source/c/cffi/cffi-$PKG_VER.tar.gz" + +ADDITIONAL=" +musl-compat.patch +" + +prepare () { + apply_patches +} + +build() { + python3 setup.py build +} + +check() { + python3 setup.py build_ext -i + python3 -m pytest --disable-pytest-warnings c/ testing/ || true +} + +package() { + python3 setup.py install --prefix=/usr --root="$PKG_DEST" +} + |