From 54d25f3be02aee857f2a5508b677f9a4c4341c8e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?=
Date: Fri, 18 Jan 2013 13:53:55 +0000
Subject: [PATCH 1/5] update to 0.4.0
---
.gitignore | 1 +
get-rid-of-ts_origin.patch | 106 -------------------------------------
i686-register-fixes.patch | 62 ----------------------
ppc64-support.patch | 104 ------------------------------------
python-greenlet.spec | 25 +++------
sources | 2 +-
6 files changed, 9 insertions(+), 291 deletions(-)
delete mode 100644 get-rid-of-ts_origin.patch
delete mode 100644 i686-register-fixes.patch
delete mode 100644 ppc64-support.patch
diff --git a/.gitignore b/.gitignore
index bda0572..39f4c4d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
greenlet-0.3.1.tar.gz
+/greenlet-0.4.0.zip
diff --git a/get-rid-of-ts_origin.patch b/get-rid-of-ts_origin.patch
deleted file mode 100644
index 0840b5f..0000000
--- a/get-rid-of-ts_origin.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-diff -up greenlet-0.3.1/greenlet.c.get-rid-of-ts_origin greenlet-0.3.1/greenlet.c
---- greenlet-0.3.1/greenlet.c.get-rid-of-ts_origin 2010-04-05 17:24:25.000000000 -0400
-+++ greenlet-0.3.1/greenlet.c 2011-10-19 13:59:30.485035920 -0400
-@@ -116,10 +116,8 @@ extern PyTypeObject PyGreenlet_Type;
-
- /* The current greenlet in this thread state (holds a reference) */
- static PyGreenlet* ts_current = NULL;
--/* Holds a reference to the switching-from stack during the slp switch */
--static PyGreenlet* ts_origin = NULL;
- /* Holds a reference to the switching-to stack during the slp switch */
--static PyGreenlet* ts_target = NULL;
-+static PyGreenlet* volatile ts_target = NULL;
- /* NULL if error, otherwise args tuple to pass around during slp switch */
- static PyObject* ts_passaround_args = NULL;
- static PyObject* ts_passaround_kwargs = NULL;
-@@ -257,6 +255,7 @@ static int g_save(PyGreenlet* g, char* s
- static void slp_restore_state(void)
- {
- PyGreenlet* g = ts_target;
-+ PyGreenlet* owner = ts_current;
-
- /* Restore the heap copy back into the C stack */
- if (g->stack_saved != 0) {
-@@ -265,30 +264,32 @@ static void slp_restore_state(void)
- g->stack_copy = NULL;
- g->stack_saved = 0;
- }
-- if (ts_current->stack_stop == g->stack_stop)
-- g->stack_prev = ts_current->stack_prev;
-- else
-- g->stack_prev = ts_current;
-+ if (owner->stack_start == NULL)
-+ owner = owner->stack_prev; /* greenlet is dying, skip it */
-+ while (owner && owner->stack_stop <= g->stack_stop)
-+ owner = owner->stack_prev; /* find greenlet with more stack */
-+ g->stack_prev = owner;
- }
-
- static int slp_save_state(char* stackref)
- {
- /* must free all the C stack up to target_stop */
- char* target_stop = ts_target->stack_stop;
-- assert(ts_current->stack_saved == 0);
-- if (ts_current->stack_start == NULL)
-- ts_current = ts_current->stack_prev; /* not saved if dying */
-+ PyGreenlet* owner = ts_current;
-+ assert(owner->stack_saved == 0);
-+ if (owner->stack_start == NULL)
-+ owner = owner->stack_prev; /* not saved if dying */
- else
-- ts_current->stack_start = stackref;
-+ owner->stack_start = stackref;
-
-- while (ts_current->stack_stop < target_stop) {
-+ while (owner->stack_stop < target_stop) {
- /* ts_current is entierely within the area to free */
-- if (g_save(ts_current, ts_current->stack_stop))
-+ if (g_save(owner, owner->stack_stop))
- return -1; /* XXX */
-- ts_current = ts_current->stack_prev;
-+ owner = owner->stack_prev;
- }
-- if (ts_current != ts_target) {
-- if (g_save(ts_current, target_stop))
-+ if (owner != ts_target) {
-+ if (g_save(owner, target_stop))
- return -1; /* XXX */
- }
- return 0;
-@@ -337,11 +338,11 @@ static int g_switchstack(void)
- */
- int err;
- { /* save state */
-+ PyGreenlet* current = ts_current;
- PyThreadState* tstate = PyThreadState_GET();
-- ts_current->recursion_depth = tstate->recursion_depth;
-- ts_current->top_frame = tstate->frame;
-+ current->recursion_depth = tstate->recursion_depth;
-+ current->top_frame = tstate->frame;
- }
-- ts_origin = ts_current;
- err = _PyGreenlet_slp_switch();
- if (err < 0) { /* error */
- Py_XDECREF(ts_passaround_args);
-@@ -351,13 +352,15 @@ static int g_switchstack(void)
- ts_passaround_kwargs = NULL;
- }
- else {
-+ PyGreenlet* target = ts_target;
-+ PyGreenlet* origin = ts_current;
- PyThreadState* tstate = PyThreadState_GET();
-- tstate->recursion_depth = ts_target->recursion_depth;
-- tstate->frame = ts_target->top_frame;
-- ts_target->top_frame = NULL;
-- ts_current = ts_target;
-- Py_INCREF(ts_target);
-- Py_DECREF(ts_origin);
-+ tstate->recursion_depth = target->recursion_depth;
-+ tstate->frame = target->top_frame;
-+ target->top_frame = NULL;
-+ ts_current = target;
-+ Py_INCREF(target);
-+ Py_DECREF(origin);
- }
- return err;
- }
diff --git a/i686-register-fixes.patch b/i686-register-fixes.patch
deleted file mode 100644
index b7a26d0..0000000
--- a/i686-register-fixes.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-# HG changeset patch
-# User Alexey Borzenkov
-# Date 1313701525 -14400
-# Node ID 25bf29f4d3b79b026c1c05787bb741a8e7ef2229
-# Parent c0bf397a723d4b61d7ef78cf575dea4c0fdb527e
-Fix compilation and register problems on some i386 configurations
-
-diff -r c0bf397a723d4b61d7ef78cf575dea4c0fdb527e -r 25bf29f4d3b79b026c1c05787bb741a8e7ef2229 platform/switch_x86_unix.h
---- a/platform/switch_x86_unix.h Thu Aug 18 02:44:20 2011 +0400
-+++ b/platform/switch_x86_unix.h Fri Aug 19 01:05:25 2011 +0400
-@@ -2,6 +2,8 @@
- * this is the internal transfer function.
- *
- * HISTORY
-+ * 19-Aug-11 Alexey Borzenkov
-+ * Correctly save ebp, ebx and cw
- * 07-Sep-05 (py-dev mailing list discussion)
- * removed 'ebx' from the register-saved. !!!! WARNING !!!!
- * It means that this file can no longer be compiled statically!
-@@ -34,18 +36,13 @@
- static int
- slp_switch(void)
- {
-+ void *ebp, *ebx;
-+ unsigned short cw;
- register int *stackref, stsizediff;
-- /* !!!!WARNING!!!! need to add "ebx" in the next line, as well as in the
-- * last line of this function, if this header file is meant to be compiled
-- * non-dynamically!
-- */
-- __asm__ volatile ("" : : :
-- "esi",
-- "edi"
--#ifdef __MINGW32__
-- , "ebx"
--#endif
-- );
-+ __asm__ volatile ("" : : : "esi", "edi");
-+ __asm__ volatile ("fstcw %0" : "=m" (cw));
-+ __asm__ volatile ("movl %%ebp, %0" : "=m" (ebp));
-+ __asm__ volatile ("movl %%ebx, %0" : "=m" (ebx));
- __asm__ ("movl %%esp, %0" : "=g" (stackref));
- {
- SLP_SAVE_STATE(stackref, stsizediff);
-@@ -57,13 +54,10 @@
- );
- SLP_RESTORE_STATE();
- }
-- __asm__ volatile ("" : : :
-- "esi",
-- "edi"
--#ifdef __MINGW32__
-- , "ebx"
--#endif
-- );
-+ __asm__ volatile ("movl %0, %%ebx" : : "m" (ebx));
-+ __asm__ volatile ("movl %0, %%ebp" : : "m" (ebp));
-+ __asm__ volatile ("fldcw %0" : : "m" (cw));
-+ __asm__ volatile ("" : : : "esi", "edi");
- return 0;
- }
-
diff --git a/ppc64-support.patch b/ppc64-support.patch
deleted file mode 100644
index 6326228..0000000
--- a/ppc64-support.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-Backport from 0.4.0
-
-commit 6f3714499e24b88cc05a02c8692015c5c17c5508
-Author: Michael Ellerman
-Date: Wed Apr 18 17:58:00 2012 -0700
-
- Add ppc64 platform
-
- Add 64-bit ppc support with a new platform file and update to the
- platformselect code.
-
- Signed-off-by: Michael Ellerman
- Signed-off-by: Nishanth Aravamudan
- (cherry picked from commit b17773a7807f85f897413391f59d4a6d65ac9008)
-
-diff --git a/platform/switch_ppc64_linux.h b/platform/switch_ppc64_linux.h
-new file mode 100644
-index 0000000..ded1fda
---- /dev/null
-+++ b/platform/switch_ppc64_linux.h
-@@ -0,0 +1,70 @@
-+/*
-+ * this is the internal transfer function.
-+ *
-+ * HISTORY
-+ * 09-Mar-12 Michael Ellerman
-+ * 64-bit implementation, copied from 32-bit.
-+ * 07-Sep-05 (py-dev mailing list discussion)
-+ * removed 'r31' from the register-saved. !!!! WARNING !!!!
-+ * It means that this file can no longer be compiled statically!
-+ * It is now only suitable as part of a dynamic library!
-+ * 14-Jan-04 Bob Ippolito
-+ * added cr2-cr4 to the registers to be saved.
-+ * Open questions: Should we save FP registers?
-+ * What about vector registers?
-+ * Differences between darwin and unix?
-+ * 24-Nov-02 Christian Tismer
-+ * needed to add another magic constant to insure
-+ * that f in slp_eval_frame(PyFrameObject *f)
-+ * STACK_REFPLUS will probably be 1 in most cases.
-+ * gets included into the saved stack area.
-+ * 04-Oct-02 Gustavo Niemeyer
-+ * Ported from MacOS version.
-+ * 17-Sep-02 Christian Tismer
-+ * after virtualizing stack save/restore, the
-+ * stack size shrunk a bit. Needed to introduce
-+ * an adjustment STACK_MAGIC per platform.
-+ * 15-Sep-02 Gerd Woetzel
-+ * slightly changed framework for sparc
-+ * 29-Jun-02 Christian Tismer
-+ * Added register 13-29, 31 saves. The same way as
-+ * Armin Rigo did for the x86_unix version.
-+ * This seems to be now fully functional!
-+ * 04-Mar-02 Hye-Shik Chang
-+ * Ported from i386.
-+ */
-+
-+#define STACK_REFPLUS 1
-+
-+#ifdef SLP_EVAL
-+
-+#define STACK_MAGIC 6
-+
-+/* !!!!WARNING!!!! need to add "r31" in the next line if this header file
-+ * is meant to be compiled non-dynamically!
-+ */
-+#define REGS_TO_SAVE "r2", "r14", "r15", "r16", "r17", "r18", "r19", "r20", \
-+ "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", "r31", \
-+ "cr2", "cr3", "cr4"
-+static int
-+slp_switch(void)
-+{
-+ register long *stackref, stsizediff;
-+ __asm__ volatile ("" : : : REGS_TO_SAVE);
-+ __asm__ ("mr %0, 1" : "=g" (stackref) : );
-+ {
-+ SLP_SAVE_STATE(stackref, stsizediff);
-+ __asm__ volatile (
-+ "mr 11, %0\n"
-+ "add 1, 1, 11\n"
-+ : /* no outputs */
-+ : "g" (stsizediff)
-+ : "11"
-+ );
-+ SLP_RESTORE_STATE();
-+ }
-+ __asm__ volatile ("" : : : REGS_TO_SAVE);
-+ return 0;
-+}
-+
-+#endif
-diff --git a/slp_platformselect.h b/slp_platformselect.h
-index 38b7ef4..68982d3 100644
---- a/slp_platformselect.h
-+++ b/slp_platformselect.h
-@@ -8,6 +8,8 @@
- #include "platform/switch_amd64_unix.h" /* gcc on amd64 */
- #elif defined(__GNUC__) && defined(__i386__)
- #include "platform/switch_x86_unix.h" /* gcc on X86 */
-+#elif defined(__GNUC__) && defined(__powerpc64__) && defined(__linux__)
-+#include "platform/switch_ppc64_linux.h" /* gcc on PowerPC 64-bit */
- #elif defined(__GNUC__) && defined(__PPC__) && defined(__linux__)
- #include "platform/switch_ppc_unix.h" /* gcc on PowerPC */
- #elif defined(__GNUC__) && defined(__ppc__) && defined(__APPLE__)
diff --git a/python-greenlet.spec b/python-greenlet.spec
index 9b1aacc..a9d9b79 100644
--- a/python-greenlet.spec
+++ b/python-greenlet.spec
@@ -3,23 +3,13 @@
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
Name: python-greenlet
-Version: 0.3.1
-Release: 11%{?dist}
+Version: 0.4.0
+Release: 1%{?dist}
Summary: Lightweight in-process concurrent programming
Group: Development/Libraries
License: MIT
URL: http://pypi.python.org/pypi/greenlet
-Source0: http://pypi.python.org/packages/source/g/greenlet/greenlet-%{version}.tar.gz
-
-# Based on https://bitbucket.org/ambroff/greenlet/changeset/2d5b17472757
-# slightly fixed up to apply cleanly. Avoid rhbz#746771
-Patch1: get-rid-of-ts_origin.patch
-# Apply https://bitbucket.org/ambroff/greenlet/changeset/25bf29f4d3b7
-# to fix the i686 crash in rhbz#746771
-Patch2: i686-register-fixes.patch
-# Backport https://github.com/python-greenlet/greenlet/commit/b17773a7
-# from greenlet 0.4.0 to support ppc64
-Patch3: ppc64-support.patch
+Source0: http://pypi.python.org/packages/source/g/greenlet/greenlet-%{version}.zip
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -42,9 +32,6 @@ This package contains header files required for C modules development.
%prep
%setup -q -n greenlet-%{version}
-%patch1 -p1 -b .get-rid-of-ts_origin
-%patch2 -p1 -b .i686_register_fixes
-%patch3 -p1 -b .ppc64_support
%build
CFLAGS="$RPM_OPT_FLAGS" %{__python} setup.py build
@@ -67,12 +54,11 @@ rm -rf %{buildroot}
# Run the upstream benchmarking suite to further exercise the code:
PYTHONPATH=$(pwd) %{__python} benchmarks/chain.py
-PYTHONPATH=$(pwd) %{__python} benchmarks/switch.py
%endif
%files
%defattr(-,root,root,-)
-%doc doc/greenlet.txt README benchmarks AUTHORS NEWS
+%doc doc/greenlet.txt README.rst benchmarks AUTHORS NEWS
%{python_sitearch}/greenlet.so
%{python_sitearch}/greenlet*.egg-info
@@ -81,6 +67,9 @@ PYTHONPATH=$(pwd) %{__python} benchmarks/switch.py
%{_includedir}/python*/greenlet
%changelog
+* Fri Jan 18 2013 Pádraig Brady - 0.4.0-1
+- Update to 0.4.0
+
* Thu Oct 11 2012 Pádraig Brady
- 0.3.1-11
- Add support for ppc64
diff --git a/sources b/sources
index 2ce5558..a497d0c 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-8d75d7f3f659e915e286e1b0fa0e1c4d greenlet-0.3.1.tar.gz
+87887570082caadc08fb1f8671dbed71 greenlet-0.4.0.zip
From 18eeda691e15e1e6575cb91cd73aca213e04c152 Mon Sep 17 00:00:00 2001
From: Dennis Gilmore
Date: Thu, 14 Feb 2013 13:37:23 -0600
Subject: [PATCH 2/5] - Rebuilt for
https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
---
python-greenlet.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/python-greenlet.spec b/python-greenlet.spec
index a9d9b79..ba28edf 100644
--- a/python-greenlet.spec
+++ b/python-greenlet.spec
@@ -4,7 +4,7 @@
Name: python-greenlet
Version: 0.4.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Lightweight in-process concurrent programming
Group: Development/Libraries
License: MIT
@@ -67,6 +67,9 @@ PYTHONPATH=$(pwd) %{__python} benchmarks/chain.py
%{_includedir}/python*/greenlet
%changelog
+* Thu Feb 14 2013 Fedora Release Engineering - 0.4.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
* Fri Jan 18 2013 Pádraig Brady - 0.4.0-1
- Update to 0.4.0
From 74a0b5c2d91417fe204067f45b21d993bc3aa913 Mon Sep 17 00:00:00 2001
From: Dennis Gilmore
Date: Sun, 4 Aug 2013 02:54:26 -0500
Subject: [PATCH 3/5] - Rebuilt for
https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
---
python-greenlet.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/python-greenlet.spec b/python-greenlet.spec
index ba28edf..3c67484 100644
--- a/python-greenlet.spec
+++ b/python-greenlet.spec
@@ -4,7 +4,7 @@
Name: python-greenlet
Version: 0.4.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Lightweight in-process concurrent programming
Group: Development/Libraries
License: MIT
@@ -67,6 +67,9 @@ PYTHONPATH=$(pwd) %{__python} benchmarks/chain.py
%{_includedir}/python*/greenlet
%changelog
+* Sun Aug 04 2013 Fedora Release Engineering - 0.4.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
* Thu Feb 14 2013 Fedora Release Engineering - 0.4.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
From c5ea24f2b93d71ce05088a13185c00c5b49a1691 Mon Sep 17 00:00:00 2001
From: Kevin Fenzi
Date: Mon, 5 Aug 2013 20:34:24 -0600
Subject: [PATCH 4/5] Update to 0.4.1
- Fix FTBFS bug #993134
---
.gitignore | 1 +
python-greenlet.spec | 8 ++++++--
sources | 2 +-
3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/.gitignore b/.gitignore
index 39f4c4d..41babcb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
greenlet-0.3.1.tar.gz
/greenlet-0.4.0.zip
+/greenlet-0.4.1.zip
diff --git a/python-greenlet.spec b/python-greenlet.spec
index 3c67484..2ea8b7b 100644
--- a/python-greenlet.spec
+++ b/python-greenlet.spec
@@ -3,8 +3,8 @@
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
Name: python-greenlet
-Version: 0.4.0
-Release: 3%{?dist}
+Version: 0.4.1
+Release: 1%{?dist}
Summary: Lightweight in-process concurrent programming
Group: Development/Libraries
License: MIT
@@ -67,6 +67,10 @@ PYTHONPATH=$(pwd) %{__python} benchmarks/chain.py
%{_includedir}/python*/greenlet
%changelog
+* Mon Aug 05 2013 Kevin Fenzi 0.4.1-1
+- Update to 0.4.1
+- Fix FTBFS bug #993134
+
* Sun Aug 04 2013 Fedora Release Engineering - 0.4.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
diff --git a/sources b/sources
index a497d0c..6401625 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-87887570082caadc08fb1f8671dbed71 greenlet-0.4.0.zip
+c2deda75bdda59c38cae12a77cc53adc greenlet-0.4.1.zip
From 1f69689f939912a781089e7bb9ea57155223feee Mon Sep 17 00:00:00 2001
From: Orion Poplawski
Date: Thu, 23 Jan 2014 11:20:19 -0700
Subject: [PATCH 5/5] Update to 0.4.2
---
.gitignore | 1 +
python-greenlet.spec | 5 ++++-
sources | 2 +-
3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/.gitignore b/.gitignore
index 41babcb..5d4eb2e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
greenlet-0.3.1.tar.gz
/greenlet-0.4.0.zip
/greenlet-0.4.1.zip
+/greenlet-0.4.2.zip
diff --git a/python-greenlet.spec b/python-greenlet.spec
index 2ea8b7b..219838b 100644
--- a/python-greenlet.spec
+++ b/python-greenlet.spec
@@ -3,7 +3,7 @@
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
Name: python-greenlet
-Version: 0.4.1
+Version: 0.4.2
Release: 1%{?dist}
Summary: Lightweight in-process concurrent programming
Group: Development/Libraries
@@ -67,6 +67,9 @@ PYTHONPATH=$(pwd) %{__python} benchmarks/chain.py
%{_includedir}/python*/greenlet
%changelog
+* Thu Jan 23 2014 Orion Poplawski 0.4.2-1
+- Update to 0.4.2
+
* Mon Aug 05 2013 Kevin Fenzi 0.4.1-1
- Update to 0.4.1
- Fix FTBFS bug #993134
diff --git a/sources b/sources
index 6401625..f13713d 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-c2deda75bdda59c38cae12a77cc53adc greenlet-0.4.1.zip
+580a8a5e833351f7abdaedb1a877f7ac greenlet-0.4.2.zip