summaryrefslogtreecommitdiff
path: root/repo/python-cffi
diff options
context:
space:
mode:
Diffstat (limited to 'repo/python-cffi')
-rw-r--r--repo/python-cffi/musl-compat.patch65
-rw-r--r--repo/python-cffi/python-cffi.xibuild31
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"
+}
+