in reply to CPAN authors, clean up your directories

There's a good reason to delete old distributions if you happen to use RCS or CVS version numbers for your sub-modules.

In a nutshell: RCS (and thus CVS) version numbers sometimes go backwards from CPAN.pm's point of view. For example, RCS version 1.10 comes after 1.9. CPAN.pm tests versions numerically, so 1.10 comes before 1.9.

At last check, CPAN.pm doesn't resolve the deadlock between two versions of a distribution with "newer" sub-modules than the other. Rather, it considers each version of the distribution to be newer than the other. Hijinks ensue, as the link above shows.

-- Rocco Caputo

  • Comment on Re: CPAN authors, clean up your directories

Replies are listed 'Best First'.
•Re: Re: CPAN authors, clean up your directories
by merlyn (Sage) on Oct 14, 2002 at 17:06 UTC
    Yes, that's called "version retrograde". I detect one of those about every two weeks on the CPAN. I wanna write an autodetector some day, but haven't gotten enough brainpower for it.

    The proper answer isn't "delete old versions", though. The proper answer is to do what it has said in the perlmod manpage for a long time:

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

    -- Randal L. Schwartz, Perl hacker

Re: CPAN authors, clean up your directories
by Abigail-II (Bishop) on Oct 14, 2002 at 17:26 UTC
    Frankly, I consider this a bug in CPAN. The spirit of Perl is to have lots of DWIM and to do the "natural" thing. Considering 10 to be less than 9 isn't natural, nor very DWIM. Version numbers aren't reals. I think that they are working on it in 5.9. (And it's better fixed before 5.10 comes out, otherwise that will be consider older than 5.6 or 5.8).

    Abigail

      Not only that, but Perl itself want's the 3-digit convention. That is, write "5.010" for version 5 subversion 10. That's used in the built-in version comparisons when translating between floating-point numbers and the newer "v-string" format.