Hello,
I am running a machine under ubuntu since 6.10.
This computer is headless & I am using XVnc in order to have multiple resumeable sessions available for different users.
I've done the upgrade from 9.04 to 9.10 yesterday & I am experiencing a big trouble.
One of my application which is running in TclTk is not longer working.
I get the following message :
The application is not the problem because If I try to run a small Tk script, I get the same kind of error.Code:Tk initialization failed: Can't find a usable tk.tcl in the following directories: /opt/modelsim/6.5b/linux_x86_64/../tcl/tk8.4 /opt/modelsim/6.5b/linux_x86_64/../tcl/tcl8.4/tk8.4 /opt/modelsim/current/bin/../lib/tk8.4 /opt/modelsim/current/bin/../linux_x86_64/tk8.4 /opt/modelsim/current/bin/lib/tk8.4 /opt/modelsim/current/bin/../library /opt/modelsim/current/bin/library /opt/modelsim/current/bin/tk8.4.14/library /opt/modelsim/current/tk8.4.14/library /opt/modelsim/6.5b/linux_x86_64/../tcl/tk8.4/tk.tcl: can't access "::tk::Priv.::ffff:127.0.0.1:7": parent namespace doesn't exist can't access "::tk::Priv.::ffff:127.0.0.1:7": parent namespace doesn't exist while executing "upvar #0 ::tk::Priv.::ffff:127.0.0.1:7 ::tk::Priv" ("uplevel" body line 1) invoked from within "uplevel #0 upvar #0 ::tk::Priv.$disp ::tk::Priv" (procedure "tk::ScreenChanged" line 9) invoked from within "tk::ScreenChanged [winfo screen .]" (file "/opt/modelsim/6.5b/linux_x86_64/../tcl/tk8.4/tk.tcl" line 284) invoked from within "source /opt/modelsim/6.5b/linux_x86_64/../tcl/tk8.4/tk.tcl" ("uplevel" body line 1) invoked from within "uplevel #0 [list source $file]" This probably means that tk wasn't installed properly.
I am still able to run the application under the session opened from the computer (not XVnc session).
If anyone has a clue to help me, I am open
Thanks in advance !
[SOLVED !]
Some tools use a broken tcl/tk opensource library (such as mentor modelsim).
A fix has been suggested by Tristan Schmelcher to the maintainers (http://sourceforge.net/mailarchive/m...mail.gmail.com)
-> Open the tk.tcl file and apply the following patch :
Code:--- tk.tcl.8.5 2009-12-06 19:14:10.000000000 +0100 +++ tk.tcl.new 2009-12-06 19:19:04.000000000 +0100 @@ -248,7 +248,14 @@ set disp $screen } - uplevel #0 upvar #0 ::tk::Priv.$disp ::tk::Priv + # disp can legally contain "::", so we have to create the portion up to + # the last :: as a namespace. + set var_name ::tk::Priv.${disp} + set x [string last :: $var_name] + set namespace_name [string range $var_name 0 [expr {$x - 1}]] + namespace eval $namespace_name {} + + uplevel #0 upvar #0 $var_name ::tk::Priv variable ::tk::Priv global tcl_platform



Adv Reply

Bookmarks