bugThe Circle - Bugs: bug #3556, Circle should cope with...

 
 

bug #3556: Circle should cope with non-threaded/old pygtk

Submitted by:  Paul Harrison <pfh>
Submitted on:  Mon 12 May 2003 12:18:46 PM UTC  
 
Category: Graphical version (circle)Severity: 3 - Ordinary
Item Group: BugStatus: Wont Fix
Privacy: PublicAssigned to: None
Open/Closed: Closed

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

(Jump to the original submission Jump to the original submission)

Tue 17 Jun 2003 05:02:14 PM UTC, comment #7:

I suggest to close that bug.
old versions of pygtk are simply too old to run circle.
I mentioned that pygtk >= 1.99-14 is required in the README.

ThomasV <thomasV>
Project Administrator
Tue 20 May 2003 07:22:07 AM UTC, comment #6:

ok, I tested it. now I get this:

voegtlin@dale circle]$ python2 circle
Can't check GTK version, continuing.

(circle:7373): Gtk-WARNING **: /usr/lib/gtk-2.0/2.0.0/engines/libredmond95.so: undefined
symbol: gtk_rc_style_get_type
Traceback (most recent call last):
File "/extra/voegtlin/thomas/circle/circle", line 175, in ?
run()
File "/extra/voegtlin/thomas/circle/circle", line 172, in run
circlelib.circle.Circle_application().run_gtk(proxy_mode, no_connect)
File "/extra/voegtlin/thomas/circle/circlelib/circle.py", line 239, in run_gtk
self.run_main(proxy_host,proxy_password,no_connect)
File "/extra/voegtlin/thomas/circle/circlelib/circle.py", line 310, in run_main
self.chat.start()
File "/extra/voegtlin/thomas/circle/circlelib/chat.py", line 691, in start
self.set_normal_prompt()
File "/extra/voegtlin/thomas/circle/circlelib/chat.py", line 905, in set_normal_prompt
self.set_prompt(str)
File "/extra/voegtlin/thomas/circle/circlelib/chatgtk.py", line 809, in set_prompt
field.show(str, tags)
File "/extra/voegtlin/thomas/circle/circlelib/chatgtk.py", line 122, in show
cursor_was_visible = self.chat.is_cursor_visible()
File "/extra/voegtlin/thomas/circle/circlelib/chatgtk.py", line 193, in is_cursor_visible
y, height = self.view.get_line_yrange(
AttributeError: 'gtk.TextView' object has no attribute 'get_line_yrange'

I guess there might be substantial differences between this older pygtk and the legal one...

ThomasV <thomasV>
Project Administrator
Tue 20 May 2003 01:42:31 AM UTC, comment #5:

TextBuffer takes an optional argument, i guess it wasn't optional in earlier versions. Changed chatgtk to work around this, should fix that error at least.

Be nice to get everything working with older pygtks, but maybe not this release.

Paul Harrison <pfh>
Project Administrator
Mon 19 May 2003 07:02:24 AM UTC, comment #4:

I guess this solves the problem of non-threaded pygtk.
The crash I experience is probably due to a wrong version of pygtk. It is the version that comes with redhat8.
Here is what I get now:

python2 circle&
[1] 23343
[voegtlin@dale circle]$ Can't check GTK version, continuing.

(circle:23343): Gtk-WARNING **: /usr/lib/gtk-2.0/2.0.0/engines/libredmond95.so: undefined symbol: gtk_rc_style_get_type

[voegtlin@dale circle]$ Traceback (most recent call last):
File "/extra/voegtlin/thomas/circle/circle", line 175, in ?
run()
File "/extra/voegtlin/thomas/circle/circle", line 172, in run
circlelib.circle.Circle_application().run_gtk(proxy_mode, no_connect)
File "/extra/voegtlin/thomas/circle/circlelib/circle.py", line 239, in run_gtk
self.run_main(proxy_host,proxy_password,no_connect)
File "/extra/voegtlin/thomas/circle/circlelib/circle.py", line 276, in run_main self.chat = chatgtk.Chat_gtk(self)
File "/extra/voegtlin/thomas/circle/circlelib/chatgtk.py", line 531, in _init_
self.buffer = gtk.TextBuffer()
TypeError: GtkTextBuffer.__init__() takes exactly 1 argument (0 given)

maybe Nathan knows about that?

ThomasV <thomasV>
Project Administrator
Sat 17 May 2003 12:45:22 AM UTC, comment #3:

Re versions: use gtk.gtk_version and gtk.pygtk_version -- probably just print a warning and soldier on. Any idea what's crashing circle in the older version?

Ok, added a try: except: around threads_init as you suggest. Can you confirm if this works with redhat?

Paul Harrison <pfh>
Project Administrator
Thu 15 May 2003 02:23:47 PM UTC, comment #2:

There are three "if" tests for win32 in utility.py,
on lines 152, 216, 237.

I added "and 0" to each of these tests, in order to test the nothread support. I tested on a Redhat 8.0, with pygtk2.

Result: It seems to work, at least it starts and it displays the window with the cat picture. but then it quickly dies, seemingly for another reason: the pygtk2 version in the rpm is not up to date (it is pygtk2-1.99.12-7, I guess it would need to be 1.99.14)

anyway, it seems that it would work that way.

I think it would be sufficient to add "and threaded_pygtk" (instead of "and 0") to each of these 3 tests, and to define threaded_pygtk by a "try: ... except"

Other topic, see above: is it possible to detect the version of pygtk2, in order to complain if it is not up to date?

ThomasV <thomasV>
Project Administrator
Thu 15 May 2003 01:12:16 PM UTC, comment #1:

Paul,

following our discussion, here is what I obtain
when using non-threaded pygtk2:

[voegtlin@dale circle]$ python2 circle
Can't check GTK version, continuing.

(circle:3196): Gtk-WARNING **: /usr/lib/gtk-2.0/2.0.0/engines/libredmond95.so: undefined symbol: gtk_rc_style_get_type
Traceback (most recent call last):
File "/extra/voegtlin/thomas/circle/circle", line 175, in ?
run()
File "/extra/voegtlin/thomas/circle/circle", line 172, in run
circlelib.circle.Circle_application().run_gtk(proxy_mode, no_connect)
File "/extra/voegtlin/thomas/circle/circlelib/circle.py", line 241, in run_gtk
self.run_main(proxy_host,proxy_password,no_connect)
File "/extra/voegtlin/thomas/circle/circlelib/circle.py", line 253, in run_main
status_setter, progress_setter = self.become_message_window(_("Connecting to the Circle network..."))
File "/extra/voegtlin/thomas/circle/circlelib/circle.py", line 1025, in become_message_window
self.set_window_child(hbox, 0)
File "/extra/voegtlin/thomas/circle/circlelib/circle.py", line 972, in set_window_child
utility.threadnice_flush_events()
File "/extra/voegtlin/thomas/circle/circlelib/utility.py", line 168, in threadnice_flush_events
_ensure_gtk_ready()
File "/extra/voegtlin/thomas/circle/circlelib/utility.py", line 154, in _ensure_gtk_ready
gtk.threads_init()
RuntimeError: pygtk threading disabled at compile time
[voegtlin@dale circle]$

ThomasV <thomasV>
Project Administrator
Mon 12 May 2003 12:18:46 PM UTC, original submission:

It is possible to compile pygtk without threads support, and it seems some Linux distributions do this (notably redhat9). Blah.

The windows pygtk also has no thread support, and code exists to handle this. This should be generalized to all cases where there is no thread support, perhaps by catching an exception when we attempt to enable threads.

Failing this, compiling pygtk with threads should be documented in the FAQ.

Paul Harrison <pfh>
Project Administrator

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

CC list is empty

 

Do you think this task is very important?
If so, you can click here to add your encouragement to it.
This task has 0 encouragements so far.

Only logged-in users can vote.

 

Please enter the title of George Orwell's famous dystopian book (it's a date):

 

 

Follow 4 latest changes.

Date Changed By Updated Field Previous Value => Replaced By
Tue 17 Jun 2003 05:02:14 PM UTCthomasVStatusNone=>(Error - Not Found)
  Open/ClosedOpen=>(Error - Not Found)
Tue 20 May 2003 01:42:31 AM UTCpfhSeverity5 - Important: no release until fixed=>(Error - Not Found)
  SummaryCircle should cope with non-threaded pygtk=>

Back to the top


Powered by Savane 3.1-cleanup1