summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf/scripts/texlive/tlmgrgui.pl21
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