GNOME Bugzilla – Bug 139168
jhbuild doesn't move to "configure" stage after CVS module checkout on Solaris
Last modified: 2004-12-22 21:47:04 UTC
No matter which module I start with, jhbuild never move on to the configure stage after checking the module out from CVS. It simply stalls fater the last file is checked out and I have to kill the process from another terminal.
I added some code to do pretty-printing of CVS output, and that is probably what is causing the problems. It creates a pty to run "cvs update" in. My guess is that it hangs waiting for the exit status of the child. Not knowing enough about Solaris, I'm not sure how to fix this.
Is there a known workaround? Like disable the pretty-printing.
I just checked in some code to add a pretty_print option to the ~/.jhbuildrc file (defaulting to True). Setting it to false should turn off the pretty printing. I'd still like to know why it failed though. It is probably quite a simple problem ...
After adding "pretty_print = None" to .jhbuildrc the problem is gone. Tell me (i.e. send me email) if you need me to test anything more to find out the real problem. Thanks for your help!
Henrik or David: could you try out the test program I'm just about to attach. I'd like to know what the last message it prints is. That will give some idea about where things are hanging.
Created attachment 27470 [details] test-spawn.py A trimmed down version of the code used for the syntax highlighting, instrumented with a number of print statements.
Have either of you had a chance to try out the test program since I attached it?
This is the output (waited 5 minutes after it stoped printing): bash-2.05$ bin/jhbuild build Forked Set stdin to raw mode Set pty to non blocking mode NetBackup-install.log home platform TT_DB kernel proc bin lib sbin cdrom lost+found tmp dev mnt usr devices net var etc openpkg vol export opt xfn Thanks for taking the time to have a look at this.
Okay, so that means that it is never detecting that it reached the end of the output. My guess is that when it reaches the end of the output, pty._copy() is just reading empty strings and not raising an error like on Linux.
I've gotten rid of the pty code now. It gives a slightly worse user experience on Linux (process doesn't think it is running on a terminal, so buffers output), but should be more reliable.