summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2011-08-05 06:27:04 +0000
committerNorbert Preining <preining@logic.at>2011-08-05 06:27:04 +0000
commitd68992e6b7de4c94e6841019eb3b27e725c1fae4 (patch)
tree08934aa06a8f4f28be1a29f90cff76c118f77f04
parent9506bed78f3e725e6de5b7ff852e9344e25bc857 (diff)
fix some bugs in depending format handling
git-svn-id: svn://tug.org/texlive/trunk@23420 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-xMaster/texmf/scripts/texlive/tlmgr.pl45
-rw-r--r--Master/tlpkg/TeXLive/TLUtils.pm6
2 files changed, 34 insertions, 17 deletions
diff --git a/Master/texmf/scripts/texlive/tlmgr.pl b/Master/texmf/scripts/texlive/tlmgr.pl
index 9465942d9ac..9461482be3f 100755
--- a/Master/texmf/scripts/texlive/tlmgr.pl
+++ b/Master/texmf/scripts/texlive/tlmgr.pl
@@ -555,7 +555,13 @@ sub do_cmd_and_check
# tlmgr front ends (MacOSX's TeX Live Utility) can read it
# and show it to the user before the possibly long delay.
info("running $cmd ...\n");
- my ($out, $ret) = TeXLive::TLUtils::run_cmd("$cmd 2>&1");
+ my ($out, $ret);
+ if ($opts{"dry-run"}) {
+ $ret = 0;
+ $out = "";
+ } else {
+ ($out, $ret) = TeXLive::TLUtils::run_cmd("$cmd 2>&1");
+ }
if ($ret == 0) {
info("done running $cmd.\n");
log("--output of $cmd:\n$out\n--end of output of $cmd.");
@@ -670,18 +676,25 @@ sub handle_execute_actions
# we are currently only caring for package "latex" and "tex". If
# one of these has changed, we search for all packages *depending*
# on latex/tex and regenerate all formats in these packages.
- my @check_indirect_formats;
- push @check_indirect_formats, $localtlpdb->needed_by("latex")
- if ($::latex_updated);
- push @check_indirect_formats, $localtlpdb->needed_by("tex")
- if ($::tex_updated);
- for my $p (@check_indirect_formats) {
- my $tlp = $localtlpdb->get_package($p);
- if (!defined($tlp)) {
- tlwarn("$p mentioned but not found in local tlpdb, strange!\n");
- next;
- }
- TeXLive::TLUtils::announce_execute_actions("enable", $tlp, "format");
+ #
+ # do this only if we are not in --list or --dry-run mode
+ if (!$opts{"list"}) {
+ my @check_indirect_formats;
+ # TODO:
+ # in case that hyphenation patterns are changed, ie $regenerate_language
+ # then maybe we don't need to update latex based ones?
+ push @check_indirect_formats, $localtlpdb->needed_by("latex")
+ if ($::latex_updated);
+ push @check_indirect_formats, $localtlpdb->needed_by("tex")
+ if ($::tex_updated);
+ for my $p (@check_indirect_formats) {
+ my $tlp = $localtlpdb->get_package($p);
+ if (!defined($tlp)) {
+ tlwarn("$p mentioned but not found in local tlpdb, strange!\n");
+ next;
+ }
+ TeXLive::TLUtils::announce_execute_actions("enable", $tlp, "format");
+ }
}
# format-regenerate is used when the paper size changes. In that
@@ -2855,8 +2868,10 @@ sub action_update {
# special check for depending format updates:
# if one of latex or tex has been updated, we rebuild the formats
# defined in packages *depending* on these packages.
- TeXLive::TLUtils::announce_execute_actions("latex-updated") if ($updated{"latex"});
- TeXLive::TLUtils::announce_execute_actions("tex-updated") if ($updated{"tex"});
+ if (!$opts{"list"}) {
+ TeXLive::TLUtils::announce_execute_actions("latex-updated") if ($updated{"latex"});
+ TeXLive::TLUtils::announce_execute_actions("tex-updated") if ($updated{"tex"});
+ }
print "end-of-updates\n" if $::machinereadable;
diff --git a/Master/tlpkg/TeXLive/TLUtils.pm b/Master/tlpkg/TeXLive/TLUtils.pm
index 50a41ff3098..24175964c84 100644
--- a/Master/tlpkg/TeXLive/TLUtils.pm
+++ b/Master/tlpkg/TeXLive/TLUtils.pm
@@ -1857,8 +1857,10 @@ sub announce_execute_actions {
$what = "map format hyphen" if (!defined($what));
foreach my $e ($tlp->executes) {
if ($e =~ m/^add((Mixed)?Map)\s+([^\s]+)\s*$/) {
- $::execute_actions{$type}{'maps'}{$3} = "$1"
- if ($what =~ m/map/);
+ # save the refs as we have another =~ grep in the following lines
+ my $a = $1;
+ my $b = $3;
+ $::execute_actions{$type}{'maps'}{$b} = $a if ($what =~ m/map/);
} elsif ($e =~ m/^AddFormat\s+(.*)\s*$/) {
my %r = TeXLive::TLUtils::parse_AddFormat_line("$1");
if (defined($r{"error"})) {