Luc
2024-09-28 05:49:15 UTC
I successfully compiled Tcl and Tk 8.6.15 and 9.0.
No problem whatsoever with 8.6.15 so far.
Tcl/Tk 9.0 runs a couple of simpler applications but chokes on a
more complex one:
--------------------
cannot find symbol "tkdnd_Init": /opt/tcltk9/lib/tkdnd2.6/libtkdnd2.6.so:
undefined symbol: _tkdnd_Init while executing
"load $dir/$PKG_LIB_FILE $PACKAGE_NAME"
(procedure "tkdnd::initialise" line 92)
invoked from within
"tkdnd::initialise {/opt/tcltk9/lib/tkdnd2.6} libtkdnd2.6.so tkdnd"
("package ifneeded tkdnd 2.6" script)
invoked from within
"package require tkdnd"
(file "v.tcl" line 4)
Compilation failed.
--------------------
Yes, my version of tkdnd is quite old. I'm not even using it yet.
I haven't written the code. But it is package required for the sake
of the future.
So I fetched a newer version. Tck/Tk 9.0 doesn't like it either:
--------------------
interpreter uses an incompatible stubs mechanism
while executing
"load $dir/$PKG_LIB_FILE [string totitle $PACKAGE_NAME 0 0]"
(procedure "tkdnd::initialise" line 94)
invoked from within
"tkdnd::initialise {/opt/tcltk9/lib/tkdnd2.9.4} libtkdnd2.9.4.so tkdnd"
("package ifneeded tkdnd 2.9.4" script)
invoked from within
"package require tkdnd"
(file "v.tcl" line 4)
Compilation failed.
--------------------
What is going on now? Well, I commented out the tkdnd line and found
that I have a similar problem with snack:
--------------------
interpreter uses an incompatible stubs mechanism
while executing
"load /usr/lib/tcltk/snack2.2/libsound.so"
("package ifneeded sound 2.2" script)
invoked from within
"package require sound"
(file "v.tcl" line 6)
Compilation failed.
--------------------
Is it too old too? Comment it out:
--------------------
interpreter uses an incompatible stubs mechanism
while executing
"load [file join $::vfs::self libvfs1.4.2.so]"
(file "/usr/lib/tcltk/x86_64-linux-gnu/vfs1.4.2/vfs.tcl" line 24)
invoked from within
"source /usr/lib/tcltk/x86_64-linux-gnu/vfs1.4.2/vfs.tcl"
("package ifneeded vfs 1.4.2" script)
invoked from within
"package require vfs"
(file "v.tcl" line 8)
Compilation failed.
--------------------
Removing references to vfs, I run into a variable that is no longer
recognized. OK, I will investigate that one on my own.
What about the packages? Why do they fail?
Note: I am running all this on Debian 9.
I wonder if this is related:
https://core.tcl-lang.org/tk/info/437d5d47664539497a827310263ad691e85f6ca829eb0cf77ad97edf55220b70
No problem whatsoever with 8.6.15 so far.
Tcl/Tk 9.0 runs a couple of simpler applications but chokes on a
more complex one:
--------------------
cannot find symbol "tkdnd_Init": /opt/tcltk9/lib/tkdnd2.6/libtkdnd2.6.so:
undefined symbol: _tkdnd_Init while executing
"load $dir/$PKG_LIB_FILE $PACKAGE_NAME"
(procedure "tkdnd::initialise" line 92)
invoked from within
"tkdnd::initialise {/opt/tcltk9/lib/tkdnd2.6} libtkdnd2.6.so tkdnd"
("package ifneeded tkdnd 2.6" script)
invoked from within
"package require tkdnd"
(file "v.tcl" line 4)
Compilation failed.
--------------------
Yes, my version of tkdnd is quite old. I'm not even using it yet.
I haven't written the code. But it is package required for the sake
of the future.
So I fetched a newer version. Tck/Tk 9.0 doesn't like it either:
--------------------
interpreter uses an incompatible stubs mechanism
while executing
"load $dir/$PKG_LIB_FILE [string totitle $PACKAGE_NAME 0 0]"
(procedure "tkdnd::initialise" line 94)
invoked from within
"tkdnd::initialise {/opt/tcltk9/lib/tkdnd2.9.4} libtkdnd2.9.4.so tkdnd"
("package ifneeded tkdnd 2.9.4" script)
invoked from within
"package require tkdnd"
(file "v.tcl" line 4)
Compilation failed.
--------------------
What is going on now? Well, I commented out the tkdnd line and found
that I have a similar problem with snack:
--------------------
interpreter uses an incompatible stubs mechanism
while executing
"load /usr/lib/tcltk/snack2.2/libsound.so"
("package ifneeded sound 2.2" script)
invoked from within
"package require sound"
(file "v.tcl" line 6)
Compilation failed.
--------------------
Is it too old too? Comment it out:
--------------------
interpreter uses an incompatible stubs mechanism
while executing
"load [file join $::vfs::self libvfs1.4.2.so]"
(file "/usr/lib/tcltk/x86_64-linux-gnu/vfs1.4.2/vfs.tcl" line 24)
invoked from within
"source /usr/lib/tcltk/x86_64-linux-gnu/vfs1.4.2/vfs.tcl"
("package ifneeded vfs 1.4.2" script)
invoked from within
"package require vfs"
(file "v.tcl" line 8)
Compilation failed.
--------------------
Removing references to vfs, I run into a variable that is no longer
recognized. OK, I will investigate that one on my own.
What about the packages? Why do they fail?
Note: I am running all this on Debian 9.
I wonder if this is related:
https://core.tcl-lang.org/tk/info/437d5d47664539497a827310263ad691e85f6ca829eb0cf77ad97edf55220b70
--
Luc
Luc