[arch-commits] Commit in python-greenlet/trunk (2 files)
Evangelos Foutras
foutrelis at archlinux.org
Wed Jul 18 21:56:16 UTC 2018
Date: Wednesday, July 18, 2018 @ 21:56:15
Author: foutrelis
Revision: 362322
upgpkg: python-greenlet 0.4.14-1
New upstream release.
Modified:
python-greenlet/trunk/PKGBUILD
Deleted:
python-greenlet/trunk/port-to-py3.7-handle-tstate-exc_info.patch
--------------------------------------------+
PKGBUILD | 12 -
port-to-py3.7-handle-tstate-exc_info.patch | 183 ---------------------------
2 files changed, 4 insertions(+), 191 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2018-07-18 21:46:08 UTC (rev 362321)
+++ PKGBUILD 2018-07-18 21:56:15 UTC (rev 362322)
@@ -5,21 +5,17 @@
pkgbase=python-greenlet
pkgname=(python-greenlet python2-greenlet)
-pkgver=0.4.13
-pkgrel=3
+pkgver=0.4.14
+pkgrel=1
pkgdesc="Lightweight in-process concurrent programming"
license=("MIT")
arch=('x86_64')
url="http://pypi.python.org/pypi/greenlet"
makedepends=('python-setuptools' 'python2-setuptools')
-source=("https://files.pythonhosted.org/packages/source/g/greenlet/greenlet-${pkgver}.tar.gz"
- port-to-py3.7-handle-tstate-exc_info.patch)
-sha512sums=('625aaa8875b408442139191e1a63eca71c668675229907335f5caee623487aba5305c1d53b51e1764ad982b8edd07d04f984e08a75318a0a5672805667917a61'
- '6fac24423f680a3676f722a02a93d611a0f0194ec7c6c6a013d158c46afe6887a6d2a0ca27256fce2ddc18044e2115bbc209bfbcbc2ed7020ca89c6639e1d55d')
+source=("https://files.pythonhosted.org/packages/source/g/greenlet/greenlet-${pkgver}.tar.gz")
+sha512sums=('6ab72285b2e12385bc54aac000973ded2dc57e50ea36fd20166b59e2f2a059dbc74033678ba2262c868596609ef24c26c49f95227ee8213df0de9934a9502f6b')
prepare() {
- # https://github.com/python-greenlet/greenlet/issues/131
- patch -d greenlet-$pkgver -Np1 < port-to-py3.7-handle-tstate-exc_info.patch
cp -a greenlet-$pkgver{,-py2}
}
Deleted: port-to-py3.7-handle-tstate-exc_info.patch
===================================================================
--- port-to-py3.7-handle-tstate-exc_info.patch 2018-07-18 21:46:08 UTC (rev 362321)
+++ port-to-py3.7-handle-tstate-exc_info.patch 2018-07-18 21:56:15 UTC (rev 362322)
@@ -1,183 +0,0 @@
-From 8d998cb79ebea348a8f5258b642a1f772ecd93b8 Mon Sep 17 00:00:00 2001
-From: Victor Stinner <vstinner at redhat.com>
-Date: Tue, 3 Jul 2018 16:01:37 +0200
-Subject: [PATCH] Fix #131: Port to Py3.7: handle tstate->exc_info
-
-Fix Python 3.7 support: handle also tstate->exc_info, not only
-tstate->exc_state.
----
- greenlet.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++--------------
- greenlet.h | 9 +++++++++
- 2 files changed, 59 insertions(+), 14 deletions(-)
-
-diff --git a/greenlet.c b/greenlet.c
-index 0c85dd8..541efda 100644
---- a/greenlet.c
-+++ b/greenlet.c
-@@ -153,6 +153,21 @@ static PyObject* ts_empty_dict;
- #define GREENLET_tp_is_gc 0
- #endif /* !GREENLET_USE_GC */
-
-+static void green_clear_exc(PyGreenlet *g)
-+{
-+#ifdef GREENLET_USE_EXC_INFO
-+ g->exc_info = NULL;
-+ g->exc_state.exc_type = NULL;
-+ g->exc_state.exc_value = NULL;
-+ g->exc_state.exc_traceback = NULL;
-+ g->exc_state.previous_item = NULL;
-+#else
-+ g->exc_type = NULL;
-+ g->exc_value = NULL;
-+ g->exc_traceback = NULL;
-+#endif
-+}
-+
- static PyGreenlet* green_create_main(void)
- {
- PyGreenlet* gmain;
-@@ -460,10 +475,9 @@ static int g_switchstack(void)
- PyThreadState* tstate = PyThreadState_GET();
- current->recursion_depth = tstate->recursion_depth;
- current->top_frame = tstate->frame;
--#if PY_VERSION_HEX >= 0x030700A3
-- current->exc_type = tstate->exc_state.exc_type;
-- current->exc_value = tstate->exc_state.exc_value;
-- current->exc_traceback = tstate->exc_state.exc_traceback;
-+#ifdef GREENLET_USE_EXC_INFO
-+ current->exc_info = tstate->exc_info;
-+ current->exc_state = tstate->exc_state;
- #else
- current->exc_type = tstate->exc_type;
- current->exc_value = tstate->exc_value;
-@@ -474,9 +488,13 @@ static int g_switchstack(void)
- if (err < 0) { /* error */
- PyGreenlet* current = ts_current;
- current->top_frame = NULL;
-+#ifdef GREENLET_USE_EXC_INFO
-+ green_clear_exc(current);
-+#else
- current->exc_type = NULL;
- current->exc_value = NULL;
- current->exc_traceback = NULL;
-+#endif
-
- assert(ts_origin == NULL);
- ts_target = NULL;
-@@ -488,18 +506,20 @@ static int g_switchstack(void)
- tstate->recursion_depth = target->recursion_depth;
- tstate->frame = target->top_frame;
- target->top_frame = NULL;
--#if PY_VERSION_HEX >= 0x030700A3
-- tstate->exc_state.exc_type = target->exc_type;
-- tstate->exc_state.exc_value = target->exc_value;
-- tstate->exc_state.exc_traceback = target->exc_traceback;
-+#ifdef GREENLET_USE_EXC_INFO
-+ tstate->exc_state = target->exc_state;
-+ if (target->exc_info != NULL) {
-+ tstate->exc_info = target->exc_info;
-+ }
-+ else {
-+ tstate->exc_info = &tstate->exc_state;
-+ }
- #else
- tstate->exc_type = target->exc_type;
- tstate->exc_value = target->exc_value;
- tstate->exc_traceback = target->exc_traceback;
- #endif
-- target->exc_type = NULL;
-- target->exc_value = NULL;
-- target->exc_traceback = NULL;
-+ green_clear_exc(target);
-
- assert(ts_origin == NULL);
- Py_INCREF(target);
-@@ -752,9 +772,7 @@ static int GREENLET_NOINLINE(g_initialstub)(void* mark)
- self->stack_prev = ts_current;
- }
- self->top_frame = NULL;
-- self->exc_type = NULL;
-- self->exc_value = NULL;
-- self->exc_traceback = NULL;
-+ green_clear_exc(self);
- self->recursion_depth = PyThreadState_GET()->recursion_depth;
-
- /* restore arguments in case they are clobbered */
-@@ -935,9 +953,15 @@ green_traverse(PyGreenlet *self, visitproc visit, void *arg)
- - frames are not visited: alive greenlets are not garbage collected anyway */
- Py_VISIT((PyObject*)self->parent);
- Py_VISIT(self->run_info);
-+#ifdef GREENLET_USE_EXC_INFO
-+ Py_VISIT(self->exc_state.exc_type);
-+ Py_VISIT(self->exc_state.exc_value);
-+ Py_VISIT(self->exc_state.exc_traceback);
-+#else
- Py_VISIT(self->exc_type);
- Py_VISIT(self->exc_value);
- Py_VISIT(self->exc_traceback);
-+#endif
- Py_VISIT(self->dict);
- return 0;
- }
-@@ -961,9 +985,15 @@ static int green_clear(PyGreenlet* self)
- so even if it switches we are relatively safe. */
- Py_CLEAR(self->parent);
- Py_CLEAR(self->run_info);
-+#ifdef GREENLET_USE_EXC_INFO
-+ Py_CLEAR(self->exc_state.exc_type);
-+ Py_CLEAR(self->exc_state.exc_value);
-+ Py_CLEAR(self->exc_state.exc_traceback);
-+#else
- Py_CLEAR(self->exc_type);
- Py_CLEAR(self->exc_value);
- Py_CLEAR(self->exc_traceback);
-+#endif
- Py_CLEAR(self->dict);
- return 0;
- }
-@@ -1030,9 +1060,15 @@ static void green_dealloc(PyGreenlet* self)
- PyObject_ClearWeakRefs((PyObject *) self);
- Py_CLEAR(self->parent);
- Py_CLEAR(self->run_info);
-+#ifdef GREENLET_USE_EXC_INFO
-+ Py_CLEAR(self->exc_state.exc_type);
-+ Py_CLEAR(self->exc_state.exc_value);
-+ Py_CLEAR(self->exc_state.exc_traceback);
-+#else
- Py_CLEAR(self->exc_type);
- Py_CLEAR(self->exc_value);
- Py_CLEAR(self->exc_traceback);
-+#endif
- Py_CLEAR(self->dict);
- Py_TYPE(self)->tp_free((PyObject*) self);
- }
-diff --git a/greenlet.h b/greenlet.h
-index 6c9b8ee..995f500 100644
---- a/greenlet.h
-+++ b/greenlet.h
-@@ -13,6 +13,10 @@ extern "C" {
-
- #define GREENLET_VERSION "0.4.13"
-
-+#if PY_VERSION_HEX >= 0x030700A3
-+# define GREENLET_USE_EXC_INFO
-+#endif
-+
- typedef struct _greenlet {
- PyObject_HEAD
- char* stack_start;
-@@ -25,9 +29,14 @@ typedef struct _greenlet {
- struct _frame* top_frame;
- int recursion_depth;
- PyObject* weakreflist;
-+#ifdef GREENLET_USE_EXC_INFO
-+ _PyErr_StackItem *exc_info;
-+ _PyErr_StackItem exc_state;
-+#else
- PyObject* exc_type;
- PyObject* exc_value;
- PyObject* exc_traceback;
-+#endif
- PyObject* dict;
- } PyGreenlet;
-
More information about the arch-commits
mailing list