aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralpine-mips-patches <info@mobile-stream.com>2019-02-06 10:10:13 +0000
committerLeonardo Arena <rnalrd@alpinelinux.org>2019-02-06 13:22:20 +0000
commit872c00e3f67c0ec36c56d9f4b3b79406f64b64c5 (patch)
tree8915b1999d40322db7c9ae1f6c9bbf24d980ed87
parentaaf2d627aa99b8425b74e7ee39af33d70045fd5a (diff)
downloadaports-872c00e3f67c0ec36c56d9f4b3b79406f64b64c5.tar.bz2
aports-872c00e3f67c0ec36c56d9f4b3b79406f64b64c5.tar.xz
main/py-cffi: enable tests
These built-in tests take time (15 min per python version on P5600, should be roughly comparable on ARM A53) and surprisingly fail the python3 thread-related units on x86_64 (but not on much more faulty mipseln8hf). This is why the python3 part is set as optional. The musl-compat.patch disables/fixes units with obvious glibcisms: pretty %p formatting, writable stdout/stderr and RTLD_DEEPBIND.
-rw-r--r--main/py-cffi/APKBUILD17
-rw-r--r--main/py-cffi/musl-compat.patch65
2 files changed, 79 insertions, 3 deletions
diff --git a/main/py-cffi/APKBUILD b/main/py-cffi/APKBUILD
index 54e9003643..e69dc3bf89 100644
--- a/main/py-cffi/APKBUILD
+++ b/main/py-cffi/APKBUILD
@@ -3,15 +3,17 @@
pkgname=py-cffi
_pkgname=cffi
pkgver=1.11.5
-pkgrel=0
+pkgrel=1
pkgdesc="A foreign function interface for calling C code from Python"
url="http://cffi.readthedocs.org/"
arch="all"
license="MIT"
depends=""
makedepends="python2-dev python3-dev py-setuptools libffi-dev"
+checkdepends="py2-pytest py2-cparser py3-pytest py3-cparser"
subpackages="py3-$_pkgname:_py3 py2-$_pkgname:_py2"
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz
+ musl-compat.patch"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
@@ -20,6 +22,14 @@ build() {
python3 setup.py build || return 1
}
+check() {
+ cd "$builddir"
+ python2 setup.py build_ext -i
+ python2 -m pytest --disable-pytest-warnings c/ testing/
+ python3 setup.py build_ext -i
+ python3 -m pytest --disable-pytest-warnings c/ testing/ || true
+}
+
package() {
mkdir -p "$pkgdir"
}
@@ -44,4 +54,5 @@ _py3() {
_py python3
}
-sha512sums="6770d5293cfd7405e733d60c96655641b5bcc5878fc66a737f4a8308f465d459ee0e3fcaa47893d8f57fb195e5534dd7e4728c868f33d7e657688f45e1fb1880 cffi-1.11.5.tar.gz"
+sha512sums="6770d5293cfd7405e733d60c96655641b5bcc5878fc66a737f4a8308f465d459ee0e3fcaa47893d8f57fb195e5534dd7e4728c868f33d7e657688f45e1fb1880 cffi-1.11.5.tar.gz
+dd8d1ee2bc8965baa9e9caf7c29d4bb7616d5429de931c11845f7e4cab0d3a065429cd2a93d493eaf81a7ea2e8d25e4d3d3f330ab65c0f9b3bb3a6994f2f8ee9 musl-compat.patch"
diff --git a/main/py-cffi/musl-compat.patch b/main/py-cffi/musl-compat.patch
new file mode 100644
index 0000000000..1145250a1b
--- /dev/null
+++ b/main/py-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("""