Alan Grunwald
2024-09-13 23:13:13 UTC
How compatible is tcllib 1.21 with tcl9.0b3?
I've built tcl-9.0b3 and want to see how it plays with my scripts. (OK,
more properly that should be "how my scripts play with tcl 9.0b3.)
I'm testing with a script that includes [package require uri].
This fails, saying it can't find the package.
I've dug around a bit and I see that the pkgIndex.tcl in tcllib-1.21
starts with a fast return if
[package vsatisfies [package provide Tcl] 8]
returns 0.
I've changed that to
[package vsatisfies [package provide Tcl] 8 9]
and it now gets a couple of lines further down the script where it
encounters
if {(0 == [catch {
package vcompare [info patchlevel] [info patchlevel]
}]) && (
[package vcompare [info patchlevel] 8.3.1] >= 0
)} {return}
and returns.
I don't understand this line well enough to change it. As far as I can
make out,
package vcompare [info patchlevel] [info patchlevel]
will always return 0 and won't throw an exception, so this should always
result in a premature return, before all the
package ifneeded
commands for the packages withing tcllib are executed.
However, that argument applies equally to tcl8.6.14, but the same
pkgIndex.tcl works just fine on my home-built copy of that.
It's getting late and I'll have another look tomorrow and see if I can
work out what's happening. In the mean time, I'd very much appreciate
any help you can provide.
I've built tcl-9.0b3 and want to see how it plays with my scripts. (OK,
more properly that should be "how my scripts play with tcl 9.0b3.)
I'm testing with a script that includes [package require uri].
This fails, saying it can't find the package.
I've dug around a bit and I see that the pkgIndex.tcl in tcllib-1.21
starts with a fast return if
[package vsatisfies [package provide Tcl] 8]
returns 0.
I've changed that to
[package vsatisfies [package provide Tcl] 8 9]
and it now gets a couple of lines further down the script where it
encounters
if {(0 == [catch {
package vcompare [info patchlevel] [info patchlevel]
}]) && (
[package vcompare [info patchlevel] 8.3.1] >= 0
)} {return}
and returns.
I don't understand this line well enough to change it. As far as I can
make out,
package vcompare [info patchlevel] [info patchlevel]
will always return 0 and won't throw an exception, so this should always
result in a premature return, before all the
package ifneeded
commands for the packages withing tcllib are executed.
However, that argument applies equally to tcl8.6.14, but the same
pkgIndex.tcl works just fine on my home-built copy of that.
It's getting late and I'll have another look tomorrow and see if I can
work out what's happening. In the mean time, I'd very much appreciate
any help you can provide.