Tcl Library Source Code

View Ticket
Login
Ticket UUID: 1482302b360a3a4535c6a8cda69dd2a1f028893a
Title: Version mismatch in tcllib modules between pkgIndex and source file.
Type: Bug Version: 2.0
Submitter: anonymous Created on: 2023-11-30 18:19:51
Subsystem: (unused) Assigned To: aku
Priority: 5 Medium Severity: Critical
Status: Closed Last Modified: 2024-01-08 13:03:46
Resolution: Fixed Closed By: aku
    Closed on: 2024-01-08 13:03:46
Description:
Attempting to run tklib tests fails due to bad version number in tcllib module.
This is probably not just this module alone:

 attempt to provide package term::ansi::code::attr 0.2 failed: package term::ansi::code::attr 0.1 provided instead

The full transcript:

$ /home/briang42/tcl_core/usr_dist/bin/wish9.0 sak.tcl test run -s "/home/briang42/tcl_core/usr_dist/bin/tclsh9.0"
auto_path=./modules //zipfs:/lib/tcl/tcl_library //zipfs:/lib/tcl /home/briang42/tcl_core/usr_dist/lib /home/briang42/tcl_core/usr_dist/lib/tcllib2.0 /home/briang42/tcl_core/usr_dist/lib/vfs1.4.2/template //zipfs:/lib/tk/tk_library //zipfs:/lib/tk/tk_library/ttk

Unknown command "run" : 
 attempt to provide package term::ansi::code::attr 0.2 failed: package term::ansi::code::attr 0.1 provided instead
    ("package ifneeded term::ansi::code::attr 0.2" script)
    invoked from within
"package require $package"
    (procedure "getpackage" line 9)
    invoked from within
"getpackage term::ansi::code::attr term/ansi/code/attr.tcl"
    (file "./support/devel/sak/util/color.tcl" line 24)
    invoked from within
"source ./support/devel/sak/util/color.tcl"
    ("package ifneeded sak::color 1.0" script)
    invoked from within
"package require  sak::color"
    (file "./support/devel/sak/test/run.tcl" line 9)
    invoked from within
"source ./support/devel/sak/test/run.tcl"
    ("package ifneeded sak::test::run 1.0" script)
    invoked from within
"package require sak::test::$cmd"

    test -- Execute testsuites

    sak test run ?-s|--shell PATH? ?-l|--log STEM? ?-g|--valgrind? ?-v? ?MODULE ...?

        Run the testsuites of the specified modules, using the shell
        running SAK for the testsuites as well. If no modules are
        specified the testsuites of all modules are run.

        If --valgrind is specified the testsuites are run under the
        valgrind memory checker. NOTE. This feature is not available
        on the windows platform. Requests for it will be ignored.

        If one or more --shell's are specified the testsuites are run
        against them. If none are specified the shells registered with
        'shell add' (see below) are used instead. If none are
        specified the shell executing the sak is used instead.

        By default the output from a run is animated feedback of the
        progress made. If -v is specified the actual log is returned
        instead.

        If a log STEM is specified the extended log normally activated
        via -v is written to STEM.log while the user is provided with
        the regular feedback during execution. In addition the
        summaries from the feedback are written to STEM.summary as
        well, and also sorted into STEM.failures, STEM.skipped, and
        STEM.none. The -l switch overides -v.

    sak test shells

        Returns a list of the registered shells, one per line, used to
        execute the testsuites.

    sak test shell add PATH...

        Adds the specified paths to the list of shells to use when
        executing testsuites.

    sak test shell delete PATH...

        Removes the specified paths from the list of shells to use
        when executing testsuites.

    NOTE: The list of registered shells is a per-user configuration
          setting and is saved in the file "$HOME/.Tcllib/Registry".
User Comments: aku added on 2024-01-08 13:03:46:
Fixed with commit [7bed00f1fa].

See also ticket [7be06f3334].

Thanks to Brian for the report.

aku added on 2024-01-08 12:31:29:
Thanks Brian.

Note that `sak.tcl validate versions` should make this kind of check easier.

I forgot to run this before and after the integration of Rolf's Tcl 9 work.
See also ticket [7be06f3334].

anonymous added on 2023-11-30 19:15:52:
Here is a filtered list comparing "package provide" with "package ifneeded".
(provide on the right, ifneeded on the left)

