summaryrefslogtreecommitdiff
path: root/devel
diff options
context:
space:
mode:
authoradam <adam@pkgsrc.org>2017-09-30 13:09:47 +0000
committeradam <adam@pkgsrc.org>2017-09-30 13:09:47 +0000
commitcba456e152f67aeaa938dc20337a54c4fc6623a4 (patch)
tree1e70f9bee096db12d67b3ce247f153fd2911a6a2 /devel
parente0e5f7550254764c4684b6a628531efcb2964ced (diff)
downloadpkgsrc-cba456e152f67aeaa938dc20337a54c4fc6623a4.tar.gz
py-cffi: update to 1.11.0
v1.11 Support the modern standard types char16_t and char32_t. These work like wchar_t: they represent one unicode character, or when used as charN_t * or charN_t[] they represent a unicode string. The difference with wchar_t is that they have a known, fixed size. They should work at all places that used to work with wchar_t (please report an issue if I missed something). Note that with set_source(), you need to make sure that these types are actually defined by the C source you provide (if used in cdef()). Support the C99 types float _Complex and double _Complex. Note that libffi doesn’t support them, which means that in the ABI mode you still cannot call C functions that take complex numbers directly as arguments or return type. Fixed a rare race condition when creating multiple FFI instances from multiple threads. (Note that you aren’t meant to create many FFI instances: in inline mode, you should write ffi = cffi.FFI() at module level just after import cffi; and in out-of-line mode you don’t instantiate FFI explicitly at all.) Windows: using callbacks can be messy because the CFFI internal error messages show up to stderr—but stderr goes nowhere in many applications. This makes it particularly hard to get started with the embedding mode. (Once you get started, you can at least use @ffi.def_extern(onerror=...) and send the error logs where it makes sense for your application, or record them in log files, and so on.) So what is new in CFFI is that now, on Windows CFFI will try to open a non-modal MessageBox (in addition to sending raw messages to stderr). The MessageBox is only visible if the process stays alive: typically, console applications that crash close immediately, but that is also the situation where stderr should be visible anyway. Progress on support for callbacks in NetBSD. Functions returning booleans would in some case still return 0 or 1 instead of False or True. Fixed. ffi.gc() now takes an optional third parameter, which gives an estimate of the size (in bytes) of the object. So far, this is only used by PyPy, to make the next GC occur more quickly (issue 320). In the future, this might have an effect on CPython too (provided the CPython issue 31105 is addressed). Add a note to the documentation: the ABI mode gives function objects that are slower to call than the API mode does. For some reason it is often thought to be faster. It is not!
Diffstat (limited to 'devel')
-rw-r--r--devel/py-cffi/Makefile15
-rw-r--r--devel/py-cffi/PLIST5
-rw-r--r--devel/py-cffi/distinfo11
-rw-r--r--devel/py-cffi/patches/patch-c___cffi__backend.c131
4 files changed, 12 insertions, 150 deletions
diff --git a/devel/py-cffi/Makefile b/devel/py-cffi/Makefile
index da0ba3a5117..d3a4391d466 100644
--- a/devel/py-cffi/Makefile
+++ b/devel/py-cffi/Makefile
@@ -1,8 +1,7 @@
-# $NetBSD: Makefile,v 1.27 2017/07/03 18:17:45 joerg Exp $
+# $NetBSD: Makefile,v 1.28 2017/09/30 13:09:47 adam Exp $
-DISTNAME= cffi-1.10.0
+DISTNAME= cffi-1.11.0
PKGNAME= ${PYPKGPREFIX}-${DISTNAME}
-PKGREVISION= 1
CATEGORIES= devel
MASTER_SITES= ${MASTER_SITE_PYPI:=c/cffi/}
@@ -11,25 +10,19 @@ HOMEPAGE= https://pypi.python.org/pypi/cffi/
COMMENT= Foreign Function Interface for Python calling C code
LICENSE= mit
-USE_TOOLS+= pkg-config
USE_LANGUAGES= c c++
+USE_TOOLS+= pkg-config
DEPENDS+= ${PYPKGPREFIX}-cparser-[0-9]*:../../devel/py-cparser
BUILD_DEPENDS+= ${PYPKGPREFIX}-test-[0-9]*:../../devel/py-test
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:
${MKDIR} ${WRKDIR}/tmp
- cd ${WRKSRC} && ${PKGSRC_SETENV} ${TEST_ENV} ${PREFIX}/bin/py.test-${PYVERSSUFFIX} -v
+ cd ${WRKSRC} && ${PKGSRC_SETENV} ${TEST_ENV} ${PREFIX}/bin/py.test-${PYVERSSUFFIX}
.include "../../devel/libffi/buildlink3.mk"
.include "../../lang/python/egg.mk"
diff --git a/devel/py-cffi/PLIST b/devel/py-cffi/PLIST
index 97bc64e753d..6a8f3c75f8d 100644
--- a/devel/py-cffi/PLIST
+++ b/devel/py-cffi/PLIST
@@ -1,5 +1,4 @@
-@comment $NetBSD: PLIST,v 1.6 2017/04/05 15:54:26 wiz Exp $
-${PYSITELIB}/_cffi_backend.so
+@comment $NetBSD: PLIST,v 1.7 2017/09/30 13:09:47 adam Exp $
${PYSITELIB}/${EGG_INFODIR}/PKG-INFO
${PYSITELIB}/${EGG_INFODIR}/SOURCES.txt
${PYSITELIB}/${EGG_INFODIR}/dependency_links.txt
@@ -7,9 +6,11 @@ ${PYSITELIB}/${EGG_INFODIR}/entry_points.txt
${PYSITELIB}/${EGG_INFODIR}/not-zip-safe
${PYSITELIB}/${EGG_INFODIR}/requires.txt
${PYSITELIB}/${EGG_INFODIR}/top_level.txt
+${PYSITELIB}/_cffi_backend.so
${PYSITELIB}/cffi/__init__.py
${PYSITELIB}/cffi/__init__.pyc
${PYSITELIB}/cffi/__init__.pyo
+${PYSITELIB}/cffi/_cffi_errors.h
${PYSITELIB}/cffi/_cffi_include.h
${PYSITELIB}/cffi/_embedding.h
${PYSITELIB}/cffi/api.py
diff --git a/devel/py-cffi/distinfo b/devel/py-cffi/distinfo
index 363015d7e4d..88f2259fbc5 100644
--- a/devel/py-cffi/distinfo
+++ b/devel/py-cffi/distinfo
@@ -1,9 +1,8 @@
-$NetBSD: distinfo,v 1.24 2017/07/03 18:17:45 joerg Exp $
+$NetBSD: distinfo,v 1.25 2017/09/30 13:09:47 adam 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___cffi__backend.c) = e06cb7fd3eef875ba1176ba8ac9d7c1cad229ccf
+SHA1 (cffi-1.11.0.tar.gz) = 93cb5aaf152e19f9d4082a723aa2396e9cd5d93f
+RMD160 (cffi-1.11.0.tar.gz) = 76dc6345a24be4c292af0db0b9660a6632d63048
+SHA512 (cffi-1.11.0.tar.gz) = 907af351de6f45a8d6e34dcd29b17d77425c6c513a1310570dd6e63921f3631946336350b0c3dcdab9f0bb799dfc41aa85ed0e0657c9c310c434c5aa2a7881ac
+Size (cffi-1.11.0.tar.gz) = 434283 bytes
SHA1 (patch-testing_cffi0_test__verify.py) = 9097ed364176f968d8c5084e1bc3d3d368d92714
SHA1 (patch-testing_cffi1_test__verify1.py) = 64a0c7073a446dd4ca7cd97086646959ad4fad08
diff --git a/devel/py-cffi/patches/patch-c___cffi__backend.c b/devel/py-cffi/patches/patch-c___cffi__backend.c
deleted file mode 100644
index 79f1a42b1d4..00000000000
--- a/devel/py-cffi/patches/patch-c___cffi__backend.c
+++ /dev/null
@@ -1,131 +0,0 @@
-$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);