Artifact a937f1cd3ae9b1aa940f58d31577150017fe5ec2:
File
tools/cvs2fossil/lib/pkgIndex.tcl
part of check-in
[94c39d6375]
- Completed pass 6, wrote the code performing the breaking of cycles. Done by analysing each triple of changesets in the cycle at the file dependency level to see which revisions can be sorted apart. Added some additional utility routines. Extended the changeset class with the accessors required by the cycle breaker.
by
aku on
2007-11-14 05:11:56.
0000: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### #####
0010: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ######
0020: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
0030: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 #############.##
0040: 20 50 61 63 6b 61 67 65 20 6d 61 6e 61 67 65 6d Package managem
0050: 65 6e 74 2e 0a 23 23 20 49 6e 64 65 78 20 6f 66 ent..## Index of
0060: 20 74 68 65 20 6c 6f 63 61 6c 20 70 61 63 6b 61 the local packa
0070: 67 65 73 20 72 65 71 75 69 72 65 64 20 62 79 20 ges required by
0080: 63 76 73 32 66 6f 73 73 69 6c 0a 23 20 23 20 23 cvs2fossil.# # #
0090: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 # ### ##### ####
00a0: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 #### ###########
00b0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
00c0: 23 23 23 23 23 23 23 23 0a 69 66 20 7b 21 5b 70 ########.if {![p
00d0: 61 63 6b 61 67 65 20 76 73 61 74 69 73 66 69 65 ackage vsatisfie
00e0: 73 20 5b 70 61 63 6b 61 67 65 20 72 65 71 75 69 s [package requi
00f0: 72 65 20 54 63 6c 5d 20 38 2e 34 5d 7d 20 72 65 re Tcl] 8.4]} re
0100: 74 75 72 6e 0a 70 61 63 6b 61 67 65 20 69 66 6e turn.package ifn
0110: 65 65 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c eeded vc::fossil
0120: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 20 20 20 ::import::cvs
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0140: 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 1.0 [list sourc
0150: 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 e [file join $di
0160: 72 20 63 76 73 32 66 6f 73 73 69 6c 2e 74 63 6c r cvs2fossil.tcl
0170: 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 ]].package ifnee
0180: 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a ded vc::fossil::
0190: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c import::cvs::fil
01a0: 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 e 1
01b0: 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 .0 [list source
01c0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 [file join $dir
01d0: 63 32 66 5f 66 69 6c 65 2e 74 63 6c 5d 5d 0a 70 c2f_file.tcl]].p
01e0: 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 ackage ifneeded
01f0: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f vc::fossil::impo
0200: 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a 6c rt::cvs::file::l
0210: 6f 64 6d 67 72 20 20 20 20 20 20 31 2e 30 20 5b odmgr 1.0 [
0220: 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c list source [fil
0230: 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f e join $dir c2f_
0240: 66 6c 6f 64 6d 67 72 2e 74 63 6c 5d 5d 0a 70 61 flodmgr.tcl]].pa
0250: 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 ckage ifneeded v
0260: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
0270: 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 t::cvs::file::re
0280: 76 20 20 20 20 20 20 20 20 20 31 2e 30 20 5b 6c v 1.0 [l
0290: 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 ist source [file
02a0: 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f 66 join $dir c2f_f
02b0: 72 65 76 2e 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 rev.tcl]].packag
02c0: 65 20 69 66 6e 65 65 64 65 64 20 76 63 3a 3a 66 e ifneeded vc::f
02d0: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c
02e0: 76 73 3a 3a 66 69 6c 65 3a 3a 73 79 6d 20 20 20 vs::file::sym
02f0: 20 20 20 20 20 20 31 2e 30 20 5b 6c 69 73 74 20 1.0 [list
0300: 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 source [file joi
0310: 6e 20 24 64 69 72 20 63 32 66 5f 66 73 79 6d 2e n $dir c2f_fsym.
0320: 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 tcl]].package if
0330: 6e 65 65 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 needed vc::fossi
0340: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs::
0350: 66 69 6c 65 3a 3a 74 72 75 6e 6b 20 20 20 20 20 file::trunk
0360: 20 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 1.0 [list sour
0370: 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 ce [file join $d
0380: 69 72 20 63 32 66 5f 66 74 72 75 6e 6b 2e 74 63 ir c2f_ftrunk.tc
0390: 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 l]].package ifne
03a0: 65 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a eded vc::fossil:
03b0: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 6f 70 :import::cvs::op
03c0: 74 69 6f 6e 20 20 20 20 20 20 20 20 20 20 20 20 tion
03d0: 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 1.0 [list source
03e0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 [file join $dir
03f0: 20 63 32 66 5f 6f 70 74 69 6f 6e 2e 74 63 6c 5d c2f_option.tcl]
0400: 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 ].package ifneed
0410: 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 ed vc::fossil::i
0420: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 69 6e 74 65 mport::cvs::inte
0430: 67 72 69 74 79 20 20 20 20 20 20 20 20 20 31 2e grity 1.
0440: 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 0 [list source [
0450: 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 file join $dir c
0460: 32 66 5f 69 6e 74 65 67 72 69 74 79 2e 74 63 6c 2f_integrity.tcl
0470: 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 ]].package ifnee
0480: 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a ded vc::fossil::
0490: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 import::cvs::pas
04a0: 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 s 1
04b0: 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 .0 [list source
04c0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 [file join $dir
04d0: 63 32 66 5f 70 61 73 73 2e 74 63 6c 5d 5d 0a 70 c2f_pass.tcl]].p
04e0: 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 ackage ifneeded
04f0: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f vc::fossil::impo
0500: 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 63 rt::cvs::pass::c
0510: 6f 6c 6c 61 72 20 20 20 20 20 20 31 2e 30 20 5b ollar 1.0 [
0520: 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c list source [fil
0530: 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f e join $dir c2f_
0540: 70 63 6f 6c 6c 61 72 2e 74 63 6c 5d 5d 0a 70 61 pcollar.tcl]].pa
0550: 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 ckage ifneeded v
0560: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
0570: 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 63 6f t::cvs::pass::co
0580: 6c 6c 72 65 76 20 20 20 20 20 31 2e 30 20 5b 6c llrev 1.0 [l
0590: 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 ist source [file
05a0: 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f 70 join $dir c2f_p
05b0: 63 6f 6c 6c 72 65 76 2e 74 63 6c 5d 5d 0a 70 61 collrev.tcl]].pa
05c0: 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 ckage ifneeded v
05d0: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
05e0: 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 63 6f t::cvs::pass::co
05f0: 6c 6c 73 79 6d 20 20 20 20 20 31 2e 30 20 5b 6c llsym 1.0 [l
0600: 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 ist source [file
0610: 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f 70 join $dir c2f_p
0620: 63 6f 6c 6c 73 79 6d 2e 74 63 6c 5d 5d 0a 70 61 collsym.tcl]].pa
0630: 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 ckage ifneeded v
0640: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
0650: 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 66 69 t::cvs::pass::fi
0660: 6c 74 65 72 73 79 6d 20 20 20 31 2e 30 20 5b 6c ltersym 1.0 [l
0670: 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 ist source [file
0680: 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f 70 join $dir c2f_p
0690: 66 69 6c 74 65 72 73 79 6d 2e 74 63 6c 5d 5d 0a filtersym.tcl]].
06a0: 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 package ifneeded
06b0: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 vc::fossil::imp
06c0: 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a ort::cvs::pass::
06d0: 69 6e 69 74 63 73 65 74 73 20 20 20 31 2e 30 20 initcsets 1.0
06e0: 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 [list source [fi
06f0: 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 le join $dir c2f
0700: 5f 70 69 6e 69 74 63 73 65 74 73 2e 74 63 6c 5d _pinitcsets.tcl]
0710: 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 ].package ifneed
0720: 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 ed vc::fossil::i
0730: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 mport::cvs::pass
0740: 3a 3a 62 72 65 61 6b 72 63 79 63 6c 65 20 31 2e ::breakrcycle 1.
0750: 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 0 [list source [
0760: 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 file join $dir c
0770: 32 66 5f 70 62 72 65 61 6b 72 63 79 63 6c 65 2e 2f_pbreakrcycle.
0780: 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 tcl]].package if
0790: 6e 65 65 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 needed vc::fossi
07a0: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs::
07b0: 70 72 6f 6a 65 63 74 20 20 20 20 20 20 20 20 20 project
07c0: 20 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 1.0 [list sour
07d0: 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 ce [file join $d
07e0: 69 72 20 63 32 66 5f 70 72 6f 6a 65 63 74 2e 74 ir c2f_project.t
07f0: 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e cl]].package ifn
0800: 65 65 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c eeded vc::fossil
0810: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 ::import::cvs::p
0820: 72 6f 6a 65 63 74 3a 3a 6c 6f 64 6d 67 72 20 20 roject::lodmgr
0830: 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 1.0 [list sourc
0840: 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 e [file join $di
0850: 72 20 63 32 66 5f 70 6c 6f 64 6d 67 72 2e 74 63 r c2f_plodmgr.tc
0860: 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 l]].package ifne
0870: 65 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a eded vc::fossil:
0880: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 :import::cvs::pr
0890: 6f 6a 65 63 74 3a 3a 72 65 76 20 20 20 20 20 20 oject::rev
08a0: 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 1.0 [list source
08b0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 [file join $dir
08c0: 20 63 32 66 5f 70 72 65 76 2e 74 63 6c 5d 5d 0a c2f_prev.tcl]].
08d0: 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 package ifneeded
08e0: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 vc::fossil::imp
08f0: 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 6f 6a 65 63 ort::cvs::projec
0900: 74 3a 3a 72 65 76 6c 69 6e 6b 20 20 31 2e 30 20 t::revlink 1.0
0910: 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 [list source [fi
0920: 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 le join $dir c2f
0930: 5f 70 72 65 76 6c 69 6e 6b 2e 74 63 6c 5d 5d 0a _prevlink.tcl]].
0940: 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 package ifneeded
0950: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 vc::fossil::imp
0960: 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 6f 6a 65 63 ort::cvs::projec
0970: 74 3a 3a 73 79 6d 20 20 20 20 20 20 31 2e 30 20 t::sym 1.0
0980: 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 [list source [fi
0990: 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 le join $dir c2f
09a0: 5f 70 73 79 6d 2e 74 63 6c 5d 5d 0a 70 61 63 6b _psym.tcl]].pack
09b0: 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 63 3a age ifneeded vc:
09c0: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import:
09d0: 3a 63 76 73 3a 3a 70 72 6f 6a 65 63 74 3a 3a 74 :cvs::project::t
09e0: 72 75 6e 6b 20 20 20 20 31 2e 30 20 5b 6c 69 73 runk 1.0 [lis
09f0: 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a t source [file j
0a00: 6f 69 6e 20 24 64 69 72 20 63 32 66 5f 70 74 72 oin $dir c2f_ptr
0a10: 75 6e 6b 2e 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 unk.tcl]].packag
0a20: 65 20 69 66 6e 65 65 64 65 64 20 76 63 3a 3a 66 e ifneeded vc::f
0a30: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c
0a40: 76 73 3a 3a 72 65 70 6f 73 69 74 6f 72 79 20 20 vs::repository
0a50: 20 20 20 20 20 20 31 2e 30 20 5b 6c 69 73 74 20 1.0 [list
0a60: 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 source [file joi
0a70: 6e 20 24 64 69 72 20 63 32 66 5f 72 65 70 6f 73 n $dir c2f_repos
0a80: 69 74 6f 72 79 2e 74 63 6c 5d 5d 0a 70 61 63 6b itory.tcl]].pack
0a90: 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 63 3a age ifneeded vc:
0aa0: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import:
0ab0: 3a 63 76 73 3a 3a 73 74 61 74 65 20 20 20 20 20 :cvs::state
0ac0: 20 20 20 20 20 20 20 20 31 2e 30 20 5b 6c 69 73 1.0 [lis
0ad0: 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a t source [file j
0ae0: 6f 69 6e 20 24 64 69 72 20 63 32 66 5f 73 74 61 oin $dir c2f_sta
0af0: 74 65 2e 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 te.tcl]].package
0b00: 20 69 66 6e 65 65 64 65 64 20 76 63 3a 3a 72 63 ifneeded vc::rc
0b10: 73 3a 3a 70 61 72 73 65 72 20 20 20 20 20 20 20 s::parser
0b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0b30: 20 20 20 20 20 31 2e 30 20 5b 6c 69 73 74 20 73 1.0 [list s
0b40: 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e ource [file join
0b50: 20 24 64 69 72 20 72 63 73 70 61 72 73 65 72 2e $dir rcsparser.
0b60: 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 tcl]].package if
0b70: 6e 65 65 64 65 64 20 76 63 3a 3a 74 6f 6f 6c 73 needed vc::tools
0b80: 3a 3a 6c 6f 67 20 20 20 20 20 20 20 20 20 20 20 ::log
0b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0ba0: 20 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 1.0 [list sour
0bb0: 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 ce [file join $d
0bc0: 69 72 20 6c 6f 67 2e 74 63 6c 5d 5d 0a 70 61 63 ir log.tcl]].pac
0bd0: 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 63 kage ifneeded vc
0be0: 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 20 20 20 ::tools::misc
0bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0c00: 20 20 20 20 20 20 20 20 20 31 2e 30 20 5b 6c 69 1.0 [li
0c10: 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 st source [file
0c20: 6a 6f 69 6e 20 24 64 69 72 20 6d 69 73 63 2e 74 join $dir misc.t
0c30: 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e cl]].package ifn
0c40: 65 65 64 65 64 20 76 63 3a 3a 74 6f 6f 6c 73 3a eeded vc::tools:
0c50: 3a 74 72 6f 75 62 6c 65 20 20 20 20 20 20 20 20 :trouble
0c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0c70: 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 1.0 [list sourc
0c80: 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 e [file join $di
0c90: 72 20 74 72 6f 75 62 6c 65 2e 74 63 6c 5d 5d 0a r trouble.tcl]].
0ca0: 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 package ifneeded
0cb0: 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 69 64 20 20 vc::tools::id
0cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0cd0: 20 20 20 20 20 20 20 20 20 20 20 20 31 2e 30 20 1.0
0ce0: 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 [list source [fi
0cf0: 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 69 64 2e le join $dir id.
0d00: 74 63 6c 5d 5d 0a tcl]].