$ diff -w s_pr_x s_if_x 
6,7c6,7
< package  base32::core 0.2
< package  base32::hex 0.2
---
> package  base32::core 0.1 
> package  base32::hex  0.1 
9d8
< package  base64c 0.1.1
17a17
> package  calendar 0.3 
21d20
< package  clay 0.8.7
26c25,26
< package  configuration 1
---
> package  configuration    1.1   
> package  control 0.1.4 
32d31
< package  crcc 1.0.0
42,46c41,43
< package  dns 1.6
< package  docstrip 1.3
< package  docstrip 1.3
< package  docstrip::util 1.3.2
< package  docstrip::util 1.3.2
---
> package  dns    1.6.0 
> package  docstrip 1.3\
> package  docstrip::util 1.3.2\
49c46
< package  doctools::config 0.1
---
> package  doctools::config 0.2 
76c73,74
< package  doctools::paths 0.1
---
> package  doctools::nroff::man_macros 0.2 
> package  doctools::paths  0.2 
80c78
< package  doctools::toc 2.1
---
> package  doctools::toc                 2     
94,101c92
< package  doctools::idx::export::plugin 1}
< package  doctools::idx::import::plugin 1}
< package  doctools::toc::export::plugin 1}
< package  doctools::toc::import::plugin 1}
< package  pt::peg::export::plugin 1}
< package  pt::peg::import::plugin 1}
< package  pt::peg::import::plugin 1}
< package  exif 1.1.3 ; # first release
---
> package  exif 1.1.3 
112,116c103
< package  foo 1.2</pre>
< package  foo::bar 1.0
< package  foo::bar 1.0
< package  foo::bar 1.0
< package  foo::bar 1\&.0
---
> package  ftp         2.4.14 
117a105,106
> package  ftp::geturl 0.2.3  
> package  generator 0.3 
119,121c108,110
< package  grammar::aycock 1.1
< package  grammar::aycock::debug 1.1
< package  grammar::aycock::runtime 1.1
---
> package  grammar::aycock 1.1 \
> package  grammar::aycock::debug 1.1 \
> package  grammar::aycock::runtime 1.1 \
140a130,142
> # "package " command to set up package-related
> # "package " command to set up package-related
> # "package " command to set up package-related
> # "package " command to set up package-related
> # "package " command to set up package-related
> # "package " command to set up package-related
> # "package " command to set up package-related
> # "package " command to set up package-related
> # "package " command to set up package-related
> # "package " command to set up package-related
> # "package " command to set up package-related
> # "package " command to set up package-related
> ### package  pg::peg::grammar      0.1 
147d148
< package  ipMorec 1.0
152d152
< package  jsonc 1.1.2
157c157
< package  ldapx 1.3
---
> package  ldapx 1.2 
161d160
< package  ::logger::snit 0.1
163d161
< package  ::logger::xotcl 0.2
169a168
> package  math                    1.2.6 
172c171
< package  math::calculus 1.1
---
> package  math::calculus          1.0   
185c184
< package  math::interpolate 1.1.4
---
> package  math::interpolate       1.1.3 
188d186
< package  math::numtheory 1.1.3
200c198
< package  mbox 1.0
---
> package  mbox 1.1 
202d199
< package  md4c 1.1.0
205d201
< package  md5c 0.12;              # 
207d202
< package  md5cryptc 1.0
210d204
< package  mktie 1.0
212c206
< package  mutl 1.0
---
> package  mutl 1.1 
215c209
< package  nameserv::cluster 0.2.6}
---
> package  nameserv::cluster 0.2.6  {package require udpcluster ; package provide nameserv::cluster 0.2.6}
218c212
< package  namespacex 0.4
---
> package  namespacex 0.3 
221,224c215,216
< package  nmea 1.1.0
< package  nns 1.2
< package  nnsd 1.0.1
< package  nnslog 1.0
---
> package  nettool::available_ports 0.2 {package require nettool ; package provide nettool::available_ports 0.2}
> package  nmea 1.0.0 
233,234d224
< package  91 1; class a {proc a {this} {}}}\
< package  page 1.0
240a231
> package  page::config::peg   0.2 
253a245,246
> package  page::reader::hb      0.2 
> package  page::reader::lemon   0.2 
255a249,250
> package  page::reader::peg     0.2 
> package  page::reader::ser     0.2 
257a253,254
> package  page::reader::treeser 0.2 
> package  page::transform::mecpu 0.2 \
258a256
> package  page::transform::reachable  0.2 \
259a258
> package  page::transform::realizable 0.2 \
266a266
> package  page::writer::hb       0.2 
267a268,269
> package  page::writer::identity 0.2 
> package  page::writer::me       0.2   
269a272
> package  page::writer::mecpu    0.2.1 
270a274,275
> package  page::writer::null     0.2 
> package  page::writer::peg      0.2   
272a278,279
> package  page::writer::ser      0.2 
> package  page::writer::tpc      0.2   
275c282,283
< package  pg::peg::grammar 0.2
---
> package  page::writer::tree     0.2 
> package  paths            1.1   
288,325d295
< package  dict 1
< package  dict 1
< package  dict 1
< package  dict 1
< package  doctools::idx::export::plugin 1
< package  doctools::idx::export::plugin 1
< package  doctools::idx::export::plugin 1
< package  doctools::idx::export::plugin 1
< package  doctools::idx::export::plugin 1
< package  doctools::idx::export::plugin 1
< package  doctools::idx::import::plugin 1
< package  doctools::idx::import::plugin 1
< package  doctools::toc::export::plugin 1
< package  doctools::toc::export::plugin 1
< package  doctools::toc::export::plugin 1
< package  doctools::toc::export::plugin 1
< package  doctools::toc::export::plugin 1
< package  doctools::toc::export::plugin 1
< package  doctools::toc::import::plugin 1
< package  doctools::toc::import::plugin 1
< package  exif 1.0
< package  exif 1.0
< package  exif 1.0
< package  foo::bar 1.0
< package  mime 1.2
< package  mime 1.2
< package  mime 1.2
< package  page::plugin::reader 1.0
< package  page::plugin::transform 1.0
< package  page::plugin::writer 1.0
< package  pt::peg::export::plugin 1
< package  pt::peg::export::plugin 1
< package  pt::peg::export::plugin 1
< package  pt::peg::import::plugin 1
< package  pt::peg::import::plugin 1
< package  smtp 1.2
< package  smtp 1.2
< package  smtp 1.2
354c324
< package  pt::rde::critcl 1.3.4
---
> package  pt::rde::nx  1.2.1.2 
361d330
< package  rc4c 1.2.0
395d363
< package  sha1c 2.0.3
404c372
< package  snit 2.3.3
---
>     package  snit 2.3.3 \
409d376
< package  stringprep::data 1.0.1
414c381
< package  struct 2.2
---
> package  struct            2.1   
453,455d419
< package  tcldocstrip 1.0.1
< package  tcllibc 0.4
< package  tcllib::testutils 1.2
470a435
> package  tepam::doc_gen 0.1.2 
473c438
< package  term::ansi::code::attr 0.1
---
> package  term::ansi::code::attr   0.2 
475,476c440,441
< package  term::ansi::code::macros 0.1
< package  term::ansi::ctrl::unix 0.1.1
---
> package  term::ansi::code::macros 0.2 
> package  term::ansi::ctrl::unix   0.2.1 
483a449,450
> package  textutil           0.9   
> package  textutil::adjust   0.7.3 
484a452
> package  textutil::expander 1.3.1 
486a455
> package  textutil::repeat   0.7   
487a457
> package  textutil::split    0.8   
488a459
> package  textutil::string   0.8   
489a461
> package  textutil::tabify   0.7   
490a463
> package  textutil::trim     0.7   
492,497c465
< package  textutil::wcswidth 35.2
< package  textutil::wcswidth 35.2
< package  textutil::wcswidth 35.2
< package  textutil::wcswidth 35.2
< package  textutil::wcswidth 35.2
< package  textutil::wcswidth 35.2
---
> package  textutil::wcswidth 35.0  
501a470,475
> package  tie::std::array    1.2 
> package  tie::std::dsource  1.2 
> package  tie::std::file     1.2 
> package  tie::std::growfile 1.2 
> package  tie::std::log      1.2 
> package  tie::std::rarray   1.2 
505,508d478
< package  tool::option 0.1
< package  tool::option 0.1
< package  tool::pipeline 0.1
< package  tool::pipeline 0.1
522d491
< package  unicode::data 1.0.0
540c509
< package  valtype::usnpi 1
---
> package  valtype::usnpi                  1.1 
544c513
< package  wip 2.3
---
> package  wip 2.2 
548d516
< package  yencode 1.1.4