develooper Front page | perl.perl5.porters | Postings from July 2001

CPAN and module VERSION numbers generated from CVS/RCS

Thread Next
David Dyck
July 24, 2001 10:20
CPAN and module VERSION numbers generated from CVS/RCS
Message ID:

( I directed this to comp.lang.perl.modules as well as p5p,
  until I here where the 'appropriate' place to discuss this
  would be)

I'd like to start a discussion on what the best
way to use VERSION numbers numbers that are generated
from RCS or CVS Revision numbers and how get CPAN to compare
them better.  (the problem seems to arise when the new revision
number has more digits than the earlier version).

perldoc perlmod suggests the following example
   $VERSION = do { my @r = (q$Revision: 2.21 $ =~ /\d+/g);
	sprintf " %d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker

This might fix the problem that I am seeing from
 /usr/local/bin/perl -e 'use CPAN; CPAN::Shell->r;'

/usr/local/bin/perl -e 'use CPAN; CPAN::Shell->r;'
Package namespace         installed    latest  in CPAN file
DBI::DBD                      10.10      10.9  T/TI/TIMB/DBI-1.18.tar.gz

by converting the 10.9 to 10.09, but it doesn't fix the case
when the version is bumped from 10.99 to 10.100.
The problem of changing the number of digits in the
version string still exists.

I am also surprised that perlmod suggest only 2 digits, but
some of the code in CPAN seem to suggest 3 digit version numbers.
(perlmodlib suggests "at least two digits", and to not
 use a "1.3.2" style version.  Exporter also suggests using versions
 numbers with at least 2 decimal places if you use the default require_version)

I looked into ExtUtils::MM_Unix::parse_version
 (pulled in from ExtUtils::MakeMaker)
as well as
	# vgt says "v10.10" > "v10.9, and v10.10 > v10.9
	# I like how vstring uses pack "U*", split /\./, $n;
	#  to extract a version number "v10.9" in a string
	#  into a v10.9 unicode character v-number.

It looks like CPAN's CPAN::Shell->r would handle
"v10.9" and "v10.10" and not report that version 10.9
was newer that version 10.10, but just how far should
a module author have to go.  I'm not sure how
compatible this would be with the Exporter module.

Also, while CPAN goes to the trouble to deal with
version strings beginning with "v", Exporter::require_version only does
a numeric conversion.

I'd like to here thoughts on how this inconsistency
could be resolved, and again, how to work best with
VERSION strings that are derived from RCS/CVS Revisions numbers.

  David Dyck

Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About