On Sun, Feb 03, 2013 at 11:21:54AM +0100, Julien Cristau wrote:
> On Sat, Jan 26, 2013 at 16:30:04 +0000, Javi Merino wrote:
> 
> > On Sat, Jan 26, 2013 at 01:45:44PM +0000, Javi Merino wrote:
> > > Hi Laszlo,
> > > 
> > > On Fri, 21 Dec 2012 22:50:40 +0000, Laszlo Boszormenyi wrote:
> > > > On Wed, 2012-12-19 at 19:55 +0000, Adam D. Barratt wrote:
> > > > > On Sat, 2012-11-24 at 13:34 +0000, Adam D. Barratt wrote:
> > > > > > On Fri, 2012-11-09 at 23:08 +0100, Jelmer Vernooij wrote:
> > > > > > > On Fri, 2012-11-09 at 06:08 +0000, Adam D. Barratt wrote:
> > > > > > > > It also itself FTBFS on a few architectures - see
> > > > > > > > https://buildd.debian.org/status/package.php?p=python-greenlet&suite=wheezy
> > > > > > > >  ; armel and mips{,el} are regressions from the current testing 
> > > > > > > > package.
> > > > > > > > 
> > > > > > > Thanks, I should've noticed that but hadn't. This is quite 
> > > > > > > surprising
> > > > > > > too, I don't see anything in the NMU that might be the cause of 
> > > > > > > this. 
> > > > > > 
> > > > > > I suspect the issue was already there - see #665890, which is also 
> > > > > > fixed
> > > > > > in sid already.
> > > > > 
> > > > > Laszlo, any chance of a fixed version?
> > > >  The good is that upstream uses git, I could check the individual
> > > > commits. The bad is that the places where it FTBFS are assembly codes.
> > > > Upstream reworked that parts with the relevant C code as well. So it's
> > > > not easy, I'd say impossible for me to backport those changes. I don't
> > > > speak ARM nor Sparc ASM at least.
> > > 
> > > You can find more info on how to fix the FTBFS in armel in #697406.
> > > Peter says that building python-greenlet from TPU with the version of
> > > platform/switch_arm32_gcc.h from 0.4.0 solves the issue in armel.
> > 
> > I've uploaded python-greenlet_0.3.1-2.2 to TPU which fixes the build
> > for armel (tested in a porterbox).  This won't fix the SPARC one
> > though.
> > 
> Are the debdiffs for the various NMUs in the BTS somewhere?

I've attached them to this email.

> 0.3.1-2.3
> seems to add /usr/share/dpkg/buildflags.mk to debian/rules, with no
> build-dependency, which is not the same thing as "compile with -O2 on
> mipsel".  Why?

That was an overlook on my side, I should fix that.  Or are you saying
that adding /usr/share/dpkg/buildflags.mk is not the right way of
fixing this?

Cheers,
Javi


diff -Nru python-greenlet-0.3.1/debian/changelog python-greenlet-0.3.1/debian/changelog
--- python-greenlet-0.3.1/debian/changelog	2012-08-25 15:05:43.000000000 +0100
+++ python-greenlet-0.3.1/debian/changelog	2013-01-26 15:57:17.000000000 +0000
@@ -1,3 +1,13 @@
+python-greenlet (0.3.1-2.2) wheezy-proposed-updates; urgency=low
+
+  * Non-maintainer upload.
+  * Fix "python-greenlet FTBFS on armel in testing" by using
+    platform/switch_arm32_gcc.h from 0.4.0 to avoid compile errors in
+    armel (Closes: #697406) (Thanks to Peter Michael Green
+    <plugw...@raspbian.org>)
+
+ -- Javi Merino <vi...@debian.org>  Sat, 26 Jan 2013 14:40:01 +0000
+
 python-greenlet (0.3.1-2.1) wheezy-proposed-updates; urgency=low
 
   * Non-maintainer upload.
diff -Nru python-greenlet-0.3.1/debian/patches/series python-greenlet-0.3.1/debian/patches/series
--- python-greenlet-0.3.1/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ python-greenlet-0.3.1/debian/patches/series	2013-01-04 21:56:14.000000000 +0000
@@ -0,0 +1 @@
+switch_arm32_update.patch
diff -Nru python-greenlet-0.3.1/debian/patches/switch_arm32_update.patch python-greenlet-0.3.1/debian/patches/switch_arm32_update.patch
--- python-greenlet-0.3.1/debian/patches/switch_arm32_update.patch	1970-01-01 01:00:00.000000000 +0100
+++ python-greenlet-0.3.1/debian/patches/switch_arm32_update.patch	2013-01-26 14:07:26.000000000 +0000
@@ -0,0 +1,64 @@
+Description: use platform/switch_arm32_gcc.h from 0.4.0 to avoid compile errors
+Author: Peter Michael Green <plugw...@raspbian.org>
+Bug-Debian: http://bugs.debian.org/697406
+
+--- python-greenlet-0.3.1.orig/platform/switch_arm32_gcc.h
++++ python-greenlet-0.3.1/platform/switch_arm32_gcc.h
+@@ -25,26 +25,51 @@
+ 
+ #ifdef SLP_EVAL
+ #define STACK_MAGIC 0
+-#define REGS_TO_SAVE /*"r1", "r2", "r3", "r4",*/ "r5", "r6", "fp", "ip", "lr"
++#define REG_SP "sp"
++#define REG_SPSP "sp,sp"
++#ifdef __thumb__
++#define REG_FP "r7"
++#define REG_FPFP "r7,r7"
++#define REGS_TO_SAVE_GENERAL "r4", "r5", "r6", "r8", "r9", "r10", "r11", "lr"
++#else
++#define REG_FP "fp"
++#define REG_FPFP "fp,fp"
++#define REGS_TO_SAVE_GENERAL "r4", "r5", "r6", "r7", "r8", "r9", "lr"
++#endif
++#if defined(__SOFTFP__)
++#define REGS_TO_SAVE REGS_TO_SAVE_GENERAL
++#elif defined(__VFP_FP__)
++#define REGS_TO_SAVE REGS_TO_SAVE_GENERAL, "d8", "d9", "d10", "d11", \
++                                           "d12", "d13", "d14", "d15"
++#elif defined(__MAVERICK__)
++#define REGS_TO_SAVE REGS_TO_SAVE_GENERAL, "mvf4", "mvf5", "mvf6", "mvf7", \
++                                           "mvf8", "mvf9", "mvf10", "mvf11", \
++                                           "mvf12", "mvf13", "mvf14", "mvf15"
++#else
++#define REGS_TO_SAVE REGS_TO_SAVE_GENERAL, "f4", "f5", "f6", "f7"
++#endif
+ 
+ static int
+ slp_switch(void)
+ {
++        void *fp;
+         register int *stackref, stsizediff;
+         __asm__ volatile ("" : : : REGS_TO_SAVE);
+-        __asm__ ("mov %0,sp" : "=g" (stackref));
++        __asm__ volatile ("mov r0," REG_FP "\n\tstr r0,%0" : "=m" (fp) : : "r0");
++        __asm__ ("mov %0," REG_SP : "=r" (stackref));
+         {
+                 SLP_SAVE_STATE(stackref, stsizediff);
+                 __asm__ volatile (
+-                    "add sp,sp,%0\n"
+-                    "add fp,fp,%0\n"
++                    "add " REG_SPSP ",%0\n"
++                    "add " REG_FPFP ",%0\n"
+                     :
+                     : "r" (stsizediff)
+                     );
+                 SLP_RESTORE_STATE();
+-                return 0;
+         }
++        __asm__ volatile ("ldr r0,%0\n\tmov " REG_FP ",r0" : : "m" (fp) : "r0");
+         __asm__ volatile ("" : : : REGS_TO_SAVE);
++        return 0;
+ }
+ 
+ #endif
+\ No newline at end of file
diff -Nru python-greenlet-0.3.1/debian/changelog python-greenlet-0.3.1/debian/changelog
--- python-greenlet-0.3.1/debian/changelog	2013-01-26 15:57:17.000000000 +0000
+++ python-greenlet-0.3.1/debian/changelog	2013-01-27 19:30:58.000000000 +0000
@@ -1,3 +1,13 @@
+python-greenlet (0.3.1-2.3) wheezy-proposed-updates; urgency=low
+
+  * Non-maintainer upload.
+  * Fix FTBFS in mipsel by compiling with -O2 which optimizes out the
+    buggy code (Closes: #665890)
+  * Fix "FTBFS on sparc" by adding fix_sparc_support.patch from upstream
+    (Closes: #699102)
+
+ -- Javi Merino <vi...@debian.org>  Sun, 27 Jan 2013 19:30:58 +0000
+
 python-greenlet (0.3.1-2.2) wheezy-proposed-updates; urgency=low
 
   * Non-maintainer upload.
diff -Nru python-greenlet-0.3.1/debian/patches/fix_sparc_support.patch python-greenlet-0.3.1/debian/patches/fix_sparc_support.patch
--- python-greenlet-0.3.1/debian/patches/fix_sparc_support.patch	1970-01-01 01:00:00.000000000 +0100
+++ python-greenlet-0.3.1/debian/patches/fix_sparc_support.patch	2013-01-27 19:04:13.000000000 +0000
@@ -0,0 +1,28 @@
+Author: unixtool1192 <unixtool1...@gmail.com>
+Origin: https://github.com/python-greenlet/greenlet/commit/619ab917e3ab47be7642ced21c8cfd8e8182844b
+Description: add support for debian sparc and openbsd5-sparc64
+
+--- a/platform/switch_sparc_sun_gcc.h
++++ b/platform/switch_sparc_sun_gcc.h
+@@ -19,9 +19,9 @@
+ 
+ #ifdef SLP_EVAL
+ 
+-#include <sys/trap.h>
+ 
+ #define STACK_MAGIC 0
++#define ST_FLUSH_WINDOWS 3
+ 
+ static int
+ slp_switch(void)
+--- a/slp_platformselect.h
++++ b/slp_platformselect.h
+@@ -12,7 +12,7 @@
+ #include "platform/switch_ppc_unix.h" /* gcc on PowerPC */
+ #elif defined(__GNUC__) && defined(__ppc__) && defined(__APPLE__)
+ #include "platform/switch_ppc_macosx.h" /* Apple MacOS X on PowerPC */
+-#elif defined(__GNUC__) && defined(sparc) && defined(sun)
++#elif defined(__GNUC__) && defined(sparc)
+ #include "platform/switch_sparc_sun_gcc.h" /* SunOS sparc with gcc */
+ #elif defined(__GNUC__) && defined(__s390__) && defined(__linux__)
+ #include "platform/switch_s390_unix.h"	/* Linux/S390 */
diff -Nru python-greenlet-0.3.1/debian/patches/series python-greenlet-0.3.1/debian/patches/series
--- python-greenlet-0.3.1/debian/patches/series	2013-01-04 21:56:14.000000000 +0000
+++ python-greenlet-0.3.1/debian/patches/series	2013-01-27 19:05:55.000000000 +0000
@@ -1 +1,2 @@
 switch_arm32_update.patch
+fix_sparc_support.patch
diff -Nru python-greenlet-0.3.1/debian/rules python-greenlet-0.3.1/debian/rules
--- python-greenlet-0.3.1/debian/rules	2013-01-26 13:57:46.000000000 +0000
+++ python-greenlet-0.3.1/debian/rules	2013-01-27 19:02:05.000000000 +0000
@@ -1,5 +1,8 @@
 #!/usr/bin/make -f
 
+DPKG_EXPORT_BUILDFLAGS = 1
+include /usr/share/dpkg/buildflags.mk
+
 %:
 	dh $@
 
diff -Nru python-greenlet-0.3.1/debian/changelog python-greenlet-0.3.1/debian/changelog
--- python-greenlet-0.3.1/debian/changelog	2013-01-27 19:30:58.000000000 +0000
+++ python-greenlet-0.3.1/debian/changelog	2013-01-28 21:58:50.000000000 +0000
@@ -1,3 +1,10 @@
+python-greenlet (0.3.1-2.4) wheezy-proposed-updates; urgency=low
+
+  * Non-maintainer upload.
+  * add a patch from upstream that fixes sparc header, this time for real.
+
+ -- Javi Merino <vi...@debian.org>  Mon, 28 Jan 2013 21:58:50 +0000
+
 python-greenlet (0.3.1-2.3) wheezy-proposed-updates; urgency=low
 
   * Non-maintainer upload.
diff -Nru python-greenlet-0.3.1/debian/patches/fix_solaris_sparc_header.patch python-greenlet-0.3.1/debian/patches/fix_solaris_sparc_header.patch
--- python-greenlet-0.3.1/debian/patches/fix_solaris_sparc_header.patch	1970-01-01 01:00:00.000000000 +0100
+++ python-greenlet-0.3.1/debian/patches/fix_solaris_sparc_header.patch	2013-01-28 21:34:00.000000000 +0000
@@ -0,0 +1,52 @@
+Author: Floris Bruynooghe <f...@devork.be>
+Origin: https://github.com/python-greenlet/greenlet/commit/29d50b1aac84500163e48268355f3aa88b707539
+Subject: Fix the sparc/solaris header
+    
+This header used a relic from the original stackless sources which
+referred to a structure which does not exist in greenlet.  Furthermore
+it seems to have never worked with gcc > 4.0.0 as a dynamicly loaded
+library as it clobbered gcc's PIC register (%l7).
+
+--- a/platform/switch_sparc_sun_gcc.h
++++ b/platform/switch_sparc_sun_gcc.h
+@@ -42,20 +42,10 @@ slp_switch(void)
+         SLP_SAVE_STATE(stackref, stsizediff);
+ 
+         /* Increment stack and frame pointer by stsizediff */
+-
+-        /* Sparc special: at first load new return address.
+-           This cannot be done later, because the stack
+-           might be overwritten again just after SLP_RESTORE_STATE
+-           has finished. BTW: All other registers (l0-l7 and i0-i5)
+-           might be clobbered too. 
+-         */
+         __asm__ volatile (
+-        "ld [%0+60], %%i7\n\t"
+-        "add %1, %%sp, %%sp\n\t"
+-        "add %1, %%fp, %%fp"
+-        : : "r" (_cst->stack), "r" (stsizediff)
+-        : "%l0", "%l1", "%l2", "%l3", "%l4", "%l5", "%l6", "%l7",
+-          "%i0", "%i1", "%i2", "%i3", "%i4", "%i5");
++            "add %0, %%sp, %%sp\n\t"
++            "add %0, %%fp, %%fp"
++            : : "r" (stsizediff));
+ 
+         SLP_RESTORE_STATE();
+ 
+@@ -63,10 +53,12 @@ slp_switch(void)
+          * The LORD rained down burning sulfur on Sodom and Gomorra ...
+          */
+ 
+-        /* Sparc special: Must make it *very* clear to the CPU that
+-           it shouldn't look back into the register windows
+-         */
+-        __asm__ volatile ( "ta %0" : : "i" (ST_CLEAN_WINDOWS));
++        /* No need to restore any registers from the stack nor clear them: the
++         * frame pointer has just been set and the return value register is
++         * also being set by the return statement below.  After returning a
++         * restore instruction is given and the frame below us will load all
++         * it's registers using a fill_trap if required. */
++
+         return 0;
+     } 
+ }
diff -Nru python-greenlet-0.3.1/debian/patches/series python-greenlet-0.3.1/debian/patches/series
--- python-greenlet-0.3.1/debian/patches/series	2013-01-27 19:05:55.000000000 +0000
+++ python-greenlet-0.3.1/debian/patches/series	2013-01-28 21:28:00.000000000 +0000
@@ -1,2 +1,3 @@
 switch_arm32_update.patch
+fix_solaris_sparc_header.patch
 fix_sparc_support.patch

Attachment: signature.asc
Description: Digital signature

Reply via email to