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

Bug#907865: marked as done (stretch-pu: package python-imaplib2/2.55-1+deb9u1)



Your message dated Sat, 10 Nov 2018 10:42:56 +0000
with message-id <1541846576.3542.38.camel@adam-barratt.org.uk>
and subject line Closing bugs for updates included in 9.6
has caused the Debian Bug report #907865,
regarding stretch-pu: package python-imaplib2/2.55-1+deb9u1
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 this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
907865: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=907865
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: stretch
User: release.debian.org@packages.debian.org
Usertags: pu

Dear release team,

The Python 3 version of imaplib2 (python3-imaplib2 package) is currently
unusable in stretch, as it is affected by #902755 and #899102.


#902755: Python 3 version broken, throws exception immediately after connecting

Upstream ships two different versions of imaplib2, one for Python 2 and
one for Python 3. The problem is that the python3-imaplib2 package ships
the Python 2 version. This has been fixed by having debian/rules install
the correct Python module.


#899102: python3-imaplib2: connection to IMAP-SSL host fails on armhf

The Python 3 version of imaplib2 fails on 32-bit architectures, because
the TIMEOUT_MAX value used in Condition.wait() overflows, causing the
above function to return immediately. This has been reported upstream as
  https://github.com/imaplib2/imaplib2/issues/2
  https://github.com/imaplib2/imaplib2/issues/3
