Subject: Re: python-urwid on x86_64: AsyncEventLoopTest

From: Leo Famulari <[email-masked]>
Date: Fri, 1 Jan 2016 17:50:26 -0500

On Thu, Dec 10, 2015 at 02:05:56AM -0500, Leo Famulari wrote:
> python-urwid-1.3.0 fails to build on x86_64 during the
> "AsyncioEventLoopTest" test with the error "KeyError: '5 is not
> registered'". It has failed repeatedly for some time now. It fails in
> the same way when updated to python-urwid-1.3.1.
> 
> I looked for interesting changes made between the last successful build
> and the first failing build. Notably, this range includes the upgrade
> from python-3.3.5 to python-3.4.3 (08c04509). Asyncio was integrated
> into the Python standard library in 3.4 — previously it had been an
> external library. [0] Our python-3.4.3 package passes its 'test_asyncio'
> test, FWIW.
> 
> I entered the failed build tree and successfully ran the tests using the
> python-3.4.3-7 [1] installed by Debian Stretch. That only tells us so
> much, but I think it does indicate either a bug in our python-3.4.3, or
> some problem with python-urwid caused by the unfamiliar Guix build
> environment.
> 
> Here's the hydra.gnu.org page:
> http://hydra.gnu.org/build/861615

BTW, I filed a bug upstream:
https://github.com/urwid/urwid/issues/164

No response yet, although I should add some more information to the bug
report.

In the meantime, what about downgrading python-urwid to 1.2.2 and
leaving python2-urwid at 1.3.0?

1.2.2 works for the software I am trying to package, and currently there
are no users of python-urwid.

> 
> Here's the failing part of the build log:
> 
> --8<---------------cut here---------------start------------->8---
> 
> ======================================================================
> ERROR: test_remove_watch_file (urwid.tests.test_event_loops.AsyncioEventLoopTest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File "/gnu/store/13n8xbi9wv9pigfyhir007qadr81jq46-python-3.4.3/lib/python3.4/asyncio/selector_events.py", line 234, in add_reader
>     key = self._selector.get_key(fd)
>   File "/gnu/store/13n8xbi9wv9pigfyhir007qadr81jq46-python-3.4.3/lib/python3.4/selectors.py", line 182, in get_key
>     raise KeyError("{!r} is not registered".format(fileobj)) from None
> KeyError: '5 is not registered'
> 
> During handling of the above exception, another exception occurred:
> 
> Traceback (most recent call last):
>   File "/tmp/nix-build-python-urwid-1.3.0.drv-0/urwid-1.3.0/build/lib.linux-x86_64-3.4/urwid/tests/test_event_loops.py", line 33, in test_remove_watch_file
>     handle = evl.watch_file(5, lambda: None)
>   File "/tmp/nix-build-python-urwid-1.3.0.drv-0/urwid-1.3.0/build/lib.linux-x86_64-3.4/urwid/main_loop.py", line 1263, in watch_file
>     self._loop.add_reader(fd, callback)
>   File "/gnu/store/13n8xbi9wv9pigfyhir007qadr81jq46-python-3.4.3/lib/python3.4/asyncio/selector_events.py", line 237, in add_reader
>     (handle, None))
>   File "/gnu/store/13n8xbi9wv9pigfyhir007qadr81jq46-python-3.4.3/lib/python3.4/selectors.py", line 402, in register
>     self._epoll.register(key.fd, epoll_events)
> PermissionError: [Errno 1] Operation not permitted
> 
> ----------------------------------------------------------------------
> Ran 284 tests in 0.384s
> 
> FAILED (errors=1)
> phase `check' failed after 4.6 seconds
> --8<---------------cut here---------------end--------------->8---
> 
> [0]
> https://docs.python.org/3/library/asyncio.html
> 
> [1] Reported by `apt-cache show python3`, this python-3.4.3-7's .deb has
> a SHA256 hash of:
> 53fa197ee35501152b1897bf84ab6123f7f65201efdddc2e4aa882de494f3870