Hello community, here is the log from the commit of package python-greenlet for openSUSE:Factory checked in at 2018-08-10 09:47:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-greenlet (Old) and /work/SRC/openSUSE:Factory/.python-greenlet.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-greenlet" Fri Aug 10 09:47:10 2018 rev:31 rq:627924 version:0.4.14 Changes: -------- --- /work/SRC/openSUSE:Factory/python-greenlet/python-greenlet.changes 2018-02-02 22:23:37.782101256 +0100 +++ /work/SRC/openSUSE:Factory/.python-greenlet.new/python-greenlet.changes 2018-08-10 09:47:15.542026679 +0200 @@ -1,0 +2,9 @@ +Tue Aug 7 15:26:22 UTC 2018 - [email protected] + +- Update to 0.4.14 + * Support for C-SKY architecture + * Fixed support for ppc64 ABI + * Fixed support for Python 3.7 +- Remove upstream-included greenlet-ppc64le.patch + +------------------------------------------------------------------- Old: ---- greenlet-0.4.13.tar.gz greenlet-ppc64le.patch New: ---- greenlet-0.4.14.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-greenlet.spec ++++++ --- /var/tmp/diff_new_pack.DbthtR/_old 2018-08-10 09:47:15.970027367 +0200 +++ /var/tmp/diff_new_pack.DbthtR/_new 2018-08-10 09:47:15.974027373 +0200 @@ -18,22 +18,21 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} -%bcond_without test Name: python-greenlet -Version: 0.4.13 +Version: 0.4.14 Release: 0 Summary: Lightweight in-process concurrent programming License: MIT Group: Development/Libraries/Python -Url: http://pypi.python.org/pypi/greenlet +Url: https://github.com/python-greenlet/greenlet Source0: https://files.pythonhosted.org/packages/source/g/greenlet/greenlet-%{version}.tar.gz -Patch0: greenlet-ppc64le.patch BuildRequires: %{python_module devel} BuildRequires: %{python_module setuptools} BuildRequires: fdupes -BuildRequires: gcc-c++ +BuildRequires: c++_compiler BuildRequires: python-rpm-macros BuildRequires: python3-Sphinx + %python_subpackages %description @@ -53,7 +52,6 @@ %prep %setup -q -n greenlet-%{version} -%patch0 -p1 %build export CFLAGS="%{optflags} -fno-tree-dominator-opts -fno-strict-aliasing" @@ -64,19 +62,19 @@ %python_install %python_expand %fdupes %{buildroot}%{$python_sitearch} -%if %{with test} %check export CFLAGS="%{optflags} -fno-tree-dominator-opts -fno-strict-aliasing" %python_exec setup.py -q test -%endif %files %{python_files} -%doc AUTHORS NEWS README.rst LICENSE* +%doc AUTHORS NEWS README.rst %doc doc/_build/html/ +%license LICENSE* %{python_sitearch}/* %files %{python_files devel} -%doc AUTHORS LICENSE* +%doc AUTHORS +%license LICENSE* %{_includedir}/python%{python_version}*/greenlet/ %changelog ++++++ greenlet-0.4.13.tar.gz -> greenlet-0.4.14.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greenlet-0.4.13/.travis.yml new/greenlet-0.4.14/.travis.yml --- old/greenlet-0.4.13/.travis.yml 2017-01-06 11:34:06.000000000 +0100 +++ new/greenlet-0.4.14/.travis.yml 2018-07-04 20:40:29.000000000 +0200 @@ -9,6 +9,7 @@ - 3.4 - 3.5 - 3.6 + - 3.7-dev install: python setup.py build_ext -i diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greenlet-0.4.13/AUTHORS new/greenlet-0.4.14/AUTHORS --- old/greenlet-0.4.13/AUTHORS 2018-01-29 07:12:52.000000000 +0100 +++ new/greenlet-0.4.14/AUTHORS 2018-07-04 20:40:38.000000000 +0200 @@ -29,6 +29,8 @@ * Jared Kuolt * Jason Madden * Kyle Ambroff +* Laszlo Boszormenyi +* Mao Han * Marc Abramowitz * Marc Schlaich * Marcin Bachry @@ -42,4 +44,6 @@ * Tony Bowles * Tony Breeds * Trevor Bowen +* Tulio Magno Quites Machado Filho * Ulrich Weigand +* Victor Stinner diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greenlet-0.4.13/MANIFEST.in new/greenlet-0.4.14/MANIFEST.in --- old/greenlet-0.4.13/MANIFEST.in 2018-01-31 22:14:35.000000000 +0100 +++ new/greenlet-0.4.14/MANIFEST.in 2018-07-17 20:34:31.000000000 +0200 @@ -25,6 +25,7 @@ include platform/switch_amd64_unix.h include platform/switch_arm32_gcc.h include platform/switch_arm32_ios.h +include platform/switch_csky_gcc.h include platform/switch_m68k_gcc.h include platform/switch_mips_unix.h include platform/switch_ppc64_linux.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greenlet-0.4.13/NEWS new/greenlet-0.4.14/NEWS --- old/greenlet-0.4.13/NEWS 2018-01-31 22:12:21.000000000 +0100 +++ new/greenlet-0.4.14/NEWS 2018-07-17 20:48:49.000000000 +0200 @@ -1,3 +1,9 @@ +0.4.14 +====== +- Support for C-SKY architecture +- Fixed support for ppc64 ABI +- Fixed support for Python 3.7 + 0.4.13 ====== - Support for Python 3.7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greenlet-0.4.13/PKG-INFO new/greenlet-0.4.14/PKG-INFO --- old/greenlet-0.4.13/PKG-INFO 2018-01-31 22:24:03.000000000 +0100 +++ new/greenlet-0.4.14/PKG-INFO 2018-07-17 20:51:27.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: greenlet -Version: 0.4.13 +Version: 0.4.14 Summary: Lightweight in-process concurrent programming Home-page: https://github.com/python-greenlet/greenlet Author: Alexey Borzenkov diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greenlet-0.4.13/appveyor.yml new/greenlet-0.4.14/appveyor.yml --- old/greenlet-0.4.13/appveyor.yml 2018-01-29 07:14:13.000000000 +0100 +++ new/greenlet-0.4.14/appveyor.yml 2018-07-17 20:48:49.000000000 +0200 @@ -1,4 +1,4 @@ -version: 0.4.12.{build} +version: 0.4.14.{build} environment: global: # SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the @@ -48,13 +48,21 @@ PYTHON_ARCH: "64" PYTHON_VERSION: "3.6.x" + - PYTHON_ROOT: "C:\\Python37" + PYTHON_ARCH: "32" + PYTHON_VERSION: "3.7.x" + + - PYTHON_ROOT: "C:\\Python37-x64" + PYTHON_ARCH: "64" + PYTHON_VERSION: "3.7.x" + install: - "SET PATH=%PYTHON_ROOT%;%PYTHON_ROOT%\\Scripts;%PATH%" - "python --version" - "python -c \"import struct; print(struct.calcsize('P') * 8)\"" # Upgrade pip to the latest version - - "python appveyor\\run_pip.py install --disable-pip-version-check --upgrade pip" + #- "python appveyor\\run_pip.py install --disable-pip-version-check --upgrade pip" # Install requirements for running tests and building artifacts - "%CMD_IN_ENV% pip install --upgrade -r dev-requirements.txt" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greenlet-0.4.13/greenlet.c new/greenlet-0.4.14/greenlet.c --- old/greenlet-0.4.13/greenlet.c 2017-12-06 19:25:34.000000000 +0100 +++ new/greenlet-0.4.14/greenlet.c 2018-07-04 20:40:29.000000000 +0200 @@ -153,6 +153,21 @@ #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 @@ 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 @@ 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,15 @@ 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; + tstate->exc_info = target->exc_info ? target->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 +767,7 @@ 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 +948,15 @@ - 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 +980,15 @@ 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 +1055,15 @@ 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greenlet-0.4.13/greenlet.h new/greenlet-0.4.14/greenlet.h --- old/greenlet-0.4.13/greenlet.h 2018-01-31 22:13:50.000000000 +0100 +++ new/greenlet-0.4.14/greenlet.h 2018-07-17 20:48:49.000000000 +0200 @@ -11,7 +11,11 @@ extern "C" { #endif -#define GREENLET_VERSION "0.4.13" +#define GREENLET_VERSION "0.4.14" + +#if PY_VERSION_HEX >= 0x030700A3 +# define GREENLET_USE_EXC_INFO +#endif typedef struct _greenlet { PyObject_HEAD @@ -25,9 +29,14 @@ 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; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greenlet-0.4.13/platform/switch_csky_gcc.h new/greenlet-0.4.14/platform/switch_csky_gcc.h --- old/greenlet-0.4.13/platform/switch_csky_gcc.h 1970-01-01 01:00:00.000000000 +0100 +++ new/greenlet-0.4.14/platform/switch_csky_gcc.h 2018-06-28 21:43:26.000000000 +0200 @@ -0,0 +1,48 @@ +#ifdef SLP_EVAL +#define STACK_MAGIC 0 +#define REG_FP "r8" +#ifdef __CSKYABIV2__ +#define REGS_TO_SAVE_GENERAL "r4", "r5", "r6", "r7", "r9", "r10", "r11", "r15",\ + "r16", "r17", "r18", "r19", "r20", "r21", "r22",\ + "r23", "r24", "r25" + +#if defined (__CSKY_HARD_FLOAT__) || (__CSKY_VDSP__) +#define REGS_TO_SAVE REGS_TO_SAVE_GENERAL, "vr8", "vr9", "vr10", "vr11", "vr12",\ + "vr13", "vr14", "vr15" +#else +#define REGS_TO_SAVE REGS_TO_SAVE_GENERAL +#endif +#else +#define REGS_TO_SAVE "r9", "r10", "r11", "r12", "r13", "r15" +#endif + + +static int +#ifdef __GNUC__ +__attribute__((optimize("no-omit-frame-pointer"))) +#endif +slp_switch(void) +{ + register int *stackref, stsizediff; + int result; + + __asm__ volatile ("" : : : REGS_TO_SAVE); + __asm__ ("mov %0, sp" : "=r" (stackref)); + { + SLP_SAVE_STATE(stackref, stsizediff); + __asm__ volatile ( + "addu sp,%0\n" + "addu "REG_FP",%0\n" + : + : "r" (stsizediff) + ); + + SLP_RESTORE_STATE(); + } + __asm__ volatile ("movi %0, 0" : "=r" (result)); + __asm__ volatile ("" : : : REGS_TO_SAVE); + + return result; +} + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greenlet-0.4.13/platform/switch_ppc64_linux.h new/greenlet-0.4.14/platform/switch_ppc64_linux.h --- old/greenlet-0.4.13/platform/switch_ppc64_linux.h 2016-12-11 00:52:06.000000000 +0100 +++ new/greenlet-0.4.14/platform/switch_ppc64_linux.h 2018-06-28 21:43:26.000000000 +0200 @@ -2,6 +2,12 @@ * this is the internal transfer function. * * HISTORY + * 21-Mar-18 Tulio Magno Quites Machado Filho <[email protected]> + * Added r30 to the list of saved registers in order to fully comply with + * both ppc64 ELFv1 ABI and the ppc64le ELFv2 ABI, that classify this + * register as a nonvolatile register used for local variables. + * 21-Mar-18 Laszlo Boszormenyi <[email protected]> + * Save r2 (TOC pointer) manually. * 10-Dec-13 Ulrich Weigand <[email protected]> * Support ELFv2 ABI. Save float/vector registers. * 09-Mar-12 Michael Ellerman <[email protected]> @@ -56,8 +62,9 @@ #define ALTIVEC_REGS #endif -#define REGS_TO_SAVE "r2", "r14", "r15", "r16", "r17", "r18", "r19", "r20", \ - "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", "r31", \ +#define REGS_TO_SAVE "r14", "r15", "r16", "r17", "r18", "r19", "r20", \ + "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", \ + "r30","r31", \ "fr14", "fr15", "fr16", "fr17", "fr18", "fr19", "fr20", "fr21", \ "fr22", "fr23", "fr24", "fr25", "fr26", "fr27", "fr28", "fr29", \ "fr30", "fr31", \ @@ -69,7 +76,9 @@ { register int err; register long *stackref, stsizediff; + void * toc; __asm__ volatile ("" : : : REGS_TO_SAVE); + __asm__ volatile ("std 2, %0" : "=m" (toc)); __asm__ ("mr %0, 1" : "=r" (stackref) : ); { SLP_SAVE_STATE(stackref, stsizediff); @@ -82,6 +91,7 @@ ); SLP_RESTORE_STATE(); } + __asm__ volatile ("ld 2, %0" : : "m" (toc)); __asm__ volatile ("" : : : REGS_TO_SAVE); __asm__ volatile ("li %0, 0" : "=r" (err)); return err; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greenlet-0.4.13/setup.py new/greenlet-0.4.14/setup.py --- old/greenlet-0.4.13/setup.py 2018-01-31 22:13:38.000000000 +0100 +++ new/greenlet-0.4.14/setup.py 2018-07-17 20:48:49.000000000 +0200 @@ -70,7 +70,7 @@ setup( name="greenlet", - version='0.4.13', + version='0.4.14', description='Lightweight in-process concurrent programming', long_description=readfile("README.rst"), maintainer="Alexey Borzenkov", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greenlet-0.4.13/slp_platformselect.h new/greenlet-0.4.14/slp_platformselect.h --- old/greenlet-0.4.13/slp_platformselect.h 2018-01-29 07:12:31.000000000 +0100 +++ new/greenlet-0.4.14/slp_platformselect.h 2018-06-28 21:43:26.000000000 +0200 @@ -47,4 +47,6 @@ #include "platform/switch_aarch64_gcc.h" /* Aarch64 ABI */ #elif defined(__GNUC__) && defined(__mc68000__) #include "platform/switch_m68k_gcc.h" /* gcc on m68k */ +#elif defined(__GNUC__) && defined(__csky__) +#include "platform/switch_csky_gcc.h" /* gcc on csky */ #endif
