Date: Wednesday, July 18, 2018 @ 21:56:22 Author: foutrelis Revision: 362323
archrelease: copy trunk to community-staging-x86_64 Added: python-greenlet/repos/community-staging-x86_64/PKGBUILD (from rev 362322, python-greenlet/trunk/PKGBUILD) Deleted: python-greenlet/repos/community-staging-x86_64/PKGBUILD python-greenlet/repos/community-staging-x86_64/port-to-py3.7-handle-tstate-exc_info.patch --------------------------------------------+ PKGBUILD | 108 +++++++-------- port-to-py3.7-handle-tstate-exc_info.patch | 183 --------------------------- 2 files changed, 52 insertions(+), 239 deletions(-) Deleted: PKGBUILD =================================================================== --- PKGBUILD 2018-07-18 21:56:15 UTC (rev 362322) +++ PKGBUILD 2018-07-18 21:56:22 UTC (rev 362323) @@ -1,56 +0,0 @@ -# $Id$ -# Maintainer: Massimiliano Torromeo <massimiliano.torro...@gmail.com> -# Maintainer: Felix Yan <felixonm...@archlinux.org> -# Contributor: Ralf Schmitt <r...@systemexit.de> - -pkgbase=python-greenlet -pkgname=(python-greenlet python2-greenlet) -pkgver=0.4.13 -pkgrel=3 -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') - -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} -} - -build() { - cd "$srcdir"/greenlet-$pkgver - python setup.py build - - cd "$srcdir"/greenlet-$pkgver-py2 - python2 setup.py build -} - -check() { - cd "$srcdir"/greenlet-$pkgver - python setup.py test - - cd "$srcdir"/greenlet-$pkgver-py2 - python2 setup.py test -} - -package_python-greenlet() { - depends=('python') - - cd greenlet-$pkgver - python setup.py install -O1 --root="$pkgdir" - install -Dm0644 LICENSE.PSF "$pkgdir"/usr/share/licenses/$pkgname/LICENSE.PSF -} - -package_python2-greenlet() { - depends=('python2') - - cd greenlet-$pkgver-py2 - python2 setup.py install -O1 --root="$pkgdir" - install -Dm0644 LICENSE.PSF "$pkgdir"/usr/share/licenses/$pkgname/LICENSE.PSF -} Copied: python-greenlet/repos/community-staging-x86_64/PKGBUILD (from rev 362322, python-greenlet/trunk/PKGBUILD) =================================================================== --- PKGBUILD (rev 0) +++ PKGBUILD 2018-07-18 21:56:22 UTC (rev 362323) @@ -0,0 +1,52 @@ +# $Id$ +# Maintainer: Massimiliano Torromeo <massimiliano.torro...@gmail.com> +# Maintainer: Felix Yan <felixonm...@archlinux.org> +# Contributor: Ralf Schmitt <r...@systemexit.de> + +pkgbase=python-greenlet +pkgname=(python-greenlet python2-greenlet) +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") +sha512sums=('6ab72285b2e12385bc54aac000973ded2dc57e50ea36fd20166b59e2f2a059dbc74033678ba2262c868596609ef24c26c49f95227ee8213df0de9934a9502f6b') + +prepare() { + cp -a greenlet-$pkgver{,-py2} +} + +build() { + cd "$srcdir"/greenlet-$pkgver + python setup.py build + + cd "$srcdir"/greenlet-$pkgver-py2 + python2 setup.py build +} + +check() { + cd "$srcdir"/greenlet-$pkgver + python setup.py test + + cd "$srcdir"/greenlet-$pkgver-py2 + python2 setup.py test +} + +package_python-greenlet() { + depends=('python') + + cd greenlet-$pkgver + python setup.py install -O1 --root="$pkgdir" + install -Dm0644 LICENSE.PSF "$pkgdir"/usr/share/licenses/$pkgname/LICENSE.PSF +} + +package_python2-greenlet() { + depends=('python2') + + cd greenlet-$pkgver-py2 + python2 setup.py install -O1 --root="$pkgdir" + install -Dm0644 LICENSE.PSF "$pkgdir"/usr/share/licenses/$pkgname/LICENSE.PSF +} Deleted: port-to-py3.7-handle-tstate-exc_info.patch =================================================================== --- port-to-py3.7-handle-tstate-exc_info.patch 2018-07-18 21:56:15 UTC (rev 362322) +++ port-to-py3.7-handle-tstate-exc_info.patch 2018-07-18 21:56:22 UTC (rev 362323) @@ -1,183 +0,0 @@ -From 8d998cb79ebea348a8f5258b642a1f772ecd93b8 Mon Sep 17 00:00:00 2001 -From: Victor Stinner <vstin...@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; -