diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2013-12-30 08:50:28 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2013-12-30 08:50:28 (GMT) |
commit | 6418dc63fd2459110ec65445bbc611c4aa2e32fe (patch) | |
tree | 2af8a18fefd4c3bf00798b38a98ad9839ff87342 /library/tm.tcl | |
parent | dfe92fee6cdcf5ae490fb332111618fbb08a6bdd (diff) | |
parent | 1749e8cdf33e8232f22acc08f9ce4301b00ba7eb (diff) | |
download | tcl-6418dc63fd2459110ec65445bbc611c4aa2e32fe.zip tcl-6418dc63fd2459110ec65445bbc611c4aa2e32fe.tar.gz tcl-6418dc63fd2459110ec65445bbc611c4aa2e32fe.tar.bz2 |
merge main working branch
Diffstat (limited to 'library/tm.tcl')
-rw-r--r-- | library/tm.tcl | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/library/tm.tcl b/library/tm.tcl index ce8a013..55efda6 100644 --- a/library/tm.tcl +++ b/library/tm.tcl @@ -54,7 +54,7 @@ namespace eval ::tcl::tm { # Export the public API namespace export path - namespace ensemble create -command path -subcommand {add remove list} + namespace ensemble create -command path -subcommands {add remove list} } # ::tcl::tm::path implementations -- @@ -238,6 +238,15 @@ proc ::tcl::tm::UnknownHandler {original name args} { continue } + if {[package ifneeded $pkgname $pkgversion] ne {}} { + # There's already a provide script registered for + # this version of this package. Since all units of + # code claiming to be the same version of the same + # package ought to be identical, just stick with + # the one we already have. + continue + } + # We have found a candidate, generate a "provide script" # for it, and remember it. Note that we are using ::list # to do this; locally [list] means something else without @@ -260,10 +269,8 @@ proc ::tcl::tm::UnknownHandler {original name args} { # Otherwise we still have to fallback to the regular # package search to complete the processing. - if { - ($pkgname eq $name) && - [package vsatisfies $pkgversion {*}$args] - } then { + if {($pkgname eq $name) + && [package vsatisfies $pkgversion {*}$args]} { set satisfied 1 # We do not abort the loop, and keep adding provide @@ -347,7 +354,7 @@ proc ::tcl::tm::Defaults {} { # Calls 'path add' to paths to the list of module search paths. proc ::tcl::tm::roots {paths} { - foreach {major minor} [split [info tclversion] .] break + lassign [split [package present Tcl] .] major minor foreach pa $paths { set p [file join $pa tcl$major] for {set n $minor} {$n >= 0} {incr n -1} { |