Your message dated Fri, 27 Jul 2007 18:47:16 +0000
with message-id <[EMAIL PROTECTED]>
and subject line Bug#434905: fixed in python2.5 2.5.1-3
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--- Begin Message ---
Package: python2.5
Version: 2.5.1-2
Severity: important
Tags: patch

python2.5 is unable to serialize a floating point variable which equals
Infinity or NaN on ARM using marshal. As it is the function used when
byte-compiling python source files, this breaks a lot of packages. For
example python-xml:

  Setting up python2.5-minimal (2.5.1-1) ...
  Traceback (most recent call last):
    File "/usr/bin/py_compilefiles", line 116, in <module>
      exit_status = int(not main())
    File "/usr/bin/py_compilefiles", line 108, in main
      elif not compile_files(files, ddir, force, rx, quiet, ignore):
    File "/usr/bin/py_compilefiles", line 38, in compile_files
      ok = py_compile.compile(fullname, None, dfile, True)
    File "/usr/lib/python2.5/py_compile.py", line 138, in compile
      marshal.dump(codeobject, fc)
  ValueError: unmarshallable object
  pycentral: pycentral rtinstall: package python-xml: error byte-compiling 
files (214)
  pycentral rtinstall: package python-xml: error byte-compiling files (214)

The problem is that python2.5 wants to manage the floating points in
memory by itself, and assume that they are only little and big endian
IEEE formats. Otherwise it fallback to a generic code, which does not
handle NaN or Infinity.

The attached patched fixed that by adding mixed-endian IEEE format, as
it can be found on ARM old-ABI.

Please fix this bug as soon as possible, as it make a lot of python
packages uninstallable on ARM.

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: arm (armv5tejl)

Kernel: Linux 2.6.18-4-versatile
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) (ignored: LC_ALL 
set to fr_FR.UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages python2.5 depends on:
ii  libbz2-1.0                    1.0.3-7    high-quality block-sorting file co
ii  libc6                         2.6-2      GNU C Library: Shared libraries
ii  libdb4.4                      4.4.20-8   Berkeley v4.4 Database Libraries [
ii  libncursesw5                  5.6-3      Shared libraries for terminal hand
ii  libreadline5                  5.2-3      GNU readline and history libraries
ii  libsqlite3-0                  3.3.17-1   SQLite 3 shared library
ii  libssl0.9.8                   0.9.8e-5   SSL shared libraries
ii  mime-support                  3.39-1     MIME files 'mime.types' & 'mailcap
ii  python2.5-minimal             2.5.1-2    A minimal subset of the Python lan

python2.5 recommends no packages.

-- no debconf information
diff -u python2.5-2.5.1/debian/rules python2.5-2.5.1/debian/rules
--- python2.5-2.5.1/debian/rules
+++ python2.5-2.5.1/debian/rules
@@ -915,6 +915,7 @@
        hotshot-import \
        subprocess-eintr-safety \
        webbrowser \
+       arm-float \
 
 #      pydebug-path \
 
only in patch2:
unchanged:
--- python2.5-2.5.1.orig/debian/patches/arm-float.dpatch
+++ python2.5-2.5.1/debian/patches/arm-float.dpatch
@@ -0,0 +1,119 @@
+#! /bin/sh -e
+
+# DP: Support mixed-endian IEEE floating point, as found in the ARM old-ABI.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+    pdir="-d $3"
+    dir="$3/"
+elif [ $# -ne 1 ]; then
+    echo >&2 "usage: `basename $0`: -patch|-unpatch [-d <srcdir>]"
+    exit 1
+fi
+case "$1" in
+    -patch)
+        patch $pdir -f --no-backup-if-mismatch -p0 < $0
+        ;;
+    -unpatch)
+        patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+        ;;
+    *)
+       echo >&2 "usage: `basename $0`: -patch|-unpatch [-d <srcdir>]"
+        exit 1
+esac
+exit 0
+
+--- Objects/floatobject.c.orig 2006-05-25 10:53:30.000000000 -0500
++++ Objects/floatobject.c      2007-07-27 06:43:15.000000000 -0500
+@@ -982,7 +982,7 @@
+ /* this is for the benefit of the pack/unpack routines below */
+ 
+ typedef enum {
+-      unknown_format, ieee_big_endian_format, ieee_little_endian_format
++      unknown_format, ieee_big_endian_format, ieee_little_endian_format, 
ieee_mixed_endian_format
+ } float_format_type;
+ 
+ static float_format_type double_format, float_format;
+@@ -1021,6 +1021,8 @@
+               return PyString_FromString("IEEE, little-endian");
+       case ieee_big_endian_format:
+               return PyString_FromString("IEEE, big-endian");
++      case ieee_mixed_endian_format:
++              return PyString_FromString("IEEE, mixed-endian");
+       default:
+               Py_FatalError("insane float_format or double_format");
+               return NULL;
+@@ -1073,11 +1075,14 @@
+       else if (strcmp(format, "IEEE, big-endian") == 0) {
+               f = ieee_big_endian_format;
+       }
++      else if (strcmp(format, "IEEE, mixed-endian") == 0) {
++              f = ieee_mixed_endian_format;
++      }
+       else {
+               PyErr_SetString(PyExc_ValueError,
+                               "__setformat__() argument 2 must be "
+-                              "'unknown', 'IEEE, little-endian' or "
+-                              "'IEEE, big-endian'");
++                              "'unknown', 'IEEE, little-endian', "
++                              "'IEEE, big-endian' or 'IEEE, mixed-endian'");
+               return NULL;
+ 
+       }
+@@ -1230,6 +1235,8 @@
+                       detected_double_format = ieee_big_endian_format;
+               else if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
+                       detected_double_format = ieee_little_endian_format;
++              else if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
++                      detected_double_format = ieee_mixed_endian_format;
+               else 
+                       detected_double_format = unknown_format;
+       }
+@@ -1565,8 +1572,19 @@
+                       p += 7;
+                       incr = -1;
+               }
++              else if (double_format == ieee_mixed_endian_format) {
++                      if (le)
++                              p += 4;
++                      else {
++                              p += 3;
++                              incr = -1;
++                      }
++              }
+               
+               for (i = 0; i < 8; i++) {
++                      if (double_format == ieee_mixed_endian_format && i == 4)
++                              p += -8 * incr;
++
+                       *p = *s++;
+                       p += incr;
+               }
+@@ -1739,6 +1757,27 @@
+                       }
+                       memcpy(&x, buf, 8);
+               }
++              else if (double_format == ieee_mixed_endian_format) {
++                      char buf[8];
++                      char *d;
++                      int i, incr = 1;
++
++                      if (le)
++                              d = &buf[4];
++                      else
++                              d = &buf[3];
++                      
++                      for (i = 0; i < 4; i++) {
++                              *d = *p++;
++                              d += incr;
++                      }
++                      d += -8 * incr;
++                      for (i = 0; i < 4; i++) {
++                              *d = *p++;
++                              d += incr;
++                      }
++                      memcpy(&x, buf, 8);
++              }
+               else {
+                       memcpy(&x, p, 8);
+               }