and fixed by removing the timeout and having Condition.wait() block
indefinitely (patch submitted at https://github.com/imaplib2/imaplib2/pull/4).


Both of these bugs have been fixed in unstable/testing. I would like to
update python-imaplib2 in stretch to fix the above bugs. Attached is the
proposed diff.

Thanks,

-- 
Ilias
diff -Nru python-imaplib2-2.55/debian/changelog python-imaplib2-2.55/debian/changelog
--- python-imaplib2-2.55/debian/changelog	2017-07-12 11:37:15.000000000 +0300
+++ python-imaplib2-2.55/debian/changelog	2018-09-03 11:44:48.000000000 +0300
@@ -1,3 +1,15 @@
+python-imaplib2 (2.55-1+deb9u2) stretch; urgency=medium
+
+  * Install the correct module for Python 3.
+    Until now, python3-imaplib2 installed the Python 2 version of this module.
+    Thanks to Faidon Liambotis for reporting this (Closes: 902755)
+  * Apply patch to remove TIMEOUT_MAX variable.
+    On some architectures, using threading.TIMEOUT_MAX for the timeout
+    parameter can overflow causing Condition.wait() to return immediately.
+    Thanks to Maximilian Stein for reporting this (Closes: #899102)
+
+ -- Ilias Tsitsimpis <iliastsi@debian.org>  Mon, 03 Sep 2018 11:44:48 +0300
+
 python-imaplib2 (2.55-1+deb9u1) stretch; urgency=medium
 
   * Fix typo that resulted in missing dependencies for python3-imaplib2.
diff -Nru python-imaplib2-2.55/debian/patches/Do-not-use-TIMEOUT_MAX.patch python-imaplib2-2.55/debian/patches/Do-not-use-TIMEOUT_MAX.patch
--- python-imaplib2-2.55/debian/patches/Do-not-use-TIMEOUT_MAX.patch	1970-01-01 02:00:00.000000000 +0200
+++ python-imaplib2-2.55/debian/patches/Do-not-use-TIMEOUT_MAX.patch	2018-09-02 18:08:03.000000000 +0300
@@ -0,0 +1,68 @@
+From: Ilias Tsitsimpis <iliastsi@debian.org>
+Date: Sat, 25 Aug 2018 09:43:41 +0300
+Subject: Do not use TIMEOUT_MAX
+
+On some architectures, using threading.TIMEOUT_MAX for the timeout
+parameter can overflow causing Condition.wait() to return immediately.
+Instead of relying on TIMEOUT_MAX, remove it and wait forever.
+
+Bug-Debian: https://bugs.debian.org/899102
+Bug: https://github.com/imaplib2/imaplib2/issues/3
+Forwarded: https://github.com/imaplib2/imaplib2/pull/4
+---
+ imaplib2.py  | 5 ++---
+ imaplib2.py3 | 4 ++--
+ 2 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/imaplib2.py b/imaplib2.py
+index 1fd47d2..3a8b6c0 100755
+--- a/imaplib2.py
++++ b/imaplib2.py
+@@ -67,7 +67,6 @@ if bytes != str:
+ else:
+     import Queue as queue
+     string_types = basestring
+-    threading.TIMEOUT_MAX = 9223372036854.0
+ 
+ select_module = select
+ 
+@@ -192,7 +191,7 @@ class Request(object):
+     def get_response(self, exc_fmt=None):
+         self.callback = None
+         if __debug__: self.parent._log(3, '%s:%s.ready.wait' % (self.name, self.tag))
+-        self.ready.wait(threading.TIMEOUT_MAX)
++        self.ready.wait()
+ 
+         if self.aborted is not None:
+             typ, val = self.aborted
+@@ -1391,7 +1390,7 @@ class IMAP4(object):
+             self.commands_lock.release()
+             if need_event:
+                 if __debug__: self._log(3, 'sync command %s waiting for empty commands Q' % name)
+-                self.state_change_free.wait(threading.TIMEOUT_MAX)
++                self.state_change_free.wait()
+                 if __debug__: self._log(3, 'sync command %s proceeding' % name)
+ 
+         if self.state not in Commands[name][CMD_VAL_STATES]:
+diff --git a/imaplib2.py3 b/imaplib2.py3
+index 0aeff4d..e02f094 100755
+--- a/imaplib2.py3
++++ b/imaplib2.py3
+@@ -182,7 +182,7 @@ class Request(object):
+     def get_response(self, exc_fmt=None):
+         self.callback = None
+         if __debug__: self.parent._log(3, '%s:%s.ready.wait' % (self.name, self.tag))
+-        self.ready.wait(threading.TIMEOUT_MAX)
++        self.ready.wait()
+ 
+         if self.aborted is not None:
+             typ, val = self.aborted
+@@ -1316,7 +1316,7 @@ class IMAP4(object):
+             self.commands_lock.release()
+             if need_event:
+                 if __debug__: self._log(3, 'sync command %s waiting for empty commands Q' % name)
+-                self.state_change_free.wait(threading.TIMEOUT_MAX)
++                self.state_change_free.wait()
+                 if __debug__: self._log(3, 'sync command %s proceeding' % name)
+ 
+         if self.state not in Commands[name][CMD_VAL_STATES]:
diff -Nru python-imaplib2-2.55/debian/patches/series python-imaplib2-2.55/debian/patches/series
--- python-imaplib2-2.55/debian/patches/series	1970-01-01 02:00:00.000000000 +0200
+++ python-imaplib2-2.55/debian/patches/series	2018-09-02 18:08:03.000000000 +0300
@@ -0,0 +1 @@
+Do-not-use-TIMEOUT_MAX.patch
diff -Nru python-imaplib2-2.55/debian/rules python-imaplib2-2.55/debian/rules
--- python-imaplib2-2.55/debian/rules	2017-07-12 11:30:10.000000000 +0300
+++ python-imaplib2-2.55/debian/rules	2018-07-31 17:44:09.000000000 +0300
@@ -3,8 +3,29 @@
 
 # Uncomment this to turn on verbose mode.
 #export DH_VERBOSE=1
-export PYBUILD_NAME = imaplib2
+export PYBUILD_NAME=imaplib2
 export PYBUILD_DISABLE=test
 
+# Upstream ships two different versions of imaplib2, one for Python 2 and one
+# for Python 3. In order to have python3-imaplib2 install the Python 3 version,
+# create a temporary directory where we rename imaplib2.py3 to imaplib2.py
+# and set this as the source files directory for Python 3.
+export PYBUILD_DIR_python3=py3_src_dir
+
+
 %:
-	        dh $@ --with python2,python3 --buildsystem=pybuild
+	dh $@ --with python2,python3 --buildsystem=pybuild
+
+py3_src_dir:
+	mkdir -p py3_src_dir
+	cp -a imaplib2.py3 py3_src_dir/imaplib2.py
+	cp -a setup.py py3_src_dir/setup.py
+
+.PHONY: override_dh_auto_configure
+override_dh_auto_configure: py3_src_dir
+	dh_auto_configure
+
+.PHONY: override_dh_auto_clean
+override_dh_auto_clean: py3_src_dir
+	dh_auto_clean
+	rm -rf py3_src_dir

--- End Message ---
--- Begin Message ---
Version: 9.6

Hi,

The update referenced by each of these bugs was included in this
morning's stretch point release.

Regards,

Adam

--- End Message ---

Reply to: