pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/devel/py-cffi
Module Name: pkgsrc
Committed By: joerg
Date: Mon Jul 3 18:17:45 UTC 2017
Modified Files:
pkgsrc/devel/py-cffi: Makefile distinfo
Added Files:
pkgsrc/devel/py-cffi/patches: patch-c___cffi__backend.c
patch-testing_cffi0_test__verify.py
patch-testing_cffi1_test__verify1.py
Removed Files:
pkgsrc/devel/py-cffi/patches: patch-c_malloc__closure.h
Log Message:
Use libffi's closure handling based on code from the upstream branch.
Adjust test cases to not use alloca.h on NetBSD. Use a temporary
directory under WRKDIR and allow C++ when test builds are requested.
To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 pkgsrc/devel/py-cffi/Makefile
cvs rdiff -u -r1.23 -r1.24 pkgsrc/devel/py-cffi/distinfo
cvs rdiff -u -r0 -r1.1 pkgsrc/devel/py-cffi/patches/patch-c___cffi__backend.c \
pkgsrc/devel/py-cffi/patches/patch-testing_cffi0_test__verify.py \
pkgsrc/devel/py-cffi/patches/patch-testing_cffi1_test__verify1.py
cvs rdiff -u -r1.2 -r0 pkgsrc/devel/py-cffi/patches/patch-c_malloc__closure.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/devel/py-cffi/Makefile
diff -u pkgsrc/devel/py-cffi/Makefile:1.26 pkgsrc/devel/py-cffi/Makefile:1.27
--- pkgsrc/devel/py-cffi/Makefile:1.26 Mon Jul 3 11:08:29 2017
+++ pkgsrc/devel/py-cffi/Makefile Mon Jul 3 18:17:45 2017
@@ -1,7 +1,8 @@
-# $NetBSD: Makefile,v 1.26 2017/07/03 11:08:29 wiz Exp $
+# $NetBSD: Makefile,v 1.27 2017/07/03 18:17:45 joerg Exp $
DISTNAME= cffi-1.10.0
PKGNAME= ${PYPKGPREFIX}-${DISTNAME}
+PKGREVISION= 1
CATEGORIES= devel
MASTER_SITES= ${MASTER_SITE_PYPI:=c/cffi/}
@@ -16,11 +17,19 @@ USE_LANGUAGES= c c++
DEPENDS+= ${PYPKGPREFIX}-cparser-[0-9]*:../../devel/py-cparser
BUILD_DEPENDS+= ${PYPKGPREFIX}-test-[0-9]*:../../devel/py-test
-# needs 'make install' before running the tests
-# many segfaults and 6 other test failures
-# https://bitbucket.org/cffi/cffi/issues/321/cffi-191-segmentation-fault-during-self
+DISTUTILS_BUILDDIR_IN_TEST_ENV= yes
+
+USE_LANGUAGES= c
+
+.if !empty(PKGSRC_RUN_TEST:M[yY][eE][sS])
+USE_LANGUAGES+= c++
+.endif
+
+TEST_ENV+= TMPDIR=${WRKDIR}/tmp
+
do-test:
- cd ${WRKSRC} && py.test-${PYVERSSUFFIX} -v -k "not test_callback and not test_a_lot_of_callbacks and not test_wchar and not test_errno_callback and not test_functionptr_simple and not
test_functionptr_voidptr_return and not test_functionptr_intptr_return and not test_functionptr_void_return and not test_cast_functionptr_and_int and not test_structptr_argument and not
test_array_argument_as_list and not test_array_of_func_ptr and not test_function_pointer and not test_access_callback and not test_win32_calling_convention_0 and not test_ffi_callback and not
test_array_length_from_constant and not test_some_integer_type_for_issue73 and not test_macro_var_callback"
+ ${MKDIR} ${WRKDIR}/tmp
+ cd ${WRKSRC} && ${PKGSRC_SETENV} ${TEST_ENV} ${PREFIX}/bin/py.test-${PYVERSSUFFIX} -v
.include "../../devel/libffi/buildlink3.mk"
.include "../../lang/python/egg.mk"
Index: pkgsrc/devel/py-cffi/distinfo
diff -u pkgsrc/devel/py-cffi/distinfo:1.23 pkgsrc/devel/py-cffi/distinfo:1.24
--- pkgsrc/devel/py-cffi/distinfo:1.23 Wed Apr 5 15:54:26 2017
+++ pkgsrc/devel/py-cffi/distinfo Mon Jul 3 18:17:45 2017
@@ -1,7 +1,9 @@
-$NetBSD: distinfo,v 1.23 2017/04/05 15:54:26 wiz Exp $
+$NetBSD: distinfo,v 1.24 2017/07/03 18:17:45 joerg Exp $
SHA1 (cffi-1.10.0.tar.gz) = 8484aba03d1e64367d3110c0e36c1ed052b43f12
RMD160 (cffi-1.10.0.tar.gz) = 8bcdd03716d70fed5a7c25fd0371572356b36aab
SHA512 (cffi-1.10.0.tar.gz) = 02c9987c44698708dcb7e0aa17637df6b15f81732dc25b03e54563ca5664a817863b87daf7a782a62c7b6150388cdca858ef496a975ab289c86f05e5492465ef
Size (cffi-1.10.0.tar.gz) = 418131 bytes
-SHA1 (patch-c_malloc__closure.h) = d169a2ebdf899b5b67a714a068749ce25087be8a
+SHA1 (patch-c___cffi__backend.c) = e06cb7fd3eef875ba1176ba8ac9d7c1cad229ccf
+SHA1 (patch-testing_cffi0_test__verify.py) = 9097ed364176f968d8c5084e1bc3d3d368d92714
+SHA1 (patch-testing_cffi1_test__verify1.py) = 64a0c7073a446dd4ca7cd97086646959ad4fad08
Added files:
Index: pkgsrc/devel/py-cffi/patches/patch-c___cffi__backend.c
diff -u /dev/null pkgsrc/devel/py-cffi/patches/patch-c___cffi__backend.c:1.1
--- /dev/null Mon Jul 3 18:17:45 2017
+++ pkgsrc/devel/py-cffi/patches/patch-c___cffi__backend.c Mon Jul 3 18:17:45 2017
@@ -0,0 +1,131 @@
+$NetBSD: patch-c___cffi__backend.c,v 1.1 2017/07/03 18:17:45 joerg Exp $
+
+--- c/_cffi_backend.c.orig 2017-03-21 10:41:29.000000000 +0000
++++ c/_cffi_backend.c
+@@ -60,8 +60,6 @@
+ # endif
+ #endif
+
+-#include "malloc_closure.h"
+-
+ #if PY_MAJOR_VERSION >= 3
+ # define STR_OR_BYTES "bytes"
+ # define PyText_Type PyUnicode_Type
+@@ -256,6 +254,11 @@ typedef struct {
+ } CDataObject_gcp;
+
+ typedef struct {
++ CDataObject head;
++ ffi_closure *closure;
++} CDataObject_closure;
++
++typedef struct {
+ ffi_cif cif;
+ /* the following information is used when doing the call:
+ - a buffer of size 'exchange_size' is malloced
+@@ -1678,10 +1681,10 @@ static void cdataowninggc_dealloc(CDataO
+ Py_DECREF(x);
+ }
+ else if (cd->c_type->ct_flags & CT_FUNCTIONPTR) { /* a callback */
+- ffi_closure *closure = (ffi_closure *)cd->c_data;
+- PyObject *args = (PyObject *)(closure->user_data);
++ ffi_closure *closure = ((CDataObject_closure *)cd)->closure;
++ PyObject *args = (PyObject *)closure->user_data;
+ Py_XDECREF(args);
+- cffi_closure_free(closure);
++ ffi_closure_free(closure);
+ }
+ else if (cd->c_type->ct_flags & CT_IS_UNSIZED_CHAR_A) { /* from_buffer */
+ Py_buffer *view = ((CDataObject_owngc_frombuf *)cd)->bufferview;
+@@ -1698,8 +1701,8 @@ static int cdataowninggc_traverse(CDataO
+ Py_VISIT(x);
+ }
+ else if (cd->c_type->ct_flags & CT_FUNCTIONPTR) { /* a callback */
+- ffi_closure *closure = (ffi_closure *)cd->c_data;
+- PyObject *args = (PyObject *)(closure->user_data);
++ ffi_closure *closure = ((CDataObject_closure *)cd)->closure;
++ PyObject *args = (PyObject *)closure->user_data;
+ Py_VISIT(args);
+ }
+ else if (cd->c_type->ct_flags & CT_IS_UNSIZED_CHAR_A) { /* from_buffer */
+@@ -1719,8 +1722,8 @@ static int cdataowninggc_clear(CDataObje
+ Py_DECREF(x);
+ }
+ else if (cd->c_type->ct_flags & CT_FUNCTIONPTR) { /* a callback */
+- ffi_closure *closure = (ffi_closure *)cd->c_data;
+- PyObject *args = (PyObject *)(closure->user_data);
++ ffi_closure *closure = ((CDataObject_closure *)cd)->closure;
++ PyObject *args = (PyObject *)closure->user_data;
+ closure->user_data = NULL;
+ Py_XDECREF(args);
+ }
+@@ -1925,7 +1928,8 @@ static PyObject *cdataowninggc_repr(CDat
+ return _cdata_repr2(cd, "handle to", x);
+ }
+ else if (cd->c_type->ct_flags & CT_FUNCTIONPTR) { /* a callback */
+- PyObject *args = (PyObject *)((ffi_closure *)cd->c_data)->user_data;
++ ffi_closure *closure = ((CDataObject_closure *)cd)->closure;
++ PyObject *args = (PyObject *)closure->user_data;
+ if (args == NULL)
+ return cdata_repr(cd);
+ else
+@@ -5488,11 +5492,12 @@ static PyObject *prepare_callback_info_t
+ static PyObject *b_callback(PyObject *self, PyObject *args)
+ {
+ CTypeDescrObject *ct;
+- CDataObject *cd;
++ CDataObject_closure *cd;
+ PyObject *ob, *error_ob = Py_None, *onerror_ob = Py_None;
+ PyObject *infotuple;
+ cif_description_t *cif_descr;
+ ffi_closure *closure;
++ void *closure_exec;
+
+ if (!PyArg_ParseTuple(args, "O!O|OO:callback", &CTypeDescr_Type, &ct, &ob,
+ &error_ob, &onerror_ob))
+@@ -5502,15 +5507,20 @@ static PyObject *b_callback(PyObject *se
+ if (infotuple == NULL)
+ return NULL;
+
+- closure = cffi_closure_alloc();
++ closure = ffi_closure_alloc(sizeof(ffi_closure), &closure_exec);
++ if (closure == NULL) {
++ Py_DECREF(infotuple);
+
+- cd = PyObject_GC_New(CDataObject, &CDataOwningGC_Type);
++ return NULL;
++ }
++ cd = PyObject_GC_New(CDataObject_closure, &CDataOwningGC_Type);
+ if (cd == NULL)
+ goto error;
+ Py_INCREF(ct);
+- cd->c_type = ct;
+- cd->c_data = (char *)closure;
+- cd->c_weakreflist = NULL;
++ cd->head.c_type = ct;
++ cd->head.c_data = (char *)closure_exec;
++ cd->head.c_weakreflist = NULL;
++ cd->closure = closure;
+ PyObject_GC_Track(cd);
+
+ cif_descr = (cif_description_t *)ct->ct_extra;
+@@ -5520,8 +5530,8 @@ static PyObject *b_callback(PyObject *se
+ "return type or with '...'", ct->ct_name);
+ goto error;
+ }
+- if (ffi_prep_closure(closure, &cif_descr->cif,
+- invoke_callback, infotuple) != FFI_OK) {
++ if (ffi_prep_closure_loc(closure, &cif_descr->cif,
++ invoke_callback, infotuple, closure_exec) != FFI_OK) {
+ PyErr_SetString(PyExc_SystemError,
+ "libffi failed to build this callback");
+ goto error;
+@@ -5545,7 +5555,7 @@ static PyObject *b_callback(PyObject *se
+ error:
+ closure->user_data = NULL;
+ if (cd == NULL)
+- cffi_closure_free(closure);
++ ffi_closure_free(closure);
+ else
+ Py_DECREF(cd);
+ Py_XDECREF(infotuple);
Index: pkgsrc/devel/py-cffi/patches/patch-testing_cffi0_test__verify.py
diff -u /dev/null pkgsrc/devel/py-cffi/patches/patch-testing_cffi0_test__verify.py:1.1
--- /dev/null Mon Jul 3 18:17:45 2017
+++ pkgsrc/devel/py-cffi/patches/patch-testing_cffi0_test__verify.py Mon Jul 3 18:17:45 2017
@@ -0,0 +1,13 @@
+$NetBSD: patch-testing_cffi0_test__verify.py,v 1.1 2017/07/03 18:17:45 joerg Exp $
+
+--- testing/cffi0/test_verify.py.orig 2017-07-03 17:44:02.180970759 +0000
++++ testing/cffi0/test_verify.py
+@@ -1798,7 +1798,7 @@ def test_callback_indirection():
+ #include <malloc.h>
+ #define alloca _alloca
+ #else
+- # ifdef __FreeBSD__
++ # if defined(__FreeBSD__) || defined(__NetBSD__)
+ # include <stdlib.h>
+ # else
+ # include <alloca.h>
Index: pkgsrc/devel/py-cffi/patches/patch-testing_cffi1_test__verify1.py
diff -u /dev/null pkgsrc/devel/py-cffi/patches/patch-testing_cffi1_test__verify1.py:1.1
--- /dev/null Mon Jul 3 18:17:45 2017
+++ pkgsrc/devel/py-cffi/patches/patch-testing_cffi1_test__verify1.py Mon Jul 3 18:17:45 2017
@@ -0,0 +1,13 @@
+$NetBSD: patch-testing_cffi1_test__verify1.py,v 1.1 2017/07/03 18:17:45 joerg Exp $
+
+--- testing/cffi1/test_verify1.py.orig 2017-07-03 17:44:21.313824096 +0000
++++ testing/cffi1/test_verify1.py
+@@ -1767,7 +1767,7 @@ def test_callback_indirection():
+ #include <malloc.h>
+ #define alloca _alloca
+ #else
+- # ifdef __FreeBSD__
++ # if defined(__FreeBSD__) || defined(__NetBSD__)
+ # include <stdlib.h>
+ # else
+ # include <alloca.h>
Home |
Main Index |
Thread Index |
Old Index