--- End Message ---
--- Begin Message ---
Source: python2.5
Source-Version: 2.5.1-3

We believe that the bug you reported is fixed in the latest version of
python2.5, which is due to be installed in the Debian FTP archive:

idle-python2.5_2.5.1-3_all.deb
  to pool/main/p/python2.5/idle-python2.5_2.5.1-3_all.deb
python2.5-dbg_2.5.1-3_i386.deb
  to pool/main/p/python2.5/python2.5-dbg_2.5.1-3_i386.deb
python2.5-dev_2.5.1-3_i386.deb
  to pool/main/p/python2.5/python2.5-dev_2.5.1-3_i386.deb
python2.5-examples_2.5.1-3_all.deb
  to pool/main/p/python2.5/python2.5-examples_2.5.1-3_all.deb
python2.5-minimal_2.5.1-3_i386.deb
  to pool/main/p/python2.5/python2.5-minimal_2.5.1-3_i386.deb
python2.5_2.5.1-3.diff.gz
  to pool/main/p/python2.5/python2.5_2.5.1-3.diff.gz
python2.5_2.5.1-3.dsc
  to pool/main/p/python2.5/python2.5_2.5.1-3.dsc
python2.5_2.5.1-3_i386.deb
  to pool/main/p/python2.5/python2.5_2.5.1-3_i386.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [EMAIL PROTECTED],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Matthias Klose <[EMAIL PROTECTED]> (supplier of updated python2.5 package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [EMAIL PROTECTED])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.7
Date: Fri, 27 Jul 2007 20:01:35 +0200
Source: python2.5
Binary: python2.5-dbg idle-python2.5 python2.5 python2.5-examples 
python2.5-minimal python2.5-dev
Architecture: source i386 all
Version: 2.5.1-3
Distribution: unstable
Urgency: high
Maintainer: Matthias Klose <[EMAIL PROTECTED]>
Changed-By: Matthias Klose <[EMAIL PROTECTED]>
Description: 
 idle-python2.5 - An IDE for Python (v2.5) using Tkinter
 python2.5  - An interactive high-level object-oriented language (version 2.5)
 python2.5-dbg - Debug Build of the Python Interpreter (version 2.5)
 python2.5-dev - Header files and a static library for Python (v2.5)
 python2.5-examples - Examples for the Python language (v2.5)
 python2.5-minimal - A minimal subset of the Python language (version 2.5)
Closes: 434905
Changes: 
 python2.5 (2.5.1-3) unstable; urgency=high
 .
   * Support mixed-endian IEEE floating point, as found in the ARM old-ABI
     (Aurelien Jarno). Closes: #434905.
Files: 
 fa7b8a7f9916e3db96e33ca0b7718222 1353 python optional python2.5_2.5.1-3.dsc
 eff5b3865343ce422b6bd9182d5fb944 327358 python optional 
python2.5_2.5.1-3.diff.gz
 b038cb13ca4d5ba175cefbbcc963705f 645398 python optional 
python2.5-examples_2.5.1-3_all.deb
 e932dbe83fada187800d6a068bb7b756 64150 python optional 
idle-python2.5_2.5.1-3_all.deb
 401c3ff5d52b118a1d99c26238c00ad9 3080954 python optional 
python2.5_2.5.1-3_i386.deb
 00812c86f4865986df5a13d1dbf7b5fd 1162044 python optional 
python2.5-minimal_2.5.1-3_i386.deb
 d293646f4b03661ad08657488875244c 1634810 python optional 
python2.5-dev_2.5.1-3_i386.deb
 14e04dde1ecf1759a926c0ec7bb5fcd9 7760244 python extra 
python2.5-dbg_2.5.1-3_i386.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGqjelStlRaw+TLJwRAo4DAJ9xhOr2yunZvih9+3xOaH+yGRZ5tQCfbILh
LP0o3nsTT/SFGfhk4vJO8xQ=
=g/6I
-----END PGP SIGNATURE-----


--- End Message ---

Reply via email to