1 |
On 01/28/2013 11:32 AM, Fabian Groffen wrote: |
2 |
> On 28-01-2013 19:41:51 +0100, Fabian Groffen wrote: |
3 |
>> On 28-01-2013 10:23:21 -0800, Zac Medico wrote: |
4 |
>>>> File "/Volumes/Scratch/bootstrap-20130128/usr/lib/portage/pym/_emerge/Scheduler.py", line 1373, in _main_loop |
5 |
>>>> self._event_loop.iteration() |
6 |
>>>> File "/Volumes/Scratch/booTraceback (most recent call last): |
7 |
>>>> File "/Volumes/Scratch/bootstrap-20130128/usr/bin/emerge", line 72, in <module> |
8 |
>>>> sys.stderr.write(tb_str) |
9 |
>>>> IOError: [Errno 35] Resource temporarily unavailable |
10 |
>>> |
11 |
>>> It looks like maybe one of the ebuilds is putting stdin into |
12 |
>>> non-blocking mode, and it's propagating to emerge's stderr stream. If |
13 |
>>> that's true, it might help if you use the emerge --quiet-build option, |
14 |
>>> since that makes the ebuilds have /dev/null for stdin. |
15 |
>> |
16 |
>> I can restart each and every time, and it just seems like a buffer is |
17 |
>> filling up, because each 2nd package it breaks down again due to the |
18 |
>> many missing compgen warnings. |
19 |
> |
20 |
> interestingly enough, this problem occurs exactly at the moment that |
21 |
> PipeLogger._start() is invoked and self.stdout_fd is None |
22 |
|
23 |
You could try removing these FD_CLOEXEC lines from PipeLogger, which are |
24 |
relatively new, to see if that helps: |
25 |
|
26 |
try: |
27 |
fcntl.FD_CLOEXEC |
28 |
except AttributeError: |
29 |
pass |
30 |
else: |
31 |
fcntl_flags |= fcntl.FD_CLOEXEC |
32 |
|
33 |
The O_NONBLOCK flag has been there for a long time, so that shouldn't be |
34 |
a problem. The file descriptor there should be the master end of a newly |
35 |
allocated pty, or the read end of a pipe, either of which should be fine |
36 |
for nonblocking mode. |
37 |
-- |
38 |
Thanks, |
39 |
Zac |