OpenMSX OSD -> Save State... "Error executing hot key command: invalid command name: "::tcl::clock::format"

By Wild_Penguin

Hero (618)

Wild_Penguin의 아바타

01-03-2020, 20:52

Hi,

Seems that save state does not work from the OSD?

I get the error in the title ("Error executing hot key command: invalid command name: "::tcl::clock::format") when I try that option; same goes for Load State. Any idea what is going on?

This is on Linux, Arch, openmsx-0.15.0-1, run via catapult (openmsx-catapult-git 949.6dd2ef9-1).

Cheers!

Login or 등록 to post comments

By Manuel

Ascended (17075)

Manuel의 아바타

01-03-2020, 22:25

Looks like your distro installation is missing a libtcl package... and as such this is a bug in the package. Can you file a bug report to Arch, please?

By Wild_Penguin

Hero (618)

Wild_Penguin의 아바타

02-03-2020, 10:56

Openmsx isn't in Arch repositories. I've installed it with the help of AUR.

tcl is listed as a dependency and I have:

$ pacman -Ql tcl | grep libtcl
tcl /usr/lib/libtcl.so
tcl /usr/lib/libtcl8.6.so
tcl /usr/lib/libtclstub8.6.a

There is no separate libtcl package in Arch (there is lib32-tcl but I would bet OpenMSX does not need 32bit libraries).

I will need to dig into this later, as I'll be a bit busy in the following days. It is certainly possible the PKGBUILD is doing something naughty, or OpenMSX just looking for libtcl in the wrong place... or, maybe the tcl version (8.6.10) in Arch is too new?

By Manuel

Ascended (17075)

Manuel의 아바타

02-03-2020, 23:28

A full Tcl installation doesn't only contain the library (shared object) but also some scripts. And one of these is the clock script, which seems to be missing.
In more recent openMSX code I replaced the use of [clock milliseconds] by [openmsx_info realtime], which avoids the dependency on the Tcl scripts that come with the Tcl distro.

So, you have two options:
1. use the latest openMSX development code from git
2. install the package which provides clock.tcl and friends.

I'm using Debian with tcl8.6.10 as well. The Debian pckage of libtcl8.6 includes the scripts:

$ dpkg -L libtcl8.6 | grep clock
/usr/share/tcltk/tcl8.6/clock.tcl

By Wild_Penguin

Hero (618)

Wild_Penguin의 아바타

03-03-2020, 17:24

In arch, clock.tcl is there, but in a different folder:

$ pacman -Ql tcl | grep -i \\.tcl
tcl /usr/lib/itcl4.2.0/itcl.tcl
tcl /usr/lib/itcl4.2.0/itclHullCmds.tcl
tcl /usr/lib/itcl4.2.0/itclWidget.tcl
tcl /usr/lib/itcl4.2.0/pkgIndex.tcl
tcl /usr/lib/tcl8.6/auto.tcl
tcl /usr/lib/tcl8.6/clock.tcl
tcl /usr/lib/tcl8.6/history.tcl
tcl /usr/lib/tcl8.6/http1.0/http.tcl
tcl /usr/lib/tcl8.6/http1.0/pkgIndex.tcl
tcl /usr/lib/tcl8.6/init.tcl
tcl /usr/lib/tcl8.6/opt0.4/optparse.tcl
tcl /usr/lib/tcl8.6/opt0.4/pkgIndex.tcl
tcl /usr/lib/tcl8.6/package.tcl
tcl /usr/lib/tcl8.6/parray.tcl
tcl /usr/lib/tcl8.6/safe.tcl
tcl /usr/lib/tcl8.6/tm.tcl
tcl /usr/lib/tcl8.6/word.tcl
tcl /usr/lib/tdbc1.1.1/pkgIndex.tcl
tcl /usr/lib/tdbc1.1.1/tdbc.tcl
tcl /usr/lib/tdbcmysql1.1.1/pkgIndex.tcl
tcl /usr/lib/tdbcmysql1.1.1/tdbcmysql.tcl
tcl /usr/lib/tdbcodbc1.1.1/pkgIndex.tcl
tcl /usr/lib/tdbcodbc1.1.1/tdbcodbc.tcl
tcl /usr/lib/tdbcpostgres1.1.1/pkgIndex.tcl
tcl /usr/lib/tdbcpostgres1.1.1/tdbcpostgres.tcl
tcl /usr/lib/thread2.8.5/pkgIndex.tcl
tcl /usr/lib/thread2.8.5/ttrace.tcl

I tried to symlink /usr/lib/tcl8.6 to /usr/share/tcltk/tcl8.6, but I still get the same error.

Maybe tcl has been packaged differently on some distributions and for some reason OpenMSX is not looking for stuff in the right directories?

By Manuel

Ascended (17075)

Manuel의 아바타

03-03-2020, 22:11

The folder shouldn't matter. The distro should handle that.

I'd really suggest to file a bug report on the AUR package and in the meantime, build openMSX yourself. I'm would expect it works then.