[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#748903: python-tornado: FTBFS on hurd-i386



Source: python-tornado
Version: 3.2.0-1
Severity: important
Tags: patch
User: debian-hurd@lists.debian.org
Usertags: hurd

Hi,

Currently python-tornado fails to build from source on GNU/Hurd due to
two failed tests: test_unix_socket and test_unix_socket_bad_request.
The attached patch fixes these failures by not using the options 
SO_REUSEADDR for setsockopt in tornado/netutil.py and SO_ERROR for
getsockopt in tornado/iostream.py since they are not yet implemented.

With the patch all 739 tests, with 76 skipped, in the testsuite
pass and they are a requisite for the package to build.

Thanks!

--- a/tornado_netutil.py	2014-01-09 03:57:56.000000000 +0100
+++ b/tornado/netutil.py	2014-05-21 17:38:42.000000000 +0200
@@ -20,6 +20,7 @@
 
 import errno
 import os
+import sys
 import socket
 import ssl
 import stat
@@ -119,7 +120,8 @@
         """
         sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
         set_close_exec(sock.fileno())
-        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+        if sys.platform != 'gnu0':
+            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
         sock.setblocking(0)
         try:
             st = os.stat(file)
--- a/tornado/iostream.py	2014-01-04 17:51:39.000000000 +0100
+++ b/tornado/iostream.py	2014-05-21 18:42:37.000000000 +0200
@@ -687,9 +687,12 @@
         self.socket = None
 
     def get_fd_error(self):
-        errno = self.socket.getsockopt(socket.SOL_SOCKET,
-                                       socket.SO_ERROR)
-        return socket.error(errno, os.strerror(errno))
+        if sys.platform != 'gnu0':
+            errno = self.socket.getsockopt(socket.SOL_SOCKET,
+                                           socket.SO_ERROR)
+            return socket.error(errno, os.strerror(errno))
+        else:
+            return None
 
     def read_from_fd(self):
         try:
@@ -748,7 +751,10 @@
         self._add_io_state(self.io_loop.WRITE)
 
     def _handle_connect(self):
-        err = self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
+        if sys.platform != 'gnu0':
+            err = self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
+        else:
+            err = 0
         if err != 0:
             self.error = socket.error(err, os.strerror(err))
             # IOLoop implementations may vary: some of them return

Reply to: