diff options
50 files changed, 646 insertions, 832 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl index 2044e3aca2a..0921eeea637 100755 --- a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl +++ b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl @@ -1,12 +1,12 @@ #!/usr/bin/env perl -# $Id: tlmgr.pl 36997 2015-04-22 00:21:41Z preining $ +# $Id: tlmgr.pl 37011 2015-04-22 23:10:04Z preining $ # # Copyright 2008-2015 Norbert Preining # This file is licensed under the GNU General Public License version 2 # or any later version. -my $svnrev = '$Revision: 36997 $'; -my $datrev = '$Date: 2015-04-22 02:21:41 +0200 (Wed, 22 Apr 2015) $'; +my $svnrev = '$Revision: 37011 $'; +my $datrev = '$Date: 2015-04-23 01:10:04 +0200 (Thu, 23 Apr 2015) $'; my $tlmgrrevision; my $prg; if ($svnrev =~ m/: ([0-9]+) /) { @@ -26,6 +26,14 @@ our $packagelogged; our $tlmgr_config_file; our $pinfile; our $action; # for the pod2usage -sections call +our %opts; + +END { + if ($opts{"pause"}) { + print "Press Enter to exit the program.\n"; + <STDIN>; + } +} BEGIN { $^W = 1; @@ -116,14 +124,223 @@ our $FLAG_REINSTALL = "I"; our $common_fmtutil_args = "--no-error-if-no-engine=$TeXLive::TLConfig::PartialEngineSupport"; +# return flags for error handling +# +# all fine +our $F_OK = 0; +# +# some warnings, but we still try to run post actions +our $F_WARNING = 1; +# +# error, terminating +our $F_ERROR = 2; +# +# all fine, but no need to run post actions +our $F_NOPOSTACTION = 4; + # option variables $::gui_mode = 0; $::machinereadable = 0; -our %opts; +my %globaloptions = ( + "gui" => 1, + "gui-lang" => "=s", + "debug-translation" => 1, + "location|repository|repo" => "=s", + "machine-readable" => 1, + "package-logfile" => "=s", + "persistent-downloads" => "!", + "no-execute-actions" => 1, + "pin-file" => "=s", + "pause" => 1, + "print-platform|print-arch" => 1, + "version" => 1, + "help" => 1, + "h|?" => 1); + +my %action_specification = ( + '_include_tlpobj' => { + "run-post" => 0, + "function" => \&action_include_tlpobj + }, + "backup" => { + "options" => { + "backupdir" => "=s", + "clean" => ":-99", + "all" => 1, + "dry-run|n" => 1 + }, + "run-post" => 1, + "function" => \&action_backup + }, + "candidates" => { + "run-post" => 0, + "function" => \&action_candidates + }, + "check" => { + "options" => { "use-svn" => 1 }, + "run-post" => 1, + "function" => \&action_check + }, + "conf" => { + "options" => { + "conffile" => "=s", + "delete" => 1, + }, + "run-post" => 0, + "function" => \&action_conf + }, + "dump-tlpdb" => { + "options" => { "local" => 1, remote => 1 }, + "run-post" => 0, + "function" => \&action_dumptlpdb + }, + "generate" => { + "options" => { + "localcfg" => "=s", + "dest" => "=s", + "rebuild-sys" => 1 + }, + "run-post" => 1, + "function" => \&action_generate + }, + "get-mirror" => { + "run-post" => 0, + "function" => \&action_get_mirror + }, + "gui" => { + "options" => { "load" => 1 }, + "run-post" => 1, + "function" => \&action_gui + }, + "info" => { + "options" => { "list" => 1, "only-installed" => 1 }, + "run-post" => 0, + "function" => \&action_info + }, + "init-usertree" => { + "run-post" => 0, + "function" => \&action_init_usertree + }, + "install" => { + "options" => { + "no-depends" => 1, + "no-depends-at-all" => 1, + "file" => 1, + "reinstall" => 1, + "force" => 1, + "dry-run|n" => 1, + "with-doc" => 1, + "with-src" => 1, + }, + "run-post" => 1, + "function" => \&action_install + }, + "option" => { + "run-post" => 1, + "function" => \&action_option + }, + "paper" => { + "options" => { "list" => 1 }, + "run-post" => 1, + "function" => \&action_paper + }, + "path" => { + "options" => { "w32mode" => "=s" }, + "run-post" => 0, + "function" => \&action_path + }, + "pinning" => { + "options" => { "all" => 1 }, + "run-post" => 1, + "function" => \&action_pinning + }, + "platform" => { + "options" => { "dry-run|n" => 1 }, + "run-post" => 1, + "function" => \&action_platform + }, + "postaction" => { + "options" => { + "w32mode" => "=s", + "all" => 1, + "fileassocmode" => "=i" + }, + "run-post" => 0, + "function" => \&action_postaction + }, + "recreate-tlpdb" => { + "options" => { "platform|arch" => "=s" }, + "run-post" => 0, + "function" => \&action_recreate_tlpdb + }, + "remove" => { + "options" => { + "no-depends" => 1, + "no-depends-at-all" => 1, + "force" => 1, + "dry-run|n" => 1 + }, + "run-post" => 1, + "function" => \&action_remove + }, + repository => { + "options" => { "with-platforms" => 1 }, + "run-post" => 1, + "function" => \&action_repository + }, + "restore" => { + "options" => { + "backupdir" => "=s", + "dry-run|n" => 1, + "all" => 1, + "force" => 1 + }, + "run-post" => 1, + "function" => \&action_restore + }, + "search" => { + "options" => { + "global" => 1, + "word" => 1, + "file" => 1, + "all" => 1, + }, + "run-post" => 1, + "function" => \&action_search + }, + "uninstall" => { + "options" => { "force" => 1 }, + "run-post" => 0, + "function" => \&action_uninstall + }, + "update" => { + "options" => { + "no-depends" => 1, + "no-depends-at-all" => 1, + "all" => 1, + "self" => 1, + "list" => 1, + "no-auto-remove" => 1, + "no-auto-install" => 1, + "reinstall-forcibly-removed" => 1, + "force" => 1, + "backupdir" => "=s", + "backup" => 1, + "exclude" => "=s@", + "dry-run|n" => 1 + }, + "run-post" => 1, + "function" => \&action_update + }, + "version" => { }, # handled separately +); main() if $ismain; +##################################################################### + + sub main { my %options; # TL options from local tlpdb @@ -146,75 +363,6 @@ sub main { "version" => 1, ); - my %actionoptions = ( - "backup" => { "all" => 1, - "backupdir" => "=s", - "clean" => ":-99", - "dry-run|n" => 1 }, - "candidates" => { }, - "check" => { "use-svn" => 1 }, - "conf" => { "conffile" => "=s", - "delete" => 1 }, - "dump-tlpdb" => { "local" => 1, - "remote" => 1 }, - "generate" => { "dest" => "=s", - "localcfg" => "=s", - "rebuild-sys" => 1 }, - "get-mirror" => { }, - "gui" => { "load" => 1 }, - "help" => { }, - "info" => { "list" => 1, - "only-installed" => 1 }, - "init-usertree" => { }, - "install" => { "dry-run|n" => 1, - "file" => 1, - "force" => 1, - "with-doc" => 1, - "with-src" => 1, - "no-depends" => 1, - "no-depends-at-all" => 1, - "reinstall" => 1}, - "option" => { }, - "paper" => { "list" => 1 }, - "path" => { "w32mode" => "=s" }, - "pinning" => { "all" => 1 }, - "platform" => { "dry-run|n" => 1 }, - "postaction" => { "all" => 1, - "fileassocmode" => "=i", - "w32mode" => "=s"}, - "recreate-tlpdb"=> { "platform|arch" => "=s" }, - "remove" => { "dry-run|n" => 1, - "force" => 1, - "no-depends" => 1, - "no-depends-at-all" => 1 }, - "repository" => { "with-platforms" => 1 }, - "restore" => { "all" => 1, - "backupdir" => "=s", - "dry-run|n" => 1, - "force" => 1, }, - "search" => { "all" => 1, - "file" => 1, - "global" => 1, - "word" => 1 }, - "repository" => { }, - "uninstall" => { "force" => 1 }, - "update" => { "all" => 1, - "backup" => 1, - "backupdir" => "=s", - "dry-run|n" => 1, - "exclude" => "=s@", - "force" => 1, - "list" => 1, - "no-auto-remove" => 1, - "no-auto-install" => 1, - "no-depends" => 1, - "no-depends-at-all" => 1, - "reinstall-forcibly-removed" => 1, - "self" => 1 }, - "version" => { }, - "_include_tlpobj" => { }, - ); - my %optarg; for my $k (keys %globaloptions) { if ($globaloptions{$k} eq "1") { @@ -223,12 +371,15 @@ sub main { $optarg{"$k" . $globaloptions{$k}} = 1; } } - for my $v (values %actionoptions) { - for my $k (keys %$v) { - if ($v->{$k} eq "1") { - $optarg{$k} = 1; - } else { - $optarg{"$k" . $v->{$k}} = 1; + for my $v (values %action_specification) { + if (defined($v->{'options'})) { + my %opts = %{$v->{'options'}}; + for my $k (keys %opts) { + if ($opts{$k} eq "1") { + $optarg{$k} = 1; + } else { + $optarg{"$k" . $opts{$k}} = 1; + } } } } @@ -256,6 +407,7 @@ sub main { $action = ""; } } + $action = lc($action); $action = "platform" if ($action eq "arch"); @@ -267,14 +419,14 @@ sub main { if ($opts{"version"} || (defined $action && $action eq "version")) { info(give_version()); - finish(0); + exit(0); } - if (defined($action) && ($action =~ m/^help/i)) { + if (defined($action) && $action eq "help") { $opts{"help"} = 1; } - if (defined($action) && ($action =~ m/^print-platform$/i)) { + if (defined($action) && $action eq "print-platform") { print TeXLive::TLUtils::platform(), "\n"; exit 0; } @@ -297,7 +449,7 @@ sub main { # now $action should be part of %actionoptions, otherwise this is # an error - if (defined($action) && $action && !exists $actionoptions{$action}) { + if (defined($action) && $action && !exists $action_specification{$action}) { die "$prg: unknown action: $action; try --help if you need it.\n"; } @@ -357,7 +509,9 @@ sub main { tlmgr revision $tlmgrrevision usage: tlmgr OPTION... ACTION ARGUMENT... where ACTION is one of:\n"; - for my $k (sort keys %actionoptions) { + for my $k (sort keys %action_specification) { + # don't print internal options + next if ($k =~ m/^_/); print " $k\n"; } print "\nUse\n tlmgr ACTION --help @@ -375,11 +529,18 @@ for the full story.\n"; tlwarn("$prg: --machine-readable output not supported for $action\n"); } + # + # bail out of it is unknown action + if (!defined($action_specification{$action})) { + tlwarn("$prg: action unknown: $action\n"); + exit ($F_ERROR); + } + # check on supported arguments # my %suppargs; - %suppargs = %{$actionoptions{$action}} - if defined($actionoptions{$action}); + %suppargs = %{$action_specification{$action}{'options'}} + if defined($action_specification{$action}{'options'}); my @notvalidargs; for my $k (keys %opts) { my @allargs = keys %suppargs; @@ -473,9 +634,14 @@ for the full story.\n"; } } - execute_action($action, @ARGV); + my $ret = execute_action($action, @ARGV); - # end of main program. + if ($ret & $F_ERROR) { + tlwarn("tlmgr: an error has occurred. See above messages. Exiting.\n"); + } + + # end of main program, returns also error codes + exit ($ret); } # end main @@ -517,112 +683,39 @@ sub execute_action { # actions which shouldn't have any lasting effects, such as search or # list, end by calling finish(0), which skips postinstall actions. - if ($action =~ m/^_include_tlpobj$/) { - # this is an internal function that should not be used outside - init_local_db(); - for my $f (@ARGV) { - my $tlpobj = TeXLive::TLPOBJ->new; - $tlpobj->from_file($f); - # we now have to check whether that is a .doc or .src package, so shipping - # src or doc files from a different package. - # We should have that package already installed ... - my $pkg = $tlpobj->name; - if ($pkg =~ m/^(.*)\.(source|doc)$/) { - # got a .src or .doc package - my $type = $2; - my $mothership = $1; - my $mothertlp = $localtlpdb->get_package($mothership); - if (!defined($mothertlp)) { - tlwarn("We are trying to add ${type} files to a nonexistent package $mothership!\n"); - tlwarn("Trying to continue!\n"); - # the best we can do is rename that package to $mothername and add it! - $tlpobj->name($mothership); - # add the src/docfiles tlpobj under the mothership name - $localtlpdb->add_tlpobj($tlpobj); - } else { - if ($type eq "source") { - $mothertlp->srcfiles($tlpobj->srcfiles); - $mothertlp->srcsize($tlpobj->srcsize); - } else { - # must be "doc" - $mothertlp->docfiles($tlpobj->docfiles); - $mothertlp->docsize($tlpobj->docsize); - } - # that make sure that the original entry is overwritten - $localtlpdb->add_tlpobj($mothertlp); - } - } else { - # completely normal package, just add it - $localtlpdb->add_tlpobj($tlpobj); - } - $localtlpdb->save; + if (!defined($action_specification{$action})) { + tlwarn ("$prg: unknown action: $action; try --help if you need it.\n"); + return ($F_ERROR); + } + + if (!defined($action_specification{$action}{"function"})) { + tlwarn ("$prg: action $action defined, but no way to execute it.\n"); + return ($F_ERROR); + } + + my $ret = $F_OK; + my $foo = &{$action_specification{$action}{"function"}}(); + if (defined($foo)) { + if ($foo & $F_ERROR) { + # warnings etc are given at the highest level, i.e., in main + return($foo); + } + if ($foo & $F_WARNING) { + tlwarn("tlmgr: action $action returned a warning.\n"); + $ret = $foo; } - finish(0); - } elsif ($action =~ m/^get-mirror$/i) { - my $loc = give_ctan_mirror(); - print "$loc\n"; - finish(0); - } elsif ($action =~ m/^generate$/i) { - action_generate(); - } elsif ($action =~ m/^gui$/i) { - action_gui(); - } elsif ($action =~ m/^platform$/i) { - action_platform(); - } elsif ($action =~ m/^option$/i) { - action_option(); - finish(0); - } elsif ($action =~ m/^repository$/i) { - action_repository(); - finish(0); - } elsif ($action =~ m/^pinning$/i) { - action_pinning(); - finish(0); - } elsif ($action =~ m/^candidates$/i) { - action_candidates(); - finish(0); - } elsif ($action =~ m/^check$/i) { - action_check(); - } elsif ($action =~ m/^install$/i) { - action_install(); - } elsif ($action =~ m/^update$/i) { - action_update(); - } elsif ($action =~ m/^backup$/i) { - action_backup(); - } elsif ($action =~ m/^restore$/i) { - action_restore(); - } elsif ($action =~ m/^path$/i) { - action_path(); - finish(0); - } elsif ($action =~ m/^search$/i) { - action_search(); - finish(0); - } elsif ($action =~ m/^postaction$/i) { - action_postaction(); - finish(0); - } elsif ($action =~ m/^conf$/i) { - action_conf(); - finish(0); - } elsif ($action =~ m/^dump-tlpdb$/i) { - action_dumptlpdb(); - finish(0); - } elsif ($action =~ m/^info$/i) { - action_info(@ARGV); - finish(0); - } elsif ($action =~ m/^init-usertree$/i) { - action_init_usertree(); - finish(0); - } elsif ($action =~ m/^remove$/i) { - action_remove(); - } elsif ($action =~ /^paper$/) { - action_paper(); - } elsif ($action =~ m/^uninstall$/i) { - action_uninstall(); - finish(0); - } elsif ($action =~ m/^recreate-tlpdb$/i) { - action_recreate_tlpdb(); - finish(0); } else { - die "$prg: unknown action $action; try --help if you need it.\n"; + $ret = $F_OK; + tlwarn("tlmgr: didn't get return value from action $action, assuming ok.\n"); + } + my $run_post = 1; + if ($ret & $F_NOPOSTACTION) { + # clear the postaction bit + $ret ^= $F_NOPOSTACTION; + $run_post = 0; + } + if (!$action_specification{$action}{"run-post"}) { + $run_post = 0; } # close the special log file @@ -631,13 +724,12 @@ sub execute_action { close(PACKAGELOG); } + return ($ret) if (!$run_post); + # run external programs. - my $error_count = &handle_execute_actions(); + $ret |= &handle_execute_actions(); - # done, just in case there are 256 errors. - # we return here, because finish might return if we are running - # in the GUI, and we want to pass the error count on to the GUI - return finish($error_count ? 1 : 0); + return $ret; } @@ -654,7 +746,7 @@ sub do_cmd_and_check info("running $cmd ...\n"); my ($out, $ret); if ($opts{"dry-run"}) { - $ret = 0; + $ret = $F_OK; $out = ""; } else { ($out, $ret) = TeXLive::TLUtils::run_cmd("$cmd 2>&1"); @@ -662,11 +754,12 @@ sub do_cmd_and_check if ($ret == 0) { info("done running $cmd.\n"); log("--output of $cmd:\n$out\n--end of output of $cmd."); + return ($F_OK); } else { info("\n"); tlwarn("$cmd failed (status $ret), output:\n$out\n"); + return ($F_ERROR); } - return $ret; } # run external programs (mktexlsr, updmap-sys, etc.) as specified by the @@ -848,10 +941,80 @@ sub handle_execute_actions { $::regenerate_all_formats = 0; } - # undefine the global var, otherwise in GUI mode the actions are accumulating + # undefine the global var, otherwise in GUI mode the actions + # are accumulating undef %::execute_actions; - return $errors; + if ($errors > 0) { + # should we return warning here? + return $F_ERROR; + } else { + return $F_OK; + } +} + + +# GET_MIRROR +# +# just return a mirror +sub action_get_mirror { + my $loc = give_ctan_mirror(); + print "$loc\n"; + return ($F_OK | $F_NOPOSTACTION); +} + +# +# includes a .tlpobj in the db, also searchers for sub-tlpobj +# for doc and source files +# + +# _INCLUDE_TLPOBJ +# +# includes a .tlpobj in the db, also searchers for sub-tlpobj +# for doc and source files +# +sub action_include_tlpobj { + # this is an internal function that should not be used outside + init_local_db(); + for my $f (@ARGV) { + my $tlpobj = TeXLive::TLPOBJ->new; + $tlpobj->from_file($f); + # we now have to check whether that is a .doc or .src package, so shipping + # src or doc files from a different package. + # We should have that package already installed ... + my $pkg = $tlpobj->name; + if ($pkg =~ m/^(.*)\.(source|doc)$/) { + # got a .src or .doc package + my $type = $2; + my $mothership = $1; + my $mothertlp = $localtlpdb->get_package($mothership); + if (!defined($mothertlp)) { + tlwarn("We are trying to add ${type} files to a nonexistent package $mothership!\n"); + tlwarn("Trying to continue!\n"); + # the best we can do is rename that package to $mothername and add it! + $tlpobj->name($mothership); + # add the src/docfiles tlpobj under the mothership name + $localtlpdb->add_tlpobj($tlpobj); + } else { + if ($type eq "source") { + $mothertlp->srcfiles($tlpobj->srcfiles); + $mothertlp->srcsize($tlpobj->srcsize); + } else { + # must be "doc" + $mothertlp->docfiles($tlpobj->docfiles); + $mothertlp->docsize($tlpobj->docsize); + } + # that make sure that the original entry is overwritten + $localtlpdb->add_tlpobj($mothertlp); + } + } else { + # completely normal package, just add it + $localtlpdb->add_tlpobj($tlpobj); + } + $localtlpdb->save; + } + # no error checking here for now + return ($F_OK); } @@ -876,6 +1039,7 @@ sub handle_execute_actions { # account # sub action_remove { + my $ret = $F_OK; # we do the following: # - (not implemented) order collections such that those depending on # other collections are first removed, and then those which only @@ -895,7 +1059,7 @@ sub action_remove { my %already_removed; my @more_removal; init_local_db(); - return if !check_on_writable(); + return($F_ERROR) if !check_on_writable(); info("$prg remove: dry run, no changes will be made\n") if $opts{"dry-run"}; my @packs = @ARGV; # @@ -940,6 +1104,7 @@ sub action_remove { delete($packs{$p}); tlwarn("$prg: not removing $p, needed by " . join(" ", @needed) . "\n"); + $ret |= $F_WARNING; } } else { delete($packs{$p}); @@ -951,6 +1116,7 @@ sub action_remove { next if defined($already_removed{$pkg}); if (!defined($tlp)) { info("$pkg: package not present, cannot remove\n"); + $ret |= $F_WARNING; } else { # in the first round we only remove collections, nothing else # but removing collections will remove all dependencies, too @@ -991,7 +1157,7 @@ sub action_remove { } if ($opts{"dry-run"}) { # stop here, don't do any postinstall actions - return; + return ($ret | $F_NOPOSTACTION); } else { $localtlpdb->save; my @foo = sort keys %already_removed; @@ -1001,6 +1167,7 @@ sub action_remove { info("$prg: no packages removed.\n"); } } + return ($ret); } @@ -1028,17 +1195,19 @@ sub action_paper { if $newpaper; # complain if they tried to set, too. tlwarn("$prg: please specify a program before paper --list, ", "as in: tlmgr pdftex paper --list\n"); + return($F_ERROR) } elsif (!defined($newpaper)) { # tlmgr paper => show all current sizes. - TeXLive::TLPaper::paper_all($texmfconfig,undef); + return TeXLive::TLPaper::paper_all($texmfconfig,undef); } elsif ($newpaper !~ /^(a4|letter)$/) { # tlmgr paper junk => complain. $newpaper = "the empty string" if !defined($newpaper); tlwarn("$prg: expected `a4' or `letter' after paper, not $newpaper\n"); + return($F_ERROR); } else { # tlmgr paper {a4|letter} => do it. - return if !check_on_writable(); - TeXLive::TLPaper::paper_all($texmfconfig,$newpaper); + return ($F_ERROR) if !check_on_writable(); + return (TeXLive::TLPaper::paper_all($texmfconfig,$newpaper)); } } else { # program-specific paper @@ -1047,16 +1216,18 @@ sub action_paper { if (!defined($arg) || $arg ne "paper") { $arg = "the empty string." if ! $arg; tlwarn("$prg: expected `paper' after $prog, not $arg\n"); - return; + return ($F_ERROR); } # the do_paper progs check for the argument --list, so if given # restore it to the cmd line. if (@ARGV) { - return if !check_on_writable(); + return ($F_ERROR) if !check_on_writable(); } unshift(@ARGV, "--list") if $opts{"list"}; - TeXLive::TLPaper::do_paper($prog,$texmfconfig,@ARGV); + return(TeXLive::TLPaper::do_paper($prog,$texmfconfig,@ARGV)); } + # we should not come here anyway + return($F_OK); } @@ -1071,7 +1242,7 @@ sub action_path { if (!defined($what) || ($what !~ m/^(add|remove)$/i)) { $what = "" if ! $what; tlwarn("$prg: action path requires add or remove, not: $what\n"); - return; + return ($F_ERROR); } init_local_db(); my $winadminmode = 0; @@ -1102,7 +1273,7 @@ sub action_path { if ($winadminmode) { tlwarn("The TLPDB specifies system wide path adjustments\nbut you don't have admin privileges.\nFor user path adjustment please use\n\t--w32mode user\n"); # and do nothing - return; + return ($F_ERROR); } } } else { @@ -1116,7 +1287,7 @@ sub action_path { $winadminmode = 1; } else { tlwarn("Unknown --w32admin mode: $opts{w32mode}, should be 'admin' or 'user'\n"); - return; + return ($F_ERROR); } } else { # we are non-admin @@ -1124,22 +1295,23 @@ sub action_path { $winadminmode = 0; } elsif ($opts{"w32mode"} eq "admin") { tlwarn("You don't have the privileges to work in --w32mode admin\n"); - return; + return ($F_ERROR); } else { tlwarn("Unknown --w32admin mode: $opts{w32mode}, should be 'admin' or 'user'\n"); - return; + return ($F_ERROR); } } } } + my $ret = $F_OK; if ($what =~ m/^add$/i) { if (win32()) { - TeXLive::TLUtils::w32_add_to_path( + $ret |= TeXLive::TLUtils::w32_add_to_path( $localtlpdb->root . "/bin/win32", $winadminmode); - TeXLive::TLWinGoo::broadcast_env(); + $ret |= TeXLive::TLWinGoo::broadcast_env(); } else { - TeXLive::TLUtils::add_symlinks($localtlpdb->root, + $ret |= TeXLive::TLUtils::add_symlinks($localtlpdb->root, $localtlpdb->platform(), $localtlpdb->option("sys_bin"), $localtlpdb->option("sys_man"), @@ -1147,13 +1319,13 @@ sub action_path { } } elsif ($what =~ m/^remove$/i) { if (win32()) { - TeXLive::TLUtils::w32_remove_from_path( + $ret |= TeXLive::TLUtils::w32_remove_from_path( $localtlpdb->root . "/bin/win32", $winadminmode); - TeXLive::TLWinGoo::broadcast_env(); + $ret |= TeXLive::TLWinGoo::broadcast_env(); } else { # remove symlinks - TeXLive::TLUtils::remove_symlinks($localtlpdb->root, + $ret |= TeXLive::TLUtils::remove_symlinks($localtlpdb->root, $localtlpdb->platform(), $localtlpdb->option("sys_bin"), $localtlpdb->option("sys_man"), @@ -1161,9 +1333,12 @@ sub action_path { } } else { tlwarn("\n$prg: Should not happen, action_path what=$what\n"); - exit 1; + return ($F_ERROR); } - return; + # we should not need to run any post actions here, since + # that changes only integrations, but no rebuild of formats etc etc + # is needed + return ($ret | $F_NOPOSTACTION); } # DUMP TLPDB @@ -1187,10 +1362,11 @@ sub action_dumptlpdb { } else { tlwarn("tlmgr dump-tlpdb: need exactly one of --local and --remote.\n"); + return ($F_ERROR); } $::machinereadable = $savemr; - return; + return ($F_OK | $F_NOPOSTACTION); } # INFO @@ -1198,6 +1374,7 @@ sub action_dumptlpdb { sub action_info { init_local_db(); my ($what,@todo) = @ARGV; + my $ret = $F_OK | $F_NOPOSTACTION; # # tlmgr info # tlmgr info collection @@ -1206,7 +1383,7 @@ sub action_info { # a short list if (!defined($what) || ($what =~ m/^(collections|schemes)$/i)) { show_list_of_packages($what); - return; + return ($F_OK | $F_NOPOSTACTION); } # we are still here, so $what is defined and neither collection nor scheme, # so assume the arguments are package names @@ -1223,10 +1400,12 @@ sub action_info { if (defined($tag)) { if (!$remotetlpdb->is_virtual) { tlwarn("$prg: specifying implicit tags is not allowed for non-virtual databases!\n"); + $ret |= $F_WARNING; next; } else { if (!$remotetlpdb->is_repository($tag)) { tlwarn("$prg: no such repository tag defined: $tag\n"); + $ret |= $F_WARNING; next; } } @@ -1237,6 +1416,7 @@ sub action_info { # we already searched for the package in a specific tag, don't retry # all candidates! tlwarn("$prg: Cannot find package $pkg in repository $tag\n"); + $ret |= $F_WARNING; next; } if ($remotetlpdb->is_virtual) { @@ -1249,6 +1429,7 @@ sub action_info { my $first = shift @cand; if (defined($first)) { tlwarn("strange, we have a first candidate but no tlp: $pkg\n"); + $ret |= $F_WARNING; next; } # already shifted away the first element @@ -1263,7 +1444,7 @@ sub action_info { my ($t,$r) = split(/\//, $a, 2); push @aaa, "$pkg" . '@' . $t; } - action_info(@aaa); + $ret |= action_info(@aaa); next; } else { tlwarn("strange, package listed but no residual candidates: $pkg\n"); @@ -1271,10 +1452,12 @@ sub action_info { } } else { tlwarn("strange, package listed but no candidates: $pkg\n"); + $ret |= $F_WARNING; next; } } tlwarn("$prg: cannot find package $pkg\n"); + $ret |= $F_WARNING; next; } # we want to also show the source if it is known @@ -1344,6 +1527,7 @@ sub action_info { my $atlp = $tlpdb->get_package($tlp->name . ".$a"); if (!$atlp) { tlwarn("$prg: cannot find depending package" . $tlp->name . ".$a\n"); + $ret |= $F_WARNING; next; } my %abinsz = %{$atlp->binsize}; @@ -1382,6 +1566,7 @@ sub action_info { my $foo = $tlpdb->get_package($d); if (!$foo) { tlwarn ("\nShould not happen, no dependent package $d\n"); + $ret |= $F_WARNING; next; } if ($d ne $pkg) { @@ -1417,7 +1602,7 @@ sub action_info { } print "\n"; } - return; + return ($ret); } @@ -1425,7 +1610,7 @@ sub action_info { # sub action_search { my ($r) = @ARGV; - my $ret = ""; + my $ret = $F_OK | $F_NOPOSTACTION; my $tlpdb; # check the arguments my $search_type_nr = 0; @@ -1433,12 +1618,12 @@ sub action_search { $search_type_nr++ if $opts{"all"}; if ($search_type_nr > 1) { tlwarn("$prg: please specify only one thing to search for\n"); - return; + return ($F_ERROR); } # if (!defined($r) || !$r) { tlwarn("$prg: nothing to search for.\n"); - return; + return ($F_ERROR); } init_local_db(); @@ -1477,7 +1662,7 @@ sub action_search { } } print $ret; - return; + return ($F_OK | $F_NOPOSTACTION); } @@ -1538,7 +1723,7 @@ sub restore_one_package { my $restore_file = "$bd/${pkg}.r${rev}.tar.xz"; if (! -r $restore_file) { tlwarn("Cannot read $restore_file, no action taken\n"); - return; + return ($F_ERROR); } $localtlpdb->remove_package($pkg); TeXLive::TLPDB->_install_package($restore_file , 0, [] ,$localtlpdb); @@ -1550,6 +1735,9 @@ sub restore_one_package { TeXLive::TLUtils::announce_execute_actions("enable", $localtlpdb->get_package($pkg)); $localtlpdb->save; + # TODO_ERROCHECKING we should check the return values of the + # various calls above + return ($F_OK); } sub check_backupdir_selection { @@ -1561,7 +1749,7 @@ sub check_backupdir_selection { $warntext .= "$prg: backupdir argument\n"; $warntext .= " $opts{'backupdir'}\n"; $warntext .= "is not a directory.\n"; - return (0, $warntext); + return ($F_ERROR, $warntext); } } else { # no argument, check for presence in TLPDB @@ -1577,10 +1765,10 @@ sub check_backupdir_selection { $warntext = "$prg: backupdir as set in tlpdb\n"; $warntext .= " $opts{'backupdir'}\n"; $warntext .= "is not a directory.\n"; - return (0, $warntext); + return ($F_ERROR, $warntext); } } - return 1; + return $F_OK; } sub action_restore { @@ -1596,11 +1784,10 @@ sub action_restore { { my ($a, $b) = check_backupdir_selection(); - if (!$a) { + if ($a & $F_ERROR) { # in all these cases we want to terminate in the non-gui mode tlwarn($b); - tlwarn("$prg: Terminating.\n"); - exit 1; + return ($F_ERROR); } } info("$prg restore: dry run, no changes will be made\n") if $opts{"dry-run"}; @@ -1611,17 +1798,17 @@ sub action_restore { if (defined($pkg) && $opts{"all"}) { tlwarn("$prg: Specify either --all or individual package(s) ($pkg)\n"); tlwarn("$prg: to restore, not both. Terminating.\n"); - exit 1; + return ($F_ERROR); } if ($opts{"all"}) { init_local_db(1); - return if !check_on_writable(); + return ($F_ERROR) if !check_on_writable(); if (!$opts{"force"}) { print "Do you really want to restore all packages to the latest revision found in\n\t$opts{'backupdir'}\n===> (y/N): "; my $yesno = <STDIN>; if ($yesno !~ m/^y(es)?$/i) { print "Ok, cancelling the restore!\n"; - finish(0); + return ($F_OK | $F_NOPOSTACTION); } } for my $p (sort keys %backups) { @@ -1631,11 +1818,12 @@ sub action_restore { if (!$opts{"dry-run"}) { # first remove the package, then reinstall it # this way we get rid of useless files + # TODO_ERRORCHECK needs check for return values!! restore_one_package($p, $rev, $opts{"backupdir"}); } } # localtlpdb already saved, so we are finished - return; + return ($F_OK); } # # intermediate sub @@ -1669,13 +1857,13 @@ sub action_restore { } else { print "No backups available in $opts{'backupdir'}\n"; } - finish(0); + return ($F_OK | $F_NOPOSTACTION); } if (!defined($rev)) { print "Available backups for $pkg: "; report_backup_revdate($pkg, %{$backups{$pkg}}); print "\n"; - finish(0); + return ($F_OK | $F_NOPOSTACTION); } # we did arrive here, so we try to restore ... if (defined($backups{$pkg}->{$rev})) { @@ -1685,7 +1873,7 @@ sub action_restore { my $yesno = <STDIN>; if ($yesno !~ m/^y(es)?$/i) { print "Ok, cancelling the restore!\n"; - finish(0); + return ($F_OK | $F_NOPOSTACTION); } } print "Restoring $pkg, $rev from $opts{'backupdir'}/${pkg}.r${rev}.tar.xz\n"; @@ -1695,9 +1883,11 @@ sub action_restore { # this way we get rid of useless files restore_one_package($pkg, $rev, $opts{"backupdir"}); } + # TODO_ERRORCHECKING check return value of restore_one_package + return ($F_OK); } else { print "revision $rev for $pkg is not present in $opts{'backupdir'}\n"; - finish(1); + return ($F_ERROR); } } @@ -1725,8 +1915,8 @@ sub action_backup { my $tlpdb_option = $localtlpdb->option("autobackup"); if (!defined($tlpdb_option)) { tlwarn ("--clean given without an argument, but no default clean\n"); - tlwarn ("mode specified in the tlpdb, terminating.\n"); - exit 1; + tlwarn ("mode specified in the tlpdb.\n"); + return ($F_ERROR); } $opts{"clean"} = $tlpdb_option; } @@ -1738,17 +1928,16 @@ sub action_backup { } else { tlwarn ("clean mode as specified on the command line or as given by default\n"); tlwarn ("must be an integer larger or equal than -1, terminating.\n"); - exit 1; + return($F_ERROR); } } # check the backup dir argument { my ($a, $b) = check_backupdir_selection(); - if (!$a) { + if ($a & $F_ERROR) { # in all these cases we want to terminate in the non-gui mode tlwarn($b); - tlwarn("$prg: Terminating.\n"); - exit 1; + return($F_ERROR); } } @@ -1763,7 +1952,7 @@ sub action_backup { for my $p (sort keys %backups) { clear_old_backups ($p, $opts{"backupdir"}, $opts{"clean"}, $opts{"dry-run"}); } - return 1; + return ($F_OK | $F_NOPOSTACTION); } # in case we are not cleaning or cleaning only specific packages @@ -1777,6 +1966,7 @@ sub action_backup { } if (!@todo) { printf "tlmgr backup takes either a list of packages or --all\n"; + return ($F_ERROR); } foreach my $pkg (@todo) { if ($clean_mode) { @@ -1791,6 +1981,8 @@ sub action_backup { } } } + # TODO_ERRORCHECKING neets checking of the above + return ($F_OK); } # ===================================================================== @@ -2226,6 +2418,8 @@ sub upd_info { } sub action_update { + my $ret = $F_OK; + init_local_db(1); $opts{"no-depends"} = 1 if $opts{"no-depends-at-all"}; @@ -2237,7 +2431,7 @@ sub action_update { # other options just change the behaviour if (!($opts{"list"} || @ARGV || $opts{"all"} || $opts{"self"})) { tlwarn("tlmgr update: specify --list, --all, --self, or a list of package names.\n"); - return; + return ($F_ERROR); } init_tlmedia_or_die(); @@ -2249,7 +2443,7 @@ sub action_update { } if (!$opts{"list"}) { - return if !check_on_writable(); + return ($F_ERROR) if !check_on_writable(); } # check for updates to tlmgr and die unless either --force or --list or --self @@ -2266,12 +2460,7 @@ sub action_update { } elsif ($opts{"list"}) { # do not warn here } else { - if ($::gui_mode) { - # return here and don't do any updates - return; - } else { - die "$prg: Terminating; please read above warning.\n"; - } + return($F_ERROR); } } @@ -2295,6 +2484,7 @@ sub action_update { tlwarn ("Disabling auto backups.\n"); $localtlpdb->option("autobackup", 0); $autobackup = 0; + $ret |= $F_WARNING; } } } @@ -2303,11 +2493,10 @@ sub action_update { # we try to get the default from the tlpdb. If that doesn't work, exit. if ($opts{"backup"}) { my ($a, $b) = check_backupdir_selection(); - if (!$a) { + if ($a & $F_ERROR) { # in all these cases we want to terminate in the non-gui mode tlwarn($b); - tlwarn("$prg: Terminating.\n"); - exit 1; + return ($F_ERROR); } } @@ -2354,6 +2543,7 @@ sub action_update { info("$prg: no updates for tlmgr present.\n"); } else { tlwarn("tlmgr update: please specify a list of packages, --all, or --self.\n"); + return ($F_ERROR); } } @@ -2419,7 +2609,7 @@ sub action_update { tlwarn("Conflicts have been found:\n"); for (@option_conflict_lines) { tlwarn(" $_"); } tlwarn("Please resolve these conflicts!\n"); - exit 1; + return ($F_ERROR); } # @@ -2476,6 +2666,7 @@ sub action_update { my $mediatlp = $remotetlpdb->get_package($pkg); if (!defined($mediatlp)) { tlwarn("\nShould not happen: $pkg not found in $location\n"); + $ret |= $F_WARNING; next; } my $mediarev = $mediatlp->revision; @@ -2583,6 +2774,8 @@ sub action_update { # first save for each file in the currently installed packages # to be updated the packages it is contained it (might be more!) # + # TODO WHY WHY is there the next so that all the file move checks + # are actually disabled?!?!?! for my $p (@updated, @removals) { my $pkg = $localtlpdb->get_package($p); tlwarn("Should not happen: $p not found in local tlpdb\n") if (!$pkg); @@ -2781,6 +2974,7 @@ sub action_update { if (!defined($tlp)) { tlwarn("$prg: inconsistency on the server:\n"); tlwarn("$prg: tlp for package $pkg cannot be found, please report.\n"); + $ret |= $F_WARNING; next; } my $unwind_package; @@ -2897,6 +3091,7 @@ sub action_update { if ($s <= 0) { tlwarn("\n$prg: Creation of backup container of $pkg failed.\n"); tlwarn("Continuing to update other packages, please retry...\n"); + $ret |= $F_WARNING; # we should try to update other packages at least next; } @@ -2968,11 +3163,17 @@ sub action_update { $localtlpdb->add_tlpobj($tlpobj); $localtlpdb->save; logpackage("restore: $pkg ($rev)"); + $ret |= $F_WARNING; tlwarn("Restoring old package state succeeded.\n"); } else { logpackage("failed restore: $pkg ($rev)"); tlwarn("Restoring of old package did NOT succeed.\n"); tlwarn("Most likely repair: run tlmgr install $pkg and hope.\n"); + # TODO_ERRORCHECKING + # should we return F_ERROR here??? If we would do this, then + # no postactions at all would run? Maybe better only to give + # a warning + $ret |= $F_WARNING; } unlink($unwind_package) if $remove_unwind_container; } @@ -2996,6 +3197,7 @@ sub action_update { } if (!defined($mediatlp)) { tlwarn("\nShould not happen: $pkg not found in $location\n"); + $ret |= $F_WARNING; next; } my $mediarev = $mediatlp->revision; @@ -3102,6 +3304,7 @@ sub action_update { if ($bad_file) { tlwarn("$prg: The file $k has disappeared from the critical" . "package $pkg but is still present in @found_pkgs\n"); + $ret |= $F_WARNING; } else { push @infra_files_to_be_removed, $k; } @@ -3151,6 +3354,7 @@ sub action_update { \@infra_files_to_be_removed, @critical); if ($ret) { tlwarn ("$prg: Aborting infrastructure update.\n"); + $ret |= $F_ERROR; $restart_tlmgr = 0 if ($opts{"dry-run"}); } } @@ -3160,19 +3364,22 @@ sub action_update { info ("Restarting tlmgr to complete update ...\n"); debug("restarting tlmgr @::SAVEDARGV\n"); exec("tlmgr", @::SAVEDARGV); - die "cannot restart tlmgr, please retry update"; + # we need warn here, otherwise perl gives warnings! + warn ("$prg: cannot restart tlmgr, please retry update\n"); + return ($F_ERROR); } - # for --dry-run we cannot restart tlmgr (no way to fake successful infra update) - # instead we call action_update() again and signal this by $opts{"dry-run"} = -1 + # for --dry-run we cannot restart tlmgr (no way to fake successful + # infra update) instead we call action_update() again and signal this + # by $opts{"dry-run"} = -1 if ($opts{"dry-run"} && !$opts{"list"} && $restart_tlmgr) { $opts{"self"} = 0; $opts{"dry-run"} = -1; $localtlpdb = undef; $remotetlpdb = undef; info ("Restarting tlmgr to complete update ...\n"); - action_update(); - return; + $ret |= action_update(); + return ($ret); } # if a real update from default disk location didn't find anything, @@ -3196,6 +3403,7 @@ To change the default for all future updates, run: END_DISK_WARN } } + return ($ret); } @@ -3230,11 +3438,16 @@ END_DISK_WARN # sub action_install { init_local_db(1); - return if !check_on_writable(); + my $ret = $F_OK; + return ($F_ERROR) if !check_on_writable(); # installation from a .tar.xz if ($opts{"file"}) { - return $localtlpdb->install_package_files(@ARGV); + if ($localtlpdb->install_package_files(@ARGV)) { + return ($ret); + } else { + return ($F_ERROR); + } } # if we are still here, we are installing from some repository @@ -3251,7 +3464,7 @@ sub action_install { } else { if ($::gui_mode) { # return here and don't do any updates - return; + return ($F_ERROR); } else { die "$prg: Terminating; please see warning above!\n"; } @@ -3319,6 +3532,7 @@ sub action_install { ($packs{$pkg} ? $packs{$pkg} : undef)); if (!defined($mediatlp)) { tlwarn("$prg install: package $pkg not present in repository.\n"); + $ret |= $F_WARNING; next; } if (defined($localtlpdb->get_package($pkg))) { @@ -3340,7 +3554,7 @@ sub action_install { } } # return if there is nothing to install! - return if (!@todo); + return ($ret) if (!@todo); my $orig_do_src = $localtlpdb->option("install_srcfiles"); my $orig_do_doc = $localtlpdb->option("install_docfiles"); @@ -3419,13 +3633,14 @@ sub action_install { if ($opts{"dry-run"}) { # stop here, don't do any postinstall actions - return(0); + return($ret | $F_NOPOSTACTION); } else { # reset option if --with-src argument was given $localtlpdb->option("install_srcfiles", $orig_do_src) if $opts{'with-src'}; $localtlpdb->option("install_docfiles", $orig_do_doc) if $opts{'with-doc'}; $localtlpdb->save if ($opts{'with-src'} || $opts{'with-doc'}); } + return ($ret); } sub show_list_of_packages { @@ -3739,25 +3954,25 @@ sub action_repository { print "\n"; } } - return; + return ($F_OK); } if ($what eq "add") { my $p = shift @ARGV; if (!defined($p)) { tlwarn("$prg: no repository given (to add)\n"); - return; + return ($F_ERROR); } # check if it is either url or absolute path if (($p !~ m!^(http|ftp)://!i) && !File::Spec->file_name_is_absolute($p)) { tlwarn("$prg: neither http/ftp URL nor absolute path, no action: $p\n"); - return; + return ($F_ERROR); } my $t = shift @ARGV; $t = $p if (!defined($t)); if (defined($repos{$t})) { tlwarn("$prg: repository or its tag already defined, no action: $p\n"); - return; + return ($F_ERROR); } # TODO more checks needed? # if there was till now only *one* repository and that without @@ -3780,13 +3995,13 @@ sub action_repository { } else { print "$prg: added repository with tag $t: $p\n"; } - return; + return ($F_OK); } if ($what eq "remove") { my $p = shift @ARGV; if (!defined($p)) { tlwarn("$prg: no repository given (to remove)\n"); - return; + return ($F_ERROR); } my $found = 0; for my $k (keys %repos) { @@ -3797,12 +4012,15 @@ sub action_repository { } if (!$found) { tlwarn("$prg: repository not defined, cannot remove: $p\n"); + return ($F_ERROR); } else { $localtlpdb->option("location", array_to_repository(%repos)); $localtlpdb->save; print "$prg: removed repository: $p\n"; + return ($F_OK); } - return; + # no reached + return ($F_OK); } if ($what eq "set") { # TODO TODO @@ -3810,18 +4028,18 @@ sub action_repository { %repos = repository_to_array("@ARGV"); $localtlpdb->option("location", array_to_repository(%repos)); $localtlpdb->save; - return; + return ($F_OK); } # we are still here, unknown command to repository tlwarn("$prg: unknown subaction for tlmgr repository: $what\n"); - return; + return ($F_ERROR); } sub action_candidates { my $what = shift @ARGV; if (!defined($what)) { tlwarn("$prg: candidates needs a package name as argument\n"); - return; + return ($F_ERROR); } init_local_db(); init_tlmedia_or_die(); @@ -3844,8 +4062,9 @@ sub action_candidates { } } else { print "Package $what not found.\n"; + return ($F_WARNING); } - return; + return ($F_OK);; } # OPTION @@ -3854,6 +4073,7 @@ sub action_option { my $what = shift @ARGV; $what = "show" unless defined($what); init_local_db(); + my $ret = $F_OK; if ($what =~ m/^show$/i) { for my $o (keys %{$localtlpdb->options}) { # ignore some things which are w32 specific @@ -3872,6 +4092,7 @@ sub action_option { } } else { tlwarn ("$prg: option $o not supported\n"); + $ret |= $F_WARNING; } } } elsif ($what =~ m/^showall$/i) { @@ -3897,7 +4118,7 @@ sub action_option { # the option argument matches the name my $val = shift @ARGV; if (defined($val)) { - return if !check_on_writable(); + return ($F_ERROR) if !check_on_writable(); # set new value # here we have to care for some special cases if ($what eq $TLPDBOptions{"location"}->[2]) { @@ -3985,6 +4206,7 @@ sub action_option { } } else { tlwarn ("Unknown type of option $opt: $TLPDBOptions{$opt}->[0]\n"); + return ($F_ERROR); } } $localtlpdb->save; @@ -3996,6 +4218,7 @@ sub action_option { close(TOFD); } else { tlwarn("Cannot save 00texlive.installation to $::maintree/tlpkg/tlpobj/00texlive.installation.tlpobj\n"); + $ret |= $F_WARNING; } } } else { @@ -4012,9 +4235,10 @@ sub action_option { } if (!$found) { tlwarn("$prg: option $what not supported!\n"); + return ($F_ERROR); } } - return; + return ($ret); } @@ -4051,7 +4275,7 @@ sub action_platform { } print "Already installed platforms are marked with (i)\n"; print "You can add new platforms with: tlmgr platform add ARCH1 ARCH2...\n"; - finish(0); + return ($F_OK | $F_NOPOSTACTION); } elsif ($what =~ m/^add$/i) { return if !check_on_writable(); init_tlmedia_or_die(); @@ -4367,7 +4591,7 @@ Error message from creating MainWindow: sub action_uninstall { if (win32()) { printf STDERR "Please use \"Add/Remove Programs\" from the Control Panel to removing TeX Live!\n"; - finish(1); + return ($F_ERROR); } return if !check_on_writable(); my $force = defined($opts{"force"}) ? $opts{"force"} : 0; @@ -4377,7 +4601,7 @@ sub action_uninstall { my $yesno = <STDIN>; if ($yesno !~ m/^y(es)?$/i) { print "Ok, cancelling the removal!\n"; - finish(0); + return ($F_OK | $F_NOPOSTACTION); } } print ("Ok, removing the whole installation:\n"); @@ -4549,7 +4773,11 @@ sub action_check { } else { print "No idea how to check that: $what\n"; } - finish($ret); + if ($ret) { + return ($F_ERROR); + } else { + return ($F_OK); + } } # check file coverage in both direction. @@ -5342,9 +5570,10 @@ sub init_local_db { if (!setup_programs("$Master/tlpkg/installer", $localtlpdb->platform)) { tlwarn("Couldn't set up the necessary programs.\nInstallation of packages is not supported.\nPlease report to texlive\@tug.org.\n"); if (defined($should_i_die) && $should_i_die) { - finish(1); + return ($F_ERROR); } else { tlwarn("Continuing anyway ...\n"); + return ($F_WARNING); } } # let cmd line options override the settings in localtlpdb @@ -5677,11 +5906,6 @@ sub finish { print "$prg: exiting unsuccessfully (status $ret).\n"; } - if ($opts{"pause"}) { - print "Press Enter to exit the program.\n"; - <STDIN>; - } - if ($::gui_mode) { return $ret; } else { diff --git a/Master/bin/alpha-linux/fixmsxpart b/Master/bin/alpha-linux/fixmsxpart Binary files differdeleted file mode 100755 index ecb6171a49c..00000000000 --- a/Master/bin/alpha-linux/fixmsxpart +++ /dev/null diff --git a/Master/bin/alpha-linux/msxlint b/Master/bin/alpha-linux/msxlint Binary files differdeleted file mode 100755 index 826b527dc8d..00000000000 --- a/Master/bin/alpha-linux/msxlint +++ /dev/null diff --git a/Master/bin/amd64-freebsd/fixmsxpart b/Master/bin/amd64-freebsd/fixmsxpart Binary files differdeleted file mode 100755 index ef7c268ebdd..00000000000 --- a/Master/bin/amd64-freebsd/fixmsxpart +++ /dev/null diff --git a/Master/bin/amd64-freebsd/msxlint b/Master/bin/amd64-freebsd/msxlint Binary files differdeleted file mode 100755 index 0433cc0d34d..00000000000 --- a/Master/bin/amd64-freebsd/msxlint +++ /dev/null diff --git a/Master/bin/amd64-netbsd/fixmsxpart b/Master/bin/amd64-netbsd/fixmsxpart Binary files differdeleted file mode 100755 index c78c8ace55a..00000000000 --- a/Master/bin/amd64-netbsd/fixmsxpart +++ /dev/null diff --git a/Master/bin/amd64-netbsd/msxlint b/Master/bin/amd64-netbsd/msxlint Binary files differdeleted file mode 100755 index 79af033081e..00000000000 --- a/Master/bin/amd64-netbsd/msxlint +++ /dev/null diff --git a/Master/bin/armel-linux/fixmsxpart b/Master/bin/armel-linux/fixmsxpart Binary files differdeleted file mode 100755 index 702524070bd..00000000000 --- a/Master/bin/armel-linux/fixmsxpart +++ /dev/null diff --git a/Master/bin/armel-linux/msxlint b/Master/bin/armel-linux/msxlint Binary files differdeleted file mode 100755 index 6309c5c461a..00000000000 --- a/Master/bin/armel-linux/msxlint +++ /dev/null diff --git a/Master/bin/armhf-linux/fixmsxpart b/Master/bin/armhf-linux/fixmsxpart Binary files differdeleted file mode 100755 index c4498e7d526..00000000000 --- a/Master/bin/armhf-linux/fixmsxpart +++ /dev/null diff --git a/Master/bin/armhf-linux/msxlint b/Master/bin/armhf-linux/msxlint Binary files differdeleted file mode 100755 index c9294f9b285..00000000000 --- a/Master/bin/armhf-linux/msxlint +++ /dev/null diff --git a/Master/bin/i386-cygwin/fixmsxpart.exe b/Master/bin/i386-cygwin/fixmsxpart.exe Binary files differdeleted file mode 100755 index 94ac8c83a33..00000000000 --- a/Master/bin/i386-cygwin/fixmsxpart.exe +++ /dev/null diff --git a/Master/bin/i386-cygwin/msxlint.exe b/Master/bin/i386-cygwin/msxlint.exe Binary files differdeleted file mode 100755 index 3e9eace7da2..00000000000 --- a/Master/bin/i386-cygwin/msxlint.exe +++ /dev/null diff --git a/Master/bin/i386-freebsd/fixmsxpart b/Master/bin/i386-freebsd/fixmsxpart Binary files differdeleted file mode 100755 index f802ccf1b1c..00000000000 --- a/Master/bin/i386-freebsd/fixmsxpart +++ /dev/null diff --git a/Master/bin/i386-freebsd/msxlint b/Master/bin/i386-freebsd/msxlint Binary files differdeleted file mode 100755 index 3b7c879d691..00000000000 --- a/Master/bin/i386-freebsd/msxlint +++ /dev/null diff --git a/Master/bin/i386-linux/fixmsxpart b/Master/bin/i386-linux/fixmsxpart Binary files differdeleted file mode 100755 index dd7d30e3efb..00000000000 --- a/Master/bin/i386-linux/fixmsxpart +++ /dev/null diff --git a/Master/bin/i386-linux/msxlint b/Master/bin/i386-linux/msxlint Binary files differdeleted file mode 100755 index b6ed4e23f39..00000000000 --- a/Master/bin/i386-linux/msxlint +++ /dev/null diff --git a/Master/bin/i386-netbsd/fixmsxpart b/Master/bin/i386-netbsd/fixmsxpart Binary files differdeleted file mode 100755 index daba4bfb9b7..00000000000 --- a/Master/bin/i386-netbsd/fixmsxpart +++ /dev/null diff --git a/Master/bin/i386-netbsd/msxlint b/Master/bin/i386-netbsd/msxlint Binary files differdeleted file mode 100755 index 2e973809b56..00000000000 --- a/Master/bin/i386-netbsd/msxlint +++ /dev/null diff --git a/Master/bin/mipsel-linux/fixmsxpart b/Master/bin/mipsel-linux/fixmsxpart Binary files differdeleted file mode 100755 index 863150db973..00000000000 --- a/Master/bin/mipsel-linux/fixmsxpart +++ /dev/null diff --git a/Master/bin/mipsel-linux/msxlint b/Master/bin/mipsel-linux/msxlint Binary files differdeleted file mode 100755 index cc22eac0eac..00000000000 --- a/Master/bin/mipsel-linux/msxlint +++ /dev/null diff --git a/Master/bin/powerpc-linux/fixmsxpart b/Master/bin/powerpc-linux/fixmsxpart Binary files differdeleted file mode 100755 index 6aa11241c26..00000000000 --- a/Master/bin/powerpc-linux/fixmsxpart +++ /dev/null diff --git a/Master/bin/powerpc-linux/msxlint b/Master/bin/powerpc-linux/msxlint Binary files differdeleted file mode 100755 index 37755b84ef2..00000000000 --- a/Master/bin/powerpc-linux/msxlint +++ /dev/null diff --git a/Master/bin/sparc-solaris/fixmsxpart b/Master/bin/sparc-solaris/fixmsxpart Binary files differdeleted file mode 100755 index 017b8b507b7..00000000000 --- a/Master/bin/sparc-solaris/fixmsxpart +++ /dev/null diff --git a/Master/bin/sparc-solaris/msxlint b/Master/bin/sparc-solaris/msxlint Binary files differdeleted file mode 100755 index 0c461832514..00000000000 --- a/Master/bin/sparc-solaris/msxlint +++ /dev/null diff --git a/Master/bin/universal-darwin/fixmsxpart b/Master/bin/universal-darwin/fixmsxpart Binary files differdeleted file mode 100755 index b4f3298193f..00000000000 --- a/Master/bin/universal-darwin/fixmsxpart +++ /dev/null diff --git a/Master/bin/universal-darwin/msxlint b/Master/bin/universal-darwin/msxlint Binary files differdeleted file mode 100755 index ff82c7d7e4e..00000000000 --- a/Master/bin/universal-darwin/msxlint +++ /dev/null diff --git a/Master/bin/win32/fixmsxpart.exe b/Master/bin/win32/fixmsxpart.exe Binary files differdeleted file mode 100755 index d0ff255078a..00000000000 --- a/Master/bin/win32/fixmsxpart.exe +++ /dev/null diff --git a/Master/bin/win32/msxlint.exe b/Master/bin/win32/msxlint.exe Binary files differdeleted file mode 100755 index 0a15ae2a405..00000000000 --- a/Master/bin/win32/msxlint.exe +++ /dev/null diff --git a/Master/bin/x86_64-cygwin/fixmsxpart.exe b/Master/bin/x86_64-cygwin/fixmsxpart.exe Binary files differdeleted file mode 100755 index e7290ceda8d..00000000000 --- a/Master/bin/x86_64-cygwin/fixmsxpart.exe +++ /dev/null diff --git a/Master/bin/x86_64-cygwin/msxlint.exe b/Master/bin/x86_64-cygwin/msxlint.exe Binary files differdeleted file mode 100755 index 8dc6453a216..00000000000 --- a/Master/bin/x86_64-cygwin/msxlint.exe +++ /dev/null diff --git a/Master/bin/x86_64-darwin/fixmsxpart b/Master/bin/x86_64-darwin/fixmsxpart Binary files differdeleted file mode 100755 index e1159effc03..00000000000 --- a/Master/bin/x86_64-darwin/fixmsxpart +++ /dev/null diff --git a/Master/bin/x86_64-darwin/msxlint b/Master/bin/x86_64-darwin/msxlint Binary files differdeleted file mode 100755 index d3f20241b03..00000000000 --- a/Master/bin/x86_64-darwin/msxlint +++ /dev/null diff --git a/Master/bin/x86_64-linux/fixmsxpart b/Master/bin/x86_64-linux/fixmsxpart Binary files differdeleted file mode 100755 index 457978c932b..00000000000 --- a/Master/bin/x86_64-linux/fixmsxpart +++ /dev/null diff --git a/Master/bin/x86_64-linux/msxlint b/Master/bin/x86_64-linux/msxlint Binary files differdeleted file mode 100755 index 8f17c3cdbfe..00000000000 --- a/Master/bin/x86_64-linux/msxlint +++ /dev/null diff --git a/Master/texmf-dist/doc/generic/musixtex/ChangeLog-116.txt b/Master/texmf-dist/doc/generic/musixtex/ChangeLog-116.txt index e34646d5583..e57225c9868 100644 --- a/Master/texmf-dist/doc/generic/musixtex/ChangeLog-116.txt +++ b/Master/texmf-dist/doc/generic/musixtex/ChangeLog-116.txt @@ -1,5 +1,7 @@ Changes from MusiXTeX 115 to 116: + (2015-04-21) RDT corrected the definitions of \nnotes and \nnnotes + HM corrected the definitions for cautionary small accidentals RDT added \check@staff ... \fi to \@qa h, \@mca, \hs, \qqs @@ -23,7 +25,7 @@ Changes from MusiXTeX 115 to 116: added dynamic-mark macros \sfz \sfzp Added to the extension library: musixppff.tex (HM), musixadf (HM), - musixplt (RDT), musixec (RDT) + musixplt (RDT), musixec (RDT), musixhv (RDT) RDT extended musixtmr diff --git a/Master/texmf-dist/doc/generic/musixtex/README b/Master/texmf-dist/doc/generic/musixtex/README index f14011e0ddb..8e9897d6a21 100644 --- a/Master/texmf-dist/doc/generic/musixtex/README +++ b/Master/texmf-dist/doc/generic/musixtex/README @@ -1,4 +1,4 @@ -This is MusiXTeX, version 1.16 (packaged 2015-02-24). +This is MusiXTeX, version 1.16-2015-04-21. MusiXTeX is a TeX-based system for typesetting music. The main author was Daniel Taupin, who died in a climbing @@ -18,7 +18,8 @@ The package includes + musixcrd support for chord symbols, due to Robert Hennig - + support for music text in Palatino, Times and EC fonts + + support for music text in Palatino, Helvetica, Times + and EC fonts + several other extension packages diff --git a/Master/texmf-dist/doc/generic/musixtex/examples/kinder.log b/Master/texmf-dist/doc/generic/musixtex/examples/kinder.log deleted file mode 100644 index 4251112e0fb..00000000000 --- a/Master/texmf-dist/doc/generic/musixtex/examples/kinder.log +++ /dev/null @@ -1,397 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=etex 2015.1.13) 23 FEB 2015 16:40 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**kinder -(./kinder.tex (/home/rdt/texmf/tex/generic/musixtex/musixtex.tex -MusiXTeX(c) 1.16 <2015-02-15> -\n@i=\count27 -\n@ii=\count28 -\n@iii=\count29 -\n@iv=\count30 -\n@v=\count31 -\n@vi=\count32 -\n@vii=\count33 -\n@viii=\count34 -\toks@box=\box16 -\w@rkbox=\box17 -\n@otebox=\box18 -\y@=\dimen16 -\y@i=\dimen17 -\y@ii=\dimen18 -\y@iii=\dimen19 -\y@iv=\dimen20 -\y@v=\dimen21 -\group@no=\count35 -\interinstrument=\dimen22 -\N@s=\count36 -\s@Y=\dimen23 -\lin@pos=\dimen24 -\meet@minus@n@iv=\count37 -\interbeam=\dimen25 -\b@amthick=\dimen26 -\Interligne=\dimen27 -\Internote=\dimen28 -\ch@box=\box19 -\musicsize=\count38 -\qd@skip=\dimen29 -\qn@width=\dimen30 -\wn@width=\dimen31 -\txt@ff=\skip18 -\s@indent=\skip19 -\big@spc=\skip20 -\lthick=\dimen32 -\afterruleskip=\skip21 -\staffbotmarg=\dimen33 -\stafftopmarg=\dimen34 -\line@width=\dimen35 -\interportee=\dimen36 -\noport@@=\count39 -\noinstrum@nt=\count40 -\altportee=\dimen37 -\systemheight=\dimen38 -\altplancher=\dimen39 -\instrum@in@group=\skip22 -\boxitsep=\skip23 -\barsinpi@c@=\count41 -\barno=\count42 -\startbarno=\count43 -\sign@skip=\dimen40 -\maxsign@skip=\dimen41 -\x@skip=\dimen42 -\n@skip=\dimen43 -\beforeruleskip=\skip24 -\widthtyp@=\count44 -\lastbarno=\count45 -\cut@v=\skip25 -\init@volta@pos=\skip26 -\volta@startcor=\skip27 -\volta@endcor=\skip28 -\writ@volta@box=\box20 -\barsinlin@=\count46 -\maxbarsinlin@=\count47 -\lastbarpos=\skip29 -\ut@ref=\count48 -\meterskip=\skip30 -\t@c=\toks13 -\clef@skip=\skip31 -\noteskip=\dimen44 -\transpose=\count49 -\normaltranspose=\count50 -\locx@skip=\dimen45 -\elemskip=\dimen46 -\@l@mskip=\dimen47 -\inh@alt=\count51 -\st@bot=\dimen48 -\st@top=\dimen49 -\stem@skip=\dimen50 -\s@lope=\dimen51 -\y@vi=\dimen52 -\lift@rest=\dimen53 -\accshift=\skip32 -\@icresc=\skip33 -\@itrillei=\skip34 -\@itrilleii=\skip35 -\@itrilleiii=\skip36 -\@itrilleiv=\skip37 -\@itrillev=\skip38 -\@itrillevi=\skip39 -\tr@number=\count52 -\o@swz=\toks14 -\o@number=\count53 -\y@vii=\dimen54 -\y@viii=\dimen55 -\y@ix=\dimen56 -\tuptxtb@x=\box21 -\notes@open=\count54 -\k@ii=\skip40 -\i@ni=\dimen57 -\b@xi=\dimen58 -\b@zi=\dimen59 -\c@xi=\dimen60 -\c@zi=\skip41 -\d@xi=\dimen61 -\d@zi=\skip42 -\e@xi=\dimen62 -\e@zi=\skip43 -\b@pi=\count55 -\b@ni=\count56 -\n@pi=\count57 -\a@si=\count58 -\o@si=\count59 -\a@ci=\toks15 -\o@ci=\toks16 -\m@ti=\toks17 -\k@iii=\skip44 -\i@nii=\dimen63 -\b@xii=\dimen64 -\b@zii=\dimen65 -\c@xii=\dimen66 -\c@zii=\skip45 -\d@xii=\dimen67 -\d@zii=\skip46 -\e@xii=\dimen68 -\e@zii=\skip47 -\b@pii=\count60 -\b@nii=\count61 -\n@pii=\count62 -\a@sii=\count63 -\o@sii=\count64 -\a@cii=\toks18 -\o@cii=\toks19 -\m@tii=\toks20 -\k@iiii=\skip48 -\i@niii=\dimen69 -\b@xiii=\dimen70 -\b@ziii=\dimen71 -\c@xiii=\dimen72 -\c@ziii=\skip49 -\d@xiii=\dimen73 -\d@ziii=\skip50 -\e@xiii=\dimen74 -\e@ziii=\skip51 -\b@piii=\count65 -\b@niii=\count66 -\n@piii=\count67 -\a@siii=\count68 -\o@siii=\count69 -\a@ciii=\toks21 -\o@ciii=\toks22 -\m@tiii=\toks23 -\k@iiv=\skip52 -\i@niv=\dimen75 -\b@xiv=\dimen76 -\b@ziv=\dimen77 -\c@xiv=\dimen78 -\c@ziv=\skip53 -\d@xiv=\dimen79 -\d@ziv=\skip54 -\e@xiv=\dimen80 -\e@ziv=\skip55 -\b@piv=\count70 -\b@niv=\count71 -\n@piv=\count72 -\a@siv=\count73 -\o@siv=\count74 -\a@civ=\toks24 -\o@civ=\toks25 -\m@tiv=\toks26 -\k@iv=\skip56 -\i@nv=\dimen81 -\b@xv=\dimen82 -\b@zv=\dimen83 -\c@xv=\dimen84 -\c@zv=\skip57 -\d@xv=\dimen85 -\d@zv=\skip58 -\e@xv=\dimen86 -\e@zv=\skip59 -\b@pv=\count75 -\b@nv=\count76 -\n@pv=\count77 -\a@sv=\count78 -\o@sv=\count79 -\a@cv=\toks27 -\o@cv=\toks28 -\m@tv=\toks29 -\k@ivi=\skip60 -\i@nvi=\dimen87 -\b@xvi=\dimen88 -\b@zvi=\dimen89 -\c@xvi=\dimen90 -\c@zvi=\skip61 -\d@xvi=\dimen91 -\d@zvi=\skip62 -\e@xvi=\dimen92 -\e@zvi=\skip63 -\b@pvi=\count80 -\b@nvi=\count81 -\n@pvi=\count82 -\a@svi=\count83 -\o@svi=\count84 -\a@cvi=\toks30 -\o@cvi=\toks31 -\m@tvi=\toks32 -maxinstruments=6 -\f@xi=\dimen93 -\f@zi=\skip64 -\f@xii=\dimen94 -\f@zii=\skip65 -\f@xiii=\dimen95 -\f@ziii=\skip66 -\f@xiv=\dimen96 -\f@ziv=\skip67 -\f@xv=\dimen97 -\f@zv=\skip68 -\f@xvi=\dimen98 -\f@zvi=\skip69 - max128beams=6 -\g@bi=\skip70 -\g@hi=\skip71 -\g@bii=\skip72 -\g@hii=\skip73 -\g@biii=\skip74 -\g@hiii=\skip75 - maxgroups=3 -\s@xi=\dimen99 -\s@si=\toks33 -\s@Yi=\dimen100 -\s@ai=\skip76 -\s@yi=\count85 -\s@Ni=\count86 -\s@zi=\count87 -\s@di=\toks34 -\s@xii=\dimen101 -\s@sii=\toks35 -\s@Yii=\dimen102 -\s@aii=\skip77 -\s@yii=\count88 -\s@Nii=\count89 -\s@zii=\count90 -\s@dii=\toks36 -\s@xiii=\dimen103 -\s@siii=\toks37 -\s@Yiii=\dimen104 -\s@aiii=\skip78 -\s@yiii=\count91 -\s@Niii=\count92 -\s@ziii=\count93 -\s@diii=\toks38 -\s@xiv=\dimen105 -\s@siv=\toks39 -\s@Yiv=\dimen106 -\s@aiv=\skip79 -\s@yiv=\count94 -\s@Niv=\count95 -\s@ziv=\count96 -\s@div=\toks40 -\s@xv=\dimen107 -\s@sv=\toks41 -\s@Yv=\dimen108 -\s@av=\skip80 -\s@yv=\count97 -\s@Nv=\count98 -\s@zv=\count99 -\s@dv=\toks42 -\s@xvi=\dimen109 -\s@svi=\toks43 -\s@Yvi=\dimen110 -\s@avi=\skip81 -\s@yvi=\count100 -\s@Nvi=\count101 -\s@zvi=\count102 -\s@dvi=\toks44 - maxslurs=6 -\tr@xi=\skip82 -\tr@swi=\toks45 -\tr@yi=\skip83 -\tr@xii=\skip84 -\tr@swii=\toks46 -\tr@yii=\skip85 -\tr@xiii=\skip86 -\tr@swiii=\toks47 -\tr@yiii=\skip87 -\tr@xiv=\skip88 -\tr@swiv=\toks48 -\tr@yiv=\skip89 -\tr@xv=\skip90 -\tr@swv=\toks49 -\tr@yv=\skip91 -\tr@xvi=\skip92 -\tr@swvi=\toks50 -\tr@yvi=\skip93 - maxtrills=6 -\o@xi=\skip94 -\o@yi=\skip95 -\o@swi=\toks51 -\o@xii=\skip96 -\o@yii=\skip97 -\o@swii=\toks52 -\o@xiii=\skip98 -\o@yiii=\skip99 -\o@swiii=\toks53 -\o@xiv=\skip100 -\o@yiv=\skip101 -\o@swiv=\toks54 -\o@xv=\skip102 -\o@yv=\skip103 -\o@swv=\toks55 -\o@xvi=\skip104 -\o@yvi=\skip105 -\o@swvi=\toks56 - -maxoctlines=6 -\outmux=\write0 -\mulooseness=\count103 -\linegoal=\count104 -\l@eftrightbox=\box22 -\inmux=\read1 -) (/home/rdt/texmf/tex/generic/musixtex/musixplt.tex -MusiXplt <2015/02/15> -) (/usr/local/texlive/2014/texmf-dist/tex/latex/soul/soul.sty -\SOUL@word=\toks57 -\SOUL@lasttoken=\toks58 -\SOUL@cmds=\toks59 -\SOUL@buffer=\toks60 -\SOUL@token=\toks61 -\SOUL@spaceskip=\skip106 -\SOUL@ttwidth=\dimen111 -\SOUL@uldp=\dimen112 -\SOUL@ulht=\dimen113 -) -(/home/rdt/texmf/tex/generic/musixtex/musixps.tex -MusiXPS PostScript slurs, ties and crescendos 0.93 (17.2.2015) -\slur@hgtii=\dimen114 -\slur@hgtiii=\dimen115 -\slur@hgtiv=\dimen116 -\slur@hgtv=\dimen117 -\slur@hgtvi=\dimen118 -\slur@hgtvii=\dimen119 -\slur@hgtviii=\dimen120 -\slur@hgtix=\dimen121 -\tie@alt=\dimen122 -\tie@hgt=\dimen123 -\tie@alti=\dimen124 -\tie@hgti=\dimen125 -\tie@altii=\dimen126 -\tie@hgtii=\dimen127 -\tie@altiii=\dimen128 -\tie@hgtiii=\dimen129 -\tie@altiv=\dimen130 -\tie@hgtiv=\dimen131 -\tie@altv=\dimen132 -\tie@hgtv=\dimen133 -\tie@altvi=\dimen134 -\tie@hgtvi=\dimen135 -\tie@altvii=\dimen136 -\tie@hgtvii=\dimen137 -\tie@altviii=\dimen138 -\tie@hgtviii=\dimen139 -\tie@altix=\dimen140 -\tie@hgtix=\dimen141 -\cresc@alt=\dimen142 -\cresc@alti=\dimen143 -\cresc@altii=\dimen144 -\cresc@altiii=\dimen145 -\cresc@altiv=\dimen146 -\cresc@altv=\dimen147 -\cresc@altvi=\dimen148 -\cresc@altvii=\dimen149 -\cresc@altviii=\dimen150 -\cresc@altix=\dimen151 -\pss@rega=\count105 -\pss@regb=\count106 -\pst@rega=\count107 -\pst@regb=\count108 -\psc@rega=\count109 -\psc@regb=\count110 -) (/home/rdt/texmf/tex/generic/musixtex/musixsty.tex -MusiXtextSTYle T.94 <11 May 1999> -\footmarkcount=\count111 -\theslant=\dimen152 -) (kinder.mx2) -\startmuflex launched by \startpiece -< 1> bar 1 bar 2 bar 3 bar 4 bar 5 bar 6 < 2> bar 7 bar 8 bar 9 bar 10 bar 11 -bar 12 bar 13 bar 14 < 3> bar 15 bar 16 bar 17 bar 18 bar 19 bar 20 bar 21 -bar 22 [1] ) -Output written on kinder.dvi (1 page, 18024 bytes). diff --git a/Master/texmf-dist/doc/generic/musixtex/examples/kinder.pdf b/Master/texmf-dist/doc/generic/musixtex/examples/kinder.pdf Binary files differdeleted file mode 100644 index 6ffece26547..00000000000 --- a/Master/texmf-dist/doc/generic/musixtex/examples/kinder.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc.pdf b/Master/texmf-dist/doc/generic/musixtex/musixdoc.pdf Binary files differindex d4e05e0bd4b..f003b908440 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc.pdf +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc.pdf diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/extensions.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/extensions.tex index 9c64ef2c4c2..4447f44617a 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/extensions.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/extensions.tex @@ -1499,101 +1499,6 @@ If you need greater numbers of these elements, see Sections~\ref{musixmad_setmax \ref{musixmad_setmaxslurs} and \ref{musixmad_setmaxtrills}. -\section{musixtnt}\label{musixtnt} -This package (tnt = Transform Notes) provides a macro \keyindex{TransformNotes} which makes -possible several ``transformations'' of the effect of notes commands such as \keyindex{notes}. -The \verb\musixtnt\ package is distributed separately from \verb\musixtex\. - -In general the effect of \verb|\TransformNotes(|\textit{input}\verb|}{|\textit{output}\verb|}| -is that subsequent notes commands in the source will expect their arguments -to match the \textit{input} pattern but -the notes will be typeset according to the \textit{output} pattern. - -For example, -\begin{verbatim} - \TransformNotes{#2}{#2} -\end{verbatim} -would be appropriate for a four-instrument score (arguments \verb|#2|, \verb|#3|, \verb|#4|, and \verb|#5|, separated by three -\verb\&\s, but the third instrument (\verb|#4|) will be discarded. - -The instrument/staff numbers in the first argument must start at $2$ and increase -consecutively, using \verb|&| (or \| for multi-staff instruments) as a separator. -The reason that the segment identifiers start at $2$ is that the first argument for \keyindex{vnotes} -is a spacing parameter. - -It is -essential that every \verb|\znotes|, \verb|\notes|, \verb|\Notes|, \verb|\NOtes|, etc.\@ command in -the score match the pattern of the first argument to \keyindex{TransformNotes} exactly; for example, -too few (or too many) -note segments will result in unintentionally discarded material and possibly compilation failure. -Similarly, it is not possible to use \keyindex{nextinstrument}, \keyindex{nextstaff}, \keyindex{selectinstrument} or \keyindex{selectstaff}, or to hide the \verb|&| (or \|) tokens inside -a user-defined macro. -An auxiliary program \verb|msxlint| distributed in the \verb\musixtnt\ package can be used to detect such incompatibilities. - -\keyindex{TransformNotes} may be used anywhere between \keyindex{startpiece} -and the command that ends the piece. - -\subsection{Extracting single-instrument parts from multi-instrument scores} - -To extract -a single-instrument part from a (copy of a) multi-instrument \musixtex\ score: -\begin{itemize} -\item Set \verb|\nbinstrument| to 1; for example, with command \verb|\instrumentnumber1|. -\item Use \keyindex{TransformNotes} to discard all but one of the note segments in notes -commands. -For example, the following line placed after -\verb|\startpiece| (but before any note commands) would be appropriate for a -four-instrument score and will result in a single-instrument part for the second of -these: -\begin{verbatim} - \TransformNotes{#2}{#3} -\end{verbatim} -\end{itemize} -Caveats: -\begin{itemize} -\item -Some additional revisions to the source for the part might be necessary: -\begin{itemize} -\item adjusting \verb|\setname1|, \verb|\setclef1|, \verb|\setsign1|, -\verb|\setmeter1| and \verb|\setstaffs1| commands, as necessary; - -\item ensuring that tempo and roadmap markings (\textbf{D.C.}, \textbf{Fine}, etc.) are in - the appropriate instrument segment; -\end{itemize} -\item -When the extracted part score is compiled and viewed, it may be seen -that horizontal-spacing commands designed for \emph{multiple} instruments can produce bad -spacing when used for a \emph{single} instrument. Bad spacing can be corrected manually but -this is very tedious; an auxiliary program called \verb\fixprt\ -automates this process (for single-staff instruments only). -\end{itemize} - -\subsection{Other applications} - -The \keyindex{TransformNotes} macro may be used for other purposes. Here are some examples: -\begin{list}{}{}\item - \verb|\TransformNotes{#2}{#2&\transpose+7#3}| -\end{list} -will begin transposing\index{transpose@{\Bslash transpose}} just the second instrument (argument \verb|#3|). -\begin{list}{}{}\item - \verb|\TransformNotes{#2|\|\verb|#3}{#2|\|\verb|#3&\tinynotesize#4}| -\end{list} -will begin typesetting the notes of the second instrument (\verb|#4|) in tiny size. -\begin{list}{}{}\item - \verb|\TransformNotes{#2}{#3}| -\end{list} -will switch the order of the two instruments. -\begin{list}{}{}\item - \verb|\TransformNotes{#2}{#2}| -\end{list} -will restore normal two-instrument processing. - - -The \keyindex{TransformNotes} macro is currently not compatible with the -\texttt{musixlyr} extension -package for lyrics described in Section~\ref{musixlyr}. For extracting or omitting parts -in scores with lyrics, use the techniques described in Chapter~\ref{parts}. - \section{musixper}\label{perc} @@ -1991,6 +1896,7 @@ their meanings are as follows: \end{description}\end{quote} } + %\check \section{musixsty}\index{musixsty@{\tt musixsty.tex}} @@ -2125,6 +2031,101 @@ The default font for typesetting \keyindex{txt} and \keyindex{tuplettxt} arguments is \keyindex{eightit} (\verb|8pt| italic). +\section{musixtnt}\label{musixtnt} +This package (tnt = Transform Notes) provides a macro \keyindex{TransformNotes} which makes +possible several ``transformations'' of the effect of notes commands such as \keyindex{notes}. +The \verb\musixtnt\ package is distributed separately from \verb\musixtex\. + +In general the effect of \verb|\TransformNotes(|\textit{input}\verb|}{|\textit{output}\verb|}| +is that subsequent notes commands in the source will expect their arguments +to match the \textit{input} pattern but +the notes will be typeset according to the \textit{output} pattern. + +For example, +\begin{verbatim} + \TransformNotes{#2}{#2} +\end{verbatim} +would be appropriate for a four-instrument score (arguments \verb|#2|, \verb|#3|, \verb|#4|, and \verb|#5|, separated by three +\verb\&\s, but the third instrument (\verb|#4|) will be discarded. + +The instrument/staff numbers in the first argument must start at $2$ and increase +consecutively, using \verb|&| (or \| for multi-staff instruments) as a separator. +The reason that the segment identifiers start at $2$ is that the first argument for \keyindex{vnotes} +is a spacing parameter. + +It is +essential that every \verb|\znotes|, \verb|\notes|, \verb|\Notes|, \verb|\NOtes|, etc.\@ command in +the score match the pattern of the first argument to \keyindex{TransformNotes} exactly; for example, +too few (or too many) +note segments will result in unintentionally discarded material and possibly compilation failure. +Similarly, it is not possible to use \keyindex{nextinstrument}, \keyindex{nextstaff}, \keyindex{selectinstrument} or \keyindex{selectstaff}, or to hide the \verb|&| (or \|) tokens inside +a user-defined macro. +An auxiliary program \verb|msxlint| distributed in the \verb\musixtnt\ package can be used to detect such incompatibilities. + +\keyindex{TransformNotes} may be used anywhere between \keyindex{startpiece} +and the command that ends the piece. + +\subsection{Extracting single-instrument parts from multi-instrument scores} + +To extract +a single-instrument part from a (copy of a) multi-instrument \musixtex\ score: +\begin{itemize} +\item Set \verb|\nbinstrument| to 1; for example, with command \verb|\instrumentnumber1|. +\item Use \keyindex{TransformNotes} to discard all but one of the note segments in notes +commands. +For example, the following line placed after +\verb|\startpiece| (but before any note commands) would be appropriate for a +four-instrument score and will result in a single-instrument part for the second of +these: +\begin{verbatim} + \TransformNotes{#2}{#3} +\end{verbatim} +\end{itemize} +Caveats: +\begin{itemize} +\item +Some additional revisions to the source for the part might be necessary: +\begin{itemize} +\item adjusting \verb|\setname1|, \verb|\setclef1|, \verb|\setsign1|, +\verb|\setmeter1| and \verb|\setstaffs1| commands, as necessary; + +\item ensuring that tempo and roadmap markings (\textbf{D.C.}, \textbf{Fine}, etc.) are in + the appropriate instrument segment; +\end{itemize} +\item +When the extracted part score is compiled and viewed, it may be seen +that horizontal-spacing commands designed for \emph{multiple} instruments can produce bad +spacing when used for a \emph{single} instrument. Bad spacing can be corrected manually but +this is very tedious; an auxiliary program called \verb\fixmsxpart\ +automates this process (for single-staff instruments only). +\end{itemize} + +\subsection{Other applications} + +The \keyindex{TransformNotes} macro may be used for other purposes. Here are some examples: +\begin{list}{}{}\item + \verb|\TransformNotes{#2}{#2&\transpose+7#3}| +\end{list} +will begin transposing\index{transpose@{\Bslash transpose}} just the second instrument (argument \verb|#3|). +\begin{list}{}{}\item + \verb|\TransformNotes{#2|\|\verb|#3}{#2|\|\verb|#3&\tinynotesize#4}| +\end{list} +will begin typesetting the notes of the second instrument (\verb|#4|) in tiny size. +\begin{list}{}{}\item + \verb|\TransformNotes{#2}{#3}| +\end{list} +will switch the order of the two instruments. +\begin{list}{}{}\item + \verb|\TransformNotes{#2}{#2}| +\end{list} +will restore normal two-instrument processing. + + +The \keyindex{TransformNotes} macro is currently not compatible with the +\texttt{musixlyr} extension +package for lyrics described in Section~\ref{musixlyr}. For extracting or omitting parts +in scores with lyrics, use the techniques described in Chapter~\ref{parts}. + \section{musixtri}\index{musixtri@{\tt musixtri.tex}} Provides triply dotted note symbols. Available are: diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/fonts.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/fonts.tex index 2a3a0037cd5..e0c547834b2 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/fonts.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/fonts.tex @@ -103,9 +103,9 @@ in any \TeX\ document, e.g., by coding \verb|\font blafont=bla10| and then You might also wish to replace once and for all the typefaces invoked by the commands described in the previous section. Again, before doing this, you must -follow steps (a-c) of the previous paragraph for all fonts in questions. +follow steps (a-c) of the previous paragraph for all fonts in question. \label{UserFonts} -You can use the standard bitmapped fonts which are converted to +You can use bitmapped fonts, which are converted to Postscript by e.g.,~\verb|dvips|, but you also may replace them by native Postscript fonts. diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/frontmatter.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/frontmatter.tex index c0f52919c24..76439f0ed9a 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/frontmatter.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/frontmatter.tex @@ -12,7 +12,7 @@ instrumental music\\\Large\itshape Version 1.16} % Private Bag No.1, Mordialloc, Victoria 3195,\\ Australia \\\medskip % \\\Large\rm Andreas \sc Egler\\\large\sl % (Ruhr--Uni--Bochum)\\ Ursulastr. 32\\ D-44793 Bochum} -\date{\today} +\date{Revised \today} \maketitle \vfill \thispagestyle{empty} @@ -66,9 +66,10 @@ event. You may read tributes to Daniel Taupin that are archived at the Since then, the only significant update to \musixtex\ has been in version 1.15 (April 2011) which takes advantage of the greater capacity of the e\TeX\ version of \TeX. The current version~1.16 (February~2015) incorporates some minor -corrections in cautionary accidentals and ``hiding'' staffs. The package +corrections in cautionary accidentals and ``hiding'' staffs, and a major correction +to a deep bug in the package for Postscript fonts. The \musixtex\ package includes -new extension libraries for use of Palatino text fonts, the EC variants +new extension libraries for use of Palatino and Helvetica text fonts, the EC variants of Computer Modern fonts, additional accents and improved dynamic marks. This manual is the definitive reference to all features of \musixtex\ version~1.16. diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/preparing.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/preparing.tex index aed7e821fcc..f139c96c56c 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/preparing.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/preparing.tex @@ -108,8 +108,8 @@ have the expected effect until the notes group is terminated or \verb|\noteskip| is further redefined. The following abbreviations may be useful: \begin{quote} - \keyindex{nnotes} for \verb|\notes\multnoteskip\smallvalue|\quad (i.e.,~\verb|1.6\elemskip|)\\ - \keyindex{nnnotes} for \verb|\notes\multnoteskip\tinyvalue|\quad (i.e.,~\verb|1.28\elemskip|) + \keyindex{nnotes} for \verb|\vnotes1.6\elemskip|\\ + \keyindex{nnnotes} for \verb|\vnotes1.28\elemskip| \end{quote} Finally, by issuing a command like \keyindex{scale}\verb|{2.4}| outside any notes group, you can scale all subsequent diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/summary.tex b/Master/texmf-dist/doc/generic/musixtex/musixdoc/summary.tex index 72f754f0e86..0b5675f9ffe 100644 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/summary.tex +++ b/Master/texmf-dist/doc/generic/musixtex/musixdoc/summary.tex @@ -1,10 +1,16 @@ \newgeometry{margin=0.5in} \makeatletter -\let\chapterheadorig\@makeschapterhead -\def\@makeschapterhead#1{} +\def\@makeschapterhead#1{} % omit chapter head to save space \chapter*{} \addcontentsline{toc}{chapter}{Summary of Denotations} -\def\@makeschapterhead#1{\chapterheadorig} +\def\@makeschapterhead#1{% restore usual definition + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \normalfont + \interlinepenalty\@M + \Huge \bfseries #1\par\nobreak + \vskip 40\p@ + }} \makeatother \parskip0pt plus 2pt \parindent0pt diff --git a/Master/texmf-dist/doc/generic/musixtex/musixdoc/texput.log b/Master/texmf-dist/doc/generic/musixtex/musixdoc/texput.log deleted file mode 100644 index e219b01db63..00000000000 --- a/Master/texmf-dist/doc/generic/musixtex/musixdoc/texput.log +++ /dev/null @@ -1,25 +0,0 @@ -This is XeTeX, Version 3.14159265-2.6-0.99991 (TeX Live 2014) (preloaded format=xelatex 2014.10.14) 25 FEB 2015 09:14 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**\end - -*\end -! TeX capacity exceeded, sorry [input stack size=5000]. -\end #1->\csname end#1 - \endcsname \@checkend {#1}\expandafter \endgroup \if@e... -<*> \end - -If you really absolutely need more capacity, -you can ask a wizard to enlarge me. - - -Here is how much of TeX's memory you used: - 1 string out of 493724 - 10 string characters out of 6145898 - 54450 words of memory out of 5000000 - 3432 multiletter control sequences out of 15000+600000 - 3640 words of font info for 14 fonts, out of 8000000 for 9000 - 1328 hyphenation exceptions out of 8191 - 5000i,0n,5000p,10b,8s stack positions out of 5000i,500n,10000p,200000b,80000s -No pages of output. diff --git a/Master/texmf-dist/doc/generic/musixtex/musixlyr/examples/nonmoriar.dvi b/Master/texmf-dist/doc/generic/musixtex/musixlyr/examples/nonmoriar.dvi Binary files differdeleted file mode 100644 index bafd467dd6f..00000000000 --- a/Master/texmf-dist/doc/generic/musixtex/musixlyr/examples/nonmoriar.dvi +++ /dev/null diff --git a/Master/texmf-dist/doc/generic/musixtex/musixlyr/mxlyrdoc.dvi b/Master/texmf-dist/doc/generic/musixtex/musixlyr/mxlyrdoc.dvi Binary files differdeleted file mode 100644 index 5c6cfc34948..00000000000 --- a/Master/texmf-dist/doc/generic/musixtex/musixlyr/mxlyrdoc.dvi +++ /dev/null diff --git a/Master/texmf-dist/doc/generic/musixtex/reference/musixre1.pdf b/Master/texmf-dist/doc/generic/musixtex/reference/musixre1.pdf Binary files differindex d3b7fa02210..52b23d85812 100644 --- a/Master/texmf-dist/doc/generic/musixtex/reference/musixre1.pdf +++ b/Master/texmf-dist/doc/generic/musixtex/reference/musixre1.pdf diff --git a/Master/texmf-dist/tex/generic/musixtex/musixtex.tex b/Master/texmf-dist/tex/generic/musixtex/musixtex.tex index 2ae5713117f..fedf981ab04 100644 --- a/Master/texmf-dist/tex/generic/musixtex/musixtex.tex +++ b/Master/texmf-dist/tex/generic/musixtex/musixtex.tex @@ -29,13 +29,15 @@ \def\mxvernumber{\mxmajorvernumber\mxminorvernumber}% make it possible to compare with \ifnum \def\mxversuffix{}% \edef\mxversion{\mxmajorvernumber.\mxminorvernumber\mxversuffix} -\def\mxdate{2015-02-27} +\def\mxdate{2015-04-21} \immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}% \everyjob{\immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}}% % T116: +% RDT corrected the definitions of \nnotes and \nnnotes + % HM corrected the definitions for cautionary small accidentals % RDT added \check@staff ... \fi to \@qa h, \@mca, \hs, \qqs @@ -49,8 +51,7 @@ % \tqu and \tql, synonyms for \tqh and \tqb % \ztqu and \ztql, synonyms for \ztqh and \ztqb % \hpp, \qpp, \dsp, \qsp, \hsp, \qqsp for pointed rests -% \nnotes, \nnnotes: abbreviations with \multnoteskip\smallvalue -% and \multnoteskip\tinyvalue spacing +% \nnotes, \nnnotes: 1.6 and 1.28 \elemskip spacing % \zcn, \ccn, \lcn, synomyms for \zcharnote etc. % RDT incorporated curly.tex (approved by Mthimkhulu Molekwa) @@ -4493,8 +4494,8 @@ \def\NOTES{\vnotes11.32\elemskip}% 1th }% -\def\nnotes{\notes\multnoteskip\smallvalue} % T116 RDT -\def\nnnotes{\notes\multnoteskip\tinyvalue} % T116 RDT +\def\nnotes{\vnotes1.6\elemskip} % T116 RDT (corrected 2015-03-31) +\def\nnnotes{\vnotes1.28\elemskip} % T116 RDT (corrected 2015-03-31) \arithmeticskipscale |