diff options
author | Karl Berry <karl@freefriends.org> | 2012-05-09 21:51:13 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-05-09 21:51:13 +0000 |
commit | 86f19f650e1431d7dc608da533112aabf2504b5c (patch) | |
tree | f30be7c04b60486082785d95877a870e41088b29 | |
parent | e3bedc5dd818bca0a0b003b7c30fe5966c55b556 (diff) |
ctanupload 1.2c (9may12)
git-svn-id: svn://tug.org/texlive/trunk@26273 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Build/source/texk/texlive/linked_scripts/ctanupload/ctanupload.pl | 84 | ||||
-rwxr-xr-x | Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl | 584 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/ctanupload/ctanupload.pdf | bin | 170076 -> 170121 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/support/ctanupload/ctanupload.tex | 2 | ||||
-rwxr-xr-x | Master/texmf-dist/scripts/ctanupload/ctanupload.pl | 84 |
5 files changed, 410 insertions, 344 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/ctanupload/ctanupload.pl b/Build/source/texk/texlive/linked_scripts/ctanupload/ctanupload.pl index e39c3d21237..163b4906513 100644 --- a/Build/source/texk/texlive/linked_scripts/ctanupload/ctanupload.pl +++ b/Build/source/texk/texlive/linked_scripts/ctanupload/ctanupload.pl @@ -1,6 +1,6 @@ #!/usr/bin/perl ################################################################################ -# Copyright (c) 2011 Martin Scharrer <martin@scharrer-online.de> +# Copyright (c) 2011-2012 Martin Scharrer <martin@scharrer-online.de> # This is open source software under the GPL v3 or later. ################################################################################ use strict; @@ -10,7 +10,7 @@ sub fromenv; sub load_data; sub save_data; -my $VERSION = 'v1.2b from 2012/05/06'; +my $VERSION = 'v1.2c from 2012/05/08'; my %CTAN_SERVERURLS = ( dante => 'http://dante.ctan.org/upload.html', uktug => 'http://www.tex.ac.uk/upload/', @@ -235,6 +235,8 @@ while (my $arg = shift @ARGV) { $CTAN_URL = (values %CTAN_SERVERURLS)[int rand scalar values %CTAN_SERVERURLS] if not defined $CTAN_URL; +my $DANTE = $CTAN_URL =~ /dante/; + PROMPT: if ($PROMPT) { @@ -243,7 +245,7 @@ if ($PROMPT) { my $input = ''; if ($field eq 'notes' || $field eq 'announce') { next if $field eq 'announce' and $FIELDS{DoNotAnnounce}; - next if $field eq 'notes' and $CTAN_URL ne $CTAN_SERVERURLS{dante}; + next if $field eq 'notes' and not $DANTE; print "\u$FIELDS_DESC{$field}: (press CTRL-Z (Windows) or CTRL-D (Linux) to stop)\n"; while (<STDIN>) { $input .= $_; @@ -336,24 +338,7 @@ if ($abort) { exit (2); } -my $DoNotAnnounce; -if ($FIELDS{DoNotAnnounce}) { - $FIELDS{DoNotAnnounce} = 'No'; - $FIELDS{to_announce} = 'Yes'; - $DoNotAnnounce = '[x]'; -} -else { - $FIELDS{DoNotAnnounce} = 'Yes'; - delete $FIELDS{to_announce}; - $DoNotAnnounce = '[ ]'; -} -# Only keep the announcement field used by the site: -if ($CTAN_URL eq $CTAN_SERVERURLS{dante}) { - delete $FIELDS{to_announce}; -} -else { - delete $FIELDS{DoNotAnnounce}; -} +my $DoNotAnnounce = ($FIELDS{DoNotAnnounce}) ? '[x]' : '[ ]'; if (!$FIELDS{directory}) { $FIELDS{directory} = '/macros/latex/contrib/' . $FIELDS{contribution}; @@ -395,13 +380,14 @@ if ($ASK) { if ($response eq 'e' or $response eq 'edit') { my $file = 'ctanupload.dat'; save_data($file); - if (not defined $ENV{EDITOR}) { + my $editor = $ENV{'CTANUPLOAD_EDITOR'} || $ENV{'EDITOR'}; + if (not defined $editor) { print "No EDITOR environment variable defined.\n"; print "Data was stored in file '$file'. Please edit manually and load with the -F option.\n"; exit (1); } else { - system($ENV{EDITOR}, $file); + system($editor, $file); load_data($file); goto PROMPT; } @@ -421,6 +407,29 @@ if ($ASK) { } } +if ($FIELDS{DoNotAnnounce}) { + if ($DANTE) { + $FIELDS{DoNotAnnounce} = 'No'; + delete $FIELDS{'to_announce'}; + $FIELDS{notes} = ''; + } else { + $FIELDS{'to_announce'} = 'Yes'; + delete $FIELDS{DoNotAnnounce}; + delete $FIELDS{notes}; + } +} +else { + if ($DANTE) { + $FIELDS{DoNotAnnounce} = 'Yes'; + delete $FIELDS{to_announce}; + } else { + delete $FIELDS{'to_announce'}; + delete $FIELDS{DoNotAnnounce}; + delete $FIELDS{notes}; + } +} +# Add Submit button for the sake of completeness: +$FIELDS{'SUBMIT'} = ($DANTE) ? 'Submit' : 'Submit contribution'; use WWW::Mechanize; my $mech = WWW::Mechanize->new(quiet => $QUIET, autocheck => 1); @@ -440,17 +449,24 @@ if ($mech->success()) { print "\nResponse:\n"; print LOG "\n# Response:\n" if $LOG; eval { - #print $mech->content(); - #return 1; - use HTML::TreeBuilder; - use HTML::FormatText; - my $tree = HTML::TreeBuilder->new_from_content( $mech->content() ); - my $formatter = HTML::FormatText->new(leftmargin => 0, rightmargin => 80); - my @response = split /\n/, $formatter->format($tree); - local $, = "\n"; - print @response[3..$#response-3]; - local $, = "\n# "; - print LOG '', @response[3..$#response-3] if $LOG; + if ($mech->response()->header('Content-Type') eq 'text/plain') { + #open (my $DEBUGFILE, '>', 'ctanupload.dbg'); + #print {$DEBUGFILE} $mech->content(); + #close ($DEBUGFILE); + print $mech->content(); + print LOG $mech->content() if $LOG; + } + else { + use HTML::TreeBuilder; + use HTML::FormatText; + my $tree = HTML::TreeBuilder->new_from_content( $mech->content() ); + my $formatter = HTML::FormatText->new(leftmargin => 0, rightmargin => 80); + my @response = split /\n/, $formatter->format($tree); + local $, = "\n"; + print @response[3..$#response-3]; + local $, = "\n# "; + print LOG '', @response[3..$#response-3] if $LOG; + } 1; } or do { print "Can't display HTML response, storing reponse if log file 'ctanupload_response.html'\n"; diff --git a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl index 1aead5fd526..f7d0e8fd6e3 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 26138 2012-04-25 15:23:08Z karl $ +# $Id: tlmgr.pl 26265 2012-05-09 00:15:38Z preining $ # # Copyright 2008, 2009, 2010, 2011, 2012 Norbert Preining # This file is licensed under the GNU General Public License version 2 # or any later version. -my $svnrev = '$Revision: 26138 $'; -my $datrev = '$Date: 2012-04-25 17:23:08 +0200 (Wed, 25 Apr 2012) $'; +my $svnrev = '$Revision: 26265 $'; +my $datrev = '$Date: 2012-05-09 02:15:38 +0200 (Wed, 09 May 2012) $'; my $tlmgrrevision; my $prg; if ($svnrev =~ m/: ([0-9]+) /) { @@ -36,7 +36,7 @@ BEGIN { # make subprograms (including kpsewhich) have the right path: my ($bindir, $kpsewhichname); if ($^O =~ /^MSWin/i) { - # on win32 $0 and __FILE__ point directly to tlmgr.pl; they can be relative + # on w32 $0 and __FILE__ point directly to tlmgr.pl; they can be relative $Master = __FILE__; $Master =~ s!\\!/!g; $Master =~ s![^/]*$!../../..! @@ -1586,7 +1586,7 @@ sub get_available_backups { $backups{$1}->{$2} = $usedt; } } - # reset the original value of the win32 sloppy mode for stating files + # reset the original value of the w32 sloppy mode for stating files ${^WIN32_SLOPPY_STAT} = $oldwsloppy; return %backups; } @@ -3102,7 +3102,7 @@ sub action_update { if ($#found_pkgs >= 0) { my $bad_file = 1; if (win32()) { - # on win32 the packages have not been removed already, + # on w32 the packages have not been removed already, # so we check that the only package listed in @found_pkgs # is the one we are working on ($pkg) if ($#found_pkgs == 0 && $found_pkgs[0] =~ m/^$pkg:/) { @@ -3156,7 +3156,7 @@ sub action_update { $restart_tlmgr = 1; } - # infra update and tlmgr restart on win32 is done by the updater batch script + # infra update and tlmgr restart on w32 is done by the updater batch script if (win32() && !$opts{"list"} && @critical) { info("Preparing TeX Live infrastructure update...\n"); for my $f (@infra_files_to_be_removed) { @@ -3493,6 +3493,11 @@ sub show_list_of_packages { sub array_to_repository { my %r = @_; my @ret; + my @k = keys %r; + if ($#k == 0) { + # only one repo, don't write any tag + return $r{$k[0]}; + } for my $k (keys %r) { my $v = $r{$k}; if ($k eq $v) { @@ -3506,7 +3511,13 @@ sub array_to_repository { sub repository_to_array { my $r = shift; my %r; - for my $rr (split ' ', $r) { + my @repos = split ' ', $r; + if ($#repos == 0) { + # only one repo, this is the main one! + $r{'main'} = $repos[0]; + return %r; + } + for my $rr (@repos) { if ($rr =~ m/^([^#]+)#(.*)$/) { $r{$2} = $1; } else { @@ -3641,7 +3652,7 @@ sub action_option { init_local_db(); if ($what =~ m/^show$/i) { for my $o (keys %{$localtlpdb->options}) { - # ignore some things which are win32 specific + # ignore some things which are w32 specific next if ($o eq "desktop_integration" && !win32()); next if ($o eq "file_assocs" && !win32()); next if ($o eq "w32_multi_user" && !win32()); @@ -4077,15 +4088,17 @@ sub action_gui { Win32::MsgBox($msg, 1|Win32::MB_ICONSTOP(), "Warning"); } else { printf STDERR " -Cannot load Tk, thus the GUI cannot be started! +$prg: Cannot load Tk, thus the GUI cannot be started! The Perl/Tk module is not shipped with the TeX Live installation. -You have to install it to get tlmgr GUI running. See -http://tug.org/texlive/distro.html for more details. +You have to install it to get the tlmgr GUI working. +(INC = @INC) +See http://tug.org/texlive/distro.html#perltk for more details. +Goodbye. "; } } else { - printf STDERR "Problem loading Tk: $@\n"; + printf STDERR "$prg: unexpected problem loading Tk: $@\n"; } exit 1; } @@ -4977,8 +4990,8 @@ sub init_local_db { $location = "$TeXLive::TLConfig::TeXLiveURL"; } # we normalize the path only if it is - # - neither a URL starting with http or ftp - # - if we are on windows it does not start with Drive:[\/] + # - a url starting with neither http or ftp + # - if we are on Windows, it does not start with Drive:[\/] if (! ( $location =~ m!^(http|ftp)://!i || (win32() && (!(-e $location) || ($location =~ m!^.:[\\/]!) ) ) ) ) { # seems to be a local path, try to normalize it @@ -6090,6 +6103,7 @@ written to the terminal. =back + =head2 repositoy =over 4 @@ -6102,27 +6116,30 @@ written to the terminal. =item B<repository set I<path>[#I<tag>] [I<path>[#I<tag>] ...]> -This action manages the list of repositories. See L</"MULTIPLE REPOSITORIES"> -below for detailed explanations. +This action manages the list of repositories. See L</"MULTIPLE +REPOSITORIES"> below for detailed explanations. + +The first form (C<list>) lists all configured repositories and the +respective tags if set. The second form (C<add>) adds a repository +(optionally attaching a tag) to the list of repositories. The third +form (C<remove>) removes a repository, either by full path/url, or by +tag. The last form (C<set>) sets the list of repositories to the items +given on the command line, not keeping previous settings -The first form list all configured repositories and the respective tags -if set. The second form adds a repository (and optionally attaching a -tag) to the list of repositories. The third from removes a repository, -either by full path/url, or by tag. The last form sets the list -of repositories to the items given on the command line, not keeping -previous settings. Be reminded that one of the repositories has to -be tagged as B<main>, otherwise all operations will fail. +In all cases, one of the repositories must be tagged as C<main>; +otherwise, all operations will fail! =back + =head2 candidates =over 4 =item B<candidates I<pkg>> -Shows the list of available candidates for package I<pkg>. See -L</"MULTIPLE REPOSITORIES"> below for details. +Shows the available candidate repositories for package I<pkg>. +See L</"MULTIPLE REPOSITORIES"> below. =back @@ -6263,7 +6280,7 @@ done, so any sort of breakage is possible. =item B<paper [a4|letter]> -=item B<S<xdvi|pdftex|dvips|dvipdfmx|dvipdfm|context paper [I<papersize>|--list]>> +=item B<S<[xdvi|pdftex|dvips|dvipdfmx|dvipdfm|context] paper [I<papersize>|--list]>> =back @@ -6326,6 +6343,61 @@ Print the TeX Live identifier for the detected platform C<--print-arch> is a synonym. +=head2 info [I<option>...] [collections|schemes|I<pkg>...] + +With no argument, lists all packages available at the package +repository, prefixing those already installed with C<i>. + +With the single word C<collections> or C<schemes> as the argument, lists +the request type instead of all packages. + +With any other arguments, display information about I<pkg>: the name, +category, short and long description, installation status, and TeX Live +revision number. If I<pkg> is not locally installed, searches in the +remote installation source. + +It also displays information taken from the TeX Catalogue, namely the +package version, date, and license. Consider these, especially the +package version, as approximations only, due to timing skew of the +updates of the different pieces. By contrast, the C<revision> value +comes directly from TL and is reliable. + +The former actions C<show> and C<list> are merged into this action, +but are still supported for backward compatibility. + +Options: + +=over 4 + +=item B<--list> + +If the option C<--list> is given with a package, the list of contained +files is also shown, including those for platform-specific dependencies. +When given with schemes and collections, C<--list> outputs their +dependencies in a similar way. + +=item B<--only-installed> + +If this options is given, the installation source will +not be used; only locally installed packages, collections, or schemes +are listed. +(Does not work for listing of packages for now) + +=item B<--taxonomy> + +=item B<--keyword> + +=item B<--functionality> + +=item B<--characterization> + +In addition to the normal data displayed, also display information for +given packages from the corresponding taxonomy (or all of them). See +L</"TAXONOMIES"> below for details. + +=back + + =head2 search [I<option>...] I<what> =head3 search [I<option>...] --file I<what> @@ -6394,61 +6466,6 @@ Search for package names, descriptions, and taxonomies, but not files. =back -=head2 info [I<option>...] [collections|schemes|I<pkg>...] - -With no argument, lists all packages available at the package -repository, prefixing those already installed with C<i>. - -With the single word C<collections> or C<schemes> as the argument, lists -the request type instead of all packages. - -With any other arguments, display information about I<pkg>: the name, -category, short and long description, installation status, and TeX Live -revision number. If I<pkg> is not locally installed, searches in the -remote installation source. - -It also displays information taken from the TeX Catalogue, namely the -package version, date, and license. Consider these, especially the -package version, as approximations only, due to timing skew of the -updates of the different pieces. By contrast, the C<revision> value -comes directly from TL and is reliable. - -The former actions C<show> and C<list> are merged into this action, -but are still supported for backward compatibility. - -Options: - -=over 4 - -=item B<--list> - -If the option C<--list> is given with a package, the list of contained -files is also shown, including those for platform-specific dependencies. -When given with schemes and collections, C<--list> outputs their -dependencies in a similar way. - -=item B<--only-installed> - -If this options is given, the installation source will -not be used; only locally installed packages, collections, or schemes -are listed. -(Does not work for listing of packages for now) - -=item B<--taxonomy> - -=item B<--keyword> - -=item B<--functionality> - -=item B<--characterization> - -In addition to the normal data displayed, also display information for -given packages from the corresponding taxonomy (or all of them). See -L</"TAXONOMIES"> below for details. - -=back - - =head2 dump-tlpdb [--local|--remote] Dump complete local or remote TLPDB to standard output, as-is. The @@ -6742,7 +6759,7 @@ make yourself responsible for rigorously using C<updmap-local.cfg>), set C<option generate_updmap>). -=head1 CONFIGURATION FILE +=head1 TLMGR CONFIGURATION FILE A small subset of the command line options can be set in a config file for C<tlmgr> which resides in C<TEXMFCONFIG/tlmgr/config>. By default, the @@ -6764,38 +6781,79 @@ C<gui-expertmode> switches between the full GUI and a simplified GUI with only the important and mostly used settings. + +=head1 TAXONOMIES + +tlmgr allows searching and listing of various categorizations, which we +call I<taxonomies>, as provided by an enhanced TeX Catalogue (available +for testing at L<http://az.ctan.org>). This is useful when, for +example, you don't know a specific package name but have an idea of the +functionality you need; or when you want to see all packages relating to +a given area. + +There are three different taxonomies, specified by the following +options: + +=over 4 + +=item B<--keyword> + +The keywords, as specified at L<http://az.ctan.org/keyword>. + +=item B<--functionality> + +The ``by-topic'' categorization created by J\"urgen Fenn, as specified +at L<http://az.ctan.org/characterization/by-function>. + +=item B<--characterization> + +Both the primary and secondary functionalities, as specified at +L<http://az.ctan.org/characterization/choose_dimen>. + +=item B<--taxonomy> + +Operate on all the taxonomies. + +=back + +The taxonomies are updated nightly and stored within TeX Live, so +Internet access is not required to search them. + +Examples: + + tlmgr search --taxonomy exercise # check all taxonomies for "exercise" + tlmgr search --taxonomy --word table # check for "table" on its own + tlmgr search --list --keyword # dump entire keyword taxonomy + tlmgr show --taxonomy pdftex # show pdftex package information, + # including all taxonomy entries + + =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 -package repositories for packages that cannot be included in -proper TeX Live due to license or other reasons. - -Without multiple repository support using these additional repositories -needed an extra invocation and temporarily setting the installation -source to this additional repository. By setting up all the -repositories as sources of packages one does not need to -use multiple invocations of tlmgr anymore. - -B<Warning:> Although support for multiple repositories has been -tested extensively, it does not guarantee proper operation. If you -want to be sure not to break anything, consider continuing -using multiple invocations of tlmgr. - -When using multiple repositories, one has to be the main repository, -which distributes most of the TeX Live packages. If you convert -from a single repository installation to a multiple repository -installation (by calling tlmgr repository add), the previously -set repository will be set as the main repository. - -By default, even if multiple repositories are configured, packages -are B<only> installed from the main repository, as long as -packages are not explicitely pinned to a different repository. -That also means by simply adding another repository you will -B<not> be able to install the packages from there, you first -have to specify which packages should be taken from a -different repository by specifying some pinning rules. +sometimes local repositories are used to provide local packages (e.g., +proprietary fonts, internal styles). There are also alternative package +repositories for packages that cannot or should not be included in TeX +Live, due to being under rapid development or for other reasons. + +It's possible to tell C<tlmgr> about additional repositories you want to +use. Although this support for multiple repositories has been tested +extensively, we cannot guarantee proper operation. If in doubt or if +problems, you can temporarily set the installation source to any +repository and perform your operations. + +When using multiple repositories, one of them has to be set as the main +repository, which distributes most of the installed packages. If you +switch from a single repository installation to a multiple repository +installation (by calling C<tlmgr repository add>), the previously set +repository will be set as the main repository. + +By default, even if multiple repositories are configured, packages are +I<only> installed from the main repository. Thus, simply adding a +second repository does not enable installation of anything from there. +You first have to specify which packages should be taken from a +different repository by specifying some so-called ``pinning'' rules, +described next. =head2 Pinning @@ -6803,51 +6861,51 @@ Pinning a package is done by editing (adding) a file TEXMFLOCAL/tlpkg/pinning.txt -which contains lines +which contains lines of the form: repo:pkg[,pkg] -In this line the C<repo> is either the full URL saved in the -list or repositories, or one of the tags given. The C<pkg> -are shell style globs for packages. +In this line, the I<repo> is either a full url or repository tag that +was added to the repository list. Each I<pkg> is a shell-style glob for +package identifiers. -By default everything is pinned to the main repository, so -you can imagine that at the end of the file pinning.txt there -is a line +By default, everything is pinned to the main repository, +as if at the end of C<pinning.txt> there is a line main:* -If a package C<foo> is pinned to a repository, any package -C<foo> in any other repository, even if it has a higher -revision number, will not be considered as installable -candidate. +Now, if a package C<foo> is pinned to a repository, any package C<foo> +in any other repository, even if it has a higher revision number, will +not be considered as an installable candidate. -=head2 Usage example with tlcontrib +=head2 Multiple repository example with tlcontrib -- check current repository: +First, check that we have support for multiple repositories, and only +one specified (as is the case by default): $ tlmgr repository list List of repositories (with tags if set): /var/www/norbert/tlnet -- add tlcontrib repository (and give it a short name) +Add the C<tlcontrib> repository maintained by Taco Hoekwater et al., +with the tag C<tlcontrib>: $ tlmgr repository add http://tlcontrib.metatex.org/2011 tlcontrib -- check repositories: +Check the repository list again: $ tlmgr repository list List of repositories (with tags if set): http://tlcontrib.metatex.org/2011 (tlcontrib) /var/www/norbert/tlnet (main) +Specify a pinning entry to get the package C<cowfont> from C<tlcontrib>: -- add a pinning to get cowfont from tlcontrib: + $ tlocal=`kpsewhich -var-value TEXMFLOCAL` + $ mkdir -p $tlocal/tlpkg + $ echo "tlcontrib:cowfont" > $tlocal/tlpkg/pinning.txt - $ mkdir -p `kpsewhich -var-value TEXMFLOCAL`/tlpkg - $ echo "tlcontrib:cowfont" > `kpsewhich -var-value TEXMFLOCAL`/tlpkg/pinning.txt - -- check that we can find cowfont: +Check that we can find C<cowfont>: $ tlmgr show cowfont tlmgr: using pinning file .../tlpkg/pinning.txt @@ -6877,232 +6935,208 @@ candidate. 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 -call I<taxonomies>, as provided by an enhanced TeX Catalogue (available -for testing at L<http://az.ctan.org>). This is useful when, for -example, you don't know a specific package name but have an idea of the -functionality you need; or when you want to see all packages relating to -a given area. - -There are three different taxonomies, specified by the following -options: - -=over 4 - -=item B<--keyword> - -The keywords, as specified at L<http://az.ctan.org/keyword>. - -=item B<--functionality> - -The ``by-topic'' categorization created by J\"urgen Fenn, as specified -at L<http://az.ctan.org/characterization/by-function>. - -=item B<--characterization> - -Both the primary and secondary functionalities, as specified at -L<http://az.ctan.org/characterization/choose_dimen>. - -=item B<--taxonomy> - -Operate on all the taxonomies. - -=back - -The taxonomies are updated nightly and stored within TeX Live, so -Internet access is not required to search them. - -Examples: - - tlmgr search --taxonomy exercise # check all taxonomies for "exercise" - tlmgr search --taxonomy --word table # check for "table" on its own - tlmgr search --list --keyword # dump entire keyword taxonomy - tlmgr show --taxonomy pdftex # show pdftex package information, - # including all taxonomy entries - =head1 GUI FOR TLMGR -The graphical user interface for C<tlmgr> needs Perl/TK being installed. +The graphical user interface for C<tlmgr> needs Perl/Tk to be installed. For Windows the necessary modules are shipped within TeX Live, for all -other (i.e., Unix-based) systems Perl/Tk (as well as perl of course) has -to be installed. +other (i.e., Unix-based) systems Perl/Tk (as well as Perl of course) has +to be installed. L<http://tug.org/texlive/distro.html#perltk> has a +list of invocations for some distros. When started with C<tlmgr gui> the graphical user interface will be shown. The main window contains a menu bar, the main display, and a status area where messages normally shown on the console are displayed. -Within the main display there are three main parts: The I<Display -configuration>, the list of packages, and the buttons for actions. In -addition to these three on the top right there is some text showing the -currently loaded repository (this text also acts as button and will load -the default repository). +Within the main display there are three main parts: the C<Display +configuration> area, the list of packages, and the action buttons. +Also, at the top right the currently loaded repository is shown; this +also acts as a button and when clicked will try to load the default +repository. To load a different repository, see the C<tlmgr> menu item. -=head2 Menu bar +Finally, the status area at the bottom of the window gives additional +information about what is going on. -The following entries can be found in the menu bar: + +=head2 Main display + +=head3 Display configuration area + +The first part of the main display allows you to specify (filter) which +packages are shown. By default, all are shown. Changes here are +reflected right away. =over 4 -=item B<tlmgr> +=item Status -Provides access to load various repositories (the default as specified -in the texlive database, the default network repository, if given the -repository specified on the command line, and an arbitrary other one. -Furthermore is allows to quit C<tlmgr>. +Select whether to show all packages (the default), only those installed, +only those I<not> installed, or only those with update available. -=item B<Options> +=item Category + +Select which categories are shown: packages, collections, and/or +schemes. These are briefly explained in the L<DESCRIPTION> section +above. -Provides access to three groups of options, I<General> (for almost all -options), I<Paper> (configuration of default paper sizes), I<Platforms> -(only on Unix, configuration of the supported/installed platforms), as -well as some toggles to turn on and off various options. +=item Match -There is also a toggle for C<Expert options> which defaults to on. If -you turn this off the next time you start the GUI a simplified screen -will be shown that exhibits only the most important and necessary -functionality. This setting is saved in the configuration file of -C<tlmgr>, see L<CONFIGURATION FILE> for details. +Select packages matching for a specific pattern. By default, this uses +the same algorithm as C<tlmgr search>, i.e., searches everything: +descriptions, taxonomies, and/or filenames. You can also select any +subset for searching. -=item B<Actions> +=item Selection -Provides access to a variety of items, such as updating the filename -database (aka ls-R, mktexlsr, texhash), rebuilding of all formats -(C<fmtutil-sys --all>), updating the font map database (C<updmap-sys>), -and handling of symbolic links in system directories (only Unix), -restoring backups of packages, as well as removal of the full TeX Live -installation (only Unix). +Select packages to those selected, those not selected, or all. Here, +``selected'' means that the checkbox in the beginning of the line of a +package is ticked. -=item B<Help> +=item Display configuration buttons -Provides access to the manual and other basic information on the -installed version, authors, license. +To the right there are three buttons: select all packages, select none +(a.k.a. deselect all), and reset all these filters to the defaults, +i.e., show all available. =back +=head3 Package list area -=head2 Main display +The second are of the main display lists all installed packages. If a +repository is loaded, those that are available but not installed are +also listed. -The main display lists all packages, installed and, if a repository is -loaded, also those that are available but not installed. +Double clicking on a package line pops up an informational window with +further details: the long description, included files, etc. -Each line of the package list contains of the following items: +Each line of the package list consists of the following items: =over 4 =item a checkbox -used for selecting packages, some of the action buttons (see below) will -work only on the selected packages. +Used to select particular packages; some of the action buttons (see +below) work only on the selected packages. -=item the package name +=item package name -that is the name of the package as given in the database. +The name (identifier) of the package as given in the database. =item local revision (and version) -If the package is installed the revision of the installed package will -be shown. If there is a catalogue version given in the database for this -package, it will be shown in parenthesis. +If the package is installed the TeX Live revision number for the +installed package will be shown. If there is a catalogue version given +in the database for this package, it will be shown in parentheses. +However, the catalogue version, unlike the TL revision, is not +guaranteed to reflect what is actually installed. =item remote revision (and version) If a repository has been loaded the revision of the package in the -repository (if present) is shown. As with the local variant, if a -catalogue version is provided it will be displayed. +repository (if present) is shown. As with the local column, if a +catalogue version is provided it will be displayed. And also as with +the local column, the catalogue version may be stale. =item short description -The short description (or title) is shown. +The short description of the package. =back -Double clicking on one of the lines pops up an informational window with -further details, the long description, included files, etc. +=head3 Main display action buttons -Above the list of package there are options to configure the list of -packages to be shown. Changing any of them will automatically update the -list of packages. The different display configurations are: +Below the list of packages are several buttons: =over 4 -=item Status +=item Update all installed -allows selecting to show all, only the installed, only those packages -that are not installed, or only those with packages available. +This calls C<tlmgr update --all>, i.e., tries to update all available +packages. Below this button is a toggle to allow reinstallation of +previously removed packages as part of this action. -=item Category +The other four buttons only work on the selected packages, i.e., those +where the checkbox at the beginning of the package line is ticked. + +=item Update -allows to select which categories are shown. +Update only the selected packages. -=item Match +=item Install -allows searching for a specific pattern. This uses the same algorithm as -C<tlmgr search>, i.e., searches in the title, short and long -descriptions. +Install the selected packages; acts like C<tlmgr install>, i.e., also +installs dependencies. Thus, installing a collection installs all its +constituent packages. -=item Selection +=item Remove -allows restricting the list of packages to those selected, not selected, -or all (selected means that the checkbox in the beginning of the line of -a package is selected). +Removes the selected packages; acts like C<tlmgr remove>, i.e., it will +also remove dependencies of collections (but not dependencies of normal +packages). -=item buttons +=item Backup -To the right there are three buttons, one to select all packages, one to -select none (deselect all), and one to reset all filters to the -defaults, i.e., show all available. +Makes a backup of the selected packages; acts like C<tlmgr backup>. This +action needs the option C<backupdir> set (see C<Options -> General>). =back -Below the list of packages there are five buttons: -=over 4 +=head2 Menu bar -=item Update all installed +The following entries can be found in the menu bar: -This calls C<tlmgr update --all> internally, i.e., tries to update all -available packages. +=over 4 -Below this button there is a toggle that allows reinstallation of -previously removed packages. +=item B<tlmgr> menu -The following four buttons only work on the I<selected> packages, i.e., -those where the checkbutton at the beginning of the line is ticked. +The items here load various repositories: the default as specified in +the TeX Live database, the default network repository, the repository +specified on the command line (if any), and an arbitrarily +manually-entered one. Also has the so-necessary C<quit> operation. -=item Update +=item B<Options menu> -only update the selected packages. +Provides access to several groups of options: C<Paper> (configuration of +default paper sizes), C<Platforms> (only on Unix, configuration of the +supported/installed platforms), C<GUI Language> (select language used in +the GUI interface), and C<General> (everything else). -=item Install +Several toggles are also here. The first is C<Expert options>, which is +set by default. If you turn this off, the next time you start the GUI a +simplified screen will be shown that display only the most important +functionality. This setting is saved in the configuration file of +C<tlmgr>; see L<CONFIGURATION FILE> for details. -install the selected packages; acts like C<tlmgr install>, i.e., also -installs dependencies. Thus, installing a collection will install -all its constituent packages. +The other toggles are all off by default: for debugging output, to +disable the automatic installation of new packages, and to disable the +automatic removal of packages deleted from the server. Playing with the +choices of what is or isn't installed may lead to an inconsistent TeX Live +installation; e.g., when a package is renamed. -=item Remove +=item B<Actions menu> -removes the selected packages; acts like C<tlmgr remove>, i.e., it will -also remove dependencies of collections (but not dependencies of normal -packages). +Provides access to several actions: update the filename database (aka +C<ls-R>, C<mktexlsr>, C<texhash>), rebuild all formats (C<fmtutil-sys +--all>), update the font map database (C<updmap-sys>), restore from a backup +of a package, and use of symbolic links in system directories (not on +Windows). -=item Backup +The final action is to remove the entire TeX Live installation (also not +on Windows). -makes a backup of the selected packages; acts like C<tlmgr backup>. This -action needs the option C<backupdir> set (see C<Options -> General>). +=item B<Help menu> -=back +Provides access to the TeX Live manual (also on the web at +L<http://tug.org/texlive/doc.html>) and the usual ``About'' box. -Finally, the status area at the bottom of the window gives additional -information about what is going on. +=back =head1 MACHINE-READABLE OUTPUT -Given the C<--machine-readable> option, C<tlmgr> writes to stdout in the +With the C<--machine-readable> option, C<tlmgr> writes to stdout in the fixed line-oriented format described here, and the usual informational messages for human consumption are written to stderr (normally they are written to stdout). The idea is that a program can get all the @@ -7114,7 +7148,7 @@ L<install|"install [I<option>]... I<pkg>...">, and the L<option|"option"> actions. -=head2 Update and install actions +=head2 update and install actions The output format is as follows: diff --git a/Master/texmf-dist/doc/support/ctanupload/ctanupload.pdf b/Master/texmf-dist/doc/support/ctanupload/ctanupload.pdf Binary files differindex 0270e82bf71..6097ab9215c 100644 --- a/Master/texmf-dist/doc/support/ctanupload/ctanupload.pdf +++ b/Master/texmf-dist/doc/support/ctanupload/ctanupload.pdf diff --git a/Master/texmf-dist/doc/support/ctanupload/ctanupload.tex b/Master/texmf-dist/doc/support/ctanupload/ctanupload.tex index 1fb2d2acf5c..20f503c3ddb 100644 --- a/Master/texmf-dist/doc/support/ctanupload/ctanupload.tex +++ b/Master/texmf-dist/doc/support/ctanupload/ctanupload.tex @@ -3,7 +3,7 @@ \title{The \textsf{ctanupload} script} \author{Martin Scharrer} \email{martin@scharrer-online.de} -\date{Version v1.2b -- 2012/05/06} +\date{Version v1.2c -- 2012/05/08} \repository{https://bitbucket.org/martin_scharrer/ctanupload/} diff --git a/Master/texmf-dist/scripts/ctanupload/ctanupload.pl b/Master/texmf-dist/scripts/ctanupload/ctanupload.pl index e39c3d21237..163b4906513 100755 --- a/Master/texmf-dist/scripts/ctanupload/ctanupload.pl +++ b/Master/texmf-dist/scripts/ctanupload/ctanupload.pl @@ -1,6 +1,6 @@ #!/usr/bin/perl ################################################################################ -# Copyright (c) 2011 Martin Scharrer <martin@scharrer-online.de> +# Copyright (c) 2011-2012 Martin Scharrer <martin@scharrer-online.de> # This is open source software under the GPL v3 or later. ################################################################################ use strict; @@ -10,7 +10,7 @@ sub fromenv; sub load_data; sub save_data; -my $VERSION = 'v1.2b from 2012/05/06'; +my $VERSION = 'v1.2c from 2012/05/08'; my %CTAN_SERVERURLS = ( dante => 'http://dante.ctan.org/upload.html', uktug => 'http://www.tex.ac.uk/upload/', @@ -235,6 +235,8 @@ while (my $arg = shift @ARGV) { $CTAN_URL = (values %CTAN_SERVERURLS)[int rand scalar values %CTAN_SERVERURLS] if not defined $CTAN_URL; +my $DANTE = $CTAN_URL =~ /dante/; + PROMPT: if ($PROMPT) { @@ -243,7 +245,7 @@ if ($PROMPT) { my $input = ''; if ($field eq 'notes' || $field eq 'announce') { next if $field eq 'announce' and $FIELDS{DoNotAnnounce}; - next if $field eq 'notes' and $CTAN_URL ne $CTAN_SERVERURLS{dante}; + next if $field eq 'notes' and not $DANTE; print "\u$FIELDS_DESC{$field}: (press CTRL-Z (Windows) or CTRL-D (Linux) to stop)\n"; while (<STDIN>) { $input .= $_; @@ -336,24 +338,7 @@ if ($abort) { exit (2); } -my $DoNotAnnounce; -if ($FIELDS{DoNotAnnounce}) { - $FIELDS{DoNotAnnounce} = 'No'; - $FIELDS{to_announce} = 'Yes'; - $DoNotAnnounce = '[x]'; -} -else { - $FIELDS{DoNotAnnounce} = 'Yes'; - delete $FIELDS{to_announce}; - $DoNotAnnounce = '[ ]'; -} -# Only keep the announcement field used by the site: -if ($CTAN_URL eq $CTAN_SERVERURLS{dante}) { - delete $FIELDS{to_announce}; -} -else { - delete $FIELDS{DoNotAnnounce}; -} +my $DoNotAnnounce = ($FIELDS{DoNotAnnounce}) ? '[x]' : '[ ]'; if (!$FIELDS{directory}) { $FIELDS{directory} = '/macros/latex/contrib/' . $FIELDS{contribution}; @@ -395,13 +380,14 @@ if ($ASK) { if ($response eq 'e' or $response eq 'edit') { my $file = 'ctanupload.dat'; save_data($file); - if (not defined $ENV{EDITOR}) { + my $editor = $ENV{'CTANUPLOAD_EDITOR'} || $ENV{'EDITOR'}; + if (not defined $editor) { print "No EDITOR environment variable defined.\n"; print "Data was stored in file '$file'. Please edit manually and load with the -F option.\n"; exit (1); } else { - system($ENV{EDITOR}, $file); + system($editor, $file); load_data($file); goto PROMPT; } @@ -421,6 +407,29 @@ if ($ASK) { } } +if ($FIELDS{DoNotAnnounce}) { + if ($DANTE) { + $FIELDS{DoNotAnnounce} = 'No'; + delete $FIELDS{'to_announce'}; + $FIELDS{notes} = ''; + } else { + $FIELDS{'to_announce'} = 'Yes'; + delete $FIELDS{DoNotAnnounce}; + delete $FIELDS{notes}; + } +} +else { + if ($DANTE) { + $FIELDS{DoNotAnnounce} = 'Yes'; + delete $FIELDS{to_announce}; + } else { + delete $FIELDS{'to_announce'}; + delete $FIELDS{DoNotAnnounce}; + delete $FIELDS{notes}; + } +} +# Add Submit button for the sake of completeness: +$FIELDS{'SUBMIT'} = ($DANTE) ? 'Submit' : 'Submit contribution'; use WWW::Mechanize; my $mech = WWW::Mechanize->new(quiet => $QUIET, autocheck => 1); @@ -440,17 +449,24 @@ if ($mech->success()) { print "\nResponse:\n"; print LOG "\n# Response:\n" if $LOG; eval { - #print $mech->content(); - #return 1; - use HTML::TreeBuilder; - use HTML::FormatText; - my $tree = HTML::TreeBuilder->new_from_content( $mech->content() ); - my $formatter = HTML::FormatText->new(leftmargin => 0, rightmargin => 80); - my @response = split /\n/, $formatter->format($tree); - local $, = "\n"; - print @response[3..$#response-3]; - local $, = "\n# "; - print LOG '', @response[3..$#response-3] if $LOG; + if ($mech->response()->header('Content-Type') eq 'text/plain') { + #open (my $DEBUGFILE, '>', 'ctanupload.dbg'); + #print {$DEBUGFILE} $mech->content(); + #close ($DEBUGFILE); + print $mech->content(); + print LOG $mech->content() if $LOG; + } + else { + use HTML::TreeBuilder; + use HTML::FormatText; + my $tree = HTML::TreeBuilder->new_from_content( $mech->content() ); + my $formatter = HTML::FormatText->new(leftmargin => 0, rightmargin => 80); + my @response = split /\n/, $formatter->format($tree); + local $, = "\n"; + print @response[3..$#response-3]; + local $, = "\n# "; + print LOG '', @response[3..$#response-3] if $LOG; + } 1; } or do { print "Can't display HTML response, storing reponse if log file 'ctanupload_response.html'\n"; |