~alpine/aports

[alpine-aports] [PATCH] main/py-cffi: enable tests

alpine-mips-patches <info@mobile-stream.com>
Details
Message ID
<20190206103234.2F5FD5EFE2@mx12.valuehost.ru>
Sender timestamp
1549447813
DKIM signature
missing
Download raw message
Patch: +79 -3
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.

---
 main/py-cffi/APKBUILD          | 17 +++++++--
 main/py-cffi/musl-compat.patch | 65 ++++++++++++++++++++++++++++++++++
 2 files changed, 79 insertions(+), 3 deletions(-)
 create mode 100644 main/py-cffi/musl-compat.patch

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("""
-- 
2.20.1




---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---
Reply to thread Export thread (mbox)