diff options
-rw-r--r-- | Master/texmf/scripts/texlive/tlmgrgui.pl | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/Master/texmf/scripts/texlive/tlmgrgui.pl b/Master/texmf/scripts/texlive/tlmgrgui.pl index 9b6c146e020..68f528e5172 100644 --- a/Master/texmf/scripts/texlive/tlmgrgui.pl +++ b/Master/texmf/scripts/texlive/tlmgrgui.pl @@ -1895,19 +1895,30 @@ sub update_list_remote { # check if $pkg itself has been update present, otherwise # add a "+" to the revision number of the upstream package # but do NOT show the sub package + # We have to make sure that the remote version does not get + # TWO times a + added. This can happen if you have multiple + # architectures installed, and all of the .ARCH packages (more + # than 1) are updated, but not the main package # if (TeXLive::TLUtils::member($ma, @avail_arch)) { if (defined($Packages{$mp}{'localrevision'}) && defined($Packages{$mp}{'remoterevision'}) && + # a subpackage was already checked and found to be updated + $Packages{$mp}{'remoterevision'} !~ m/\+$/ && $Packages{$mp}{'localrevision'} < $Packages{$mp}{'remoterevision'}) { # the main package is updated, so just do nothing } else { - # if there is an update to a binary sub package mark that with - # a "+" in the remote revision - my $ltlp = $localtlpdb->get_package($p); - if (defined($ltlp) && $ltlp->revision < $tlp->revision) { - $Packages{$mp}{'remoterevision'} .= "+"; + if ($Packages{$mp}{'remoterevision'} !~ m/\+$/) { + # if there is an update to a binary sub package mark that with + # a "+" in the remote revision + my $ltlp = $localtlpdb->get_package($p); + if (defined($ltlp) && $ltlp->revision < $tlp->revision) { + $Packages{$mp}{'remoterevision'} .= "+"; + } } + # no else clause, in this case the main package is not updated, + # but already one subpackage was checked and a + added, so don't + # do anything } # - $pkg.$arch where $arch is NOT in available_arch # thus it was installed by the user, show it |