diff options
author | Norbert Preining <preining@logic.at> | 2012-01-19 09:14:45 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2012-01-19 09:14:45 +0000 |
commit | 664aaa5af02335fefe5b420cbffd20f403dafe95 (patch) | |
tree | ddd09254557d88810560f97db053e525872c9cfb /Master/tlpkg/dev/dev.multi-source-support-v2.patch | |
parent | 42ab90e389476db8980a9d0e7928a32df44d876d (diff) |
remove quilt patches, I have to keep that in the working tl installation
where I develop
update the multi-source patch and the mupdmap integration patch
git-svn-id: svn://tug.org/texlive/trunk@25153 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/dev/dev.multi-source-support-v2.patch')
-rw-r--r-- | Master/tlpkg/dev/dev.multi-source-support-v2.patch | 290 |
1 files changed, 152 insertions, 138 deletions
diff --git a/Master/tlpkg/dev/dev.multi-source-support-v2.patch b/Master/tlpkg/dev/dev.multi-source-support-v2.patch index fc482b9ffe1..ee0d0f2d386 100644 --- a/Master/tlpkg/dev/dev.multi-source-support-v2.patch +++ b/Master/tlpkg/dev/dev.multi-source-support-v2.patch @@ -1,7 +1,12 @@ +--- + texmf/scripts/texlive/tlmgr.pl | 907 ++++++++++++++++++++++++++++++++++------- + tlpkg/TeXLive/TLPDB.pm | 669 +++++++++++++++++++++++++++--- + 2 files changed, 1379 insertions(+), 197 deletions(-) + Index: tlpkg/TeXLive/TLPDB.pm =================================================================== ---- tlpkg/TeXLive/TLPDB.pm (revision 25070) -+++ tlpkg/TeXLive/TLPDB.pm (working copy) +--- tlpkg/TeXLive/TLPDB.pm.orig 2012-01-18 10:10:14.054521486 +0900 ++++ tlpkg/TeXLive/TLPDB.pm 2012-01-18 11:05:39.223509405 +0900 @@ -70,20 +70,31 @@ $tlpdb->settings; $tlpdb->setting($key, [$value]); @@ -959,8 +964,8 @@ Index: tlpkg/TeXLive/TLPDB.pm =head1 OPTIONS Index: texmf/scripts/texlive/tlmgr.pl =================================================================== ---- texmf/scripts/texlive/tlmgr.pl (revision 25070) -+++ texmf/scripts/texlive/tlmgr.pl (working copy) +--- texmf/scripts/texlive/tlmgr.pl.orig 2012-01-18 10:10:14.046521530 +0900 ++++ texmf/scripts/texlive/tlmgr.pl 2012-01-18 11:06:18.972002414 +0900 @@ -124,6 +124,7 @@ "package-logfile" => "=s", "persistent-downloads" => "!", @@ -1015,6 +1020,18 @@ Index: texmf/scripts/texlive/tlmgr.pl init_tlmedia(); } - $tlp = $remotetlpdb->get_package($pkg); +- $tlpdb = $remotetlpdb; +- } else { +- $installed = 1; +- } +- if ($tlp) { +- my @colls; +- if ($tlp->category ne "Collection" && $tlp->category ne "Scheme") { +- @colls = $localtlpdb->needed_by($pkg); +- if (!@colls) { +- # not referenced in the local tlpdb, so try the remote here, too +- if (!$remotetlpdb) { +- init_tlmedia(); + if (defined($tag)) { + if (!$remotetlpdb->is_virtual) { + tlwarn("tlmgr: specifying implicite tags is not allowed for non-virtual databases!\n"); @@ -1023,9 +1040,33 @@ Index: texmf/scripts/texlive/tlmgr.pl + if (!$remotetlpdb->is_repository($tag)) { + tlwarn("tlmgr: no such repository tag defined: $tag\n"); + next; -+ } -+ } -+ } + } +- @colls = $remotetlpdb->needed_by($pkg); + } + } +- # some packages might depend on other packages, so do not +- # include arbitrary package in the list of collections, but +- # only collectons: +- @colls = grep {m;^collection-;} @colls; +- print "package: ", $tlp->name, "\n"; +- print "category: ", $tlp->category, "\n"; +- print "shortdesc: ", $tlp->shortdesc, "\n" if ($tlp->shortdesc); +- print "longdesc: ", $tlp->longdesc, "\n" if ($tlp->longdesc); +- print "installed: ", ($installed ? "Yes" : "No"), "\n"; +- print "revision: ", $tlp->revision, "\n" if ($installed); +- print "cat-version: ", $tlp->cataloguedata->{'version'}, "\n" +- if $tlp->cataloguedata->{'version'}; +- print "cat-date: ", $tlp->cataloguedata->{'date'}, "\n" +- if $tlp->cataloguedata->{'date'}; +- print "cat-license: ", $tlp->cataloguedata->{'license'}, "\n" +- if $tlp->cataloguedata->{'license'}; +- print "collection: ", @colls, "\n" if (@colls); +- if ($opts{"keyword"} || $opts{"taxonomy"}) { +- print "keywords: "; +- if (defined($taxonomy->{'by-package'}{'keyword'}{$pkg})) { +- print join(', ',@{$taxonomy->{'by-package'}{'keyword'}{$pkg}}), "\n"; +- } else { +- print "(none found)\n"; + $tlp = $remotetlpdb->get_package($pkg, $tag); + if (!$tlp) { + if (defined($tag)) { @@ -1033,7 +1074,14 @@ Index: texmf/scripts/texlive/tlmgr.pl + # all candidates! + tlwarn("tlmgr: Cannot find package $pkg in repository $tag\n"); + next; -+ } + } +- } +- if ($opts{"functionality"} || $opts{"taxonomy"}) { +- print "function: "; +- if (defined($taxonomy->{'by-package'}{'functionality'}{$pkg})) { +- print join(', ',@{$taxonomy->{'by-package'}{'functionality'}{$pkg}}), "\n"; +- } else { +- print "(none found)\n"; + if ($remotetlpdb->is_virtual) { + # we might have a package that is available in a + # subsidiary repository, but not installable @@ -1068,24 +1116,27 @@ Index: texmf/scripts/texlive/tlmgr.pl + tlwarn("strange, package listed but no candidates: $pkg\n"); + next; + } -+ } + } + tlwarn("tlmgr: cannot find package $pkg\n"); + next; -+ } - $tlpdb = $remotetlpdb; - } else { - $installed = 1; - } -- if ($tlp) { -- my @colls; -- if ($tlp->category ne "Collection" && $tlp->category ne "Scheme") { -- @colls = $localtlpdb->needed_by($pkg); -- if (!@colls) { -- # not referenced in the local tlpdb, so try the remote here, too -- if (!$remotetlpdb) { -- init_tlmedia(); -- } -- @colls = $remotetlpdb->needed_by($pkg); + } +- if ($opts{"characterization"} || $opts{"taxonomy"}) { +- print "primary characterization: "; +- if (defined($taxonomy->{'by-package'}{'primary'}{$pkg})) { +- print $taxonomy->{'by-package'}{'primary'}{$pkg}, "\n"; +- } else { +- print "(none found)\n"; +- } +- print "secondary characterization: "; +- if (defined($taxonomy->{'by-package'}{'secondary'}{$pkg})) { +- print $taxonomy->{'by-package'}{'secondary'}{$pkg}, "\n"; +- } else { +- print "(none found)\n"; +- } ++ $tlpdb = $remotetlpdb; ++ } else { ++ $installed = 1; ++ } + my @colls; + if ($tlp->category ne "Collection" && $tlp->category ne "Scheme") { + @colls = $localtlpdb->needed_by($pkg); @@ -1093,33 +1144,9 @@ Index: texmf/scripts/texlive/tlmgr.pl + # not referenced in the local tlpdb, so try the remote here, too + if (!$remotetlpdb) { + init_tlmedia(); - } ++ } + @colls = $remotetlpdb->needed_by($pkg); - } -- # some packages might depend on other packages, so do not -- # include arbitrary package in the list of collections, but -- # only collectons: -- @colls = grep {m;^collection-;} @colls; -- print "package: ", $tlp->name, "\n"; -- print "category: ", $tlp->category, "\n"; -- print "shortdesc: ", $tlp->shortdesc, "\n" if ($tlp->shortdesc); -- print "longdesc: ", $tlp->longdesc, "\n" if ($tlp->longdesc); -- print "installed: ", ($installed ? "Yes" : "No"), "\n"; -- print "revision: ", $tlp->revision, "\n" if ($installed); -- print "cat-version: ", $tlp->cataloguedata->{'version'}, "\n" -- if $tlp->cataloguedata->{'version'}; -- print "cat-date: ", $tlp->cataloguedata->{'date'}, "\n" -- if $tlp->cataloguedata->{'date'}; -- print "cat-license: ", $tlp->cataloguedata->{'license'}, "\n" -- if $tlp->cataloguedata->{'license'}; -- print "collection: ", @colls, "\n" if (@colls); -- if ($opts{"keyword"} || $opts{"taxonomy"}) { -- print "keywords: "; -- if (defined($taxonomy->{'by-package'}{'keyword'}{$pkg})) { -- print join(', ',@{$taxonomy->{'by-package'}{'keyword'}{$pkg}}), "\n"; -- } else { -- print "(none found)\n"; -- } ++ } + } + # some packages might depend on other packages, so do not + # include arbitrary package in the list of collections, but @@ -1145,13 +1172,7 @@ Index: texmf/scripts/texlive/tlmgr.pl + print join(', ',@{$taxonomy->{'by-package'}{'keyword'}{$pkg}}), "\n"; + } else { + print "(none found)\n"; - } -- if ($opts{"functionality"} || $opts{"taxonomy"}) { -- print "function: "; -- if (defined($taxonomy->{'by-package'}{'functionality'}{$pkg})) { -- print join(', ',@{$taxonomy->{'by-package'}{'functionality'}{$pkg}}), "\n"; -- } else { -- print "(none found)\n"; ++ } + } + if ($opts{"functionality"} || $opts{"taxonomy"}) { + print "function: "; @@ -1173,44 +1194,7 @@ Index: texmf/scripts/texlive/tlmgr.pl + print $taxonomy->{'by-package'}{'secondary'}{$pkg}, "\n"; + } else { + print "(none found)\n"; -+ } -+ } -+ if ($opts{"list"}) { -+ if ($tlp->category eq "Collection" || $tlp->category eq "Scheme") { -+ # in the case of collections of schemes we list the deps -+ my @deps = $tlp->depends; -+ if (@deps) { -+ print "depends:\n"; -+ for my $d (@deps) { -+ print "\t$d\n"; -+ } - } } -- if ($opts{"characterization"} || $opts{"taxonomy"}) { -- print "primary characterization: "; -- if (defined($taxonomy->{'by-package'}{'primary'}{$pkg})) { -- print $taxonomy->{'by-package'}{'primary'}{$pkg}, "\n"; -- } else { -- print "(none found)\n"; -+ print "Included files, by type:\n"; -+ # if the package has a .ARCH dependency we also list the files for -+ # those packages -+ my @todo = $tlpdb->expand_dependencies("-only-arch", $tlpdb, ($pkg)); -+ for my $d (sort @todo) { -+ my $foo = $tlpdb->get_package($d); -+ if (!$foo) { -+ tlwarn ("\nShould not happen, no dependent package $d\n"); -+ next; - } -- print "secondary characterization: "; -- if (defined($taxonomy->{'by-package'}{'secondary'}{$pkg})) { -- print $taxonomy->{'by-package'}{'secondary'}{$pkg}, "\n"; -- } else { -- print "(none found)\n"; -+ if ($d ne $pkg) { -+ print "depending package $d:\n"; - } -- } - if ($opts{"list"}) { - if ($tlp->category eq "Collection" || $tlp->category eq "Scheme") { - # in the case of collections of schemes we list the deps @@ -1220,10 +1204,16 @@ Index: texmf/scripts/texlive/tlmgr.pl - for my $d (@deps) { - print "\t$d\n"; - } -- } -+ if ($foo->runfiles) { -+ print "run files:\n"; -+ for my $f (sort $foo->runfiles) { print " $f\n"; } ++ } ++ if ($opts{"list"}) { ++ if ($tlp->category eq "Collection" || $tlp->category eq "Scheme") { ++ # in the case of collections of schemes we list the deps ++ my @deps = $tlp->depends; ++ if (@deps) { ++ print "depends:\n"; ++ for my $d (@deps) { ++ print "\t$d\n"; + } } - print "Included files, by type:\n"; - # if the package has a .ARCH dependency we also list the files for @@ -1255,6 +1245,24 @@ Index: texmf/scripts/texlive/tlmgr.pl - for my $k (keys %{$dfd->{$f}}) { - print " $k=\"", $dfd->{$f}->{$k}, '"'; - } ++ } ++ print "Included files, by type:\n"; ++ # if the package has a .ARCH dependency we also list the files for ++ # those packages ++ my @todo = $tlpdb->expand_dependencies("-only-arch", $tlpdb, ($pkg)); ++ for my $d (sort @todo) { ++ my $foo = $tlpdb->get_package($d); ++ if (!$foo) { ++ tlwarn ("\nShould not happen, no dependent package $d\n"); ++ next; ++ } ++ if ($d ne $pkg) { ++ print "depending package $d:\n"; ++ } ++ if ($foo->runfiles) { ++ print "run files:\n"; ++ for my $f (sort $foo->runfiles) { print " $f\n"; } ++ } + if ($foo->srcfiles) { + print "source files:\n"; + for my $f (sort $foo->srcfiles) { print " $f\n"; } @@ -1277,12 +1285,12 @@ Index: texmf/scripts/texlive/tlmgr.pl - print "bin files (all platforms):\n"; - for my $f (sort $foo->allbinfiles) { print " $f\n"; } - } - } ++ } + # in case we have them + if ($foo->allbinfiles) { + print "bin files (all platforms):\n"; + for my $f (sort $foo->allbinfiles) { print " $f\n"; } -+ } + } } - print "\n"; - } else { @@ -1333,7 +1341,7 @@ Index: texmf/scripts/texlive/tlmgr.pl + my $kbstr = ($kb >= 0 ? " [${kb}k]" : ""); + my $kbstrlen = length($kbstr); + my $pkglen = length($pkg); -+ my $is = sprintf("%-10s ", "$txt:"); ++ my $is = sprintf("%-9s ", "$txt:"); + if ($pkglen + $kbstrlen > $flen) { + $is .= "$pkg$kbstr: "; + } else { @@ -1402,7 +1410,7 @@ Index: texmf/scripts/texlive/tlmgr.pl machine_line($p, $FLAG_REMOVE, $rev, "-", "-", "-"); } else { - info("$p: local: $rev, source: <absent> (auto-remove)\n"); -+ upd_info($p, -1, $rev, "<absent>", "a-remove"); ++ upd_info($p, -1, $rev, "<absent>", "autorm"); } $currnr++; } else { @@ -1424,7 +1432,7 @@ Index: texmf/scripts/texlive/tlmgr.pl $currnr++; } } -@@ -2678,19 +2787,39 @@ +@@ -2678,19 +2787,44 @@ my $unwind_package; my $remove_unwind_container = 0; my $rev = $tlp->revision; @@ -1461,13 +1469,18 @@ Index: texmf/scripts/texlive/tlmgr.pl + my @cand = $remotetlpdb->candidates($pkg); + shift @cand; # remove the top element + if (@cand) { -+ print "\tother candidates: @cand\n"; ++ print "\tother candidates: "; ++ for my $a (@cand) { ++ my ($t,$r) = split(/\//, $a, 2); ++ print $r . '@' . $t . " "; ++ } ++ print "\n"; + } + } } $updated{$pkg} = 1; next; -@@ -2731,10 +2860,11 @@ +@@ -2731,10 +2865,11 @@ } if ($::machinereadable) { @@ -1481,7 +1494,7 @@ Index: texmf/scripts/texlive/tlmgr.pl } $donesize += $sizes{$pkg}; $currnr++; -@@ -2777,7 +2907,7 @@ +@@ -2777,7 +2912,7 @@ } if ($remotetlpdb->install_package($pkg, $localtlpdb)) { # installation succeeded because we got a reference @@ -1490,7 +1503,7 @@ Index: texmf/scripts/texlive/tlmgr.pl unlink($unwind_package) if $remove_unwind_container; # remember successful update $updated{$pkg} = 1; -@@ -2805,7 +2935,7 @@ +@@ -2805,7 +2940,7 @@ # now in fact we should do some cleanup, removing files and # dirs from the new package before re-installing the old one. # TODO @@ -1499,7 +1512,7 @@ Index: texmf/scripts/texlive/tlmgr.pl tlwarn("\n\nInstallation of new version of $pkg did fail, trying to unwind.\n"); if (win32()) { # w32 is notorious for not releasing a file immediately -@@ -2846,12 +2976,25 @@ +@@ -2846,12 +2981,25 @@ unless $::machinereadable; } else { # install new packages @@ -1526,7 +1539,7 @@ Index: texmf/scripts/texlive/tlmgr.pl my ($estrem, $esttot); if (!$opts{"list"}) { ($estrem, $esttot) = TeXLive::TLUtils::time_estimate($totalsize, -@@ -2861,14 +3004,16 @@ +@@ -2861,14 +3009,16 @@ my @maargs = ($pkg, $FLAG_AUTOINSTALL, "-", $mediatlp->revision, $sizes{$pkg}); if (!$opts{"list"}) { push @maargs, $estrem, $esttot; @@ -1539,14 +1552,14 @@ Index: texmf/scripts/texlive/tlmgr.pl my $kb = int($sizes{$pkg} / 1024) + 1; if ($opts{"list"}) { - info("$pkg [${kb}k]: local: <absent>, source: " . $mediatlp->revision . " (auto-install)\n"); -+ upd_info($pkg, $kb, "<absent>", $mediarevstr, "a-install"); ++ upd_info($pkg, $kb, "<absent>", $mediarevstr, "autoinst"); } else { - info("[$currnr/$totalnr, $estrem/$esttot] auto-install: $pkg [${kb}k]\n"); + info("[$currnr/$totalnr, $estrem/$esttot] auto-install: $pkg ($mediarevstr) [${kb}k]\n"); } } $currnr++; -@@ -2876,7 +3021,7 @@ +@@ -2876,7 +3026,7 @@ next if ($opts{"dry-run"} || $opts{"list"}); if ($remotetlpdb->install_package($pkg, $localtlpdb)) { # installation succeeded because we got a reference @@ -1555,7 +1568,7 @@ Index: texmf/scripts/texlive/tlmgr.pl $nrupdated++; } else { tlwarn("$0: couldn't install new package $pkg\n"); -@@ -3023,6 +3168,7 @@ +@@ -3023,6 +3173,7 @@ if (!(@new || @updated)) { info("tlmgr: no updates available\n"); if ($remotetlpdb->media ne "NET" @@ -1563,7 +1576,7 @@ Index: texmf/scripts/texlive/tlmgr.pl && !$opts{"dry-run"} && !$opts{"repository"} ) { -@@ -3101,6 +3247,14 @@ +@@ -3101,6 +3252,14 @@ @packs = $remotetlpdb->expand_dependencies($localtlpdb, @packs) unless $opts{"no-depends"}; } # @@ -1578,7 +1591,7 @@ Index: texmf/scripts/texlive/tlmgr.pl # installation order of packages: # first all normal packages, then collections, then schemes # isn't already installed, but the collection already updated, it will -@@ -3108,7 +3262,7 @@ +@@ -3108,7 +3267,7 @@ my @inst_packs; my @inst_colls; my @inst_schemes; @@ -1587,7 +1600,7 @@ Index: texmf/scripts/texlive/tlmgr.pl # we do name checking here, not to load all tlpobj again and again if ($pkg =~ m/^scheme-/) { push @inst_schemes, $pkg; -@@ -3127,7 +3281,11 @@ +@@ -3127,7 +3286,11 @@ my @todo; for my $pkg (@inst_packs, @inst_colls, @inst_schemes) { my $pkgrev = 0; @@ -1600,7 +1613,7 @@ Index: texmf/scripts/texlive/tlmgr.pl if (!defined($mediatlp)) { tlwarn("package $pkg not present in package repository.\n"); next; -@@ -3175,13 +3333,26 @@ +@@ -3175,13 +3338,26 @@ my ($estrem, $esttot) = TeXLive::TLUtils::time_estimate($totalsize, $donesize, $starttime); my $kb = int($sizes{$pkg} / 1024) + 1; @@ -1630,7 +1643,7 @@ Index: texmf/scripts/texlive/tlmgr.pl logpackage("${re}install: $pkg"); } $donesize += $sizes{$pkg}; -@@ -3204,7 +3375,7 @@ +@@ -3204,7 +3380,7 @@ # we list them, otherwise we go direct into tlmgr show $pkg mode if ($what !~ m/^(collection|scheme)/i) { tlwarn("(switching to show mode)\n"); @@ -1639,7 +1652,7 @@ Index: texmf/scripts/texlive/tlmgr.pl return; } } else { -@@ -3223,7 +3394,11 @@ +@@ -3223,7 +3399,11 @@ } elsif ($what =~ m/^scheme/i) { @whattolist = $tlm->schemes; } else { @@ -1652,7 +1665,7 @@ Index: texmf/scripts/texlive/tlmgr.pl } foreach (@whattolist) { next if ($_ =~ m/^00texlive/); -@@ -3232,13 +3407,199 @@ +@@ -3232,12 +3412,198 @@ } else { print " "; } @@ -1712,7 +1725,7 @@ Index: texmf/scripts/texlive/tlmgr.pl +# tlmgr repository remove [path|tag] -> removes repository or tag +# tlmgr repository set path[#tag] [path[#tag] ...] -> sets the list +# - ++ +sub array_to_repository { + my %r = @_; + my @ret; @@ -1849,11 +1862,10 @@ Index: texmf/scripts/texlive/tlmgr.pl + } + return; +} -+ + # OPTION # - sub action_option { -@@ -4601,6 +4962,82 @@ +@@ -4601,6 +4967,87 @@ # sub init_tlmedia { @@ -1924,8 +1936,13 @@ Index: texmf/scripts/texlive/tlmgr.pl + # this "location-url" line should not be changed since GUI programs + # depend on it: + print "location-url\t$locstr\n" if $::machinereadable; -+ info("tlmgr: package repository $locstr\n"); -+ ++ info("tlmgr: package repository:\n"); ++ info("\tmain = " . $repos{'main'} . "\n"); ++ for my $t (@tags) { ++ if ($t ne 'main') { ++ info("\t$t = " . $repos{$t} . "\n"); ++ } ++ } +} + + @@ -1936,7 +1953,7 @@ Index: texmf/scripts/texlive/tlmgr.pl if (defined($remotetlpdb) && ($remotetlpdb->root eq $location)) { # nothing to be done return; -@@ -4614,11 +5051,29 @@ +@@ -4614,10 +5061,28 @@ $location =~ s,^$TeXLiveServerURL,$mirrorbase,; } @@ -1946,7 +1963,7 @@ Index: texmf/scripts/texlive/tlmgr.pl print "location-url\t$location\n" if $::machinereadable; info("tlmgr: package repository $location\n"); +} - ++ +sub setup_one_remotetlpdb +{ + my $location = shift; @@ -1962,11 +1979,10 @@ Index: texmf/scripts/texlive/tlmgr.pl + my $mirrorbase = TeXLive::TLUtils::give_ctan_mirror_base(); + $location =~ s,^$TeXLiveServerURL,$mirrorbase,; + } -+ + # if we talk about a net location try to download the hash of the tlpdb # - if that is possible, check for the locally saved file and if the hash - # agrees load the local copy if present instead of the remote one, -@@ -4763,8 +5218,30 @@ +@@ -4763,8 +5228,30 @@ close($tlfh); } } @@ -1997,12 +2013,12 @@ Index: texmf/scripts/texlive/tlmgr.pl # finish handles the -pause option (wait for input from stdin), -@@ -5561,7 +6038,43 @@ +@@ -5561,6 +6048,42 @@ =back +=head2 repositoy - ++ +=over 4 + +=item B<repository list> @@ -2037,16 +2053,15 @@ Index: texmf/scripts/texlive/tlmgr.pl + + +=back -+ + =head2 option - =over 4 -@@ -6198,7 +6711,119 @@ +@@ -6198,6 +6721,118 @@ GUI and a simplified GUI with only the important and mostly used settings. +=head1 MULTIPLE REPOSITORIES - ++ +Most packages are distributed via the main TeX Live repository, but +sometimes local repositories are used to provide local packages +(like commercial fonts, internal styles), as well as alternative @@ -2157,7 +2172,6 @@ Index: texmf/scripts/texlive/tlmgr.pl + +In the last part you see that the cowfont is installed from +the tlcontrib part (@tlcontrib). -+ + =head1 TAXONOMIES - tlmgr allows searching and listing of various categorizations, which we |