Index: tlpkg/TeXLive/TLUtils.pm =================================================================== --- tlpkg/TeXLive/TLUtils.pm (revision 10402) +++ tlpkg/TeXLive/TLUtils.pm (working copy) @@ -66,6 +66,7 @@ TeXLive::TLUtils::conv_to_win_path($path); TeXLive::TLUtils::give_ctan_mirror($path); TeXLive::TLUtils::tlmd5($path); + TeXLive::TLUtils::revless($rev1, $rev2); =head1 DESCRIPTION @@ -115,8 +116,9 @@ &welcome_paths &give_ctan_mirror &tlmd5 + &revless ); - @EXPORT = qw(setup_programs download_file info log debug ddebug tlwarn process_logging_options win32); + @EXPORT = qw(setup_programs download_file info log debug ddebug tlwarn process_logging_options win32 revless); } @@ -1691,6 +1693,49 @@ } } +=pod + +=item C + +Returns true if the first revision is less or equal than the second. + +=cut + + +sub revless { + my ($a, $b) = @_; + # format of a revision number: + # [source:]NNNN[.RRRR] + # where source is an optional source, the default is "texlive" which + # is the main source. But there can be other sources, too. + # NNNN and RRRR are integers (variable number of digits, but at least one + # for NNNN) + # + my (undef, $asource, $arev, undef, $arrr) = ($a =~ m/^((.*):)?([0-9]+)(\.([0-9]+))?$/); + my (undef, $bsource, $brev, undef, $brrr) = ($b =~ m/^((.*):)?([0-9]+)(\.([0-9]+))?$/); + # default source is texlive + $asource || ($asource = "texlive"); + $bsource || ($bsource = "texlive"); + $arrr || ($arrr = 0); + $brrr || ($brrr = 0); + # now everything should be defined + # if aNNNN < bNNNN return true + return 1 if ($arev < $brev); + return 0 if ($arev > $brev); + # so now $arev == $brev + return 1 if ($arrr < $brrr); + return 0 if ($arrr > $brrr); + # so now $arrr == $brrr + # if also the sources are the same return false + return 0 if ($asource eq $bsource); + # the only distinction is made via the source. Here "texlive" is always + # "bigger" than anything else + # since we know that the sources are different + return 1 if ($bsource eq "texlive"); + # ok, last case is just ordered alphabetically + return ($asource lt $bsource); +} + ############################################# # # Taken from Text::ParseWords Index: texmf/scripts/texlive/tlmgr.pl =================================================================== --- texmf/scripts/texlive/tlmgr.pl (revision 10402) +++ texmf/scripts/texlive/tlmgr.pl (working copy) @@ -636,11 +636,11 @@ my $rev = $tlp->revision; my $mediatlp = $mediatlpdb->get_package($pkg); if (!defined($mediatlp)) { - print "$pkg cannot be found in $location\n"; + debug("$pkg cannot be found in $location\n"); next; } my $mediarev = $mediatlp->revision; - if ($rev < $mediarev) { + if (revless($rev,$mediarev)) { $nrupdated++; if ($opt_list) { print "$pkg: local: $rev, source: $mediarev\n"; @@ -719,7 +719,7 @@ print "update: $pkg done\n"; } } - } elsif ($rev > $mediarev) { + } elsif (revless( $mediarev, $rev )) { print "$pkg: revision in $location is less then local revision, not updating!\n"; next; } Index: texmf/scripts/texlive/tlmgrgui/tlmgrgui-real.pl =================================================================== --- texmf/scripts/texlive/tlmgrgui/tlmgrgui-real.pl (revision 10402) +++ texmf/scripts/texlive/tlmgrgui/tlmgrgui-real.pl (working copy) @@ -26,7 +26,7 @@ use TeXLive::TLMedia; use TeXLive::TLPDB; use TeXLive::TLConfig; -use TeXLive::TLUtils qw(setup_programs platform_desc win32); +use TeXLive::TLUtils qw(setup_programs platform_desc win32 revless); use Getopt::Long qw(:config no_autoabbrev require_order); use Tk; @@ -116,7 +116,7 @@ loadremotetlpdbwait => "Loading remote TeX Live Database\nThis may take some time, please wait!", runupdater => "Some package cannot be updated using the GUI!\nPlease run TEXROOT/tlpkg/installer/updater.bat once,\notherwise the updates will not be complete!\nNOTE: You have to QUIT this program first!", actions => "Actions", - reinitlsr => "Re-initalise file database", + reinitlsr => "Re-initialise file database", recreateformats => "Re-create all formats", updatemaps => "Update font map database", warningnonetupdate => "No updates found.\n\nYour installation is set up to look on the disk for updates.\n\nIf you want to install from the Internet for this one time only, click on the \"Change\" button above and select \"Default Net Location\" (or any other network location you know to be working).\n\nIf you want to change it permanently, go to the \"Configuration\" Tab and change the default installation source.", @@ -583,7 +583,7 @@ } else { $urev = 0; } - if ($urev > $lrev) { + if (revless($lrev, $urev)) { if ($lp =~ m/\./) { push @archret, $lp; } else {