diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2014-08-08 14:30:41 +0200 |
---|---|---|
committer | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2014-08-12 13:49:54 +0200 |
commit | ab0a50979b9eb4dfa3320eff7e187e41efedf7a9 (patch) | |
tree | 498dfb8a97ff3361a9f7486863a52bb4e26bb898 /chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN | |
parent | 4ce69f7403811819800e7c5ae1318b2647e778d1 (diff) |
Update Chromium to beta version 37.0.2062.68
Change-Id: I188e3b5aff1bec75566014291b654eb19f5bc8ca
Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Diffstat (limited to 'chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN')
23 files changed, 0 insertions, 7725 deletions
diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/API/HOWTO.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/API/HOWTO.pm deleted file mode 100644 index e65a4bc9313..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/API/HOWTO.pm +++ /dev/null @@ -1,44 +0,0 @@ -=head1 NAME - -CPAN::API::HOWTO - a recipe book for programming with CPAN.pm - -=head1 RECIPES - -All of these recipes assume that you have put "use CPAN" at the top of -your program. - -=head2 What distribution contains a particular module? - - my $distribution = CPAN::Shell->expand( - "Module", "Data::UUID" - )->distribution()->pretty_id(); - -This returns a string of the form "AUTHORID/TARBALL". If you want the -full path and filename to this distribution on a CPAN mirror, then it is -C<.../authors/id/A/AU/AUTHORID/TARBALL>. - -=head2 What modules does a particular distribution contain? - - CPAN::Index->reload(); - my @modules = CPAN::Shell->expand( - "Distribution", "JHI/Graph-0.83.tar.gz" - )->containsmods(); - -You may also refer to a distribution in the form A/AU/AUTHORID/TARBALL. - -=head1 SEE ALSO - -the main CPAN.pm documentation - -=head1 LICENSE - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -See L<http://www.perl.com/perl/misc/Artistic.html> - -=head1 AUTHOR - -David Cantrell - -=cut diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Admin.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Admin.pm deleted file mode 100644 index de8d7001840..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Admin.pm +++ /dev/null @@ -1,230 +0,0 @@ -package CPAN::Admin; -use base CPAN; -use CPAN; # old base.pm did not load CPAN on previous line -use strict; -use vars qw(@EXPORT $VERSION); -use constant PAUSE_IP => "pause.perl.org"; - -@EXPORT = qw(shell); -$VERSION = "5.5"; -push @CPAN::Complete::COMMANDS, qw(register modsearch); -$CPAN::Shell::COLOR_REGISTERED = 1; - -sub shell { - CPAN::shell($_[0]||"admin's cpan> ",$_[1]); -} - -sub CPAN::Shell::register { - my($self,$mod,@rest) = @_; - unless ($mod) { - print "register called without argument\n"; - return; - } - if ($CPAN::META->has_inst("URI::Escape")) { - require URI::Escape; - } else { - print "register requires URI::Escape installed, otherwise it cannot work\n"; - return; - } - print "Got request for mod[$mod]\n"; - if (@rest) { - my $modline = join " ", $mod, @rest; - print "Sending to PAUSE [$modline]\n"; - my $emodline = URI::Escape::uri_escape($modline, '^\w '); - $emodline =~ s/ /+/g; - my $url = - sprintf("https://%s/pause/authenquery?pause99_add_mod_modid=". - "%s;SUBMIT_pause99_add_mod_hint=hint", - PAUSE_IP, - $emodline, - ); - print "url[$url]\n\n"; - print ">>>>Trying to open a netscape window<<<<\n"; - sleep 1; - system("netscape","-remote","openURL($url)"); - return; - } - my $m = CPAN::Shell->expand("Module",$mod); - unless (ref $m) { - print "Could not determine the object for $mod\n"; - return; - } - my $id = $m->id; - print "Found module id[$id] in database\n"; - - if (exists $m->{RO} && $m->{RO}{chapterid}) { - print "$id is already registered\n"; - return; - } - - my(@namespace) = split /::/, $id; - my $rootns = $namespace[0]; - - # Tk, XML and Apache need special treatment - if ($rootns=~/^(Bundle)\b/) { - print "Bundles are not yet ready for registering\n"; - return; - } - - # make a good suggestion for the chapter - my(@simile) = CPAN::Shell->expand("Module","/^$rootns(:|\$)/"); - print "Found within this namespace ", join(", ", map { $_->id } @simile), "\n"; - my(%seench); - for my $ch (map { exists $_->{RO} ? $_->{RO}{chapterid} : ""} @simile) { - next unless $ch; - $seench{$ch}=undef; - } - my(@seench) = sort grep {length($_)} keys %seench; - my $reco_ch = ""; - if (@seench>1) { - print "Found rootnamespace[$rootns] in the chapters [", join(", ", @seench), "]\n"; - $reco_ch = $seench[0]; - print "Picking $reco_ch\n"; - } elsif (@seench==1) { - print "Found rootnamespace[$rootns] in the chapter[$seench[0]]\n"; - $reco_ch = $seench[0]; - } else { - print "The new rootnamespace[$rootns] needs to be introduced. Oh well.\n"; - } - - # Look closer at the dist - my $d = CPAN::Shell->expand("Distribution", $m->cpan_file); - printf "Module comes with dist[%s]\n", $d->id; - for my $contm ($d->containsmods) { - if ($CPAN::META->exists("CPAN::Module",$contm)) { - my $contm_obj = CPAN::Shell->expand("Module",$contm) or next; - my $is_reg = exists $contm_obj->{RO} && $contm_obj->{RO}{description}; - printf(" in same dist: %s%s\n", - $contm, - $is_reg ? " already in modulelist" : "", - ); - } - } - - # get it so that m is better and we can inspect for XS - CPAN::Shell->get($id); - CPAN::Shell->m($id); - CPAN::Shell->d($d->id); - - my $has_xs = 0; - { - my($mani,@mani); - local $/ = "\n"; - open $mani, "$d->{build_dir}/MANIFEST" and @mani = <$mani>; - my @xs = grep /\.xs\b/, @mani; - if (@xs) { - print "Found XS files: @xs"; - $has_xs=1; - } - } - my $emodid = URI::Escape::uri_escape($id, '\W'); - my $ech = $reco_ch; - $ech =~ s/ /+/g; - my $description = $m->{MANPAGE} || ""; - $description =~ s/[A-Z]<//; # POD markup (and maybe more) - $description =~ s/^\s+//; # leading spaces - $description =~ s/>//; # POD - $description =~ s/^\Q$id\E//; # usually this line starts with the modid - $description =~ s/^[ \-]+//; # leading spaces and dashes - substr($description,44) = "" if length($description)>44; - $description = ucfirst($description); - my $edescription = URI::Escape::uri_escape($description, '^\w '); - $edescription =~ s/ /+/g; - my $url = - sprintf("https://%s/pause/authenquery?pause99_add_mod_modid=". - "%s;pause99_add_mod_chapterid=%s;pause99_add_mod_statd=%s;". - "pause99_add_mod_stats=%s;pause99_add_mod_statl=%s;". - "pause99_add_mod_stati=%s;pause99_add_mod_description=%s;". - "pause99_add_mod_userid=%s;SUBMIT_pause99_add_mod_preview=preview", - PAUSE_IP, - $emodid, - $ech, - "R", - "d", - $has_xs ? "c" : "p", - "O", - $edescription, - $m->{RO}{CPAN_USERID}, - ); - print "$url\n\n"; - print ">>>>Trying to open a netscape window<<<<\n"; - system("netscape","-remote","openURL($url)"); -} - -sub CPAN::Shell::modsearch { - my($self,@line) = @_; - unless (@line) { - print "modsearch called without argument\n"; - return; - } - my $request = join " ", @line; - print "Got request[$request]\n"; - my $erequest = URI::Escape::uri_escape($request, '^\w '); - $erequest =~ s/ /+/g; - my $url = - sprintf("http://www.xray.mpe.mpg.de/cgi-bin/w3glimpse/modules?query=%s". - "&errors=0&case=on&maxfiles=100&maxlines=30", - $erequest, - ); - print "$url\n\n"; - print ">>>>Trying to open a netscape window<<<<\n"; - system("netscape","-remote","openURL('$url')"); -} - -1; - -__END__ - -=head1 NAME - - CPAN::Admin - A CPAN Shell for CPAN admins - -=head1 SYNOPSIS - - perl -MCPAN::Admin -e shell - -=head1 STATUS - -Note: this module is currently not maintained. If you need it and fix -it for your needs, please submit patches. - -=head1 DESCRIPTION - -CPAN::Admin is a subclass of CPAN that adds the commands C<register> -and C<modsearch> to the CPAN shell. - -C<register> calls C<get> on the named module, assembles a couple of -informations (description, language), and calls Netscape with the --remote argument so that a form is filled with all the assembled -informations and the registration can be performed with a single -click. If the command line has more than one argument, register does -not run a C<get>, instead it interprets the rest of the line as DSLI -status, description, and userid and sends them to netscape such that -the form is again mostly filled and can be edited or confirmed with a -single click. CPAN::Admin never performs the submission click for you, -it is only intended to fill in the form on PAUSE and leave the -confirmation to you. - -C<modsearch> simply passes the arguments to the search engine for the -modules@perl.org mailing list at http://www.xray.mpe.mpg.de where all -registration requests are stored. It does so in the same way as -register, namely with the C<netscape -remote> command. - -An experimental feature has also been added, namely to color already -registered modules in listings. If you have Term::ANSIColor installed, -the u, r, and m commands will show already registered modules in -green. - -=head1 PREREQISITES - -URI::Escape, netscape browser available in the path, netscape must -understand the -remote switch (as far as I know, this is only -available on UNIX); coloring of registered modules is only available -if Term::ANSIColor is installed. - -=head1 LICENSE - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=cut diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Debug.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Debug.pm deleted file mode 100644 index 086b6238520..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Debug.pm +++ /dev/null @@ -1,79 +0,0 @@ -# -*- Mode: cperl; coding: utf-8; cperl-indent-level: 4 -*- -package CPAN::Debug; -use strict; -use vars qw($VERSION); - -$VERSION = sprintf "%.6f", substr(q$Rev: 2212 $,4)/1000000 + 5.4; -# module is internal to CPAN.pm - -%CPAN::DEBUG = qw[ - CPAN 1 - Index 2 - InfoObj 4 - Author 8 - Distribution 16 - Bundle 32 - Module 64 - CacheMgr 128 - Complete 256 - FTP 512 - Shell 1024 - Eval 2048 - HandleConfig 4096 - Tarzip 8192 - Version 16384 - Queue 32768 - FirstTime 65536 -]; - -$CPAN::DEBUG ||= 0; - -#-> sub CPAN::Debug::debug ; -sub debug { - my($self,$arg) = @_; - - my @caller; - my $i = 0; - while () { - my(@c) = (caller($i))[0 .. ($i ? 3 : 2)]; - last unless defined $c[0]; - push @caller, \@c; - for (0,3) { - last if $_ > $#c; - $c[$_] =~ s/.*:://; - } - for (1) { - $c[$_] =~ s|.*/||; - } - last if ++$i>=3; - } - pop @caller; - if ($CPAN::DEBUG{$caller[0][0]} & $CPAN::DEBUG) { - if ($arg and ref $arg) { - eval { require Data::Dumper }; - if ($@) { - $CPAN::Frontend->myprint($arg->as_string); - } else { - $CPAN::Frontend->myprint(Data::Dumper::Dumper($arg)); - } - } else { - my $outer = ""; - local $" = ","; - if (@caller>1) { - $outer = ",[@{$caller[1]}]"; - } - $CPAN::Frontend->myprint("Debug(@{$caller[0]}$outer): $arg\n"); - } - } -} - -1; - -__END__ - -=head1 LICENSE - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=cut diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/DeferedCode.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/DeferedCode.pm deleted file mode 100644 index c57669b1778..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/DeferedCode.pm +++ /dev/null @@ -1,16 +0,0 @@ -package CPAN::DeferedCode; - -use strict; -use vars qw/$VERSION/; - -use overload fallback => 1, map { ($_ => 'run') } qw/ - bool "" 0+ -/; - -$VERSION = "5.50"; - -sub run { - $_[0]->(); -} - -1; diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/FirstTime.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/FirstTime.pm deleted file mode 100644 index d5d3e21763e..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/FirstTime.pm +++ /dev/null @@ -1,1636 +0,0 @@ -# -*- Mode: cperl; coding: utf-8; cperl-indent-level: 4 -*- -package CPAN::Mirrored::By; -use strict; - -sub new { - my($self,@arg) = @_; - bless [@arg], $self; -} -sub continent { shift->[0] } -sub country { shift->[1] } -sub url { shift->[2] } - -package CPAN::FirstTime; -use strict; - -use ExtUtils::MakeMaker (); -use FileHandle (); -use File::Basename (); -use File::Path (); -use File::Spec (); -use vars qw($VERSION $urllist); -$VERSION = sprintf "%.6f", substr(q$Rev: 2229 $,4)/1000000 + 5.4; - -=head1 NAME - -CPAN::FirstTime - Utility for CPAN::Config file Initialization - -=head1 SYNOPSIS - -CPAN::FirstTime::init() - -=head1 DESCRIPTION - -The init routine asks a few questions and writes a CPAN/Config.pm or -CPAN/MyConfig.pm file (depending on what it is currently using). - -In the following all questions and explanations regarding config -variables are collected. - -=cut - -# down until the next =back the manpage must be parsed by the program -# because the text is used in the init dialogues. - -=over 2 - -=item auto_commit - -Normally CPAN.pm keeps config variables in memory and changes need to -be saved in a separate 'o conf commit' command to make them permanent -between sessions. If you set the 'auto_commit' option to true, changes -to a config variable are always automatically committed to disk. - -Always commit changes to config variables to disk? - -=item build_cache - -CPAN.pm can limit the size of the disk area for keeping the build -directories with all the intermediate files. - -Cache size for build directory (in MB)? - -=item build_dir - -Directory where the build process takes place? - -=item build_dir_reuse - -Until version 1.88 CPAN.pm never trusted the contents of the build_dir -directory between sessions. Since 1.88_58 CPAN.pm has a YAML-based -mechanism that makes it possible to share the contents of the -build_dir/ directory between different sessions with the same version -of perl. People who prefer to test things several days before -installing will like this feature because it safes a lot of time. - -If you say yes to the following question, CPAN will try to store -enough information about the build process so that it can pick up in -future sessions at the same state of affairs as it left a previous -session. - -Store and re-use state information about distributions between -CPAN.pm sessions? - -=item build_requires_install_policy - -When a module declares another one as a 'build_requires' prerequisite -this means that the other module is only needed for building or -testing the module but need not be installed permanently. In this case -you may wish to install that other module nonetheless or just keep it -in the 'build_dir' directory to have it available only temporarily. -Installing saves time on future installations but makes the perl -installation bigger. - -You can choose if you want to always install (yes), never install (no) -or be always asked. In the latter case you can set the default answer -for the question to yes (ask/yes) or no (ask/no). - -Policy on installing 'build_requires' modules (yes, no, ask/yes, -ask/no)? - -=item cache_metadata - -To considerably speed up the initial CPAN shell startup, it is -possible to use Storable to create a cache of metadata. If Storable is -not available, the normal index mechanism will be used. - -Note: this mechanism is not used when use_sqlite is on and SQLLite is -running. - -Cache metadata (yes/no)? - -=item check_sigs - -CPAN packages can be digitally signed by authors and thus verified -with the security provided by strong cryptography. The exact mechanism -is defined in the Module::Signature module. While this is generally -considered a good thing, it is not always convenient to the end user -to install modules that are signed incorrectly or where the key of the -author is not available or where some prerequisite for -Module::Signature has a bug and so on. - -With the check_sigs parameter you can turn signature checking on and -off. The default is off for now because the whole tool chain for the -functionality is not yet considered mature by some. The author of -CPAN.pm would recommend setting it to true most of the time and -turning it off only if it turns out to be annoying. - -Note that if you do not have Module::Signature installed, no signature -checks will be performed at all. - -Always try to check and verify signatures if a SIGNATURE file is in -the package and Module::Signature is installed (yes/no)? - -=item colorize_output - -When you have Term::ANSIColor installed, you can turn on colorized -output to have some visual differences between normal CPAN.pm output, -warnings, debugging output, and the output of the modules being -installed. Set your favorite colors after some experimenting with the -Term::ANSIColor module. - -Do you want to turn on colored output? - -=item colorize_print - -Color for normal output? - -=item colorize_warn - -Color for warnings? - -=item colorize_debug - -Color for debugging messages? - -=item commandnumber_in_prompt - -The prompt of the cpan shell can contain the current command number -for easier tracking of the session or be a plain string. - -Do you want the command number in the prompt (yes/no)? - -=item ftp_passive - -Shall we always set the FTP_PASSIVE environment variable when dealing -with ftp download (yes/no)? - -=item getcwd - -CPAN.pm changes the current working directory often and needs to -determine its own current working directory. Per default it uses -Cwd::cwd but if this doesn't work on your system for some reason, -alternatives can be configured according to the following table: - - cwd Cwd::cwd - getcwd Cwd::getcwd - fastcwd Cwd::fastcwd - backtickcwd external command cwd - -Preferred method for determining the current working directory? - -=item histfile - -If you have one of the readline packages (Term::ReadLine::Perl, -Term::ReadLine::Gnu, possibly others) installed, the interactive CPAN -shell will have history support. The next two questions deal with the -filename of the history file and with its size. If you do not want to -set this variable, please hit SPACE RETURN to the following question. - -File to save your history? - -=item histsize - -Number of lines to save? - -=item inactivity_timeout - -Sometimes you may wish to leave the processes run by CPAN alone -without caring about them. Because the Makefile.PL or the Build.PL -sometimes contains question you're expected to answer, you can set a -timer that will kill a 'perl Makefile.PL' process after the specified -time in seconds. - -If you set this value to 0, these processes will wait forever. This is -the default and recommended setting. - -Timeout for inactivity during {Makefile,Build}.PL? - -=item index_expire - -The CPAN indexes are usually rebuilt once or twice per hour, but the -typical CPAN mirror mirrors only once or twice per day. Depending on -the quality of your mirror and your desire to be on the bleeding edge, -you may want to set the following value to more or less than one day -(which is the default). It determines after how many days CPAN.pm -downloads new indexes. - -Let the index expire after how many days? - -=item inhibit_startup_message - -When the CPAN shell is started it normally displays a greeting message -that contains the running version and the status of readline support. - -Do you want to turn this message off? - -=item keep_source_where - -Unless you are accessing the CPAN on your filesystem via a file: URL, -CPAN.pm needs to keep the source files it downloads somewhere. Please -supply a directory where the downloaded files are to be kept. - -Download target directory? - -=item load_module_verbosity - -When CPAN.pm loads a module it needs for some optional feature, it -usually reports about module name and version. Choose 'v' to get this -message, 'none' to suppress it. - -Verbosity level for loading modules (none or v)? - -=item makepl_arg - -Every Makefile.PL is run by perl in a separate process. Likewise we -run 'make' and 'make install' in separate processes. If you have -any parameters (e.g. PREFIX, LIB, UNINST or the like) you want to -pass to the calls, please specify them here. - -If you don't understand this question, just press ENTER. - -Typical frequently used settings: - - PREFIX=~/perl # non-root users (please see manual for more hints) - -Parameters for the 'perl Makefile.PL' command? - -=item make_arg - -Parameters for the 'make' command? Typical frequently used setting: - - -j3 # dual processor system (on GNU make) - -Your choice: - -=item make_install_arg - -Parameters for the 'make install' command? -Typical frequently used setting: - - UNINST=1 # to always uninstall potentially conflicting files - -Your choice: - -=item make_install_make_command - -Do you want to use a different make command for 'make install'? -Cautious people will probably prefer: - - su root -c make - or - sudo make - or - /path1/to/sudo -u admin_account /path2/to/make - -or some such. Your choice: - -=item mbuildpl_arg - -A Build.PL is run by perl in a separate process. Likewise we run -'./Build' and './Build install' in separate processes. If you have any -parameters you want to pass to the calls, please specify them here. - -Typical frequently used settings: - - --install_base /home/xxx # different installation directory - -Parameters for the 'perl Build.PL' command? - -=item mbuild_arg - -Parameters for the './Build' command? Setting might be: - - --extra_linker_flags -L/usr/foo/lib # non-standard library location - -Your choice: - -=item mbuild_install_arg - -Parameters for the './Build install' command? Typical frequently used -setting: - - --uninst 1 # uninstall conflicting files - -Your choice: - -=item mbuild_install_build_command - -Do you want to use a different command for './Build install'? Sudo -users will probably prefer: - - su root -c ./Build - or - sudo ./Build - or - /path1/to/sudo -u admin_account ./Build - -or some such. Your choice: - -=item pager - -What is your favorite pager program? - -=item prefer_installer - -When you have Module::Build installed and a module comes with both a -Makefile.PL and a Build.PL, which shall have precedence? - -The main two standard installer modules are the old and well -established ExtUtils::MakeMaker (for short: EUMM) which uses the -Makefile.PL. And the next generation installer Module::Build (MB) -which works with the Build.PL (and often comes with a Makefile.PL -too). If a module comes only with one of the two we will use that one -but if both are supplied then a decision must be made between EUMM and -MB. See also http://rt.cpan.org/Ticket/Display.html?id=29235 for a -discussion about the right default. - -Or, as a third option you can choose RAND which will make a random -decision (something regular CPAN testers will enjoy). - -In case you can choose between running a Makefile.PL or a Build.PL, -which installer would you prefer (EUMM or MB or RAND)? - -=item prefs_dir - -CPAN.pm can store customized build environments based on regular -expressions for distribution names. These are YAML files where the -default options for CPAN.pm and the environment can be overridden and -dialog sequences can be stored that can later be executed by an -Expect.pm object. The CPAN.pm distribution comes with some prefab YAML -files that cover sample distributions that can be used as blueprints -to store one own prefs. Please check out the distroprefs/ directory of -the CPAN.pm distribution to get a quick start into the prefs system. - -Directory where to store default options/environment/dialogs for -building modules that need some customization? - -=item prerequisites_policy - -The CPAN module can detect when a module which you are trying to build -depends on prerequisites. If this happens, it can build the -prerequisites for you automatically ('follow'), ask you for -confirmation ('ask'), or just ignore them ('ignore'). Please set your -policy to one of the three values. - -Policy on building prerequisites (follow, ask or ignore)? - -=item randomize_urllist - -CPAN.pm can introduce some randomness when using hosts for download -that are configured in the urllist parameter. Enter a numeric value -between 0 and 1 to indicate how often you want to let CPAN.pm try a -random host from the urllist. A value of one specifies to always use a -random host as the first try. A value of zero means no randomness at -all. Anything in between specifies how often, on average, a random -host should be tried first. - -Randomize parameter - -=item scan_cache - -By default, each time the CPAN module is started, cache scanning is -performed to keep the cache size in sync. To prevent this, answer -'never'. - -Perform cache scanning (atstart or never)? - -=item shell - -What is your favorite shell? - -=item show_unparsable_versions - -During the 'r' command CPAN.pm finds modules without version number. -When the command finishes, it prints a report about this. If you -want this report to be very verbose, say yes to the following -variable. - -Show all individual modules that have no $VERSION? - -=item show_upload_date - -The 'd' and the 'm' command normally only show you information they -have in their in-memory database and thus will never connect to the -internet. If you set the 'show_upload_date' variable to true, 'm' and -'d' will additionally show you the upload date of the module or -distribution. Per default this feature is off because it may require a -net connection to get at the upload date. - -Always try to show upload date with 'd' and 'm' command (yes/no)? - -=item show_zero_versions - -During the 'r' command CPAN.pm finds modules with a version number of -zero. When the command finishes, it prints a report about this. If you -want this report to be very verbose, say yes to the following -variable. - -Show all individual modules that have a $VERSION of zero? - -=item tar_verbosity - -When CPAN.pm uses the tar command, which switch for the verbosity -shall be used? Choose 'none' for quiet operation, 'v' for file -name listing, 'vv' for full listing. - -Tar command verbosity level (none or v or vv)? - -=item term_is_latin - -The next option deals with the charset (aka character set) your -terminal supports. In general, CPAN is English speaking territory, so -the charset does not matter much but some CPAN have names that are -outside the ASCII range. If your terminal supports UTF-8, you should -say no to the next question. If it expects ISO-8859-1 (also known as -LATIN1) then you should say yes. If it supports neither, your answer -does not matter because you will not be able to read the names of some -authors anyway. If you answer no, names will be output in UTF-8. - -Your terminal expects ISO-8859-1 (yes/no)? - -=item term_ornaments - -When using Term::ReadLine, you can turn ornaments on so that your -input stands out against the output from CPAN.pm. - -Do you want to turn ornaments on? - -=item test_report - -The goal of the CPAN Testers project (http://testers.cpan.org/) is to -test as many CPAN packages as possible on as many platforms as -possible. This provides valuable feedback to module authors and -potential users to identify bugs or platform compatibility issues and -improves the overall quality and value of CPAN. - -One way you can contribute is to send test results for each module -that you install. If you install the CPAN::Reporter module, you have -the option to automatically generate and email test reports to CPAN -Testers whenever you run tests on a CPAN package. - -See the CPAN::Reporter documentation for additional details and -configuration settings. If your firewall blocks outgoing email, -you will need to configure CPAN::Reporter before sending reports. - -Email test reports if CPAN::Reporter is installed (yes/no)? - -=item use_sqlite - -CPAN::SQLite is a layer between the index files that are downloaded -from the CPAN and CPAN.pm that speeds up metadata queries and reduces -memory consumption of CPAN.pm considerably. - -Use CPAN::SQLite if available? (yes/no)? - -=item yaml_load_code - -Both YAML.pm and YAML::Syck are capable of deserialising code. As this requires -a string eval, which might be a security risk, you can use this option to -enable or disable the deserialisation of code. - -Do you want to enable code deserialisation (yes/no)? - -=item yaml_module - -At the time of this writing there are two competing YAML modules, -YAML.pm and YAML::Syck. The latter is faster but needs a C compiler -installed on your system. There may be more alternative YAML -conforming modules but at the time of writing a potential third -player, YAML::Tiny, seemed not powerful enough to work with CPAN.pm. - -Which YAML implementation would you prefer? - -=back - -=head1 LICENSE - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=cut - -use vars qw( %prompts ); - -sub init { - my($configpm, %args) = @_; - use Config; - # extra args after 'o conf init' - my $matcher = $args{args} && @{$args{args}} ? $args{args}[0] : ''; - if ($matcher =~ /^\/(.*)\/$/) { - # case /regex/ => take the first, ignore the rest - $matcher = $1; - shift @{$args{args}}; - if (@{$args{args}}) { - local $" = " "; - $CPAN::Frontend->mywarn("Ignoring excessive arguments '@{$args{args}}'"); - $CPAN::Frontend->mysleep(2); - } - } elsif (0 == length $matcher) { - } elsif (0 && $matcher eq "~") { # extremely buggy, but a nice idea - my @unconfigured = grep { not exists $CPAN::Config->{$_} - or not defined $CPAN::Config->{$_} - or not length $CPAN::Config->{$_} - } keys %$CPAN::Config; - $matcher = "\\b(".join("|", @unconfigured).")\\b"; - $CPAN::Frontend->mywarn("matcher[$matcher]"); - } else { - # case WORD... => all arguments must be valid - for my $arg (@{$args{args}}) { - unless (exists $CPAN::HandleConfig::keys{$arg}) { - $CPAN::Frontend->mywarn("'$arg' is not a valid configuration variable\n"); - return; - } - } - $matcher = "\\b(".join("|",@{$args{args}}).")\\b"; - } - CPAN->debug("matcher[$matcher]") if $CPAN::DEBUG; - - unless ($CPAN::VERSION) { - require CPAN::Nox; - } - require CPAN::HandleConfig; - CPAN::HandleConfig::require_myconfig_or_config(); - $CPAN::Config ||= {}; - local($/) = "\n"; - local($\) = ""; - local($|) = 1; - - my($ans,$default); - - # - #= Files, directories - # - - unless ($matcher) { - $CPAN::Frontend->myprint($prompts{manual_config}); - } - - my $manual_conf; - - local *_real_prompt; - if ( $args{autoconfig} ) { - $manual_conf = "no"; - } elsif ($matcher) { - $manual_conf = "yes"; - } else { - my $_conf = prompt("Would you like me to configure as much as possible ". - "automatically?", "yes"); - $manual_conf = ($_conf and $_conf =~ /^y/i) ? "no" : "yes"; - } - CPAN->debug("manual_conf[$manual_conf]") if $CPAN::DEBUG; - my $fastread; - { - if ($manual_conf =~ /^y/i) { - $fastread = 0; - } else { - $fastread = 1; - $CPAN::Config->{urllist} ||= []; - - local $^W = 0; - # prototype should match that of &MakeMaker::prompt - my $current_second = time; - my $current_second_count = 0; - my $i_am_mad = 0; - *_real_prompt = sub { - my($q,$a) = @_; - my($ret) = defined $a ? $a : ""; - $CPAN::Frontend->myprint(sprintf qq{%s [%s]\n\n}, $q, $ret); - eval { require Time::HiRes }; - unless ($@) { - if (time == $current_second) { - $current_second_count++; - if ($current_second_count > 20) { - # I don't like more than 20 prompts per second - $i_am_mad++; - } - } else { - $current_second = time; - $current_second_count = 0; - $i_am_mad-- if $i_am_mad>0; - } - if ($i_am_mad>0) { - #require Carp; - #Carp::cluck("SLEEEEEEEEPIIIIIIIIIIINGGGGGGGGGGG"); - Time::HiRes::sleep(0.1); - } - } - $ret; - }; - } - } - - if (!$matcher or q{ - build_dir - build_dir_reuse - cpan_home - keep_source_where - prefs_dir - } =~ /$matcher/) { - $CPAN::Frontend->myprint($prompts{config_intro}); - - if (!$matcher or 'cpan_home' =~ /$matcher/) { - my $cpan_home = $CPAN::Config->{cpan_home} - || File::Spec->catdir($ENV{HOME}, ".cpan"); - - if (-d $cpan_home) { - $CPAN::Frontend->myprint(qq{ - -I see you already have a directory - $cpan_home -Shall we use it as the general CPAN build and cache directory? - -}); - } else { - # no cpan-home, must prompt and get one - $CPAN::Frontend->myprint($prompts{cpan_home_where}); - } - - $default = $cpan_home; - my $loop = 0; - my $last_ans; - $CPAN::Frontend->myprint(" <cpan_home>\n"); - PROMPT: while ($ans = prompt("CPAN build and cache directory?",$default)) { - print "\n"; - if (File::Spec->file_name_is_absolute($ans)) { - my @cpan_home = split /[\/\\]/, $ans; - DIR: for my $dir (@cpan_home) { - if ($dir =~ /^~/ and (!$last_ans or $ans ne $last_ans)) { - $CPAN::Frontend - ->mywarn("Warning: a tilde in the path will be ". - "taken as a literal tilde. Please ". - "confirm again if you want to keep it\n"); - $last_ans = $default = $ans; - next PROMPT; - } - } - } else { - require Cwd; - my $cwd = Cwd::cwd(); - my $absans = File::Spec->catdir($cwd,$ans); - $CPAN::Frontend->mywarn("The path '$ans' is not an ". - "absolute path. Please specify ". - "an absolute path\n"); - $default = $absans; - next PROMPT; - } - eval { File::Path::mkpath($ans); }; # dies if it can't - if ($@) { - $CPAN::Frontend->mywarn("Couldn't create directory $ans.\n". - "Please retry.\n"); - next PROMPT; - } - if (-d $ans && -w _) { - last PROMPT; - } else { - $CPAN::Frontend->mywarn("Couldn't find directory $ans\n". - "or directory is not writable. Please retry.\n"); - if (++$loop > 5) { - $CPAN::Frontend->mydie("Giving up"); - } - } - } - $CPAN::Config->{cpan_home} = $ans; - } - - if (!$matcher or 'keep_source_where' =~ /$matcher/) { - my_dflt_prompt("keep_source_where", - File::Spec->catdir($CPAN::Config->{cpan_home},"sources"), - $matcher, - ); - } - - if (!$matcher or 'build_dir' =~ /$matcher/) { - my_dflt_prompt("build_dir", - File::Spec->catdir($CPAN::Config->{cpan_home},"build"), - $matcher - ); - } - - if (!$matcher or 'build_dir_reuse' =~ /$matcher/) { - my_yn_prompt(build_dir_reuse => 1, $matcher); - } - - if (!$matcher or 'prefs_dir' =~ /$matcher/) { - my_dflt_prompt("prefs_dir", - File::Spec->catdir($CPAN::Config->{cpan_home},"prefs"), - $matcher - ); - } - } - - # - #= Config: auto_commit - # - - my_yn_prompt(auto_commit => 0, $matcher); - - # - #= Cache size, Index expire - # - - if (!$matcher or 'build_cache' =~ /$matcher/) { - # large enough to build large dists like Tk - my_dflt_prompt(build_cache => 100, $matcher); - } - - if (!$matcher or 'index_expire' =~ /$matcher/) { - my_dflt_prompt(index_expire => 1, $matcher); - } - - if (!$matcher or 'scan_cache' =~ /$matcher/) { - my_prompt_loop(scan_cache => 'atstart', $matcher, 'atstart|never'); - } - - # - #= cache_metadata - # - - my_yn_prompt(cache_metadata => 1, $matcher); - my_yn_prompt(use_sqlite => 0, $matcher); - - # - #= Do we follow PREREQ_PM? - # - - if (!$matcher or 'prerequisites_policy' =~ /$matcher/) { - my_prompt_loop(prerequisites_policy => 'ask', $matcher, - 'follow|ask|ignore'); - } - - if (!$matcher or 'build_requires_install_policy' =~ /$matcher/) { - my_prompt_loop(build_requires_install_policy => 'ask/yes', $matcher, - 'yes|no|ask/yes|ask/no'); - } - - # - #= Module::Signature - # - if (!$matcher or 'check_sigs' =~ /$matcher/) { - my_yn_prompt(check_sigs => 0, $matcher); - } - - # - #= CPAN::Reporter - # - if (!$matcher or 'test_report' =~ /$matcher/) { - my_yn_prompt(test_report => 0, $matcher); - if ( - $CPAN::Config->{test_report} && - $CPAN::META->has_inst("CPAN::Reporter") && - CPAN::Reporter->can('configure') - ) { - $CPAN::Frontend->myprint("\nProceeding to configure CPAN::Reporter.\n"); - CPAN::Reporter::configure(); - $CPAN::Frontend->myprint("\nReturning to CPAN configuration.\n"); - } - } - - # - #= YAML vs. YAML::Syck - # - if (!$matcher or "yaml_module" =~ /$matcher/) { - my_dflt_prompt(yaml_module => "YAML", $matcher); - unless ($CPAN::META->has_inst($CPAN::Config->{yaml_module})) { - $CPAN::Frontend->mywarn - ("Warning (maybe harmless): '$CPAN::Config->{yaml_module}' not installed.\n"); - $CPAN::Frontend->mysleep(3); - } - } - - # - #= YAML code deserialisation - # - if (!$matcher or "yaml_load_code" =~ /$matcher/) { - my_yn_prompt(yaml_load_code => 0, $matcher); - } - - # - #= External programs - # - - my @external_progs = qw/bzip2 gzip tar unzip - - make - - curl lynx wget ncftpget ncftp ftp - - gpg - - patch applypatch - /; - my(@path) = split /$Config{'path_sep'}/, $ENV{'PATH'}; - if (!$matcher or "@external_progs" =~ /$matcher/) { - $CPAN::Frontend->myprint($prompts{external_progs}); - - my $old_warn = $^W; - local $^W if $^O eq 'MacOS'; - local $^W = $old_warn; - my $progname; - for $progname (@external_progs) { - next if $matcher && $progname !~ /$matcher/; - if ($^O eq 'MacOS') { - $CPAN::Config->{$progname} = 'not_here'; - next; - } - - my $progcall = $progname; - unless ($matcher) { - # we really don't need ncftp if we have ncftpget, but - # if they chose this dialog via matcher, they shall have it - next if $progname eq "ncftp" && $CPAN::Config->{ncftpget} gt " "; - } - my $path = $CPAN::Config->{$progname} - || $Config::Config{$progname} - || ""; - if (File::Spec->file_name_is_absolute($path)) { - # testing existence is not good enough, some have these exe - # extensions - - # warn "Warning: configured $path does not exist\n" unless -e $path; - # $path = ""; - } elsif ($path =~ /^\s+$/) { - # preserve disabled programs - } else { - $path = ''; - } - unless ($path) { - # e.g. make -> nmake - $progcall = $Config::Config{$progname} if $Config::Config{$progname}; - } - - $path ||= find_exe($progcall,\@path); - unless ($path) { # not -e $path, because find_exe already checked that - local $"=";"; - $CPAN::Frontend->mywarn("Warning: $progcall not found in PATH[@path]\n"); - if ($progname eq "make") { - $CPAN::Frontend->mywarn("ALERT: 'make' is an essential tool for ". - "building perl Modules. Please make sure you ". - "have 'make' (or some equivalent) ". - "working.\n" - ); - if ($^O eq "MSWin32") { - $CPAN::Frontend->mywarn(" -Windows users may want to follow this procedure when back in the CPAN shell: - - look YVES/scripts/alien_nmake.pl - perl alien_nmake.pl - -This will install nmake on your system which can be used as a 'make' -substitute. You can then revisit this dialog with - - o conf init make - -"); - } - } - } - $prompts{$progname} = "Where is your $progname program?"; - my_dflt_prompt($progname,$path,$matcher); - } - } - - if (!$matcher or 'pager' =~ /$matcher/) { - my $path = $CPAN::Config->{'pager'} || - $ENV{PAGER} || find_exe("less",\@path) || - find_exe("more",\@path) || ($^O eq 'MacOS' ? $ENV{EDITOR} : 0 ) - || "more"; - my_dflt_prompt(pager => $path, $matcher); - } - - if (!$matcher or 'shell' =~ /$matcher/) { - my $path = $CPAN::Config->{'shell'}; - if ($path && File::Spec->file_name_is_absolute($path)) { - $CPAN::Frontend->mywarn("Warning: configured $path does not exist\n") - unless -e $path; - $path = ""; - } - $path ||= $ENV{SHELL}; - $path ||= $ENV{COMSPEC} if $^O eq "MSWin32"; - if ($^O eq 'MacOS') { - $CPAN::Config->{'shell'} = 'not_here'; - } else { - $path =~ s,\\,/,g if $^O eq 'os2'; # Cosmetic only - my_dflt_prompt(shell => $path, $matcher); - } - } - - # - # verbosity - # - - if (!$matcher or 'tar_verbosity' =~ /$matcher/) { - my_prompt_loop(tar_verbosity => 'v', $matcher, - 'none|v|vv'); - } - - if (!$matcher or 'load_module_verbosity' =~ /$matcher/) { - my_prompt_loop(load_module_verbosity => 'v', $matcher, - 'none|v'); - } - - my_yn_prompt(inhibit_startup_message => 0, $matcher); - - # - #= Installer, arguments to make etc. - # - - if (!$matcher or 'prefer_installer' =~ /$matcher/) { - my_prompt_loop(prefer_installer => 'MB', $matcher, 'MB|EUMM|RAND'); - } - - if (!$matcher or 'makepl_arg make_arg' =~ /$matcher/) { - my_dflt_prompt(makepl_arg => "", $matcher); - my_dflt_prompt(make_arg => "", $matcher); - } - - require CPAN::HandleConfig; - if (exists $CPAN::HandleConfig::keys{make_install_make_command}) { - # as long as Windows needs $self->_build_command, we cannot - # support sudo on windows :-) - my_dflt_prompt(make_install_make_command => $CPAN::Config->{make} || "", - $matcher); - } - - my_dflt_prompt(make_install_arg => $CPAN::Config->{make_arg} || "", - $matcher); - - my_dflt_prompt(mbuildpl_arg => "", $matcher); - my_dflt_prompt(mbuild_arg => "", $matcher); - - if (exists $CPAN::HandleConfig::keys{mbuild_install_build_command}) { - # as long as Windows needs $self->_build_command, we cannot - # support sudo on windows :-) - my_dflt_prompt(mbuild_install_build_command => "./Build", $matcher); - } - - my_dflt_prompt(mbuild_install_arg => "", $matcher); - - # - #= Alarm period - # - - my_dflt_prompt(inactivity_timeout => 0, $matcher); - - # - #= Proxies - # - - my @proxy_vars = qw/ftp_proxy http_proxy no_proxy/; - my @proxy_user_vars = qw/proxy_user proxy_pass/; - if (!$matcher or "@proxy_vars @proxy_user_vars" =~ /$matcher/) { - $CPAN::Frontend->myprint($prompts{proxy_intro}); - - for (@proxy_vars) { - $prompts{$_} = "Your $_?"; - my_dflt_prompt($_ => $ENV{$_}||"", $matcher); - } - - if ($CPAN::Config->{ftp_proxy} || - $CPAN::Config->{http_proxy}) { - - $default = $CPAN::Config->{proxy_user} || $CPAN::LWP::UserAgent::USER || ""; - - $CPAN::Frontend->myprint($prompts{proxy_user}); - - if ($CPAN::Config->{proxy_user} = prompt("Your proxy user id?",$default)) { - $CPAN::Frontend->myprint($prompts{proxy_pass}); - - if ($CPAN::META->has_inst("Term::ReadKey")) { - Term::ReadKey::ReadMode("noecho"); - } else { - $CPAN::Frontend->myprint($prompts{password_warn}); - } - $CPAN::Config->{proxy_pass} = prompt_no_strip("Your proxy password?"); - if ($CPAN::META->has_inst("Term::ReadKey")) { - Term::ReadKey::ReadMode("restore"); - } - $CPAN::Frontend->myprint("\n\n"); - } - } - } - - # - #= how FTP works - # - - my_yn_prompt(ftp_passive => 1, $matcher); - - # - #= how cwd works - # - - if (!$matcher or 'getcwd' =~ /$matcher/) { - my_prompt_loop(getcwd => 'cwd', $matcher, - 'cwd|getcwd|fastcwd|backtickcwd'); - } - - # - #= the CPAN shell itself (prompt, color) - # - - my_yn_prompt(commandnumber_in_prompt => 1, $matcher); - my_yn_prompt(term_ornaments => 1, $matcher); - if ("colorize_output colorize_print colorize_warn colorize_debug" =~ $matcher) { - my_yn_prompt(colorize_output => 0, $matcher); - if ($CPAN::Config->{colorize_output}) { - if ($CPAN::META->has_inst("Term::ANSIColor")) { - my $T="gYw"; - print " on_ on_y ". - " on_ma on_\n"; - print " on_black on_red green ellow ". - "on_blue genta on_cyan white\n"; - - for my $FG ("", "bold", - map {$_,"bold $_"} "black","red","green", - "yellow","blue", - "magenta", - "cyan","white") { - printf "%12s ", $FG; - for my $BG ("",map {"on_$_"} qw(black red green yellow - blue magenta cyan white)) { - print $FG||$BG ? - Term::ANSIColor::colored(" $T ","$FG $BG") : " $T "; - } - print "\n"; - } - print "\n"; - } - for my $tuple ( - ["colorize_print", "bold blue on_white"], - ["colorize_warn", "bold red on_white"], - ["colorize_debug", "black on_cyan"], - ) { - my_dflt_prompt($tuple->[0] => $tuple->[1], $matcher); - if ($CPAN::META->has_inst("Term::ANSIColor")) { - eval { Term::ANSIColor::color($CPAN::Config->{$tuple->[0]})}; - if ($@) { - $CPAN::Config->{$tuple->[0]} = $tuple->[1]; - $CPAN::Frontend->mywarn($@."setting to default '$tuple->[1]'\n"); - } - } - } - } - } - - # - #== term_is_latin - # - - if (!$matcher or 'term_is_latin' =~ /$matcher/) { - my_yn_prompt(term_is_latin => 1, $matcher); - } - - # - #== save history in file 'histfile' - # - - if (!$matcher or 'histfile histsize' =~ /$matcher/) { - $CPAN::Frontend->myprint($prompts{histfile_intro}); - defined($default = $CPAN::Config->{histfile}) or - $default = File::Spec->catfile($CPAN::Config->{cpan_home},"histfile"); - my_dflt_prompt(histfile => $default, $matcher); - - if ($CPAN::Config->{histfile}) { - defined($default = $CPAN::Config->{histsize}) or $default = 100; - my_dflt_prompt(histsize => $default, $matcher); - } - } - - # - #== do an ls on the m or the d command - # - my_yn_prompt(show_upload_date => 0, $matcher); - - # - #== verbosity at the end of the r command - # - if (!$matcher - or 'show_unparsable_versions' =~ /$matcher/ - or 'show_zero_versions' =~ /$matcher/ - ) { - $CPAN::Frontend->myprint($prompts{show_unparsable_or_zero_versions_intro}); - my_yn_prompt(show_unparsable_versions => 0, $matcher); - my_yn_prompt(show_zero_versions => 0, $matcher); - } - - # - #= MIRRORED.BY and conf_sites() - # - - if ($matcher) { - if ("urllist" =~ $matcher) { - # conf_sites would go into endless loop with the smash prompt - local *_real_prompt; - *_real_prompt = \&CPAN::Shell::colorable_makemaker_prompt; - conf_sites(); - } - if ("randomize_urllist" =~ $matcher) { - my_dflt_prompt(randomize_urllist => 0, $matcher); - } - } elsif ($fastread) { - $CPAN::Frontend->myprint("Autoconfigured everything but 'urllist'.\n". - "Please call 'o conf init urllist' to configure ". - "your CPAN server(s) now!"); - } else { - conf_sites(); - } - - $CPAN::Frontend->myprint("\n\n"); - if ($matcher && !$CPAN::Config->{auto_commit}) { - $CPAN::Frontend->myprint("Please remember to call 'o conf commit' to ". - "make the config permanent!\n\n"); - } else { - CPAN::HandleConfig->commit($configpm); - } -} - -sub my_dflt_prompt { - my ($item, $dflt, $m) = @_; - my $default = $CPAN::Config->{$item} || $dflt; - - $DB::single = 1; - if (!$m || $item =~ /$m/) { - if (my $intro = $prompts{$item . "_intro"}) { - $CPAN::Frontend->myprint($intro); - } - $CPAN::Frontend->myprint(" <$item>\n"); - $CPAN::Config->{$item} = prompt($prompts{$item}, $default); - print "\n"; - } else { - $CPAN::Config->{$item} = $default; - } -} - -sub my_yn_prompt { - my ($item, $dflt, $m) = @_; - my $default; - defined($default = $CPAN::Config->{$item}) or $default = $dflt; - - # $DB::single = 1; - if (!$m || $item =~ /$m/) { - if (my $intro = $prompts{$item . "_intro"}) { - $CPAN::Frontend->myprint($intro); - } - $CPAN::Frontend->myprint(" <$item>\n"); - my $ans = prompt($prompts{$item}, $default ? 'yes' : 'no'); - $CPAN::Config->{$item} = ($ans =~ /^[y1]/i ? 1 : 0); - print "\n"; - } else { - $CPAN::Config->{$item} = $default; - } -} - -sub my_prompt_loop { - my ($item, $dflt, $m, $ok) = @_; - my $default = $CPAN::Config->{$item} || $dflt; - my $ans; - - $DB::single = 1; - if (!$m || $item =~ /$m/) { - $CPAN::Frontend->myprint($prompts{$item . "_intro"}); - $CPAN::Frontend->myprint(" <$item>\n"); - do { $ans = prompt($prompts{$item}, $default); - } until $ans =~ /$ok/; - $CPAN::Config->{$item} = $ans; - print "\n"; - } else { - $CPAN::Config->{$item} = $default; - } -} - - -sub conf_sites { - my $m = 'MIRRORED.BY'; - my $mby = File::Spec->catfile($CPAN::Config->{keep_source_where},$m); - File::Path::mkpath(File::Basename::dirname($mby)); - if (-f $mby && -f $m && -M $m < -M $mby) { - require File::Copy; - File::Copy::copy($m,$mby) or die "Could not update $mby: $!"; - } - my $loopcount = 0; - local $^T = time; - my $overwrite_local = 0; - if ($mby && -f $mby && -M _ <= 60 && -s _ > 0) { - my $mtime = localtime((stat _)[9]); - my $prompt = qq{Found $mby as of $mtime - -I\'d use that as a database of CPAN sites. If that is OK for you, -please answer 'y', but if you want me to get a new database now, -please answer 'n' to the following question. - -Shall I use the local database in $mby?}; - my $ans = prompt($prompt,"y"); - $overwrite_local = 1 unless $ans =~ /^y/i; - } - while ($mby) { - if ($overwrite_local) { - $CPAN::Frontend->myprint(qq{Trying to overwrite $mby\n}); - $mby = CPAN::FTP->localize($m,$mby,3); - $overwrite_local = 0; - } elsif ( ! -f $mby ) { - $CPAN::Frontend->myprint(qq{You have no $mby\n I\'m trying to fetch one\n}); - $mby = CPAN::FTP->localize($m,$mby,3); - } elsif (-M $mby > 60 && $loopcount == 0) { - $CPAN::Frontend->myprint(qq{Your $mby is older than 60 days,\n I\'m trying }. - qq{to fetch one\n}); - $mby = CPAN::FTP->localize($m,$mby,3); - $loopcount++; - } elsif (-s $mby == 0) { - $CPAN::Frontend->myprint(qq{You have an empty $mby,\n I\'m trying to fetch one\n}); - $mby = CPAN::FTP->localize($m,$mby,3); - } else { - last; - } - } - local $urllist = []; - read_mirrored_by($mby); - bring_your_own(); - $CPAN::Config->{urllist} = $urllist; -} - -sub find_exe { - my($exe,$path) = @_; - my($dir); - #warn "in find_exe exe[$exe] path[@$path]"; - for $dir (@$path) { - my $abs = File::Spec->catfile($dir,$exe); - if (($abs = MM->maybe_command($abs))) { - return $abs; - } - } -} - -sub picklist { - my($items,$prompt,$default,$require_nonempty,$empty_warning)=@_; - CPAN->debug("picklist('$items','$prompt','$default','$require_nonempty',". - "'$empty_warning')") if $CPAN::DEBUG; - $default ||= ''; - - my $pos = 0; - - my @nums; - SELECTION: while (1) { - - # display, at most, 15 items at a time - my $limit = $#{ $items } - $pos; - $limit = 15 if $limit > 15; - - # show the next $limit items, get the new position - $pos = display_some($items, $limit, $pos, $default); - $pos = 0 if $pos >= @$items; - - my $num = prompt($prompt,$default); - - @nums = split (' ', $num); - { - my %seen; - @nums = grep { !$seen{$_}++ } @nums; - } - my $i = scalar @$items; - unrangify(\@nums); - if (grep (/\D/ || $_ < 1 || $_ > $i, @nums)) { - $CPAN::Frontend->mywarn("invalid items entered, try again\n"); - if ("@nums" =~ /\D/) { - $CPAN::Frontend->mywarn("(we are expecting only numbers between 1 and $i)\n"); - } - next SELECTION; - } - if ($require_nonempty && !@nums) { - $CPAN::Frontend->mywarn("$empty_warning\n"); - } - $CPAN::Frontend->myprint("\n"); - - # a blank line continues... - next SELECTION unless @nums; - last; - } - for (@nums) { $_-- } - @{$items}[@nums]; -} - -sub unrangify ($) { - my($nums) = $_[0]; - my @nums2 = (); - while (@{$nums||[]}) { - my $n = shift @$nums; - if ($n =~ /^(\d+)-(\d+)$/) { - my @range = $1 .. $2; - # warn "range[@range]"; - push @nums2, @range; - } else { - push @nums2, $n; - } - } - push @$nums, @nums2; -} - -sub display_some { - my ($items, $limit, $pos, $default) = @_; - $pos ||= 0; - - my @displayable = @$items[$pos .. ($pos + $limit)]; - for my $item (@displayable) { - $CPAN::Frontend->myprint(sprintf "(%d) %s\n", ++$pos, $item); - } - my $hit_what = $default ? "SPACE RETURN" : "RETURN"; - $CPAN::Frontend->myprint(sprintf("%d more items, hit %s to show them\n", - (@$items - $pos), - $hit_what, - )) - if $pos < @$items; - return $pos; -} - -sub read_mirrored_by { - my $local = shift or return; - my(%all,$url,$expected_size,$default,$ans,$host, - $dst,$country,$continent,@location); - my $fh = FileHandle->new; - $fh->open($local) or die "Couldn't open $local: $!"; - local $/ = "\012"; - while (<$fh>) { - ($host) = /^([\w\.\-]+)/ unless defined $host; - next unless defined $host; - next unless /\s+dst_(dst|location)/; - /location\s+=\s+\"([^\"]+)/ and @location = (split /\s*,\s*/, $1) and - ($continent, $country) = @location[-1,-2]; - $continent =~ s/\s\(.*//; - $continent =~ s/\W+$//; # if Jarkko doesn't know latitude/longitude - /dst_dst\s+=\s+\"([^\"]+)/ and $dst = $1; - next unless $host && $dst && $continent && $country; - $all{$continent}{$country}{$dst} = CPAN::Mirrored::By->new($continent,$country,$dst); - undef $host; - $dst=$continent=$country=""; - } - $fh->close; - $CPAN::Config->{urllist} ||= []; - my @previous_urls = @{$CPAN::Config->{urllist}}; - - $CPAN::Frontend->myprint($prompts{urls_intro}); - - my (@cont, $cont, %cont, @countries, @urls, %seen); - my $no_previous_warn = - "Sorry! since you don't have any existing picks, you must make a\n" . - "geographic selection."; - my $offer_cont = [sort keys %all]; - if (@previous_urls) { - push @$offer_cont, "(edit previous picks)"; - $default = @$offer_cont; - } - @cont = picklist($offer_cont, - "Select your continent (or several nearby continents)", - $default, - ! @previous_urls, - $no_previous_warn); - - - foreach $cont (@cont) { - my @c = sort keys %{$all{$cont}}; - @cont{@c} = map ($cont, 0..$#c); - @c = map ("$_ ($cont)", @c) if @cont > 1; - push (@countries, @c); - } - if (@previous_urls && @countries) { - push @countries, "(edit previous picks)"; - $default = @countries; - } - - if (@countries) { - @countries = picklist (\@countries, - "Select your country (or several nearby countries)", - $default, - ! @previous_urls, - $no_previous_warn); - %seen = map (($_ => 1), @previous_urls); - # hmmm, should take list of defaults from CPAN::Config->{'urllist'}... - foreach $country (@countries) { - next if $country =~ /edit previous picks/; - (my $bare_country = $country) =~ s/ \(.*\)//; - my @u = sort keys %{$all{$cont{$bare_country}}{$bare_country}}; - @u = grep (! $seen{$_}, @u); - @u = map ("$_ ($bare_country)", @u) - if @countries > 1; - push (@urls, @u); - } - } - push (@urls, map ("$_ (previous pick)", @previous_urls)); - my $prompt = "Select as many URLs as you like (by number), -put them on one line, separated by blanks, hyphenated ranges allowed - e.g. '1 4 5' or '7 1-4 8'"; - if (@previous_urls) { - $default = join (' ', ((scalar @urls) - (scalar @previous_urls) + 1) .. - (scalar @urls)); - $prompt .= "\n(or just hit RETURN to keep your previous picks)"; - } - - @urls = picklist (\@urls, $prompt, $default); - foreach (@urls) { s/ \(.*\)//; } - push @$urllist, @urls; -} - -sub bring_your_own { - my %seen = map (($_ => 1), @$urllist); - my($ans,@urls); - my $eacnt = 0; # empty answers - do { - my $prompt = "Enter another URL or RETURN to quit:"; - unless (%seen) { - $prompt = qq{CPAN.pm needs at least one URL where it can fetch CPAN files from. - -Please enter your CPAN site:}; - } - $ans = prompt ($prompt, ""); - - if ($ans) { - $ans =~ s|/?\z|/|; # has to end with one slash - $ans = "file:$ans" unless $ans =~ /:/; # without a scheme is a file: - if ($ans =~ /^\w+:\/./) { - push @urls, $ans unless $seen{$ans}++; - } else { - $CPAN::Frontend-> - myprint(sprintf(qq{"%s" doesn\'t look like an URL at first sight. -I\'ll ignore it for now. -You can add it to your %s -later if you\'re sure it\'s right.\n}, - $ans, - $INC{'CPAN/MyConfig.pm'} - || $INC{'CPAN/Config.pm'} - || "configuration file", - )); - } - } else { - if (++$eacnt >= 5) { - $CPAN::Frontend-> - mywarn("Giving up.\n"); - $CPAN::Frontend->mysleep(5); - return; - } - } - } while $ans || !%seen; - - push @$urllist, @urls; - # xxx delete or comment these out when you're happy that it works - $CPAN::Frontend->myprint("New set of picks:\n"); - map { $CPAN::Frontend->myprint(" $_\n") } @$urllist; -} - - -sub _strip_spaces { - $_[0] =~ s/^\s+//; # no leading spaces - $_[0] =~ s/\s+\z//; # no trailing spaces -} - -sub prompt ($;$) { - unless (defined &_real_prompt) { - *_real_prompt = \&CPAN::Shell::colorable_makemaker_prompt; - } - my $ans = _real_prompt(@_); - - _strip_spaces($ans); - - return $ans; -} - - -sub prompt_no_strip ($;$) { - return _real_prompt(@_); -} - - -BEGIN { - -my @prompts = ( - -manual_config => qq[ - -CPAN is the world-wide archive of perl resources. It consists of about -300 sites that all replicate the same contents around the globe. Many -countries have at least one CPAN site already. The resources found on -CPAN are easily accessible with the CPAN.pm module. If you want to use -CPAN.pm, lots of things have to be configured. Fortunately, most of -them can be determined automatically. If you prefer the automatic -configuration, answer 'yes' below. - -If you prefer to enter a dialog instead, you can answer 'no' to this -question and I'll let you configure in small steps one thing after the -other. (Note: you can revisit this dialog anytime later by typing 'o -conf init' at the cpan prompt.) -], - -config_intro => qq{ - -The following questions are intended to help you with the -configuration. The CPAN module needs a directory of its own to cache -important index files and maybe keep a temporary mirror of CPAN files. -This may be a site-wide or a personal directory.}, - -# cpan_home => qq{ }, - -cpan_home_where => qq{ - -First of all, I'd like to create this directory. Where? - -}, - -external_progs => qq{ - -The CPAN module will need a few external programs to work properly. -Please correct me, if I guess the wrong path for a program. Don't -panic if you do not have some of them, just press ENTER for those. To -disable the use of a program, you can type a space followed by ENTER. - -}, - -proxy_intro => qq{ - -If you're accessing the net via proxies, you can specify them in the -CPAN configuration or via environment variables. The variable in -the \$CPAN::Config takes precedence. - -}, - -proxy_user => qq{ - -If your proxy is an authenticating proxy, you can store your username -permanently. If you do not want that, just press RETURN. You will then -be asked for your username in every future session. - -}, - -proxy_pass => qq{ - -Your password for the authenticating proxy can also be stored -permanently on disk. If this violates your security policy, just press -RETURN. You will then be asked for the password in every future -session. - -}, - -urls_intro => qq{ - -Now we need to know where your favorite CPAN sites are located. Push -a few sites onto the array (just in case the first on the array won\'t -work). If you are mirroring CPAN to your local workstation, specify a -file: URL. - -First, pick a nearby continent and country by typing in the number(s) -in front of the item(s) you want to select. You can pick several of -each, separated by spaces. Then, you will be presented with a list of -URLs of CPAN mirrors in the countries you selected, along with -previously selected URLs. Select some of those URLs, or just keep the -old list. Finally, you will be prompted for any extra URLs -- file:, -ftp:, or http: -- that host a CPAN mirror. - -}, - -password_warn => qq{ - -Warning: Term::ReadKey seems not to be available, your password will -be echoed to the terminal! - -}, - - ); - -die "Coding error in \@prompts declaration. Odd number of elements, above" - if (@prompts % 2); - -%prompts = @prompts; - -if (scalar(keys %prompts) != scalar(@prompts)/2) { - my %already; - for my $item (0..$#prompts) { - next if $item % 2; - die "$prompts[$item] is duplicated\n" if $already{$prompts[$item]}++; - } -} - -local *FH; -my $pmfile = __FILE__; -open FH, $pmfile or die "Could not open '$pmfile': $!"; -local $/ = ""; -my @podpara; -while (<FH>) { - next if 1 .. /^=over/; - chomp; - push @podpara, $_; - last if /^=back/; -} -pop @podpara; -while (@podpara) { - warn "Alert: cannot parse my own manpage for init dialog" unless $podpara[0] =~ s/^=item\s+//; - my $name = shift @podpara; - my @para; - while (@podpara && $podpara[0] !~ /^=item/) { - push @para, shift @podpara; - } - $prompts{$name} = pop @para; - if (@para) { - $prompts{$name . "_intro"} = join "", map { "$_\n\n" } @para; - } -} - -} # EOBEGIN - -1; diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/HandleConfig.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/HandleConfig.pm deleted file mode 100644 index ec0aefdab98..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/HandleConfig.pm +++ /dev/null @@ -1,719 +0,0 @@ -package CPAN::HandleConfig; -use strict; -use vars qw(%can %keys $loading $VERSION); - -$VERSION = sprintf "%.6f", substr(q$Rev: 2212 $,4)/1000000 + 5.4; - -%can = ( - commit => "Commit changes to disk", - defaults => "Reload defaults from disk", - help => "Short help about 'o conf' usage", - init => "Interactive setting of all options", -); - -# Q: where is the "How do I add a new config option" HOWTO? -# A1: svn diff -r 757:758 # where dagolden added test_report -# A2: svn diff -r 985:986 # where andk added yaml_module -%keys = map { $_ => undef } - ( - "applypatch", - "auto_commit", - "build_cache", - "build_dir", - "build_dir_reuse", - "build_requires_install_policy", - "bzip2", - "cache_metadata", - "check_sigs", - "colorize_debug", - "colorize_output", - "colorize_print", - "colorize_warn", - "commandnumber_in_prompt", - "commands_quote", - "cpan_home", - "curl", - "dontload_hash", # deprecated after 1.83_68 (rev. 581) - "dontload_list", - "ftp", - "ftp_passive", - "ftp_proxy", - "getcwd", - "gpg", - "gzip", - "histfile", - "histsize", - "http_proxy", - "inactivity_timeout", - "index_expire", - "inhibit_startup_message", - "keep_source_where", - "load_module_verbosity", - "lynx", - "make", - "make_arg", - "make_install_arg", - "make_install_make_command", - "makepl_arg", - "mbuild_arg", - "mbuild_install_arg", - "mbuild_install_build_command", - "mbuildpl_arg", - "ncftp", - "ncftpget", - "no_proxy", - "pager", - "password", - "patch", - "prefer_installer", - "prefs_dir", - "prerequisites_policy", - "proxy_pass", - "proxy_user", - "randomize_urllist", - "scan_cache", - "shell", - "show_unparsable_versions", - "show_upload_date", - "show_zero_versions", - "tar", - "tar_verbosity", - "term_is_latin", - "term_ornaments", - "test_report", - "unzip", - "urllist", - "use_sqlite", - "username", - "wait_list", - "wget", - "yaml_load_code", - "yaml_module", - ); - -my %prefssupport = map { $_ => 1 } - ( - "build_requires_install_policy", - "check_sigs", - "make", - "make_install_make_command", - "prefer_installer", - "test_report", - ); - -if ($^O eq "MSWin32") { - for my $k (qw( - mbuild_install_build_command - make_install_make_command - )) { - delete $keys{$k}; - if (exists $CPAN::Config->{$k}) { - for ("deleting previously set config variable '$k' => '$CPAN::Config->{$k}'") { - $CPAN::Frontend ? $CPAN::Frontend->mywarn($_) : warn $_; - } - delete $CPAN::Config->{$k}; - } - } -} - -# returns true on successful action -sub edit { - my($self,@args) = @_; - return unless @args; - CPAN->debug("self[$self]args[".join(" | ",@args)."]"); - my($o,$str,$func,$args,$key_exists); - $o = shift @args; - $DB::single = 1; - if($can{$o}) { - $self->$o(args => \@args); # o conf init => sub init => sub load - return 1; - } else { - CPAN->debug("o[$o]") if $CPAN::DEBUG; - unless (exists $keys{$o}) { - $CPAN::Frontend->mywarn("Warning: unknown configuration variable '$o'\n"); - } - my $changed; - - - # one day I used randomize_urllist for a boolean, so we must - # list them explicitly --ak - if (0) { - } elsif ($o =~ /^(wait_list|urllist|dontload_list)$/) { - - # - # ARRAYS - # - - $func = shift @args; - $func ||= ""; - CPAN->debug("func[$func]args[@args]") if $CPAN::DEBUG; - # Let's avoid eval, it's easier to comprehend without. - if ($func eq "push") { - push @{$CPAN::Config->{$o}}, @args; - $changed = 1; - } elsif ($func eq "pop") { - pop @{$CPAN::Config->{$o}}; - $changed = 1; - } elsif ($func eq "shift") { - shift @{$CPAN::Config->{$o}}; - $changed = 1; - } elsif ($func eq "unshift") { - unshift @{$CPAN::Config->{$o}}, @args; - $changed = 1; - } elsif ($func eq "splice") { - my $offset = shift @args || 0; - my $length = shift @args || 0; - splice @{$CPAN::Config->{$o}}, $offset, $length, @args; # may warn - $changed = 1; - } elsif ($func) { - $CPAN::Config->{$o} = [$func, @args]; - $changed = 1; - } else { - $self->prettyprint($o); - } - if ($changed) { - if ($o eq "urllist") { - # reset the cached values - undef $CPAN::FTP::Thesite; - undef $CPAN::FTP::Themethod; - $CPAN::Index::LAST_TIME = 0; - } elsif ($o eq "dontload_list") { - # empty it, it will be built up again - $CPAN::META->{dontload_hash} = {}; - } - } - } elsif ($o =~ /_hash$/) { - - # - # HASHES - # - - if (@args==1 && $args[0] eq "") { - @args = (); - } elsif (@args % 2) { - push @args, ""; - } - $CPAN::Config->{$o} = { @args }; - $changed = 1; - } else { - - # - # SCALARS - # - - if (defined $args[0]) { - $CPAN::CONFIG_DIRTY = 1; - $CPAN::Config->{$o} = $args[0]; - $changed = 1; - } - $self->prettyprint($o) - if exists $keys{$o} or defined $CPAN::Config->{$o}; - } - if ($changed) { - if ($CPAN::Config->{auto_commit}) { - $self->commit; - } else { - $CPAN::CONFIG_DIRTY = 1; - $CPAN::Frontend->myprint("Please use 'o conf commit' to ". - "make the config permanent!\n\n"); - } - } - } -} - -sub prettyprint { - my($self,$k) = @_; - my $v = $CPAN::Config->{$k}; - if (ref $v) { - my(@report); - if (ref $v eq "ARRAY") { - @report = map {"\t$_ \[$v->[$_]]\n"} 0..$#$v; - } else { - @report = map - { - sprintf "\t%-18s => %s\n", - "[$_]", - defined $v->{$_} ? "[$v->{$_}]" : "undef" - } keys %$v; - } - $CPAN::Frontend->myprint( - join( - "", - sprintf( - " %-18s\n", - $k - ), - @report - ) - ); - } elsif (defined $v) { - $CPAN::Frontend->myprint(sprintf " %-18s [%s]\n", $k, $v); - } else { - $CPAN::Frontend->myprint(sprintf " %-18s undef\n", $k); - } -} - -sub commit { - my($self,@args) = @_; - CPAN->debug("args[@args]") if $CPAN::DEBUG; - if ($CPAN::RUN_DEGRADED) { - $CPAN::Frontend->mydie( - "'o conf commit' disabled in ". - "degraded mode. Maybe try\n". - " !undef \$CPAN::RUN_DEGRADED\n" - ); - } - my $configpm; - if (@args) { - if ($args[0] eq "args") { - # we have not signed that contract - } else { - $configpm = $args[0]; - } - } - unless (defined $configpm) { - $configpm ||= $INC{"CPAN/MyConfig.pm"}; - $configpm ||= $INC{"CPAN/Config.pm"}; - $configpm || Carp::confess(q{ -CPAN::Config::commit called without an argument. -Please specify a filename where to save the configuration or try -"o conf init" to have an interactive course through configing. -}); - } - my($mode); - if (-f $configpm) { - $mode = (stat $configpm)[2]; - if ($mode && ! -w _) { - Carp::confess("$configpm is not writable"); - } - } - - my $msg; - $msg = <<EOF unless $configpm =~ /MyConfig/; - -# This is CPAN.pm's systemwide configuration file. This file provides -# defaults for users, and the values can be changed in a per-user -# configuration file. The user-config file is being looked for as -# ~/.cpan/CPAN/MyConfig.pm. - -EOF - $msg ||= "\n"; - my($fh) = FileHandle->new; - rename $configpm, "$configpm~" if -f $configpm; - open $fh, ">$configpm" or - $CPAN::Frontend->mydie("Couldn't open >$configpm: $!"); - $fh->print(qq[$msg\$CPAN::Config = \{\n]); - foreach (sort keys %$CPAN::Config) { - unless (exists $keys{$_}) { - # do not drop them: forward compatibility! - $CPAN::Frontend->mywarn("Unknown config variable '$_'\n"); - next; - } - $fh->print( - " '$_' => ", - $self->neatvalue($CPAN::Config->{$_}), - ",\n" - ); - } - - $fh->print("};\n1;\n__END__\n"); - close $fh; - - #$mode = 0444 | ( $mode & 0111 ? 0111 : 0 ); - #chmod $mode, $configpm; -###why was that so? $self->defaults; - $CPAN::Frontend->myprint("commit: wrote '$configpm'\n"); - $CPAN::CONFIG_DIRTY = 0; - 1; -} - -# stolen from MakeMaker; not taking the original because it is buggy; -# bugreport will have to say: keys of hashes remain unquoted and can -# produce syntax errors -sub neatvalue { - my($self, $v) = @_; - return "undef" unless defined $v; - my($t) = ref $v; - unless ($t) { - $v =~ s/\\/\\\\/g; - return "q[$v]"; - } - if ($t eq 'ARRAY') { - my(@m, @neat); - push @m, "["; - foreach my $elem (@$v) { - push @neat, "q[$elem]"; - } - push @m, join ", ", @neat; - push @m, "]"; - return join "", @m; - } - return "$v" unless $t eq 'HASH'; - my(@m, $key, $val); - while (($key,$val) = each %$v) { - last unless defined $key; # cautious programming in case (undef,undef) is true - push(@m,"q[$key]=>".$self->neatvalue($val)) ; - } - return "{ ".join(', ',@m)." }"; -} - -sub defaults { - my($self) = @_; - if ($CPAN::RUN_DEGRADED) { - $CPAN::Frontend->mydie( - "'o conf defaults' disabled in ". - "degraded mode. Maybe try\n". - " !undef \$CPAN::RUN_DEGRADED\n" - ); - } - my $done; - for my $config (qw(CPAN/MyConfig.pm CPAN/Config.pm)) { - if ($INC{$config}) { - CPAN->debug("INC{'$config'}[$INC{$config}]") if $CPAN::DEBUG; - CPAN::Shell->_reload_this($config,{reloforce => 1}); - $CPAN::Frontend->myprint("'$INC{$config}' reread\n"); - last; - } - } - $CPAN::CONFIG_DIRTY = 0; - 1; -} - -=head2 C<< CLASS->safe_quote ITEM >> - -Quotes an item to become safe against spaces -in shell interpolation. An item is enclosed -in double quotes if: - - - the item contains spaces in the middle - - the item does not start with a quote - -This happens to avoid shell interpolation -problems when whitespace is present in -directory names. - -This method uses C<commands_quote> to determine -the correct quote. If C<commands_quote> is -a space, no quoting will take place. - - -if it starts and ends with the same quote character: leave it as it is - -if it contains no whitespace: leave it as it is - -if it contains whitespace, then - -if it contains quotes: better leave it as it is - -else: quote it with the correct quote type for the box we're on - -=cut - -{ - # Instead of patching the guess, set commands_quote - # to the right value - my ($quotes,$use_quote) - = $^O eq 'MSWin32' - ? ('"', '"') - : (q{"'}, "'") - ; - - sub safe_quote { - my ($self, $command) = @_; - # Set up quote/default quote - my $quote = $CPAN::Config->{commands_quote} || $quotes; - - if ($quote ne ' ' - and defined($command ) - and $command =~ /\s/ - and $command !~ /[$quote]/) { - return qq<$use_quote$command$use_quote> - } - return $command; - } -} - -sub init { - my($self,@args) = @_; - CPAN->debug("self[$self]args[".join(",",@args)."]"); - $self->load(doit => 1, @args); - 1; -} - -# This is a piece of repeated code that is abstracted here for -# maintainability. RMB -# -sub _configpmtest { - my($configpmdir, $configpmtest) = @_; - if (-w $configpmtest) { - return $configpmtest; - } elsif (-w $configpmdir) { - #_#_# following code dumped core on me with 5.003_11, a.k. - my $configpm_bak = "$configpmtest.bak"; - unlink $configpm_bak if -f $configpm_bak; - if( -f $configpmtest ) { - if( rename $configpmtest, $configpm_bak ) { - $CPAN::Frontend->mywarn(<<END); -Old configuration file $configpmtest - moved to $configpm_bak -END - } - } - my $fh = FileHandle->new; - if ($fh->open(">$configpmtest")) { - $fh->print("1;\n"); - return $configpmtest; - } else { - # Should never happen - Carp::confess("Cannot open >$configpmtest"); - } - } else { return } -} - -sub require_myconfig_or_config () { - return if $INC{"CPAN/MyConfig.pm"}; - local @INC = @INC; - my $home = home(); - unshift @INC, File::Spec->catdir($home,'.cpan'); - eval { require CPAN::MyConfig }; - my $err_myconfig = $@; - if ($err_myconfig and $err_myconfig !~ m#locate CPAN/MyConfig\.pm#) { - die "Error while requiring CPAN::MyConfig:\n$err_myconfig"; - } - unless ($INC{"CPAN/MyConfig.pm"}) { # this guy has settled his needs already - eval {require CPAN::Config;}; # not everybody has one - my $err_config = $@; - if ($err_config and $err_config !~ m#locate CPAN/Config\.pm#) { - die "Error while requiring CPAN::Config:\n$err_config"; - } - } -} - -sub home () { - my $home; - if ($CPAN::META->has_usable("File::HomeDir")) { - $home = File::HomeDir->my_data; - unless (defined $home) { - $home = File::HomeDir->my_home - } - } - unless (defined $home) { - $home = $ENV{HOME}; - } - $home; -} - -sub load { - my($self, %args) = @_; - $CPAN::Be_Silent++ if $args{be_silent}; - my $doit; - $doit = delete $args{doit}; - - use Carp; - require_myconfig_or_config; - my @miss = $self->missing_config_data; - return unless $doit || @miss; - return if $loading; - $loading++; - - require CPAN::FirstTime; - my($configpm,$fh,$redo); - $redo ||= ""; - if (defined $INC{"CPAN/Config.pm"} && -w $INC{"CPAN/Config.pm"}) { - $configpm = $INC{"CPAN/Config.pm"}; - $redo++; - } elsif (defined $INC{"CPAN/MyConfig.pm"} && -w $INC{"CPAN/MyConfig.pm"}) { - $configpm = $INC{"CPAN/MyConfig.pm"}; - $redo++; - } else { - my($path_to_cpan) = File::Basename::dirname($INC{"CPAN.pm"}); - my($configpmdir) = File::Spec->catdir($path_to_cpan,"CPAN"); - my($configpmtest) = File::Spec->catfile($configpmdir,"Config.pm"); - my $inc_key; - if (-d $configpmdir or File::Path::mkpath($configpmdir)) { - $configpm = _configpmtest($configpmdir,$configpmtest); - $inc_key = "CPAN/Config.pm"; - } - unless ($configpm) { - $configpmdir = File::Spec->catdir(home,".cpan","CPAN"); - File::Path::mkpath($configpmdir); - $configpmtest = File::Spec->catfile($configpmdir,"MyConfig.pm"); - $configpm = _configpmtest($configpmdir,$configpmtest); - $inc_key = "CPAN/MyConfig.pm"; - } - if ($configpm) { - $INC{$inc_key} = $configpm; - } else { - my $text = qq{WARNING: CPAN.pm is unable to } . - qq{create a configuration file.}; - output($text, 'confess'); - } - - } - local($") = ", "; - if ($redo && !$doit) { - $CPAN::Frontend->myprint(<<END); -Sorry, we have to rerun the configuration dialog for CPAN.pm due to -some missing parameters... - -END - $args{args} = \@miss; - } - CPAN::FirstTime::init($configpm, %args); - $loading--; - return; -} - - -# returns mandatory but missing entries in the Config -sub missing_config_data { - my(@miss); - for ( - "auto_commit", - "build_cache", - "build_dir", - "cache_metadata", - "cpan_home", - "ftp_proxy", - #"gzip", - "http_proxy", - "index_expire", - #"inhibit_startup_message", - "keep_source_where", - #"make", - "make_arg", - "make_install_arg", - "makepl_arg", - "mbuild_arg", - "mbuild_install_arg", - "mbuild_install_build_command", - "mbuildpl_arg", - "no_proxy", - #"pager", - "prerequisites_policy", - "scan_cache", - #"tar", - #"unzip", - "urllist", - ) { - next unless exists $keys{$_}; - push @miss, $_ unless defined $CPAN::Config->{$_}; - } - return @miss; -} - -sub help { - $CPAN::Frontend->myprint(q[ -Known options: - commit commit session changes to disk - defaults reload default config values from disk - help this help - init enter a dialog to set all or a set of parameters - -Edit key values as in the following (the "o" is a literal letter o): - o conf build_cache 15 - o conf build_dir "/foo/bar" - o conf urllist shift - o conf urllist unshift ftp://ftp.foo.bar/ - o conf inhibit_startup_message 1 - -]); - undef; #don't reprint CPAN::Config -} - -sub cpl { - my($word,$line,$pos) = @_; - $word ||= ""; - CPAN->debug("word[$word] line[$line] pos[$pos]") if $CPAN::DEBUG; - my(@words) = split " ", substr($line,0,$pos+1); - if ( - defined($words[2]) - and - $words[2] =~ /list$/ - and - ( - @words == 3 - || - @words == 4 && length($word) - ) - ) { - return grep /^\Q$word\E/, qw(splice shift unshift pop push); - } elsif (defined($words[2]) - and - $words[2] eq "init" - and - ( - @words == 3 - || - @words >= 4 && length($word) - )) { - return sort grep /^\Q$word\E/, keys %keys; - } elsif (@words >= 4) { - return (); - } - my %seen; - my(@o_conf) = sort grep { !$seen{$_}++ } - keys %can, - keys %$CPAN::Config, - keys %keys; - return grep /^\Q$word\E/, @o_conf; -} - -sub prefs_lookup { - my($self,$distro,$what) = @_; - - if ($prefssupport{$what}) { - return $CPAN::Config->{$what} unless - $distro - and $distro->prefs - and $distro->prefs->{cpanconfig} - and defined $distro->prefs->{cpanconfig}{$what}; - return $distro->prefs->{cpanconfig}{$what}; - } else { - $CPAN::Frontend->mywarn("Warning: $what not yet officially ". - "supported for distroprefs, doing a normal lookup"); - return $CPAN::Config->{$what}; - } -} - - -{ - package - CPAN::Config; ####::###### #hide from indexer - # note: J. Nick Koston wrote me that they are using - # CPAN::Config->commit although undocumented. I suggested - # CPAN::Shell->o("conf","commit") even when ugly it is at least - # documented - - # that's why I added the CPAN::Config class with autoload and - # deprecated warning - - use strict; - use vars qw($AUTOLOAD $VERSION); - $VERSION = sprintf "%.2f", substr(q$Rev: 2212 $,4)/100; - - # formerly CPAN::HandleConfig was known as CPAN::Config - sub AUTOLOAD { - my $class = shift; # e.g. in dh-make-perl: CPAN::Config - my($l) = $AUTOLOAD; - $CPAN::Frontend->mywarn("Dispatching deprecated method '$l' to CPAN::HandleConfig\n"); - $l =~ s/.*:://; - CPAN::HandleConfig->$l(@_); - } -} - -1; - -__END__ - -=head1 LICENSE - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=cut - -# Local Variables: -# mode: cperl -# cperl-indent-level: 4 -# End: diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Kwalify.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Kwalify.pm deleted file mode 100644 index 77564cb7fc6..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Kwalify.pm +++ /dev/null @@ -1,130 +0,0 @@ -=head1 NAME - -CPAN::Kwalify - Interface between CPAN.pm and Kwalify.pm - -=head1 SYNOPSIS - - use CPAN::Kwalify; - validate($schema_name, $data, $file, $doc); - -=head1 DESCRIPTION - -=over - -=item _validate($schema_name, $data, $file, $doc) - -$schema_name is the name of a supported schema. Currently only -C<distroprefs> is supported. $data is the data to be validated. $file -is the absolute path to the file the data are coming from. $doc is the -index of the document within $doc that is to be validated. The last -two arguments are only there for better error reporting. - -Relies on being called from within CPAN.pm. - -Dies if something fails. Does not return anything useful. - -=item yaml($schema_name) - -Returns the YAML text of that schema. Dies if something fails. - -=back - -=head1 AUTHOR - -Andreas Koenig C<< <andk@cpan.org> >> - -=head1 LICENSE - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -See L<http://www.perl.com/perl/misc/Artistic.html> - - - -=cut - - -use strict; - -package CPAN::Kwalify; -use vars qw($VERSION $VAR1); -$VERSION = sprintf "%.6f", substr(q$Rev: 1418 $,4)/1000000 + 5.4; - -use File::Spec (); - -my %vcache = (); - -my $schema_loaded = {}; - -sub _validate { - my($schema_name,$data,$abs,$y) = @_; - my $yaml_module = CPAN->_yaml_module; - if ( - $CPAN::META->has_inst($yaml_module) - && - $CPAN::META->has_inst("Kwalify") - ) { - my $load = UNIVERSAL::can($yaml_module,"Load"); - unless ($schema_loaded->{$schema_name}) { - eval { - my $schema_yaml = yaml($schema_name); - $schema_loaded->{$schema_name} = $load->($schema_yaml); - }; - if ($@) { - # we know that YAML.pm 0.62 cannot parse the schema, - # so we try a fallback - my $content = do { - my $path = __FILE__; - $path =~ s/\.pm$//; - $path = File::Spec->catfile($path, "$schema_name.dd"); - local *FH; - open FH, $path or die "Could not open '$path': $!"; - local $/; - <FH>; - }; - $VAR1 = undef; - eval $content; - die "parsing of '$schema_name.dd' failed: $@" if $@; - $schema_loaded->{$schema_name} = $VAR1; - } - } - } - if (my $schema = $schema_loaded->{$schema_name}) { - my $mtime = (stat $abs)[9]; - for my $k (keys %{$vcache{$abs}}) { - delete $vcache{$abs}{$k} unless $k eq $mtime; - } - return if $vcache{$abs}{$mtime}{$y}++; - eval { Kwalify::validate($schema, $data) }; - if ($@) { - die "validation of distropref '$abs'[$y] failed: $@"; - } - } -} - -sub _clear_cache { - %vcache = (); -} - -sub yaml { - my($schema_name) = @_; - my $content = do { - my $path = __FILE__; - $path =~ s/\.pm$//; - $path = File::Spec->catfile($path, "$schema_name.yml"); - local *FH; - open FH, $path or die "Could not open '$path': $!"; - local $/; - <FH>; - }; - return $content; -} - -1; - -# Local Variables: -# mode: cperl -# cperl-indent-level: 4 -# End: - diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Kwalify/distroprefs.dd b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Kwalify/distroprefs.dd deleted file mode 100644 index 52118e5a98d..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Kwalify/distroprefs.dd +++ /dev/null @@ -1,137 +0,0 @@ -$VAR1 = { - "mapping" => { - "comment" => { - "type" => "text" - }, - "cpanconfig" => { - "mapping" => { - "=" => { - "type" => "text" - } - }, - "type" => "map" - }, - "depends" => { - "mapping" => { - "build_requires" => { - "mapping" => { - "=" => { - "type" => "text" - } - }, - "type" => "map" - }, - "configure_requires" => {}, - "requires" => {} - }, - "type" => "map" - }, - "disabled" => { - "enum" => [ - 0, - 1 - ], - "type" => "int" - }, - "goto" => { - "type" => "text" - }, - "install" => { - "mapping" => { - "args" => { - "sequence" => [ - { - "type" => "text" - } - ], - "type" => "seq" - }, - "commandline" => { - "type" => "text" - }, - "eexpect" => { - "mapping" => { - "mode" => { - "enum" => [ - "deterministic", - "anyorder" - ], - "type" => "text" - }, - "reuse" => { - "type" => "int" - }, - "talk" => { - "sequence" => [ - { - "type" => "text" - } - ], - "type" => "seq" - }, - "timeout" => { - "type" => "number" - } - }, - "type" => "map" - }, - "env" => { - "mapping" => { - "=" => { - "type" => "text" - } - }, - "type" => "map" - }, - "expect" => { - "sequence" => [ - { - "type" => "text" - } - ], - "type" => "seq" - } - }, - "type" => "map" - }, - "make" => {}, - "match" => { - "mapping" => { - "distribution" => { - "type" => "text" - }, - "module" => { - "type" => "text" - }, - "perl" => { - "type" => "text" - }, - "perlconfig" => { - "mapping" => { - "=" => { - "type" => "text" - } - }, - "type" => "map" - } - }, - "type" => "map" - }, - "patches" => { - "sequence" => [ - { - "type" => "text" - } - ], - "type" => "seq" - }, - "pl" => {}, - "test" => {} - }, - "type" => "map" -}; -$VAR1->{"mapping"}{"depends"}{"mapping"}{"configure_requires"} = $VAR1->{"mapping"}{"depends"}{"mapping"}{"build_requires"}; -$VAR1->{"mapping"}{"depends"}{"mapping"}{"requires"} = $VAR1->{"mapping"}{"depends"}{"mapping"}{"build_requires"}; -$VAR1->{"mapping"}{"make"} = $VAR1->{"mapping"}{"install"}; -$VAR1->{"mapping"}{"pl"} = $VAR1->{"mapping"}{"install"}; -$VAR1->{"mapping"}{"test"} = $VAR1->{"mapping"}{"install"}; diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Kwalify/distroprefs.yml b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Kwalify/distroprefs.yml deleted file mode 100644 index 68ff72b5bef..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Kwalify/distroprefs.yml +++ /dev/null @@ -1,84 +0,0 @@ ---- -type: map -mapping: - comment: - type: text - depends: - type: map - mapping: - configure_requires: - &requires_common - type: map - mapping: - =: - type: text - build_requires: *requires_common - requires: *requires_common - match: - type: map - mapping: - distribution: - type: text - module: - type: text - perl: - type: text - perlconfig: - type: map - mapping: - =: - type: text - install: - &args_env_expect - type: map - mapping: - args: - type: seq - sequence: - - type: text - commandline: - type: text - env: - type: map - mapping: - =: - type: text - expect: - type: seq - sequence: - - type: text - eexpect: - type: map - mapping: - mode: - type: text - enum: - - deterministic - - anyorder - timeout: - type: number - reuse: - type: int - talk: - type: seq - sequence: - - type: text - make: *args_env_expect - pl: *args_env_expect - test: *args_env_expect - patches: - type: seq - sequence: - - type: text - disabled: - type: int - enum: - - 0 - - 1 - goto: - type: text - cpanconfig: - type: map - mapping: - =: - type: text diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Nox.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Nox.pm deleted file mode 100644 index d968f96d945..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Nox.pm +++ /dev/null @@ -1,51 +0,0 @@ -package CPAN::Nox; -use strict; -use vars qw($VERSION @EXPORT); - -BEGIN{ - $CPAN::Suppress_readline=1 unless defined $CPAN::term; -} - -use base 'Exporter'; -use CPAN; - -$VERSION = sprintf "%.6f", substr(q$Rev: 2411 $,4)/1000000 + 5.4; -$CPAN::META->has_inst('Digest::MD5','no'); -$CPAN::META->has_inst('LWP','no'); -$CPAN::META->has_inst('Compress::Zlib','no'); -@EXPORT = @CPAN::EXPORT; - -*AUTOLOAD = \&CPAN::AUTOLOAD; - -1; - -__END__ - -=head1 NAME - -CPAN::Nox - Wrapper around CPAN.pm without using any XS module - -=head1 SYNOPSIS - -Interactive mode: - - perl -MCPAN::Nox -e shell; - -=head1 DESCRIPTION - -This package has the same functionality as CPAN.pm, but tries to -prevent the usage of compiled extensions during its own -execution. Its primary purpose is a rescue in case you upgraded perl -and broke binary compatibility somehow. - -=head1 LICENSE - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=head1 SEE ALSO - -L<CPAN> - -=cut - diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Queue.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Queue.pm deleted file mode 100644 index f01ab5133df..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Queue.pm +++ /dev/null @@ -1,193 +0,0 @@ -# -*- Mode: cperl; coding: utf-8; cperl-indent-level: 4 -*- -use strict; -package CPAN::Queue::Item; - -# CPAN::Queue::Item::new ; -sub new { - my($class,@attr) = @_; - my $self = bless { @attr }, $class; - return $self; -} - -sub as_string { - my($self) = @_; - $self->{qmod}; -} - -# r => requires, b => build_requires, c => commandline -sub reqtype { - my($self) = @_; - $self->{reqtype}; -} - -package CPAN::Queue; - -# One use of the queue is to determine if we should or shouldn't -# announce the availability of a new CPAN module - -# Now we try to use it for dependency tracking. For that to happen -# we need to draw a dependency tree and do the leaves first. This can -# easily be reached by running CPAN.pm recursively, but we don't want -# to waste memory and run into deep recursion. So what we can do is -# this: - -# CPAN::Queue is the package where the queue is maintained. Dependencies -# often have high priority and must be brought to the head of the queue, -# possibly by jumping the queue if they are already there. My first code -# attempt tried to be extremely correct. Whenever a module needed -# immediate treatment, I either unshifted it to the front of the queue, -# or, if it was already in the queue, I spliced and let it bypass the -# others. This became a too correct model that made it impossible to put -# an item more than once into the queue. Why would you need that? Well, -# you need temporary duplicates as the manager of the queue is a loop -# that -# -# (1) looks at the first item in the queue without shifting it off -# -# (2) cares for the item -# -# (3) removes the item from the queue, *even if its agenda failed and -# even if the item isn't the first in the queue anymore* (that way -# protecting against never ending queues) -# -# So if an item has prerequisites, the installation fails now, but we -# want to retry later. That's easy if we have it twice in the queue. -# -# I also expect insane dependency situations where an item gets more -# than two lives in the queue. Simplest example is triggered by 'install -# Foo Foo Foo'. People make this kind of mistakes and I don't want to -# get in the way. I wanted the queue manager to be a dumb servant, not -# one that knows everything. -# -# Who would I tell in this model that the user wants to be asked before -# processing? I can't attach that information to the module object, -# because not modules are installed but distributions. So I'd have to -# tell the distribution object that it should ask the user before -# processing. Where would the question be triggered then? Most probably -# in CPAN::Distribution::rematein. - -use vars qw{ @All $VERSION }; -$VERSION = sprintf "%.6f", substr(q$Rev: 2212 $,4)/1000000 + 5.4; - -# CPAN::Queue::queue_item ; -sub queue_item { - my($class,@attr) = @_; - my $item = "$class\::Item"->new(@attr); - $class->qpush($item); - return 1; -} - -# CPAN::Queue::qpush ; -sub qpush { - my($class,$obj) = @_; - push @All, $obj; - CPAN->debug(sprintf("in new All[%s]", - join("",map {sprintf " %s\[%s]\n",$_->{qmod},$_->{reqtype}} @All), - )) if $CPAN::DEBUG; -} - -# CPAN::Queue::first ; -sub first { - my $obj = $All[0]; - $obj; -} - -# CPAN::Queue::delete_first ; -sub delete_first { - my($class,$what) = @_; - my $i; - for my $i (0..$#All) { - if ( $All[$i]->{qmod} eq $what ) { - splice @All, $i, 1; - return; - } - } -} - -# CPAN::Queue::jumpqueue ; -sub jumpqueue { - my $class = shift; - my @what = @_; - CPAN->debug(sprintf("before jumpqueue All[%s] what[%s]", - join("", - map {sprintf " %s\[%s]\n",$_->{qmod},$_->{reqtype}} @All, @what - ))) if $CPAN::DEBUG; - unless (defined $what[0]{reqtype}) { - # apparently it was not the Shell that sent us this enquiry, - # treat it as commandline - $what[0]{reqtype} = "c"; - } - my $inherit_reqtype = $what[0]{reqtype} =~ /^(c|r)$/ ? "r" : "b"; - WHAT: for my $what_tuple (@what) { - my($what,$reqtype) = @$what_tuple{qw(qmod reqtype)}; - if ($reqtype eq "r" - && - $inherit_reqtype eq "b" - ) { - $reqtype = "b"; - } - my $jumped = 0; - for (my $i=0; $i<$#All;$i++) { #prevent deep recursion - # CPAN->debug("i[$i]this[$All[$i]{qmod}]what[$what]") if $CPAN::DEBUG; - if ($All[$i]{qmod} eq $what) { - $jumped++; - if ($jumped >= 50) { - die "PANIC: object[$what] 50 instances on the queue, looks like ". - "some recursiveness has hit"; - } elsif ($jumped > 25) { # one's OK if e.g. just processing - # now; more are OK if user typed - # it several times - my $sleep = sprintf "%.1f", $jumped/10; - $CPAN::Frontend->mywarn( -qq{Warning: Object [$what] queued $jumped times, sleeping $sleep secs!\n} - ); - $CPAN::Frontend->mysleep($sleep); - # next WHAT; - } - } - } - my $obj = "$class\::Item"->new( - qmod => $what, - reqtype => $reqtype - ); - unshift @All, $obj; - } - CPAN->debug(sprintf("after jumpqueue All[%s]", - join("",map {sprintf " %s\[%s]\n",$_->{qmod},$_->{reqtype}} @All) - )) if $CPAN::DEBUG; -} - -# CPAN::Queue::exists ; -sub exists { - my($self,$what) = @_; - my @all = map { $_->{qmod} } @All; - my $exists = grep { $_->{qmod} eq $what } @All; - # warn "in exists what[$what] all[@all] exists[$exists]"; - $exists; -} - -# CPAN::Queue::delete ; -sub delete { - my($self,$mod) = @_; - @All = grep { $_->{qmod} ne $mod } @All; - CPAN->debug(sprintf("after delete mod[%s] All[%s]", - $mod, - join("",map {sprintf " %s\[%s]\n",$_->{qmod},$_->{reqtype}} @All) - )) if $CPAN::DEBUG; -} - -# CPAN::Queue::nullify_queue ; -sub nullify_queue { - @All = (); -} - -1; - -__END__ - -=head1 LICENSE - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=cut diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter.pm deleted file mode 100644 index 6a217071480..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter.pm +++ /dev/null @@ -1,1487 +0,0 @@ -package CPAN::Reporter; -use strict; -use vars qw/$VERSION/; -$VERSION = '1.13'; -$VERSION = eval $VERSION; - -use Config; -use CPAN (); -use CPAN::Version (); -use File::Basename qw/basename/; -use File::Find (); -use File::HomeDir (); -use File::Path qw/mkpath rmtree/; -use File::Spec (); -use IO::File (); -use Probe::Perl (); -use Tee qw/tee/; -use Test::Reporter (); -use CPAN::Reporter::Config (); -use CPAN::Reporter::History (); -use CPAN::Reporter::PrereqCheck (); - -use constant MAX_OUTPUT_LENGTH => 50_000; - -#--------------------------------------------------------------------------# -# public API -#--------------------------------------------------------------------------# - -sub configure { - goto &CPAN::Reporter::Config::_configure; -} - -sub grade_make { - my @args = @_; - my $result = _init_result( 'make', @args ) or return; - _compute_make_grade($result); - if ( $result->{grade} eq 'discard' ) { - $CPAN::Frontend->myprint( - "\nCPAN::Reporter: test results were not valid, $result->{grade_msg}.\n\n", - $result->{prereq_pm}, "\n", - "Test report will not be sent" - ); - CPAN::Reporter::History::_record_history( $result ) - if not CPAN::Reporter::History::_is_duplicate( $result ); - } - else { - _print_grade_msg($result->{make_cmd}, $result); - if ( $result->{grade} ne 'pass' ) { _dispatch_report( $result ) } - } - return $result->{success}; -} - -sub grade_PL { - my @args = @_; - my $result = _init_result( 'PL', @args ) or return; - _compute_PL_grade($result); - if ( $result->{grade} eq 'discard' ) { - $CPAN::Frontend->myprint( - "\nCPAN::Reporter: test results were not valid, $result->{grade_msg}.\n\n", - $result->{prereq_pm}, "\n", - "Test report will not be sent" - ); - CPAN::Reporter::History::_record_history( $result ) - if not CPAN::Reporter::History::_is_duplicate( $result ); - } - else { - _print_grade_msg($result->{PL_file} , $result); - if ( $result->{grade} ne 'pass' ) { _dispatch_report( $result ) } - } - return $result->{success}; -} - -sub grade_test { - my @args = @_; - my $result = _init_result( 'test', @args ) or return; - _compute_test_grade($result); - if ( $result->{grade} eq 'discard' ) { - $CPAN::Frontend->myprint( - "\nCPAN::Reporter: test results were not valid, $result->{grade_msg}.\n\n", - $result->{prereq_pm}, "\n", - "Test report will not be sent" - ); - CPAN::Reporter::History::_record_history( $result ) - if not CPAN::Reporter::History::_is_duplicate( $result ); - } - else { - _print_grade_msg( "Test", $result ); - _dispatch_report( $result ); - } - return $result->{success}; -} - -sub record_command { - my ($command, $timeout) = @_; - - # XXX refactor this! - # Get configuration options - if ( -r CPAN::Reporter::Config::_get_config_file() ) { - my $config_obj = CPAN::Reporter::Config::_open_config_file(); - my $config; - $config = CPAN::Reporter::Config::_get_config_options( $config_obj ) - if $config_obj; - - $timeout ||= $config->{command_timeout}; # might still be undef - } - - my ($cmd, $redirect) = _split_redirect($command); - - my $temp_out = _temp_filename( 'CPAN-Reporter-TO-' ); - - # Teeing a command loses its exit value so we must wrap the command - # and print the exit code so we can read it off of output - my $wrap_code; - if ( $timeout ) { - $wrap_code = $^O eq 'MSWin32' - ? _timeout_wrapper_win32($cmd, $timeout) - : _timeout_wrapper($cmd, $timeout); - } - # if no timeout or timeout wrap code wasn't available - if ( ! $wrap_code ) { - my $safecmd = quotemeta($cmd); - $wrap_code = << "HERE"; -my \$rc = system("$safecmd"); -my \$ec = \$rc == -1 ? -1 : \$?; -print "($safecmd exited with \$ec)\\n"; -HERE - } - - # write code to a tempfile for execution - my $wrapper_name = _temp_filename( 'CPAN-Reporter-CW-' ); - my $wrapper_fh = IO::File->new( $wrapper_name, 'w' ) - or die "Could not create a wrapper for $cmd\: $!"; - - $wrapper_fh->print( $wrap_code ); - $wrapper_fh->close; - - # tee the command wrapper - my $tee_input = Probe::Perl->find_perl_interpreter() . " $wrapper_name"; - $tee_input .= " $redirect" if defined $redirect; - tee($tee_input, { stderr => 1 }, $temp_out); - - # read back the output - my $output_fh = IO::File->new($temp_out, "r"); - if ( !$output_fh ) { - $CPAN::Frontend->mywarn( - "CPAN::Reporter: couldn't read command results for '$cmd'\n" - ); - return; - } - my @cmd_output = <$output_fh>; - $output_fh->close; - - # cleanup - unlink $wrapper_name, $temp_out; - - if ( ! @cmd_output ) { - $CPAN::Frontend->mywarn( - "CPAN::Reporter: didn't capture command results for '$cmd'\n" - ); - return; - } - - # extract the exit value - my $exit_value; - if ( $cmd_output[-1] =~ m{exited with} ) { - ($exit_value) = $cmd_output[-1] =~ m{exited with ([-0-9]+)}; - pop @cmd_output; - } - - # bail out on some errors - if ( ! defined $exit_value ) { - $CPAN::Frontend->mywarn( - "CPAN::Reporter: couldn't determine exit value for '$cmd'\n" - ); - return; - } - elsif ( $exit_value == -1 ) { - $CPAN::Frontend->mywarn( - "CPAN::Reporter: couldn't execute '$cmd'\n" - ); - return; - } - - return \@cmd_output, $exit_value; -} - -sub test { - my ($dist, $system_command) = @_; - my ($output, $exit_value) = record_command( $system_command ); - return grade_test( $dist, $system_command, $output, $exit_value ); -} - -#--------------------------------------------------------------------------# -# private functions -#--------------------------------------------------------------------------# - -#--------------------------------------------------------------------------# -# _compute_make_grade -#--------------------------------------------------------------------------# - -sub _compute_make_grade { - my $result = shift; - my ($grade,$msg); - if ( $result->{exit_value} ) { - $result->{grade} = "fail"; - $result->{grade_msg} = "Stopped with an error" - } - else { - $result->{grade} = "pass"; - $result->{grade_msg} = "No errors" - } - - _downgrade_known_causes( $result ); - - $result->{success} = $result->{grade} eq 'pass' - || $result->{grade} eq 'unknown'; - return; -} - -#--------------------------------------------------------------------------# -# _compute_PL_grade -#--------------------------------------------------------------------------# - -sub _compute_PL_grade { - my $result = shift; - my ($grade,$msg); - if ( $result->{exit_value} ) { - $result->{grade} = "fail"; - $result->{grade_msg} = "Stopped with an error" - } - else { - $result->{grade} = "pass"; - $result->{grade_msg} = "No errors" - } - - _downgrade_known_causes( $result ); - - $result->{success} = $result->{grade} eq 'pass' - || $result->{grade} eq 'unknown'; - return; -} - -#--------------------------------------------------------------------------# -# _compute_test_grade -# -# Don't shortcut to unknown unless _has_tests because a custom -# Makefile.PL or Build.PL might define tests in a non-standard way -# -# With test.pl and 'make test', any t/*.t might pass Test::Harness, but -# test.pl might still fail, or there might only be test.pl, -# so use exit code directly -# -# Likewise, if we have recursive Makefile.PL, then we don't trust the -# reverse-order parsing and should just take the exit code directly -# -# Otherwise, parse in reverse order for Test::Harness output or a couple -# other significant strings and stop after the first match. Going in -# reverse and stopping is done to (hopefully) avoid picking up spurious -# results from any test output. But then we have to check for -# unsupported OS strings in case those were printed but were not fatal. -#--------------------------------------------------------------------------# - -sub _compute_test_grade { - my $result = shift; - my ($grade,$msg); - my $output = $result->{output}; - - # In some cases, get a result straight from the exit code - if ( $result->{is_make} && ( -f "test.pl" || _has_recursive_make() ) ) { - if ( $result->{exit_value} ) { - $grade = "fail"; - $msg = "'make test' error detected"; - } - else { - $grade = "pass"; - $msg = "'make test' no errors"; - } - } - # Otherwise, get a result from Test::Harness output - else { - # figure out the right harness parser - _expand_result( $result ); - my $harness_version = $result->{toolchain}{'Test::Harness'}{have}; - my $harness_parser = CPAN::Version->vgt($harness_version, '2.99_01') - ? \&_parse_tap_harness - : \&_parse_test_harness; - # parse lines in reverse - for my $i ( reverse 0 .. $#{$output} ) { - if ( $output->[$i] =~ m{No support for OS|OS unsupported}ims ) { # from any *.t file - $grade = 'na'; - $msg = 'This platform is not supported'; - } - elsif ( $output->[$i] =~ m{^.?No tests defined}ms ) { # from M::B - $grade = 'unknown'; - $msg = 'No tests provided'; - } - else { - ($grade, $msg) = $harness_parser->( $output->[$i] ); - } - last if $grade; - } - # fallback on exit value if no recognizable Test::Harness output - if ( ! $grade ) { - $grade = $result->{exit_value} ? "fail" : "pass"; - $msg = ( $result->{is_make} ? "'make test' " : "'Build test' " ) - . ( $result->{exit_value} ? "error detected" : "no errors"); - } - } - - $result->{grade} = $grade; - $result->{grade_msg} = $msg; - - _downgrade_known_causes( $result ); - - $result->{success} = $result->{grade} eq 'pass' - || $result->{grade} eq 'unknown'; - return; -} - -#--------------------------------------------------------------------------# -# _dispatch_report -# -# Set up Test::Reporter and prompt user for CC, edit, send -#--------------------------------------------------------------------------# - -sub _dispatch_report { - my $result = shift; - my $phase = $result->{phase}; - - $CPAN::Frontend->myprint( - "CPAN::Reporter: preparing a CPAN Testers report for $result->{dist_name}\n" - ); - - # Get configuration options - my $config_obj = CPAN::Reporter::Config::_open_config_file(); - my $config; - $config = CPAN::Reporter::Config::_get_config_options( $config_obj ) - if $config_obj; - if ( ! $config->{email_from} ) { - $CPAN::Frontend->mywarn( << "EMAIL_REQUIRED"); - -CPAN::Reporter: required 'email_from' option missing an email address, so -test report will not be sent. See documentation for configuration details. - -EMAIL_REQUIRED - return; - } - - # Abort if the distribution name is not formatted according to - # CPAN Testers requirements: Dist-Name-version.suffix - # Regex from CPAN-Testers should extract name, separator, version - # and extension - my @format_checks = $result->{dist_basename} =~ - m{(.+)([\-\_])(v?\d.*)(\.(?:tar\.(?:gz|bz2)|tgz|zip))$}i; - ; - if ( ! grep { length } @format_checks ) { - $CPAN::Frontend->mywarn( << "END_BAD_DISTNAME"); - -CPAN::Reporter: the distribution name '$result->{dist_basename}' does not -appear to be packaged according to CPAN tester guidelines. Perhaps it is -not a normal CPAN distribution. - -Test report will not be sent. - -END_BAD_DISTNAME - - return; - } - - # Gather 'expensive' data for the report - _expand_result( $result); - - # Skip if distribution name matches the send_skipfile - if ( $config->{send_skipfile} && -r $config->{send_skipfile} ) { - my $send_skipfile = IO::File->new( $config->{send_skipfile}, "r" ); - my $dist_id = $result->{dist}->pretty_id; - while ( my $pattern = <$send_skipfile> ) { - chomp($pattern); - # ignore comments - next if substr($pattern,0,1) eq '#'; - # if it doesn't match, continue with next pattern - next if $dist_id !~ /$pattern/i; - # if it matches, warn and return - $CPAN::Frontend->myprint( << "END_SKIP_DIST" ); -CPAN::Reporter: '$dist_id' matched against the send_skipfile. - -Test report will not be sent. - -END_SKIP_DIST - - return; - } - } - - # Setup the test report - my $tr = Test::Reporter->new; - $tr->grade( $result->{grade} ); - $tr->distribution( $result->{dist_name} ); - - # Skip if duplicate and not sending duplicates - my $is_duplicate = CPAN::Reporter::History::_is_duplicate( $result ); - if ( $is_duplicate ) { - if ( _prompt( $config, "send_duplicates", $tr->grade) =~ /^n/ ) { - $CPAN::Frontend->myprint(<< "DUPLICATE_REPORT"); - -CPAN::Reporter: this appears to be a duplicate report for the $phase phase: -@{[$tr->subject]} - -Test report will not be sent. - -DUPLICATE_REPORT - - return; - } - } - - # Set debug and transport options, if supported - $tr->debug( $config->{debug} ) if defined $config->{debug}; - my $transport = $config->{transport} || 'Net::SMTP'; - if (length $transport && ( $transport !~ /\ANet::SMTP|Mail::Send\z/ )) { - $CPAN::Frontend->mywarn( - "CPAN::Reporter: '$config->{transport}' is not a valid transport option." . - " Falling back to Net::SMTP\n" - ); - $transport = 'Net::SMTP'; - } - $tr->transport( $transport ); - - # prepare mail transport - $tr->from( $config->{email_from} ); - $tr->address( $config->{email_to} ) if $config->{email_to}; - if ( $config->{smtp_server} ) { - my @mx = split " ", $config->{smtp_server}; - $tr->mx( \@mx ); - } - - # Populate the test report - $tr->comments( _report_text( $result ) ); - $tr->via( 'CPAN::Reporter ' . $CPAN::Reporter::VERSION ); - my @cc = _should_copy_author( $result, $config ); - - # prompt for editing report - if ( _prompt( $config, "edit_report", $tr->grade ) =~ /^y/ ) { - my $editor = $config->{editor}; - local $ENV{VISUAL} = $editor if $editor; ## no critic - $tr->edit_comments; - } - - # send_*_report can override send_report - my $send_config = defined $config->{"send_$phase\_report"} - ? "send_$phase\_report" - : "send_report" ; - if ( _prompt( $config, $send_config, $tr->grade ) =~ /^y/ ) { - $CPAN::Frontend->myprint( "CPAN::Reporter: sending test report with '" . $tr->grade . - "' to " . join(q{, }, $tr->address, @cc) . "\n"); - if ( $tr->send( @cc ) ) { - CPAN::Reporter::History::_record_history( $result ) - if not $is_duplicate; - } - else { - $CPAN::Frontend->mywarn( "CPAN::Reporter: " . $tr->errstr . "\n"); - } - } - else { - $CPAN::Frontend->myprint("CPAN::Reporter: test report will not be sent\n"); - } - - return; -} - -#--------------------------------------------------------------------------# -# _downgrade_known_causes -# Downgrade failure/unknown grade if we can determine a cause -# If platform not supported => 'na' -# If perl version is too low => 'na' -# If stated prereqs missing => 'discard' -#--------------------------------------------------------------------------# - -sub _downgrade_known_causes { - my ($result) = @_; - my ($grade, $output) = ( $result->{grade}, $result->{output} ); - my $msg = $result->{grade_msg} || q{}; - - # shortcut unless fail/unknown; but PL might look like pass but actually - # have "OS Unsupported" messages if someone printed message and then - # did "exit 0" - return if $grade eq 'na'; - return if $grade eq 'pass' && $result->{phase} ne 'PL'; - - # get prereqs - _expand_result( $result ); - - # if process was halted with a signal, just set for discard and return - if ( $result->{exit_value} & 127 ) { - $result->{grade} = 'discard'; - $result->{grade_msg} = 'Command interrupted'; - return; - } - - # look for perl version error messages from various programs - # "Error evaling..." type errors happen on Perl < 5.006 when modules - # define their version with "our $VERSION = ..." - my $version_error; - for my $line ( @$output ) { - if( $line =~ /Perl .*? required.*?--this is only/ims || - $line =~ /ERROR: perl: Version .*? is installed, but we need version/ims || - $line =~ /ERROR: perl \(.*?\) is installed, but we need version/ims || - $line =~ /Error evaling version line 'BEGIN/ims || - $line =~ /Could not eval '/ims - ) { - $version_error++; - last; - } - } - - # check for explicit version error or just a perl version prerequisite - if ( $version_error || $result->{prereq_pm} =~ m{^\s+!\s+perl\s}ims ) { - $grade = 'na'; - $msg = 'Perl version too low'; - } - # check again for unsupported OS in case we took 'fail' from exit value - elsif ( grep { /No support for OS|OS unsupported/ims } @{$output} ) { - $grade = 'na'; - $msg = 'This platform is not supported'; - } - # check the prereq report for missing or failure flag '!' - elsif ( $grade ne 'pass' && $result->{prereq_pm} =~ m{n/a}ims ) { - $grade = 'discard'; - $msg = 'Prerequisite missing'; - } - elsif ( $grade ne 'pass' && $result->{prereq_pm} =~ m{^\s+!}ims ) { - $grade = 'discard'; - $msg = 'Prerequisite version too low'; - } - # in PL stage -- if pass but no Makefile or Build, then this should - # be recorded as a discard - elsif ( $result->{phase} eq 'PL' && $grade eq 'pass' - && ! -f 'Makefile' && ! -f 'Build' - ) { - $grade = 'discard'; - $msg = 'No Makefile or Build file found'; - } - - # store results - $result->{grade} = $grade; - $result->{grade_msg} = $msg; - - return; -} - -#--------------------------------------------------------------------------# -# _expand_result - add expensive information like prerequisites and -# toolchain that should only be generated if a report will actually -# be sent -#--------------------------------------------------------------------------# - -sub _expand_result { - my $result = shift; - return if $result->{expanded}++; # only do this once - $result->{prereq_pm} = _prereq_report( $result->{dist} ); - $result->{env_vars} = _env_report(); - $result->{special_vars} = _special_vars_report(); - $result->{toolchain_versions} = _toolchain_report( $result ); - $result->{perl_version} = CPAN::Reporter::History::_format_perl_version(); - return; -} - -#--------------------------------------------------------------------------# -# _env_report -#--------------------------------------------------------------------------# - -# Entries bracketed with "/" are taken to be a regex; otherwise literal -my @env_vars= qw( - /PERL/ - /LC_/ - LANG - LANGUAGE - PATH - SHELL - COMSPEC - TERM - TEMP - TMPDIR - AUTOMATED_TESTING - /AUTHOR_TEST/ - INCLUDE - LIB - LD_LIBRARY_PATH - PROCESSOR_IDENTIFIER - NUMBER_OF_PROCESSORS -); - -sub _env_report { - my @vars_found; - for my $var ( @env_vars ) { - if ( $var =~ m{^/(.+)/$} ) { - push @vars_found, grep { /$1/ } keys %ENV; - } - else { - push @vars_found, $var if exists $ENV{$var}; - } - } - - my $report = ""; - for my $var ( sort @vars_found ) { - my $value = $ENV{$var}; - $value = '[undef]' if ! defined $value; - $report .= " $var = $value\n"; - } - return $report; -} - -#--------------------------------------------------------------------------# -# _has_recursive_make -# -# Ignore Makefile.PL in t directories -#--------------------------------------------------------------------------# - -sub _has_recursive_make { - my $PL_count = 0; - File::Find::find( - sub { - if ( $_ eq 't' ) { - $File::Find::prune = 1; - } - elsif ( $_ eq 'Makefile.PL' ) { - $PL_count++; - } - }, - File::Spec->curdir() - ); - return $PL_count > 1; -} - -#--------------------------------------------------------------------------# -# _init_result -- create and return a hash of values for use in -# report evaluation and dispatch -# -# takes same argument format as grade_*() -#--------------------------------------------------------------------------# - -sub _init_result { - my ($phase, $dist, $system_command, $output, $exit_value) = @_; - - unless ( defined $output && defined $exit_value ) { - my $missing; - if ( ! defined $output && ! defined $exit_value ) { - $missing = "exit value and output" - } - elsif ( defined $output && !defined $exit_value ) { - $missing = "exit value" - } - else { - $missing = "output"; - } - $CPAN::Frontend->mywarn( - "CPAN::Reporter: had errors capturing $missing. Tests abandoned" - ); - return; - } - - my $result = { - phase => $phase, - dist => $dist, - command => $system_command, - is_make => _is_make( $system_command ), - output => ref $output eq 'ARRAY' ? $output : [ split /\n/, $output ], - exit_value => $exit_value, - # Note: pretty_id is like "DAGOLDEN/CPAN-Reporter-0.40.tar.gz" - dist_basename => basename($dist->pretty_id), - dist_name => $dist->base_id, - }; - - # Used in messages to user - $result->{PL_file} = $result->{is_make} ? "Makefile.PL" : "Build.PL"; - $result->{make_cmd} = $result->{is_make} ? $Config{make} : "Build"; - - # CPAN might fail to find an author object for some strange dists - my $author = $dist->author; - $result->{author} = defined $author ? $author->fullname : "Author"; - $result->{author_id} = defined $author ? $author->id : "" ; - - return $result; -} - -#--------------------------------------------------------------------------# -# _is_make -#--------------------------------------------------------------------------# - -sub _is_make { - my $command = shift; - return $command =~ m{\b(?:\S*make|Makefile.PL)\b}ims ? 1 : 0; -} - -#--------------------------------------------------------------------------# -# _max_length -#--------------------------------------------------------------------------# - -sub _max_length { - my ($first, @rest) = @_; - my $max = length $first; - for my $term ( @rest ) { - $max = length $term if length $term > $max; - } - return $max; -} - - -#--------------------------------------------------------------------------# -# _parse_tap_harness -# -# As of Test::Harness 2.99_02, the final line is provided by TAP::Harness -# as "Result: STATUS" where STATUS is "PASS", "FAIL" or "NOTESTS" -#--------------------------------------------------------------------------# - - -sub _parse_tap_harness { - my ($line) = @_; - if ( $line =~ m{^Result:\s+([A-Z]+)} ) { - if ( $1 eq 'PASS' ) { - return ('pass', 'All tests successful'); - } - elsif ( $1 eq 'FAIL' ) { - return ('fail', 'One or more tests failed'); - } - elsif ( $1 eq 'NOTESTS' ) { - return ('unknown', 'No tests were run'); - } - } - elsif ( $line =~ m{Bailout called\.\s+Further testing stopped}ms ) { - return ( 'fail', 'Bailed out of tests'); - } - return; -} - -#--------------------------------------------------------------------------# -# _parse_test_harness -# -# Output strings taken from Test::Harness:: -# _show_results() -- for versions < 2.57_03 -# get_results() -- for versions >= 2.57_03 -#--------------------------------------------------------------------------# - -sub _parse_test_harness { - my ($line) = @_; - if ( $line =~ m{^All tests successful}ms ) { - return ( 'pass', 'All tests successful' ); - } - elsif ( $line =~ m{^FAILED--no tests were run}ms ) { - return ( 'unknown', 'No tests were run' ); - } - elsif ( $line =~ m{^FAILED--.*--no output}ms ) { - return ( 'unknown', 'No tests were run'); - } - elsif ( $line =~ m{FAILED--Further testing stopped}ms ) { - return ( 'fail', 'Bailed out of tests'); - } - elsif ( $line =~ m{^Failed }ms ) { # must be lowercase - return ( 'fail', 'One or more tests failed'); - } - else { - return; - } -} - -#--------------------------------------------------------------------------# -# _prereq_report -#--------------------------------------------------------------------------# - -sub _prereq_report { - my $dist = shift; - my (%need, %have, %prereq_met, $report); - - my $prereq_pm = $dist->prereq_pm; - - if ( ref $prereq_pm eq 'HASH' ) { - # is it the new CPAN style with requires/build_requires? - if (join(q{ }, sort keys %$prereq_pm) eq "build_requires requires") { - $need{requires} = $prereq_pm->{requires} - if ref $prereq_pm->{requires} eq 'HASH'; - $need{build_requires} = $prereq_pm->{build_requires} - if ref $prereq_pm->{build_requires} eq 'HASH'; - } - else { - $need{requires} = $prereq_pm; - } - } - - # see what prereqs are satisfied in subprocess - for my $section ( qw/requires build_requires/ ) { - next unless ref $need{$section} eq 'HASH'; - my @prereq_list = %{ $need{$section} }; - next unless @prereq_list; - my $prereq_results = _version_finder( @prereq_list ); - for my $mod ( keys %{$prereq_results} ) { - $have{$section}{$mod} = $prereq_results->{$mod}{have}; - $prereq_met{$section}{$mod} = $prereq_results->{$mod}{met}; - } - } - - # find formatting widths - my ($name_width, $need_width, $have_width) = (6, 4, 4); - for my $section ( qw/requires build_requires/ ) { - for my $module ( keys %{ $need{$section} } ) { - my $name_length = length $module; - my $need_length = length $need{$section}{$module}; - my $have_length = length $have{$section}{$module}; - $name_width = $name_length if $name_length > $name_width; - $need_width = $need_length if $need_length > $need_width; - $have_width = $have_length if $have_length > $have_width; - } - } - - my $format_str = - " \%1s \%-${name_width}s \%-${need_width}s \%-${have_width}s\n"; - - # generate the report - for my $section ( qw/requires build_requires/ ) { - if ( keys %{ $need{$section} } ) { - $report .= "$section:\n\n"; - $report .= sprintf( $format_str, " ", qw/Module Need Have/ ); - $report .= sprintf( $format_str, " ", - "-" x $name_width, - "-" x $need_width, - "-" x $have_width ); - } - for my $module ( sort { lc $a cmp lc $b } keys %{ $need{$section} } ) { - my $need = $need{$section}{$module}; - my $have = $have{$section}{$module}; - my $bad = $prereq_met{$section}{$module} ? " " : "!"; - $report .= - sprintf( $format_str, $bad, $module, $need, $have); - } - } - - return $report || " No requirements found\n"; -} - -#--------------------------------------------------------------------------# -# _print_grade_msg - -#--------------------------------------------------------------------------# - -sub _print_grade_msg { - my ($phase, $result) = @_; - my ($grade, $msg) = ($result->{grade}, $result->{grade_msg}); - $CPAN::Frontend->myprint( "CPAN::Reporter: $phase result is '$grade'"); - $CPAN::Frontend->myprint(", $msg") if defined $msg && length $msg; - $CPAN::Frontend->myprint(".\n"); - return; -} - -#--------------------------------------------------------------------------# -# _prompt -# -# Note: always returns lowercase -#--------------------------------------------------------------------------# - -sub _prompt { - my ($config, $option, $grade, $extra) = @_; - $extra ||= q{}; - - my %spec = CPAN::Reporter::Config::_config_spec(); - - my $dispatch = CPAN::Reporter::Config::_validate_grade_action_pair( - $option, join(q{ }, "default:no", $config->{$option} || '') - ); - my $action = $dispatch->{$grade} || $dispatch->{default}; - my $intro = $spec{$option}{prompt} . $extra . " (yes/no)"; - my $prompt; - if ( $action =~ m{^ask/yes}i ) { - $prompt = CPAN::Shell::colorable_makemaker_prompt( $intro, "yes" ); - } - elsif ( $action =~ m{^ask(/no)?}i ) { - $prompt = CPAN::Shell::colorable_makemaker_prompt( $intro, "no" ); - } - else { - $prompt = $action; - } - return lc $prompt; -} - -#--------------------------------------------------------------------------# -# _report_text -#--------------------------------------------------------------------------# - -my %intro_para = ( - 'pass' => <<'HERE', -Thank you for uploading your work to CPAN. Congratulations! -All tests were successful. -HERE - - 'fail' => <<'HERE', -Thank you for uploading your work to CPAN. However, there was a problem -testing your distribution. - -If you think this report is invalid, please consult the CPAN Testers Wiki -for suggestions on how to avoid getting FAIL reports for missing library -or binary dependencies, unsupported operating systems, and so on: - -http://cpantest.grango.org/wiki/CPANAuthorNotes -HERE - - 'unknown' => <<'HERE', -Thank you for uploading your work to CPAN. However, attempting to -test your distribution gave an inconclusive result. - -This could be because you did not define tests, tests could not be -found, because your tests were interrupted before they finished, or -because the results of the tests could not be parsed. You may wish to -consult the CPAN Testers Wiki: - -http://cpantest.grango.org/wiki/CPANAuthorNotes -HERE - - 'na' => <<'HERE', -Thank you for uploading your work to CPAN. While attempting to build or test -this distribution, the distribution signaled that support is not available -either for this operating system or this version of Perl. Nevertheless, any -diagnostic output produced is provided below for reference. If this is not -what you expect, you may wish to consult the CPAN Testers Wiki: - -http://cpantest.grango.org/wiki/CPANAuthorNotes -HERE - -); - -sub _report_text { - my $data = shift; - my $test_log = join(q{},@{$data->{output}}); - if ( length $test_log > MAX_OUTPUT_LENGTH ) { - $test_log = substr( $test_log, 0, MAX_OUTPUT_LENGTH) . "\n"; - my $max_k = int(MAX_OUTPUT_LENGTH/1000) . "K"; - $test_log .= "\n[Output truncated after $max_k]\n\n"; - } - # Flag automated report - my $default_comment = $ENV{AUTOMATED_TESTING} - ? "this report is from an automated smoke testing program\nand was not reviewed by a human for accuracy" - : "none provided" ; - - # generate report - my $output = << "ENDREPORT"; -Dear $data->{author}, - -This is a computer-generated report for $data->{dist_name} -on perl $data->{perl_version}, created by CPAN-Reporter-$CPAN::Reporter::VERSION\. - -$intro_para{ $data->{grade} } -Sections of this report: - - * Tester comments - * Program output - * Prerequisites - * Environment and other context - ------------------------------- -TESTER COMMENTS ------------------------------- - -Additional comments from tester: - -$default_comment - ------------------------------- -PROGRAM OUTPUT ------------------------------- - -Output from '$data->{command}': - -$test_log ------------------------------- -PREREQUISITES ------------------------------- - -Prerequisite modules loaded: - -$data->{prereq_pm} ------------------------------- -ENVIRONMENT AND OTHER CONTEXT ------------------------------- - -Environment variables: - -$data->{env_vars} -Perl special variables (and OS-specific diagnostics, for MSWin32): - -$data->{special_vars} -Perl module toolchain versions installed: - -$data->{toolchain_versions} -ENDREPORT - - return $output; -} - - -#--------------------------------------------------------------------------# -# _should_copy_author -#--------------------------------------------------------------------------# - -sub _should_copy_author { - my ($result, $config) = @_; - - # User prompts for action - my $author_email = $result->{author_id} - ? "$result->{author_id}\@cpan.org" - : q{}; - if ( ! $author_email ) { - $CPAN::Frontend->mywarn( "CPAN::Reporter: couldn't determine author_id and won't cc author.\n"); - return; - } - - # Skip if distribution name matches the cc_skipfile - if ( $config->{cc_skipfile} && -r $config->{cc_skipfile} ) { - my $cc_skipfile = IO::File->new( $config->{cc_skipfile}, "r" ); - my $dist_id = $result->{dist}->pretty_id; - while ( my $pattern = <$cc_skipfile> ) { - chomp($pattern); - # ignore comments - next if substr($pattern,0,1) eq '#'; - # if it doesn't match, continue with next pattern - next if $dist_id !~ /$pattern/i; - # if it matches, warn and return - $CPAN::Frontend->myprint( << "END_SKIP_DIST" ); -CPAN::Reporter: '$dist_id' matched against the cc_skipfile. Won't copy author. -END_SKIP_DIST - return; - } - } - - # Don't copy author on perls with patchlevels - return if $Config{perl_patchlevel}; - - # Finally, prompt user if necessary - if ( _prompt( $config, "cc_author", $result->{grade}, "($author_email)?") =~ /^y/ ) { - return $author_email; - } - else { - return; - } -} - -#--------------------------------------------------------------------------# -# _special_vars_report -#--------------------------------------------------------------------------# - -sub _special_vars_report { - my $special_vars = << "HERE"; - \$^X = $^X - \$UID/\$EUID = $< / $> - \$GID = $( - \$EGID = $) -HERE - if ( $^O eq 'MSWin32' && eval "require Win32" ) { ## no critic - my @getosversion = Win32::GetOSVersion(); - my $getosversion = join(", ", @getosversion); - $special_vars .= " Win32::GetOSName = " . Win32::GetOSName() . "\n"; - $special_vars .= " Win32::GetOSVersion = $getosversion\n"; - $special_vars .= " Win32::FsType = " . Win32::FsType() . "\n"; - $special_vars .= " Win32::IsAdminUser = " . Win32::IsAdminUser() . "\n"; - } - return $special_vars; -} - -#--------------------------------------------------------------------------# -# _split_redirect -#--------------------------------------------------------------------------# - -sub _split_redirect { - my $command = shift; - my ($cmd, $prefix) = ($command =~ m{\A(.+?)(\|.*)\z}); - if (defined $cmd) { - return ($cmd, $prefix); - } - else { # didn't match a redirection - return $command - } -} - -#--------------------------------------------------------------------------# -# _temp_filename -- stand-in for File::Temp for backwards compatibility -# -# takes an optional prefix, adds 8 random chars and returns -# an absolute pathname -# -# NOTE -- manual unlink required -#--------------------------------------------------------------------------# - -# @CHARS from File::Temp -my @CHARS = (qw/ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - a b c d e f g h i j k l m n o p q r s t u v w x y z - 0 1 2 3 4 5 6 7 8 9 _ - /); - -sub _temp_filename { - my ($prefix) = @_; - $prefix = q{} unless defined $prefix; - $prefix .= $CHARS[ int( rand(@CHARS) ) ] for 0 .. 7; - return File::Spec->catfile(File::Spec->tmpdir(), $prefix); -} - -#--------------------------------------------------------------------------# -# _timeout_wrapper -#--------------------------------------------------------------------------# - -sub _timeout_wrapper { - my ($cmd, $timeout) = @_; - - # protect shell quotes - $cmd = quotemeta($cmd); - - my $wrapper = sprintf << 'HERE', $timeout, $cmd, $cmd; -use strict; -my ($pid, $exitcode); -eval { - local $SIG{CHLD}; - local $SIG{ALRM} = sub {die 'Timeout'}; - $pid = fork; - die "Cannot fork: $!\n" unless defined $pid; - if ($pid) { #parent - alarm %s; - my $wstat = waitpid $pid, 0; - $exitcode = $wstat == -1 ? -1 : $?; - } else { #child - setpgrp; # new process group for targeted kill - exec "%s"; - } -}; -alarm 0; -if ($pid && $@ =~ /Timeout/){ - kill -9, $pid; - my $wstat = waitpid $pid, 0; - $exitcode = $wstat == -1 ? -1 : $?; -} -elsif ($@) { - die $@; -} -print "(%s exited with $exitcode)\n"; -HERE - return $wrapper; -} - -#--------------------------------------------------------------------------# -# _timeout_wrapper_win32 -#--------------------------------------------------------------------------# - -sub _timeout_wrapper_win32 { - my ($cmd, $timeout) = @_; - - $timeout ||= 0; # just in case upstream doesn't guarantee it - - eval "use Win32::Job ();"; - if ($@) { - $CPAN::Frontend->mywarn( << 'HERE' ); -CPAN::Reporter: you need Win32::Job for inactivity_timeout support. -Continuing without timeout... -HERE - return; - } - - my ($program) = split " ", $cmd; - if (! File::Spec->file_name_is_absolute( $program ) ) { - my $exe = $program . ".exe"; - my ($path) = grep { -e File::Spec->catfile($_,$exe) } - split /$Config{path_sep}/, $ENV{PATH}; - if (! $path) { - $CPAN::Frontend->mywarn( << "HERE" ); -CPAN::Reporter: can't locate $exe in the PATH. -Continuing without timeout... -HERE - return; - } - $program = File::Spec->catfile($path,$exe); - } - - # protect shell quotes and other things - $_ = quotemeta($_) for ($program, $cmd); - - my $wrapper = sprintf << 'HERE', $program, $cmd, $timeout; -use strict; -use Win32::Job; -my $executable = "%s"; -my $cmd_line = "%s"; -my $timeout = %s; - -my $job = Win32::Job->new() or die $^E; -my $ppid = $job->spawn($executable, $cmd_line); -$job->run($timeout); -my $status = $job->status; -my $exitcode = $status->{$ppid}{exitcode}; -if ( $exitcode == 293 ) { - $exitcode = 9; # map Win32::Job kill (293) to SIGKILL (9) -} -elsif ( $exitcode & 255 ) { - $exitcode = $exitcode << 8; # how perl expects it -} -print "($cmd_line exited with $exitcode)\n"; -HERE - return $wrapper; -} - -#--------------------------------------------------------------------------#- -# _toolchain_report -#--------------------------------------------------------------------------# - -my @toolchain_mods= qw( - CPAN - Cwd - ExtUtils::CBuilder - ExtUtils::Command - ExtUtils::Install - ExtUtils::MakeMaker - ExtUtils::Manifest - ExtUtils::ParseXS - File::Spec - Module::Build - Module::Signature - Test::Harness - Test::More - version - YAML - YAML::Syck -); - -sub _toolchain_report { - my ($result) = @_; - - my $installed = _version_finder( map { $_ => 0 } @toolchain_mods ); - $result->{toolchain} = $installed; - - my $mod_width = _max_length( keys %$installed ); - my $ver_width = _max_length( - map { $installed->{$_}{have} } keys %$installed - ); - - my $format = " \%-${mod_width}s \%-${ver_width}s\n"; - - my $report = ""; - $report .= sprintf( $format, "Module", "Have" ); - $report .= sprintf( $format, "-" x $mod_width, "-" x $ver_width ); - - for my $var ( sort keys %$installed ) { - $report .= sprintf(" \%-${mod_width}s \%-${ver_width}s\n", - $var, $installed->{$var}{have} ); - } - - return $report; -} - - - -#--------------------------------------------------------------------------# -# _version_finder -# -# module => version pairs -# -# This is done via an external program to show installed versions exactly -# the way they would be found when test programs are run. This means that -# any updates to PERL5LIB will be reflected in the results. -# -# File-finding logic taken from CPAN::Module::inst_file(). Logic to -# handle newer Module::Build prereq syntax is taken from -# CPAN::Distribution::unsat_prereq() -# -#--------------------------------------------------------------------------# - -my $version_finder = $INC{'CPAN/Reporter/PrereqCheck.pm'}; - -sub _version_finder { - my %prereqs = @_; - - my $perl = Probe::Perl->find_perl_interpreter(); - my @prereq_results; - - my $prereq_input = _temp_filename( 'CPAN-Reporter-PI-' ); - my $fh = IO::File->new( $prereq_input, "w" ) - or die "Could not create temporary '$prereq_input' for prereq analysis: $!"; - $fh->print( map { "$_ $prereqs{$_}\n" } keys %prereqs ); - $fh->close; - - my $prereq_result = qx/$perl $version_finder < $prereq_input/; - - unlink $prereq_input; - - my %result; - for my $line ( split "\n", $prereq_result ) { - next unless length $line; - my ($mod, $met, $have) = split " ", $line; - unless ( defined($mod) && defined($met) && defined($have) ) { - $CPAN::Frontend->mywarn( - "Error parsing output from CPAN::Reporter::PrereqCheck:\n" . - $line - ); - next; - } - $result{$mod}{have} = $have; - $result{$mod}{met} = $met; - } - return \%result; -} - -1; #this line is important and will help the module return a true value - -__END__ - -#--------------------------------------------------------------------------# -# pod documentation -#--------------------------------------------------------------------------# - -=begin wikidoc - -= NAME - -CPAN::Reporter - Adds CPAN Testers reporting to CPAN.pm - -= VERSION - -This documentation describes version %%VERSION%%. - -= SYNOPSIS - -From the CPAN shell: - - cpan> install CPAN::Reporter - cpan> reload cpan - cpan> o conf init test_report - -= DESCRIPTION - -The CPAN Testers project captures and analyses detailed results from building -and testing CPAN distributions on multiple operating systems and multiple -versions of Perl. This provides valuable feedback to module authors and -potential users to identify bugs or platform compatibility issues and improves -the overall quality and value of CPAN. - -One way individuals can contribute is to send a report for each module that -they test or install. CPAN::Reporter is an add-on for the CPAN.pm module to -send the results of building and testing modules to the CPAN Testers project. -Full support for CPAN::Reporter is available in CPAN.pm as of version 1.92. - -= GETTING STARTED - -== Installation - -The first step in using CPAN::Reporter is to install it using whatever -version of CPAN.pm is already installed. CPAN.pm will be upgraded as -a dependency if necessary. - - cpan> install CPAN::Reporter - -If CPAN.pm was upgraded, it needs to be reloaded. - - cpan> reload cpan - -== Configuration - -If upgrading from a very old version of CPAN.pm, users may be prompted to renew -their configuration settings, including the 'test_report' option to enable -CPAN::Reporter. - -If not prompted automatically, users should manually initialize CPAN::Reporter -support. After enabling CPAN::Reporter, CPAN.pm will automatically continue -with interactive configuration of CPAN::Reporter options. - - cpan> o conf init test_report - -Users will need to enter an email address in one of the following formats: - - johndoe@example.com - John Doe <johndoe@example.com> - "John Q. Public" <johnqpublic@example.com> - -Because {cpan-testers} uses a mailing list to collect test reports, it is -helpful if the email address provided is subscribed to the list. Otherwise, -test reports will be held until manually reviewed and approved. Subscribing an -account to the cpan-testers list is as easy as sending a blank email to -cpan-testers-subscribe@perl.org and replying to the confirmation email. - -Users will also be prompted to enter the name of an outbound email server. It -is recommended to use an email server provided by the user's ISP or company. -Alternatively, leave this blank to attempt to send email directly to perl.org. - -Users that are new to CPAN::Reporter should accept the recommended values -for other configuration options. - -After completing interactive configuration, be sure to commit (save) the CPAN -configuration changes. - - cpan> o conf commit - -See [CPAN::Reporter::Config] for advanced configuration settings. - -== Using CPAN::Reporter - -Once CPAN::Reporter is enabled and configured, test or install modules with -CPAN.pm as usual. - -For example, to force CPAN to repeat tests for CPAN::Reporter to see how it -works: - - cpan> force test CPAN::Reporter - -When distribution tests fail, users will be prompted to edit the report to add -addition information. - -= UNDERSTANDING TEST GRADES - -CPAN::Reporter will assign one of the following grades to the report: - -* {pass} -- all tests were successful - -* {fail} -- one or more tests failed, one or more test files died during -testing or no test output was seen - -* {na} -- tests could not be run on this platform or version of perl - -* {unknown} -- no test files could be found (either t/*.t or test.pl) or -a result could not be determined from test output (e.g tests may have hung -and been interrupted) - -In returning results to CPAN.pm, "pass" and "unknown" are considered successful -attempts to "make test" or "Build test" and will not prevent installation. -"fail" and "na" are considered to be failures and CPAN.pm will not install -unless forced. - -If prerequisites specified in {Makefile.PL} or {Build.PL} are not available, -no report will be generated and a failure will be signaled to CPAN.pm. - -= PRIVACY WARNING - -CPAN::Reporter includes information in the test report about environment -variables and special Perl variables that could be affecting test results in -order to help module authors interpret the results of the tests. This includes -information about paths, terminal, locale, user/group ID, installed toolchain -modules (e.g. ExtUtils::MakeMaker) and so on. - -These have been intentionally limited to items that should not cause harmful -personal information to be revealed -- it does ~not~ include your entire -environment. Nevertheless, please do not use CPAN::Reporter if you are -concerned about the disclosure of this information as part of your test report. - -Users wishing to review this information may choose to edit the report -prior to sending it. - -= BUGS - -Please report any bugs or feature using the CPAN Request Tracker. -Bugs can be submitted through the web interface at -[http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Reporter] - -When submitting a bug or request, please include a test-file or a patch to an -existing test-file that illustrates the bug or desired feature. - -= SEE ALSO - -Information about CPAN::Testers: - -* [CPAN::Testers] -- overview of CPAN Testers architecture stack -* [http://cpantesters.perl.org] -- project home with all reports -* [http://cpantest.grango.org] -- documentation and wiki - -Additional Documentation: - -* [CPAN::Reporter::Config] -- advanced configuration settings -* [CPAN::Reporter::FAQ] -- hints and tips - -= AUTHOR - -David A. Golden (DAGOLDEN) - -= COPYRIGHT AND LICENSE - -Copyright (c) 2006, 2007, 2008 by David A. Golden - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at -[http://www.apache.org/licenses/LICENSE-2.0] - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -=end wikidoc - -=cut diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter.pod b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter.pod deleted file mode 100644 index 5e573fc710c..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter.pod +++ /dev/null @@ -1,224 +0,0 @@ -# Generated by Pod::WikiDoc version 0.18 - -=pod - -=head1 NAME - -CPAN::Reporter - Adds CPAN Testers reporting to CPAN.pm - -=head1 VERSION - -This documentation describes version 1.13. - -=head1 SYNOPSIS - -From the CPAN shell: - - cpan> install CPAN::Reporter - cpan> reload cpan - cpan> o conf init test_report - -=head1 DESCRIPTION - -The CPAN Testers project captures and analyses detailed results from building -and testing CPAN distributions on multiple operating systems and multiple -versions of Perl. This provides valuable feedback to module authors and -potential users to identify bugs or platform compatibility issues and improves -the overall quality and value of CPAN. - -One way individuals can contribute is to send a report for each module that -they test or install. CPAN::Reporter is an add-on for the CPAN.pm module to -send the results of building and testing modules to the CPAN Testers project. -Full support for CPAN::Reporter is available in CPAN.pm as of version 1.92. - -=head1 GETTING STARTED - -=head2 Installation - -The first step in using CPAN::Reporter is to install it using whatever -version of CPAN.pm is already installed. CPAN.pm will be upgraded as -a dependency if necessary. - - cpan> install CPAN::Reporter - -If CPAN.pm was upgraded, it needs to be reloaded. - - cpan> reload cpan - -=head2 Configuration - -If upgrading from a very old version of CPAN.pm, users may be prompted to renew -their configuration settings, including the 'test_report' option to enable -CPAN::Reporter. - -If not prompted automatically, users should manually initialize CPAN::Reporter -support. After enabling CPAN::Reporter, CPAN.pm will automatically continue -with interactive configuration of CPAN::Reporter options. - - cpan> o conf init test_report - -Users will need to enter an email address in one of the following formats: - - johndoe@example.com - John Doe <johndoe@example.com> - "John Q. Public" <johnqpublic@example.com> - -Because C<<< cpan-testers >>> uses a mailing list to collect test reports, it is -helpful if the email address provided is subscribed to the list. Otherwise, -test reports will be held until manually reviewed and approved. Subscribing an -account to the cpan-testers list is as easy as sending a blank email to -cpan-testers-subscribe@perl.org and replying to the confirmation email. - -Users will also be prompted to enter the name of an outbound email server. It -is recommended to use an email server provided by the user's ISP or company. -Alternatively, leave this blank to attempt to send email directly to perl.org. - -Users that are new to CPAN::Reporter should accept the recommended values -for other configuration options. - -After completing interactive configuration, be sure to commit (save) the CPAN -configuration changes. - - cpan> o conf commit - -See L<CPAN::Reporter::Config> for advanced configuration settings. - -=head2 Using CPAN::Reporter - -Once CPAN::Reporter is enabled and configured, test or install modules with -CPAN.pm as usual. - -For example, to force CPAN to repeat tests for CPAN::Reporter to see how it -works: - - cpan> force test CPAN::Reporter - -When distribution tests fail, users will be prompted to edit the report to add -addition information. - -=head1 UNDERSTANDING TEST GRADES - -CPAN::Reporter will assign one of the following grades to the report: - -=over - -=item * - -C<<< pass >>> -- all tests were successful - -=back - -=over - -=item * - -C<<< fail >>> -- one or more tests failed, one or more test files died during -testing or no test output was seen - -=back - -=over - -=item * - -C<<< na >>> -- tests could not be run on this platform or version of perl - -=back - -=over - -=item * - -C<<< unknown >>> -- no test files could be found (either tE<sol>*.t or test.pl) or -a result could not be determined from test output (e.g tests may have hung -and been interrupted) - -=back - -In returning results to CPAN.pm, "pass" and "unknown" are considered successful -attempts to "make test" or "Build test" and will not prevent installation. -"fail" and "na" are considered to be failures and CPAN.pm will not install -unless forced. - -If prerequisites specified in C<<< Makefile.PL >>> or C<<< Build.PL >>> are not available, -no report will be generated and a failure will be signaled to CPAN.pm. - -=head1 PRIVACY WARNING - -CPAN::Reporter includes information in the test report about environment -variables and special Perl variables that could be affecting test results in -order to help module authors interpret the results of the tests. This includes -information about paths, terminal, locale, userE<sol>group ID, installed toolchain -modules (e.g. ExtUtils::MakeMaker) and so on. - -These have been intentionally limited to items that should not cause harmful -personal information to be revealed -- it does I<not> include your entire -environment. Nevertheless, please do not use CPAN::Reporter if you are -concerned about the disclosure of this information as part of your test report. - -Users wishing to review this information may choose to edit the report -prior to sending it. - -=head1 BUGS - -Please report any bugs or feature using the CPAN Request Tracker. -Bugs can be submitted through the web interface at -L<http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Reporter> - -When submitting a bug or request, please include a test-file or a patch to an -existing test-file that illustrates the bug or desired feature. - -=head1 SEE ALSO - -Information about CPAN::Testers: - -=over - -=item * - -L<CPAN::Testers> -- overview of CPAN Testers architecture stack - -=item * - -L<http://cpantesters.perl.org> -- project home with all reports - -=item * - -L<http://cpantest.grango.org> -- documentation and wiki - -=back - -Additional Documentation: - -=over - -=item * - -L<CPAN::Reporter::Config> -- advanced configuration settings - -=item * - -L<CPAN::Reporter::FAQ> -- hints and tips - -=back - -=head1 AUTHOR - -David A. Golden (DAGOLDEN) - -=head1 COPYRIGHT AND LICENSE - -Copyright (c) 2006, 2007, 2008 by David A. Golden - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at -L<http://www.apache.org/licenses/LICENSE-2.0> - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/API.pod b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/API.pod deleted file mode 100644 index 8e01c452fa1..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/API.pod +++ /dev/null @@ -1,135 +0,0 @@ -# Generated by Pod::WikiDoc version 0.18 - -=pod - -=head1 NAME - -CPAN::Reporter::API - Programmer's interface to CPAN::Reporter - -=head1 VERSION - -This documentation refers to version 1.13 - -=head1 FUNCTIONS - -CPAN::Reporter provides only a few public function for use within CPAN.pm. -They are not imported during C<<< use >>>. Ordinary users will never need them. - -=head2 C<<< configure() >>> - - CPAN::Reporter::configure(); - -Prompts the user to edit configuration settings stored in the CPAN::Reporter -C<<< config.ini >>> file. It will create the configuration file if it does not exist. -It is automatically called by CPAN.pm when initializing the 'test_report' -option, e.g.: - - cpan> o conf init test_report - -=head2 C<<< record_command() >>> - - ($output, $exit_value) = CPAN::Reporter::record_command( $cmd, $secs ); - -Takes a command to be executed via system(), but wraps and tees it to -show the output to the console, capture the output, and capture the -exit code. Returns an array reference of output lines (merged STDOUT and -STDERR) and the return value from system(). Note that this is C<<< $? >>>, so the -actual exit value of the command will need to be extracted as described in -L<perlvar>. - -If the command includes a pipe character ('E<verbar>'), only the part of the -command prior to the pipe will be wrapped and teed. The pipe will be -applied to the execution of the wrapper script. This is essential to -capture the exit value of the command and should be otherwise transparent. - -If a non-zero C<<< $secs >>> argument is provided, the command will be run with -a timeout of C<<< $secs >>> (seconds). On Win32, L<Win32::Job> must be -available or code will fall-back to running without a timeout; also, the -first space-separated element of the command must be absolute, or else -".exe" will be appended and the PATH searched for a matching command. - -If the attempt to record fails, a warning will be issued and one or more of -C<<< $output >>> or C<<< $exit_value >>> will be undefined. - -=head2 C<<< grade_make() >>> - - CPAN::Reporter::grade_make( $dist, $command, \@output, $exit); - -Given a CPAN::Distribution object, the system command used to build the -distribution (e.g. "make", "perl Build"), an array of lines of output from the -command and the exit value from the command, C<<< grade_make() >>> determines a grade -for this stage of distribution installation. If the grade is "pass", -C<<< grade_make() >>> does B<not> send a CPAN Testers report for this stage and returns -true to signal that the build was successful. Otherwise, a CPAN Testers report -is sent and C<<< grade_make() >>> returns false. - -=head2 C<<< grade_PL() >>> - - CPAN::Reporter::grade_PL( $dist, $command, \@output, $exit); - -Given a CPAN::Distribution object, the system command used to run Makefile.PL -or Build.PL (e.g. "perl Makefile.PL"), an array of lines of output from the -command and the exit value from the command, C<<< grade_PL() >>> determines a grade -for this stage of distribution installation. If the grade is "pass", -C<<< grade_PL() >>> does B<not> send a CPAN Testers report for this stage and returns -true to signal that the Makefile.PL or Build.PL ran successfully. Otherwise, a -CPAN Testers report is sent and C<<< grade_PL() >>> returns false. - -=head2 C<<< grade_test() >>> - - CPAN::Reporter::grade_test( $dist, $command, \@output, $exit); - -Given a CPAN::Distribution object, the system command used to run tests (e.g. -"make test"), an array of lines of output from testing and the exit value from -the system command, C<<< grade_test() >>> determines a grade for distribution tests. -A CPAN Testers report is then sent unless specified prerequisites were not -satisfied, in which case the report is discarded. This function returns true -if the grade is "pass" or "unknown" and returns false, otherwise. - -=head2 C<<< test() >>> -- DEPRECATED - - CPAN::Reporter::test( $cpan_dist, $system_command ); - -This function is maintained for backwards compatibility. It effectively -wraps the functionality of C<<< record_command() >>> and C<<< grade_test() >>> into -a single function call. It takes a CPAN::Distribution object and the system -command to run distribution tests. - -=head1 SEE ALSO - -=over - -=item * - -L<CPAN::Reporter> - -=item * - -L<CPAN::Reporter::Config> - -=item * - -L<CPAN::Reporter::FAQ> - -=back - -=head1 AUTHOR - -David A. Golden (DAGOLDEN) - -=head1 COPYRIGHT AND LICENSE - -Copyright (c) 2006, 2007, 2008 by David A. Golden - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at -L<http://www.apache.org/licenses/LICENSE-2.0> - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/Config.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/Config.pm deleted file mode 100644 index bb97dd100da..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/Config.pm +++ /dev/null @@ -1,764 +0,0 @@ -package CPAN::Reporter::Config; -use strict; -use vars qw/$VERSION/; -$VERSION = '1.13'; -$VERSION = eval $VERSION; - -use Config::Tiny (); -use File::HomeDir (); -use File::Path (qw/mkpath/); -use File::Spec (); -use IO::File (); -use CPAN (); # for printing warnings - -#--------------------------------------------------------------------------# -# Back-compatibility checks -- just once per load -#--------------------------------------------------------------------------# - -# 0.28_51 changed Mac OS X config file location -- if old directory is found, -# move it to the new location -if ( $^O eq 'darwin' ) { - my $old = File::Spec->catdir(File::HomeDir->my_documents,".cpanreporter"); - my $new = File::Spec->catdir(File::HomeDir->my_home,".cpanreporter"); - if ( ( -d $old ) && (! -d $new ) ) { - $CPAN::Frontend->mywarn( << "HERE"); -CPAN::Reporter: since CPAN::Reporter 0.28_51, the Mac OSX config directory -has changed. - - Old: $old - New: $new - -Your existing configuration file will be moved automatically. -HERE - mkpath($new); - my $OLD_CONFIG = IO::File->new( - File::Spec->catfile($old, "config.ini"), "<" - ) or die $!; - my $NEW_CONFIG = IO::File->new( - File::Spec->catfile($new, "config.ini"), ">" - ) or die $!; - $NEW_CONFIG->print( do { local $/; <$OLD_CONFIG> } ); - $OLD_CONFIG->close; - $NEW_CONFIG->close; - unlink File::Spec->catfile($old, "config.ini") or die $!; - rmdir($old) or die $!; - } -} - -#--------------------------------------------------------------------------# -# Public -#--------------------------------------------------------------------------# - -sub _configure { - my $config_dir = _get_config_dir(); - my $config_file = _get_config_file(); - - mkpath $config_dir if ! -d $config_dir; - if ( ! -d $config_dir ) { - $CPAN::Frontend->myprint( - "\nCPAN::Reporter: couldn't create configuration directory '$config_dir': $!" - ); - return; - } - - my $config; - my $existing_options; - - # explain grade:action pairs - $CPAN::Frontend->myprint( _grade_action_prompt() ); - - # read or create - if ( -f $config_file ) { - $CPAN::Frontend->myprint( - "\nCPAN::Reporter: found your CPAN::Reporter config file at:\n$config_file\n" - ); - $config = _open_config_file(); - # if we can't read it, bail out - if ( ! $config ) { - $CPAN::Frontend->mywarn("\n - CPAN::Reporter: configuration will not be changed\n"); - return; - } - # clone what's in the config file - $existing_options = { %{$config->{_}} } if $config; - $CPAN::Frontend->myprint( - "\nCPAN::Reporter: Updating your CPAN::Reporter configuration settings:\n" - ); - } - else { - $CPAN::Frontend->myprint( - "\nCPAN::Reporter: no config file found; creating a new one.\n" - ); - $config = Config::Tiny->new(); - } - - my %spec = _config_spec(); - - for my $k ( _config_order() ) { - my $option_data = $spec{$k}; - $CPAN::Frontend->myprint( "\n" . $option_data->{info}. "\n"); - # options with defaults are mandatory - if ( defined $option_data->{default} ) { - # if we have a default, always show as a sane recommendation - if ( length $option_data->{default} ) { - $CPAN::Frontend->myprint( - "(Recommended: '$option_data->{default}')\n\n" - ); - } - # repeat until validated - PROMPT: - while ( defined ( - my $answer = CPAN::Shell::colorable_makemaker_prompt( - "$k?", - $existing_options->{$k} || $option_data->{default} - ) - )) { - if ( ! $option_data->{validate} || - $option_data->{validate}->($k, $answer) - ) { - $config->{_}{$k} = $answer; - last PROMPT; - } - } - } - else { - # only initialize options without default if - # answer matches non white space and validates, - # otherwise reset it - my $answer = CPAN::Shell::colorable_makemaker_prompt( - "$k?", - $existing_options->{$k} || q{} - ); - if ( $answer =~ /\S/ ) { - $config->{_}{$k} = $answer; - } - else { - delete $config->{_}{$k}; - } - } - # delete existing as we proceed so we know what's left - delete $existing_options->{$k}; - } - - # initialize remaining existing options - $CPAN::Frontend->myprint( - "\nYour CPAN::Reporter config file also contains these advanced " . - "options:\n\n") if keys %$existing_options; - for my $k ( keys %$existing_options ) { - $config->{_}{$k} = CPAN::Shell::colorable_makemaker_prompt( - "$k?", $existing_options->{$k} - ); - } - - $CPAN::Frontend->myprint( - "\nCPAN::Reporter: writing config file to '$config_file'.\n" - ); - if ( $config->write( $config_file ) ) { - return $config->{_}; - } - else { - $CPAN::Frontend->mywarn( "\nCPAN::Reporter: error writing config file to '$config_file':\n" - . Config::Tiny->errstr(). "\n"); - return; - } -} - -#--------------------------------------------------------------------------# -# Private -#--------------------------------------------------------------------------# - -#--------------------------------------------------------------------------# -# _config_order -- determines order of interactive config. Only items -# in interactive config will be written to a starter config file -#--------------------------------------------------------------------------# - -sub _config_order { - return qw( - email_from - smtp_server - edit_report - send_report - ); -} - -#--------------------------------------------------------------------------# -# _config_spec -- returns configuration options information -# -# Keys include -# default -- recommended value, used in prompts and as a fallback -# if an options is not set; mandatory if defined -# prompt -- short prompt for EU::MM prompting -# info -- long description shown before prompting -# validate -- CODE ref; return normalized option or undef if invalid -#--------------------------------------------------------------------------# - -my %option_specs = ( - email_from => { - default => '', - prompt => 'What email address will be used for sending reports?', - info => <<'HERE', -CPAN::Reporter requires a valid email address as the return address -for test reports sent to cpan-testers\@perl.org. Either provide just -an email address, or put your real name in double-quote marks followed -by your email address in angle marks, e.g. "John Doe" <jdoe@nowhere.com>. -Note: unless this email address is subscribed to the cpan-testers mailing -list, your test reports will not appear until manually reviewed. -HERE - }, - smtp_server => { - default => undef, # optional - info => <<'HERE', -If your computer is behind a firewall or your ISP blocks -outbound mail traffic, CPAN::Reporter will not be able to send -test reports unless you provide an alternate outbound (SMTP) -email server. Enter the full name of your outbound mail server -(e.g. smtp.your-ISP.com) or leave this blank to send mail -directly to perl.org. Use a space character to reset this value -to sending to perl.org. -HERE - }, - edit_report => { - default => 'default:ask/no pass/na:no', - prompt => "Do you want to review or edit the test report?", - validate => \&_validate_grade_action_pair, - info => <<'HERE', -Before test reports are sent, you may want to review or edit the test -report and add additional comments about the result or about your system -or Perl configuration. By default, CPAN::Reporter will ask after -each report is generated whether or not you would like to edit the -report. This option takes "grade:action" pairs. -HERE - }, - send_report => { - default => 'default:ask/yes pass/na:yes', - prompt => "Do you want to send the report?", - validate => \&_validate_grade_action_pair, - info => <<'HERE', -By default, CPAN::Reporter will prompt you for confirmation that -the test report should be sent before actually emailing the -report. This gives the opportunity to bypass sending particular -reports if you need to (e.g. if you caused the failure). -This option takes "grade:action" pairs. -HERE - }, - cc_author => { - default => 'default:yes pass/na:no', - prompt => "Do you want to CC the module author ", # (author@cpan.org) added dynamically - validate => \&_validate_grade_action_pair, - info => <<'HERE', -If you would like, CPAN::Reporter will copy the module author with -the results of your tests. By default, authors are copied only on -failed/unknown results. This option takes "grade:action" pairs. -HERE - }, - send_duplicates => { - default => 'default:no', - prompt => "This report is identical to a previous one. Send it anyway?", - validate => \&_validate_grade_action_pair, - info => <<'HERE', -CPAN::Reporter records tests grades for each distribution, version and -platform. By default, duplicates of previous results will not be sent at -all, regardless of the value of the "send_report" option. This option takes -"grade:action" pairs. -HERE - }, - send_PL_report => { - prompt => "Do you want to send the PL report?", - default => undef, - validate => \&_validate_grade_action_pair, - }, - send_make_report => { - prompt => "Do you want to send the make/Build report?", - default => undef, - validate => \&_validate_grade_action_pair, - }, - send_test_report => { - prompt => "Do you want to send the test report?", - default => undef, - validate => \&_validate_grade_action_pair, - }, - send_skipfile => { - prompt => "What file has patterns for things that shouldn't be reported?", - default => undef, - validate => \&_validate_skipfile, - }, - cc_skipfile => { - prompt => "What file has patterns for things that shouldn't CC to authors?", - default => undef, - validate => \&_validate_skipfile, - }, - command_timeout => { - prompt => "If no timeout is set by CPAN, halt system commands after how many seconds?", - default => undef, - validate => \&_validate_seconds, - }, - email_to => { - default => undef, - }, - editor => { - default => undef, - }, - transport => { - default => undef, - }, - debug => { - default => undef, - }, -); - -sub _config_spec { return %option_specs } - -#--------------------------------------------------------------------------# -# _get_config_dir -#--------------------------------------------------------------------------# - -sub _get_config_dir { - if ( defined $ENV{PERL_CPAN_REPORTER_DIR} ) { - return $ENV{PERL_CPAN_REPORTER_DIR}; - } - else { - return ( $^O eq 'MSWin32' ) - ? File::Spec->catdir(File::HomeDir->my_documents, ".cpanreporter") - : File::Spec->catdir(File::HomeDir->my_home, ".cpanreporter") ; - } -} - -#--------------------------------------------------------------------------# -# _get_config_file -#--------------------------------------------------------------------------# - -sub _get_config_file { - if ( defined $ENV{PERL_CPAN_REPORTER_CONFIG} ) { - return $ENV{PERL_CPAN_REPORTER_CONFIG}; - } - else { - return File::Spec->catdir( _get_config_dir, "config.ini" ); - } -} - -#--------------------------------------------------------------------------# -# _get_config_options -#--------------------------------------------------------------------------# - -sub _get_config_options { - my $config = shift; - # extract and return valid options, with fallback to defaults - my %spec = CPAN::Reporter::Config::_config_spec(); - my %active; - OPTION: for my $option ( keys %spec ) { - if ( exists $config->{_}{$option} ) { - my $val = $config->{_}{$option}; - if ( $spec{$option}{validate} && - ! $spec{$option}{validate}->($option, $val) - ) { - $CPAN::Frontend->mywarn( "\nCPAN::Reporter: invalid option '$val' in '$option'. Using default instead.\n\n" ); - $active{$option} = $spec{$option}{default}; - next OPTION; - } - $active{$option} = $val; - } - else { - $active{$option} = $spec{$option}{default} - if defined $spec{$option}{default}; - } - } - return \%active; -} - - -#--------------------------------------------------------------------------# -# _grade_action_prompt -- describes grade action pairs -#--------------------------------------------------------------------------# - -sub _grade_action_prompt { - return << 'HERE'; - -Some of the following configuration options require one or more "grade:action" -pairs that determine what grade-specific action to take for that option. -These pairs should be space-separated and are processed left-to-right. See -CPAN::Reporter documentation for more details. - - GRADE : ACTION ======> EXAMPLES - ------- ------- -------- - pass yes default:no - fail no default:yes pass:no - unknown ask/no default:ask/no pass:yes fail:no - na ask/yes - default - -HERE -} - -#--------------------------------------------------------------------------# -# _is_valid_action -#--------------------------------------------------------------------------# - -my @valid_actions = qw{ yes no ask/yes ask/no ask }; -sub _is_valid_action { - my $action = shift; - return grep { $action eq $_ } @valid_actions; -} - -#--------------------------------------------------------------------------# -# _is_valid_grade -#--------------------------------------------------------------------------# - -my @valid_grades = qw{ pass fail unknown na default }; -sub _is_valid_grade { - my $grade = shift; - return grep { $grade eq $_ } @valid_grades; -} - -#--------------------------------------------------------------------------# -# _open_config_file -#--------------------------------------------------------------------------# - -sub _open_config_file { - my $config_file = _get_config_file(); - my $config = Config::Tiny->read( $config_file ) - or $CPAN::Frontend->mywarn("CPAN::Reporter: couldn't read configuration file " . - "'$config_file': \n" . Config::Tiny->errstr() . "\n"); - return $config; -} - -#--------------------------------------------------------------------------# -# _validate -# -# anything is OK if there is no validation subroutine -#--------------------------------------------------------------------------# - -sub _validate { - my ($name, $value) = @_; - return 1 if ! exists $option_specs{$name}{validate}; - return $option_specs{$name}{validate}->($name, $value); -} - -#--------------------------------------------------------------------------# -# _validate_grade_action -# returns hash of grade => action -# returns undef -#--------------------------------------------------------------------------# - -sub _validate_grade_action_pair { - my ($name, $option) = @_; - $option ||= "no"; - - my %ga_map; # grade => action - - PAIR: for my $grade_action ( split q{ }, $option ) { - my ($grade_list,$action); - - if ( $grade_action =~ m{.:.} ) { - # parse pair for later check - ($grade_list, $action) = $grade_action =~ m{\A([^:]+):(.+)\z}; - } - elsif ( _is_valid_action($grade_action) ) { - # action by itself - $ga_map{default} = $grade_action; - next PAIR; - } - elsif ( _is_valid_grade($grade_action) ) { - # grade by itself - $ga_map{$grade_action} = "yes"; - next PAIR; - } - elsif( $grade_action =~ m{./.} ) { - # gradelist by itself, so setup for later check - $grade_list = $grade_action; - $action = "yes"; - } - else { - # something weird, so warn and skip - $CPAN::Frontend->mywarn( - "\nCPAN::Reporter: ignoring invalid grade:action '$grade_action' for '$name'.\n\n" - ); - next PAIR; - } - - # check gradelist - my %grades = map { ($_,1) } split( "/", $grade_list); - for my $g ( keys %grades ) { - if ( ! _is_valid_grade($g) ) { - $CPAN::Frontend->mywarn( - "\nCPAN::Reporter: ignoring invalid grade '$g' in '$grade_action' for '$name'.\n\n" - ); - delete $grades{$g}; - } - } - - # check action - if ( ! _is_valid_action($action) ) { - $CPAN::Frontend->mywarn( - "\nCPAN::Reporter: ignoring invalid action '$action' in '$grade_action' for '$name'.\n\n" - ); - next PAIR; - } - - # otherwise, it all must be OK - $ga_map{$_} = $action for keys %grades; - } - - return scalar(keys %ga_map) ? \%ga_map : undef; -} - -sub _validate_seconds { - my ($name, $option) = @_; - return unless defined($option) && length($option) - && ($option =~ /^\d/) && $option >= 0; - return $option; -} - -sub _validate_skipfile { - my ($name, $option) = @_; - return unless $option; - my $skipfile = File::Spec->file_name_is_absolute( $option ) - ? $option : File::Spec->catfile( _get_config_dir(), $option ); - return -r $skipfile ? $skipfile : undef; -} - -1; -__END__ - -=begin wikidoc - -= NAME - -CPAN::Reporter::Config - Config file options for CPAN::Reporter - -= VERSION - -This documentation refers to version %%VERSION%% - -= SYNOPSIS - -From the CPAN shell: - - cpan> o conf init test_report - -= DESCRIPTION - -Default options for CPAN::Reporter are read from a configuration file -{.cpanreporter/config.ini} in the user's home directory (Unix and OS X) -or "My Documents" directory (Windows). - -The configuration file is in "ini" format, with the option name and value -separated by an "=" sign - - email_from = "John Doe" <johndoe@nowhere.org> - cc_author = no - -Interactive configuration of email address, mail server and common -action prompts may be repeated at any time from the CPAN shell. - - cpan> o conf init test_report - -If a configuration file does not exist, it will be created the first -time interactive configuration is performed. - -Subsequent interactive configuration will also include any advanced -options that have been added manually to the configuration file. - -= INTERACTIVE CONFIGURATION OPTIONS - -== Email Address (required) - -CPAN::Reporter requires users to provide an email address that will be used -in the "From" header of the email to cpan-testers@perl.org. - -* {email_from = <email address>} -- email address of the user sending the -test report; it should be a valid address format, e.g.: - - user@domain - John Doe <user@domain> - "John Q. Public" <user@domain> - -Because {cpan-testers} uses a mailing list to collect test reports, it is -helpful if the email address provided is subscribed to the list. Otherwise, -test reports will be held until manually reviewed and approved. - -Subscribing an account to the cpan-testers list is as easy as sending a blank -email to cpan-testers-subscribe@perl.org and replying to the confirmation -email. - -== Mail Server - -By default, Test::Reporter attempts to send mail directly to perl.org mail -servers. This may fail if a user's computer is behind a network firewall -that blocks outbound email. In this case, the following option should -be set to the outbound mail server (i.e., SMTP server) as provided by -the user's Internet service provider (ISP): - -* {smtp_server = <server list>} -- one or more alternate outbound mail servers -if the default perl.org mail servers cannot be reached; multiple servers may be -given, separated with a space (none by default) - -In at least one reported case, an ISP's outbound mail servers also refused -to forward mail unless the {email_from} was from the ISP-given email address. - -== Action Prompts - -Several steps in the generation of a test report are optional. Configuration -options control whether an action should be taken automatically or whether -CPAN::Reporter should prompt the user for the action to take. The action -to take may be different for each report grade. - -Valid actions, and their associated meaning, are as follows: - -* {yes} -- automatic yes -* {no} -- automatic no -* {ask/no} or just {ask} -- ask each time, but default to no -* {ask/yes} -- ask each time, but default to yes - -For "ask" prompts, the default will be used if return is pressed immediately at -the prompt or if the {PERL_MM_USE_DEFAULT} environment variable is set to a -true value. - -Action prompt options take one or more space-separated "grade:action" pairs, -which are processed left to right. - - edit_report = fail:ask/yes pass:no - -An action by itself is taken as a default to be used for any grade which does -not have a grade-specific action. A default action may also be set by using -the word "default" in place of a grade. - - edit_report = ask/no - edit_report = default:ask/no - -A grade by itself is taken to have the action "yes" for that grade. - - edit_report = default:no fail - -Multiple grades may be specified together by separating them with a slash. - - edit_report = pass:no fail/na/unknown:ask/yes - -The action prompt options included in interactive configuration are: - -* {edit_report = <grade:action> ...} -- edit the test report before sending? -(default:ask/no pass/na:no) -* {send_report = <grade:action> ...} -- should test reports be sent at all? -(default:ask/yes pass/na:yes) - -Note that if {send_report} is set to "no", CPAN::Reporter will still go through -the motions of preparing a report, but will discard it rather than send it. - -A better way to disable CPAN::Reporter temporarily is with the CPAN option -{test_report}: - - cpan> o conf test_report 0 - -= ADVANCED CONFIGURATION OPTIONS - -These additional options are only necessary in special cases, for example if -the default editor cannot be found or if reports shouldn't be sent in -certain situations or for automated testing, and so on. - -* {cc_author = <grade:action> ...} -- should module authors should be sent a -copy of the test report at their {author@cpan.org} address? -(default:yes pass/na:no) -* {cc_skipfile = <skipfile>} -- filename containing regular expressions (one -per line) to match against the distribution ID (e.g. -'AUTHOR/Dist-Name-0.01.tar.gz'); the author will not be copied if a match is -found regardless of cc_author; non-absolute filename must be in the .cpanreporter -config directory; -* {command_timeout} -- if greater than zero and the CPAN config is -{inactivity_timeout} is not set, then any commands executed by CPAN::Reporter -will be halted after this many seconds; useful for unattended smoke testing -to stop after some amount of time; generally, this should be large -- -900 seconds or more -- as some distributions' tests take quite a long time to -run. On MSWin32, [Win32::Job] is a needed and trying to kill a processes may -actually deadlock in some situations -- so use at your own risk -* {editor = <editor>} -- editor to use to edit the test report; if not set, -Test::Reporter will use environment variables {VISUAL}, {EDITOR} or {EDIT} -(in that order) to find an editor -* {send_duplicates = <grade:action> ...} -- should duplicates of previous -reports be sent, regardless of {send_report}? (default:no) -* {send_PL_report = <grade:action> ...} -- if defined, used in place of -{send_report} during the PL phase -* {send_make_report = <grade:action> ...} -- if defined, used in place of -{send_report} during the make phase -* {send_test_report = <grade:action> ...} -- if defined, used in place of -{send_report} during the test phase -* {send_skipfile = <skipfile>} -- like {cc_skipfile} but no report will be -sent at all if a match is found -* {transport = <transport>} -- if defined, passed to the {transport()} -method of [Test::Reporter]. Valid options are 'Net::SMTP' or -'Mail::Send'. (CPAN::Reporter uses Net::SMTP for this by default.) - -If these options are manually added to the configuration file, they will -be included (and preserved) in subsequent interactive configuration. - -== Skipfile regular expressions - -Skip files are expected to have one regular expression per line and will be -matched against the distribution ID, composed of the author's CPAN ID and the -distribution tarball name. - - DAGOLDEN/CPAN-Reporter-1.00.tar.gz - -Lines that begin with a sharp (#) are considered comments and will not be -matched. All regular expressionss will be matched case insensitive and will -not be anchored unless you provide one. - -As the format of a distribution ID is "AUTHOR/tarball", anchoring at the -start of the line with a caret (^) will match the author and with a slash (/) -will match the distribution. - - # any distributions by JOHNDOE - ^JOHNDOE - # any distributions starting with Win32 - /Win32 - # a particular very specific distribution - ^JOHNDOE/Foo-Bar-3.14 - -= CONFIGURATION OPTIONS FOR DEBUGGING - -These options are useful for debugging only: - -* {debug = <boolean>} -- turns debugging on/off -* {email_to = <email address>} -- alternate destination for reports instead of -{cpan-testers@perl.org}; used for testing - -= ENVIRONMENT - -The following environment variables may be set to alter the default locations -for CPAN::Reporter files: - -* {PERL_CPAN_REPORTER_DIR} -- if set, this directory is used in place of -the default .cpanreporter directory; this will affect not only the location -of the default {config.ini}, but also the location of the -[CPAN::Reporter::History] database and any other files that live in that -directory -* {PERL_CPAN_REPORTER_CONFIG} -- if set, this file is used in place of -the default {config.ini} file; it may be in any directory, regardless of the -choice of configuration directory - -= SEE ALSO - -* [CPAN::Reporter] -* [CPAN::Reporter::History] -* [CPAN::Reporter::FAQ] - -= AUTHOR - -David A. Golden (DAGOLDEN) - -= COPYRIGHT AND LICENSE - -Copyright (c) 2006, 2007, 2008 by David A. Golden - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at -[http://www.apache.org/licenses/LICENSE-2.0] - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - -=end wikidoc - diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/Config.pod b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/Config.pod deleted file mode 100644 index 12b1805a899..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/Config.pod +++ /dev/null @@ -1,342 +0,0 @@ -# Generated by Pod::WikiDoc version 0.18 - -=pod - -=head1 NAME - -CPAN::Reporter::Config - Config file options for CPAN::Reporter - -=head1 VERSION - -This documentation refers to version 1.13 - -=head1 SYNOPSIS - -From the CPAN shell: - - cpan> o conf init test_report - -=head1 DESCRIPTION - -Default options for CPAN::Reporter are read from a configuration file -C<<< .cpanreporter/config.ini >>> in the user's home directory (Unix and OS X) -or "My Documents" directory (Windows). - -The configuration file is in "ini" format, with the option name and value -separated by an "=" sign - - email_from = "John Doe" <johndoe@nowhere.org> - cc_author = no - -Interactive configuration of email address, mail server and common -action prompts may be repeated at any time from the CPAN shell. - - cpan> o conf init test_report - -If a configuration file does not exist, it will be created the first -time interactive configuration is performed. - -Subsequent interactive configuration will also include any advanced -options that have been added manually to the configuration file. - -=head1 INTERACTIVE CONFIGURATION OPTIONS - -=head2 Email Address (required) - -CPAN::Reporter requires users to provide an email address that will be used -in the "From" header of the email to cpan-testers@perl.org. - -=over - -=item * - -C<<< email_from = <email address> >>> -- email address of the user sending the -test report; it should be a valid address format, e.g.: - -=back - - user@domain - John Doe <user@domain> - "John Q. Public" <user@domain> - -Because C<<< cpan-testers >>> uses a mailing list to collect test reports, it is -helpful if the email address provided is subscribed to the list. Otherwise, -test reports will be held until manually reviewed and approved. - -Subscribing an account to the cpan-testers list is as easy as sending a blank -email to cpan-testers-subscribe@perl.org and replying to the confirmation -email. - -=head2 Mail Server - -By default, Test::Reporter attempts to send mail directly to perl.org mail -servers. This may fail if a user's computer is behind a network firewall -that blocks outbound email. In this case, the following option should -be set to the outbound mail server (i.e., SMTP server) as provided by -the user's Internet service provider (ISP): - -=over - -=item * - -C<<< smtp_server = <server list> >>> -- one or more alternate outbound mail servers -if the default perl.org mail servers cannot be reached; multiple servers may be -given, separated with a space (none by default) - -=back - -In at least one reported case, an ISP's outbound mail servers also refused -to forward mail unless the C<<< email_from >>> was from the ISP-given email address. - -=head2 Action Prompts - -Several steps in the generation of a test report are optional. Configuration -options control whether an action should be taken automatically or whether -CPAN::Reporter should prompt the user for the action to take. The action -to take may be different for each report grade. - -Valid actions, and their associated meaning, are as follows: - -=over - -=item * - -C<<< yes >>> -- automatic yes - -=item * - -C<<< no >>> -- automatic no - -=item * - -C<<< ask/no >>> or just C<<< ask >>> -- ask each time, but default to no - -=item * - -C<<< ask/yes >>> -- ask each time, but default to yes - -=back - -For "ask" prompts, the default will be used if return is pressed immediately at -the prompt or if the C<<< PERL_MM_USE_DEFAULT >>> environment variable is set to a -true value. - -Action prompt options take one or more space-separated "grade:action" pairs, -which are processed left to right. - - edit_report = fail:ask/yes pass:no - -An action by itself is taken as a default to be used for any grade which does -not have a grade-specific action. A default action may also be set by using -the word "default" in place of a grade. - - edit_report = ask/no - edit_report = default:ask/no - -A grade by itself is taken to have the action "yes" for that grade. - - edit_report = default:no fail - -Multiple grades may be specified together by separating them with a slash. - - edit_report = pass:no fail/na/unknown:ask/yes - -The action prompt options included in interactive configuration are: - -=over - -=item * - -C<<< edit_report = <grade:action> ... >>> -- edit the test report before sending? -(default:askE<sol>no passE<sol>na:no) - -=item * - -C<<< send_report = <grade:action> ... >>> -- should test reports be sent at all? -(default:askE<sol>yes passE<sol>na:yes) - -=back - -Note that if C<<< send_report >>> is set to "no", CPAN::Reporter will still go through -the motions of preparing a report, but will discard it rather than send it. - -A better way to disable CPAN::Reporter temporarily is with the CPAN option -C<<< test_report >>>: - - cpan> o conf test_report 0 - -=head1 ADVANCED CONFIGURATION OPTIONS - -These additional options are only necessary in special cases, for example if -the default editor cannot be found or if reports shouldn't be sent in -certain situations or for automated testing, and so on. - -=over - -=item * - -C<<< cc_author = <grade:action> ... >>> -- should module authors should be sent a -copy of the test report at their C<<< author@cpan.org >>> address? -(default:yes passE<sol>na:no) - -=item * - -C<<< cc_skipfile = <skipfile> >>> -- filename containing regular expressions (one -per line) to match against the distribution ID (e.g. -'AUTHORE<sol>Dist-Name-0.01.tar.gz'); the author will not be copied if a match is -found regardless of cc_author; non-absolute filename must be in the .cpanreporter -config directory; - -=item * - -C<<< command_timeout >>> -- if greater than zero and the CPAN config is -C<<< inactivity_timeout >>> is not set, then any commands executed by CPAN::Reporter -will be halted after this many seconds; useful for unattended smoke testing -to stop after some amount of time; generally, this should be large -- -900 seconds or more -- as some distributions' tests take quite a long time to -run. On MSWin32, L<Win32::Job> is a needed and trying to kill a processes may -actually deadlock in some situations -- so use at your own risk - -=item * - -C<<< editor = <editor> >>> -- editor to use to edit the test report; if not set, -Test::Reporter will use environment variables C<<< VISUAL >>>, C<<< EDITOR >>> or C<<< EDIT >>> -(in that order) to find an editor - -=item * - -C<<< send_duplicates = <grade:action> ... >>> -- should duplicates of previous -reports be sent, regardless of C<<< send_report >>>? (default:no) - -=item * - -C<<< send_PL_report = <grade:action> ... >>> -- if defined, used in place of -C<<< send_report >>> during the PL phase - -=item * - -C<<< send_make_report = <grade:action> ... >>> -- if defined, used in place of -C<<< send_report >>> during the make phase - -=item * - -C<<< send_test_report = <grade:action> ... >>> -- if defined, used in place of -C<<< send_report >>> during the test phase - -=item * - -C<<< send_skipfile = <skipfile> >>> -- like C<<< cc_skipfile >>> but no report will be -sent at all if a match is found - -=item * - -C<<< transport = <transport> >>> -- if defined, passed to the C<<< transport() >>> -method of L<Test::Reporter>. Valid options are 'Net::SMTP' or -'Mail::Send'. (CPAN::Reporter uses Net::SMTP for this by default.) - -=back - -If these options are manually added to the configuration file, they will -be included (and preserved) in subsequent interactive configuration. - -=head2 Skipfile regular expressions - -Skip files are expected to have one regular expression per line and will be -matched against the distribution ID, composed of the author's CPAN ID and the -distribution tarball name. - - DAGOLDEN/CPAN-Reporter-1.00.tar.gz - -Lines that begin with a sharp (#) are considered comments and will not be -matched. All regular expressionss will be matched case insensitive and will -not be anchored unless you provide one. - -As the format of a distribution ID is "AUTHORE<sol>tarball", anchoring at the -start of the line with a caret (^) will match the author and with a slash (E<sol>) -will match the distribution. - - # any distributions by JOHNDOE - ^JOHNDOE - # any distributions starting with Win32 - /Win32 - # a particular very specific distribution - ^JOHNDOE/Foo-Bar-3.14 - -=head1 CONFIGURATION OPTIONS FOR DEBUGGING - -These options are useful for debugging only: - -=over - -=item * - -C<<< debug = <boolean> >>> -- turns debugging onE<sol>off - -=item * - -C<<< email_to = <email address> >>> -- alternate destination for reports instead of -C<<< cpan-testers@perl.org >>>; used for testing - -=back - -=head1 ENVIRONMENT - -The following environment variables may be set to alter the default locations -for CPAN::Reporter files: - -=over - -=item * - -C<<< PERL_CPAN_REPORTER_DIR >>> -- if set, this directory is used in place of -the default .cpanreporter directory; this will affect not only the location -of the default C<<< config.ini >>>, but also the location of the -L<CPAN::Reporter::History> database and any other files that live in that -directory - -=item * - -C<<< PERL_CPAN_REPORTER_CONFIG >>> -- if set, this file is used in place of -the default C<<< config.ini >>> file; it may be in any directory, regardless of the -choice of configuration directory - -=back - -=head1 SEE ALSO - -=over - -=item * - -L<CPAN::Reporter> - -=item * - -L<CPAN::Reporter::History> - -=item * - -L<CPAN::Reporter::FAQ> - -=back - -=head1 AUTHOR - -David A. Golden (DAGOLDEN) - -=head1 COPYRIGHT AND LICENSE - -Copyright (c) 2006, 2007, 2008 by David A. Golden - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at -L<http://www.apache.org/licenses/LICENSE-2.0> - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/FAQ.pod b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/FAQ.pod deleted file mode 100644 index 0db8105e12b..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/FAQ.pod +++ /dev/null @@ -1,138 +0,0 @@ -# Generated by Pod::WikiDoc version 0.18 - -=pod - -=head1 NAME - -CPAN::Reporter::FAQ - Answers and tips for using CPAN::Reporter - -=head1 VERSION - -This documentation refers to version 1.13 - -=head1 REPORT GRADES - -=head2 Why did I receive a report? The grade was PASSE<sol>FAILE<sol>UNKNOWNE<sol>NA! - -If you received a report, it's because the person using CPAN::Reporter -chose to copy you on the report in addition to sending it to CPAN Testers. -CPAN::Reporter suggests that only FAIL and UNKNOWN reports be copied to -authors, but individual users may override that default. - -=head2 Why was a report sent if a prerequisite is missing? - -As of CPAN::Reporter 0.46, FAIL and UNKNOWN reports with unsatisfied -prerequisites are discarded. Earlier versions may have sent these reports -out by mistake as either an NA or UNKNOWN report. - -PASS reports are not discarded because it may be useful to know when tests -passed despite a missing prerequisite. NA reports are sent because information -about the lack of support for a platform is relevant regardless of -prerequisites. - -=head1 SENDING REPORTS - -=head2 Why did I get an error sending a test report? - -Test reports are sent via ordinary email. The most common reason for errors -sending a report is that many Internet Service Providers (ISP's) will block -outbound SMTP (email) connections as part of their efforts to fight spam. -Instead, email must be routed to the ISP's outbound mail servers, which will -relay the email to the intended destination. - -You can configure CPAN::Reporter to use a specific outbound email server -with the C<<< smtp_server >>> configuration option. - - smtp_server = mail.some-isp.com - -In at least one case, an ISP has blocked outbound email unless the -"from" address was the assigned email address from that ISP. - -=head2 Why didn't my test report show up on CPAN Testers? - -CPAN Testers uses a mailing list to collect test reports. If the email -address you set in C<<< email_from >>> is subscribed to the list, your emails -will be automatically processed. Otherwise, test reports will be held -until manually reviewed and approved. - -Subscribing an account to the cpan-testers list is as easy as sending a blank -email to cpan-testers-subscribe@perl.org and replying to the confirmation -email. - -There is a delay between the time emails appear on the mailing list and the -time they appear on the CPAN Testers website. There is a further delay before -summary statistics appear on search.cpan.org. - -If your email address is subscribed to the list but your test reports are still -not showing up, your outbound email may have been silently blocked by your -ISP. See the question above about errors sending reports. - -=head2 Why don't you support sending reports via HTTP or authenticated SMTP? - -CPAN::Reporter uses L<Test::Reporter> as its conduit to CPAN Testers. -As soon as Test::Reporter provides support for alternative transport -methods, support for them will be added to CPAN::Reporter. - -=head1 CPAN TESTERS - -=head2 Where can I find out more about CPAN Testers? - -A good place to start is the CPAN Testers Wiki: -L<http://cpantest.grango.org/> - -=head2 Where can I find statistics about reports sent to CPAN Testers? - -CPAN Testers statistics are compiled at L<http://perl.grango.org/> - -=head2 How do I make sure I get credit for my test reports? - -To get credit in the statistics, use the same email address wherever -you run tests. - -For example, if you are a CPAN author, use your PAUSEID email address. - - email_from = pauseid@cpan.org - -Otherwise, you should use a consistent "Full Name" as part of your -email address in the C<<< email_from >>> option. - - email_from = "John Doe" <john.doe@example.com> - -=head1 SEE ALSO - -=over - -=item * - -L<CPAN::Testers> - -=item * - -L<CPAN::Reporter> - -=item * - -L<Test::Reporter> - -=back - -=head1 AUTHOR - -David A. Golden (DAGOLDEN) - -=head1 COPYRIGHT AND LICENSE - -Copyright (c) 2006, 2007, 2008 by David A. Golden - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at -L<http://www.apache.org/licenses/LICENSE-2.0> - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/History.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/History.pm deleted file mode 100644 index fac11ad0348..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/History.pm +++ /dev/null @@ -1,404 +0,0 @@ -package CPAN::Reporter::History; -use strict; -use vars qw/$VERSION @ISA @EXPORT_OK/; -$VERSION = '1.13'; -$VERSION = eval $VERSION; - -use Config; -use Carp; -use Fcntl qw/:flock/; -use File::HomeDir (); -use File::Path (qw/mkpath/); -use File::Spec (); -use IO::File (); -use CPAN (); # for printing warnings -use CPAN::Reporter::Config (); - -require Exporter; -@ISA = qw/Exporter/; -@EXPORT_OK = qw/have_tested/; - -#--------------------------------------------------------------------------# -# Some platforms don't implement flock, so fake it if necessary -#--------------------------------------------------------------------------# - -BEGIN { - eval { - my $temp_file = File::Spec->catfile( - File::Spec->tmpdir(), $$ . time() - ); - my $fh = IO::File->new( $temp_file, "w" ); - flock $fh, LOCK_EX; - $fh->close; - unlink $temp_file; - }; - if ( $@ ) { - *CORE::GLOBAL::flock = sub (*$) { 1 }; - } -} - -#--------------------------------------------------------------------------# -# Back-compatibility checks -- just once per load -#--------------------------------------------------------------------------# - - -# 0.99_08 changed the history file format and name -# If an old file exists, convert it to the new name and format. Note -- -# someone running multiple installations of CPAN::Reporter might have old -# and new versions running so only convert in the case where the old file -# exists and the new file does not - -{ - my $old_history_file = _get_old_history_file(); - my $new_history_file = _get_history_file(); - last if -f $new_history_file || ! -f $old_history_file; - - $CPAN::Frontend->mywarn("CPAN::Reporter: Your history file is in an old format. Upgrading automatically.\n"); - - # open old and new files - my ($old_fh, $new_fh); - if (! ( $old_fh = IO::File->new( $old_history_file ) ) ) { - $CPAN::Frontend->mywarn("CPAN::Reporter: error opening old history file: $!\nContinuing without conversion.\n"); - last; - } - if (! ($new_fh = IO::File->new( $new_history_file, "w" ) ) ) { - $CPAN::Frontend->mywarn("CPAN::Reporter: error opening new history file: $!\nContinuing without conversion.\n"); - last; - } - - print {$new_fh} "# Generated by CPAN::Reporter " . - "$CPAN::Reporter::Config::VERSION\n"; - while ( my $line = <$old_fh> ) { - chomp $line; - # strip off perl version and convert - # try not to match 5.1 from "MSWin32-x86-multi-thread 5.1" - # from really old CPAN::Reporter history formats - my ($old_version, $perl_patch); - if ( $line =~ m{ (5\.0\d{2,5}) ?(patch \d+)?\z} ) { - ($old_version, $perl_patch) = ($1, $2); - $line =~ s{ (5\.0\d{2,5}) ?(patch \d+)?\z}{}; - } - my $pv = $old_version ? "perl-" . _perl_version($old_version) - : "unknown"; - $pv .= " $perl_patch" if $perl_patch; - my ($grade_dist, $arch_os) = ($line =~ /(\S+ \S+) (.+)/); - print {$new_fh} "test $grade_dist ($pv) $arch_os\n"; - } - close $old_fh; - close $new_fh; -} - - -#--------------------------------------------------------------------------# -# Public methods -#--------------------------------------------------------------------------# - -#--------------------------------------------------------------------------# -# have_tested -- search for dist in history file -#--------------------------------------------------------------------------# - -sub have_tested { ## no critic RequireArgUnpacking - # validate arguments - croak "arguments to have_tested() must be key value pairs" - if @_ % 2; - - my $args = { @_ }; - - my @bad_params = grep { - $_ !~ m{^(?:dist|phase|grade|perl|archname|osvers)$} } keys %$args; - croak "bad parameters for have_tested(): " . join(q{, },@bad_params) - if @bad_params; - - - # DWIM: grades to upper case - $args->{grade} = uc $args->{grade} if defined $args->{grade}; - - # default to current platform - $args->{perl} = _format_perl_version() unless defined $args->{perl}; - $args->{archname} = $Config{archname} unless defined $args->{archname}; - $args->{osvers} = $Config{osvers} unless defined $args->{osvers}; - - my @found; - my $history = _open_history_file('<') or return; - flock $history, LOCK_SH; - <$history>; # throw away format line - while ( defined (my $line = <$history>) ) { - my $fields = _split_history( $line ) or next; - push @found, $fields if _match($fields, $args); - } - $history->close; - return @found; -} - -#--------------------------------------------------------------------------# -# Private methods -#--------------------------------------------------------------------------# - -#--------------------------------------------------------------------------# -# _format_history -- -# -# phase grade dist-version (perl-version patchlevel) archname osvers -#--------------------------------------------------------------------------# - -sub _format_history { - my ($result) = @_; - my $phase = $result->{phase}; - my $grade = uc $result->{grade}; - my $dist_name = $result->{dist_name}; - my $perlver = "perl-" . _format_perl_version(); - my $platform = "$Config{archname} $Config{osvers}"; - return "$phase $grade $dist_name ($perlver) $platform\n"; -} - -#--------------------------------------------------------------------------# -# _format_perl_version -#--------------------------------------------------------------------------# - -sub _format_perl_version { - my $pv = _perl_version(); - $pv .= " patch $Config{perl_patchlevel}" - if $Config{perl_patchlevel}; - return $pv; -} - -#--------------------------------------------------------------------------# -# _get_history_file -#--------------------------------------------------------------------------# - -sub _get_history_file { - return File::Spec->catdir( - CPAN::Reporter::Config::_get_config_dir(), "reports-sent.db" - ); -} - -#--------------------------------------------------------------------------# -# _get_old_history_file -- prior to 0.99_08 -#--------------------------------------------------------------------------# - -sub _get_old_history_file { - return File::Spec->catdir( - CPAN::Reporter::Config::_get_config_dir(), "history.db" - ); -} - -#--------------------------------------------------------------------------# -# _is_duplicate -#--------------------------------------------------------------------------# - -sub _is_duplicate { - my ($result) = @_; - my $log_line = _format_history( $result ); - my $history = _open_history_file('<') or return; - my $found = 0; - flock $history, LOCK_SH; - while ( defined (my $line = <$history>) ) { - if ( $line eq $log_line ) { - $found++; - last; - } - } - $history->close; - return $found; -} - -#--------------------------------------------------------------------------# -# _match -#--------------------------------------------------------------------------# - -sub _match { - my ($fields, $search) = @_; - for my $k ( keys %$search ) { - next if $search->{$k} eq q{}; # empty string matches anything - return unless $fields->{$k} eq $search->{$k}; - } - return 1; # all keys matched -} - -#--------------------------------------------------------------------------# -# _open_history_file -#--------------------------------------------------------------------------# - -sub _open_history_file { - my $mode = shift || '<'; - my $history_filename = _get_history_file(); - my $file_exists = -f $history_filename; - - # shortcut if reading and doesn't exist - return if ( $mode eq '<' && ! $file_exists ); - - # open it in the desired mode - my $history = IO::File->new( $history_filename, $mode ) - or $CPAN::Frontend->mywarn("CPAN::Reporter: couldn't open history file " - . "'$history_filename': $!\n"); - - # if writing and it didn't exist before, initialize with header - if ( substr($mode,0,1) eq '>' && ! $file_exists ) { - print {$history} "# Generated by CPAN::Reporter " . - "$CPAN::Reporter::Config::VERSION\n"; - } - - return $history; -} - -#--------------------------------------------------------------------------# -# _perl_version -#--------------------------------------------------------------------------# - -sub _perl_version { - my $ver = shift || "$]"; - $ver =~ qr/(\d)\.(\d{3})(\d{0,3})/; - my ($maj,$min,$pat) = (0 + ($1||0), 0 + ($2||0), 0 + ($3||0)); - my $pv; - if ( $min < 6 ) { - $pv = $ver; - } - else { - $pv = "$maj\.$min\.$pat"; - } - return $pv; -} - -#--------------------------------------------------------------------------# -# _record_history -#--------------------------------------------------------------------------# - -sub _record_history { - my ($result) = @_; - my $log_line = _format_history( $result ); - my $history = _open_history_file('>>') or return; - - flock( $history, LOCK_EX ); - seek( $history, 0, 2 ); # seek to end of file - $history->print( $log_line ); - flock( $history, LOCK_UN ); - - $history->close; - return; -} - -#--------------------------------------------------------------------------# -# _split_history -# -# splits lines created with _format_history. Returns hash ref with -# phase, grade, dist, perl, platform -#--------------------------------------------------------------------------# - -sub _split_history { - my ($line) = @_; - chomp $line; - my %fields; - @fields{qw/phase grade dist perl archname osvers/} = - $line =~ m{ - ^(\S+) \s+ # phase - (\S+) \s+ # grade - (\S+) \s+ # dist - \(perl- ([^)]+) \) \s+ # (perl-version-patchlevel) - (\S+) \s+ # archname - (.+)$ # osvers - }xms; - - # return nothing if parse fails - return if scalar keys %fields == 0;# grep { ! defined($_) } values %fields; - # otherwise return hashref - return \%fields; -} - -1; -__END__ - -=begin wikidoc - -= NAME - -CPAN::Reporter::History - Read or write a CPAN::Reporter history log - -= VERSION - -This documentation refers to version %%VERSION%% - -= SYNOPSIS - - use CPAN::Reporter::History 'have_tested'; - - @results = have_tested( dist => 'Dist-Name-1.23' ); - -= DESCRIPTION - -Interface for interacting with the CPAN::Reporter history file. Most methods -are private for use only within CPAN::Reporter itself. However, a public -function is provided to query the history file for results. - -= USAGE - -The following function is available. It is not exported by default. - -== {have_tested()} - - # all reports for Foo-Bar-1.23 - @results = have_tested( dist => 'Foo-Bar-1.23' ); - - # all NA reports - @results = have_tested( grade => 'NA' ); - - # all reports on the current Perl/platform - @results = have_tested(); - -Searches the CPAN::Reporter history file for records exactly matching search -criteria, given as pairs of field-names and desired values. - -Ordinary search criteria include: - -* {dist} -- the distribution tarball name without any filename suffix; from -a {CPAN::Distribution} object, this is provided by the {base_id} method. -* {phase} -- phase the report was generated during: either 'PL', -'make' or 'test' -* {grade} -- CPAN Testers grade: 'PASS', 'FAIL', 'NA' or'UNKNOWN'; Also may -be 'DISCARD' for any failing reports not sent due to missing prerequisites - -Without additional criteria, a search will be limited to the current -version of Perl and the current architecture and OS version. -Additional criteria may be specified explicitly or, by specifying the empty -string, {q{}}, will match that field for ~any~ record. - - # all reports for Foo-Bar-1.23 on any version of perl - # on the current architecture and OS version - @results = have_tested( dist => 'Foo-Bar-1.23', perl => q{} ); - -These additional criteria include: - -* {perl} -- perl version and possible patchlevel; this will be -dotted decimal (5.6.2) starting with version 5.6, or will be numeric style as -given by {$]} for older versions; if a patchlevel exists, it must be specified -similar to "5.11.0 patch 12345" -* {archname} -- platform architecture name as given by $Config{archname} -* {osvers} -- operating system version as given by $Config{osvers} - -The function returns an array of hashes representing each test result, with -all of the fields listed above. - -= SEE ALSO - -* [CPAN::Reporter] -* [CPAN::Reporter::FAQ] - -= AUTHOR - -David A. Golden (DAGOLDEN) - -= COPYRIGHT AND LICENSE - -Copyright (c) 2006, 2007, 2008 by David A. Golden - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at -[http://www.apache.org/licenses/LICENSE-2.0] - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -=end wikidoc - diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/History.pod b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/History.pod deleted file mode 100644 index 38dc36f2d78..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/History.pod +++ /dev/null @@ -1,130 +0,0 @@ -# Generated by Pod::WikiDoc version 0.18 - -=pod - -=head1 NAME - -CPAN::Reporter::History - Read or write a CPAN::Reporter history log - -=head1 VERSION - -This documentation refers to version 1.13 - -=head1 SYNOPSIS - - use CPAN::Reporter::History 'have_tested'; - - @results = have_tested( dist => 'Dist-Name-1.23' ); - -=head1 DESCRIPTION - -Interface for interacting with the CPAN::Reporter history file. Most methods -are private for use only within CPAN::Reporter itself. However, a public -function is provided to query the history file for results. - -=head1 USAGE - -The following function is available. It is not exported by default. - -=head2 C<<< have_tested() >>> - - # all reports for Foo-Bar-1.23 - @results = have_tested( dist => 'Foo-Bar-1.23' ); - - # all NA reports - @results = have_tested( grade => 'NA' ); - - # all reports on the current Perl/platform - @results = have_tested(); - -Searches the CPAN::Reporter history file for records exactly matching search -criteria, given as pairs of field-names and desired values. - -Ordinary search criteria include: - -=over - -=item * - -C<<< dist >>> -- the distribution tarball name without any filename suffix; from -a C<<< CPAN::Distribution >>> object, this is provided by the C<<< base_id >>> method. - -=item * - -C<<< phase >>> -- phase the report was generated during: either 'PL', -'make' or 'test' - -=item * - -C<<< grade >>> -- CPAN Testers grade: 'PASS', 'FAIL', 'NA' or'UNKNOWN'; Also may -be 'DISCARD' for any failing reports not sent due to missing prerequisites - -=back - -Without additional criteria, a search will be limited to the current -version of Perl and the current architecture and OS version. -Additional criteria may be specified explicitly or, by specifying the empty -string, C<<< q{} >>>, will match that field for I<any> record. - - # all reports for Foo-Bar-1.23 on any version of perl - # on the current architecture and OS version - @results = have_tested( dist => 'Foo-Bar-1.23', perl => q{} ); - -These additional criteria include: - -=over - -=item * - -C<<< perl >>> -- perl version and possible patchlevel; this will be -dotted decimal (5.6.2) starting with version 5.6, or will be numeric style as -given by C<<< $] >>> for older versions; if a patchlevel exists, it must be specified -similar to "5.11.0 patch 12345" - -=item * - -C<<< archname >>> -- platform architecture name as given by $Config{archname} - -=item * - -C<<< osvers >>> -- operating system version as given by $Config{osvers} - -=back - -The function returns an array of hashes representing each test result, with -all of the fields listed above. - -=head1 SEE ALSO - -=over - -=item * - -L<CPAN::Reporter> - -=item * - -L<CPAN::Reporter::FAQ> - -=back - -=head1 AUTHOR - -David A. Golden (DAGOLDEN) - -=head1 COPYRIGHT AND LICENSE - -Copyright (c) 2006, 2007, 2008 by David A. Golden - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at -L<http://www.apache.org/licenses/LICENSE-2.0> - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/PrereqCheck.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/PrereqCheck.pm deleted file mode 100644 index 356718f07c0..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/PrereqCheck.pm +++ /dev/null @@ -1,182 +0,0 @@ -package CPAN::Reporter::PrereqCheck; -use strict; -use vars qw/$VERSION/; -$VERSION = '1.13'; -$VERSION = eval $VERSION; - -use ExtUtils::MakeMaker; -use File::Spec; -use CPAN::Version; - -_run() if ! caller(); - -sub _run { - my %saw_mod; - # read module and prereq string from STDIN - local *DEVNULL; - open DEVNULL, ">" . File::Spec->devnull; - while ( <> ) { - m/^(\S+)\s+([^\n]*)/; - my ($mod, $need) = ($1, $2); - die "Couldn't read module for '$_'" unless $mod; - $need = 0 if not defined $need; - - # only evaluate a module once - next if $saw_mod{$mod}++; - - # get installed version from file with EU::MM - my($have, $inst_file, $dir, @packpath); - if ( $mod eq "perl" ) { - $have = $]; - } - else { - @packpath = split( /::/, $mod ); - $packpath[-1] .= ".pm"; - if (@packpath == 1 && $packpath[0] eq "readline.pm") { - unshift @packpath, "Term", "ReadLine"; # historical reasons - } - INCDIR: - foreach my $dir (@INC) { - my $pmfile = File::Spec->catfile($dir,@packpath); - if (-f $pmfile){ - $inst_file = $pmfile; - last INCDIR; - } - } - - # get version from file or else report missing - if ( defined $inst_file ) { - $have = MM->parse_version($inst_file); - $have = "0" if ! defined $have || $have eq 'undef'; - # report broken if it can't be loaded - select DEVNULL; # try to suppress spurious newlines - if ( ! eval "require $mod" ) { - select STDOUT; - print "$mod 0 broken\n"; - next; - } - select STDOUT; - } - else { - print "$mod 0 n/a\n"; - next; - } - } - - # complex requirements are comma separated - my ( @requirements ) = split /\s*,\s*/, $need; - - my $passes = 0; - RQ: - for my $rq (@requirements) { - if ($rq =~ s|>=\s*||) { - # no-op -- just trimmed string - } elsif ($rq =~ s|>\s*||) { - if (CPAN::Version->vgt($have,$rq)){ - $passes++; - } - next RQ; - } elsif ($rq =~ s|!=\s*||) { - if (CPAN::Version->vcmp($have,$rq)) { - $passes++; # didn't match - } - next RQ; - } elsif ($rq =~ s|<=\s*||) { - if (! CPAN::Version->vgt($have,$rq)){ - $passes++; - } - next RQ; - } elsif ($rq =~ s|<\s*||) { - if (CPAN::Version->vlt($have,$rq)){ - $passes++; - } - next RQ; - } - # if made it here, then it's a normal >= comparison - if (! CPAN::Version->vlt($have, $rq)){ - $passes++; - } - } - my $ok = $passes == @requirements ? 1 : 0; - print "$mod $ok $have\n" - } - return; -} - -1; - -__END__ - -#--------------------------------------------------------------------------# -# pod documentation -#--------------------------------------------------------------------------# - -=begin wikidoc - -= NAME - -CPAN::Reporter::PrereqCheck - Modulino for prerequisite tests - -= VERSION - -This documentation describes version %%VERSION%%. - -= SYNOPSIS - - require CPAN::Reporter::PrereqCheck; - my $prereq_check = $INC{'CPAN/Reporter/PrereqCheck.pm'}; - my $result = qx/$perl $prereq_check < $prereq_file/; - -= DESCRIPTION - -This modulino determines whether a list of prerequisite modules are -available and, if so, their version number. It is designed to be run -as a script in order to provide this information from the perspective of -a subprocess, just like CPAN::Reporter's invocation of {perl Makefile.PL} -and so on. - -It reads a module name and prerequisite string pair from each line of input -and prints out the module name, 0 or 1 depending on whether the prerequisite -is satisifed, and the installed module version. If the module is not -available, it will print "n/a" for the version. If the module is available -but can't be loaded, it will print "broken" for the version. Modules -without a version will be treated as being of version "0". - -No user serviceable parts are inside. This modulino is packaged for -internal use by CPAN::Reporter. - -= BUGS - -Please report any bugs or feature using the CPAN Request Tracker. -Bugs can be submitted through the web interface at -[http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Reporter] - -When submitting a bug or request, please include a test-file or a patch to an -existing test-file that illustrates the bug or desired feature. - -= SEE ALSO - -* [CPAN::Reporter] -- main documentation - -= AUTHOR - -David A. Golden (DAGOLDEN) - -= COPYRIGHT AND LICENSE - -Copyright (c) 2006, 2007 by David A. Golden - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at -[http://www.apache.org/licenses/LICENSE-2.0] - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -=end wikidoc - -=cut diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/PrereqCheck.pod b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/PrereqCheck.pod deleted file mode 100644 index 088507a60ac..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Reporter/PrereqCheck.pod +++ /dev/null @@ -1,75 +0,0 @@ -# Generated by Pod::WikiDoc version 0.18 - -=pod - -=head1 NAME - -CPAN::Reporter::PrereqCheck - Modulino for prerequisite tests - -=head1 VERSION - -This documentation describes version 1.13. - -=head1 SYNOPSIS - - require CPAN::Reporter::PrereqCheck; - my $prereq_check = $INC{'CPAN/Reporter/PrereqCheck.pm'}; - my $result = qx/$perl $prereq_check < $prereq_file/; - -=head1 DESCRIPTION - -This modulino determines whether a list of prerequisite modules are -available and, if so, their version number. It is designed to be run -as a script in order to provide this information from the perspective of -a subprocess, just like CPAN::Reporter's invocation of C<<< perl Makefile.PL >>> -and so on. - -It reads a module name and prerequisite string pair from each line of input -and prints out the module name, 0 or 1 depending on whether the prerequisite -is satisifed, and the installed module version. If the module is not -available, it will print "nE<sol>a" for the version. If the module is available -but can't be loaded, it will print "broken" for the version. Modules -without a version will be treated as being of version "0". - -No user serviceable parts are inside. This modulino is packaged for -internal use by CPAN::Reporter. - -=head1 BUGS - -Please report any bugs or feature using the CPAN Request Tracker. -Bugs can be submitted through the web interface at -L<http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Reporter> - -When submitting a bug or request, please include a test-file or a patch to an -existing test-file that illustrates the bug or desired feature. - -=head1 SEE ALSO - -=over - -=item * - -L<CPAN::Reporter> -- main documentation - -=back - -=head1 AUTHOR - -David A. Golden (DAGOLDEN) - -=head1 COPYRIGHT AND LICENSE - -Copyright (c) 2006, 2007 by David A. Golden - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at -L<http://www.apache.org/licenses/LICENSE-2.0> - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Tarzip.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Tarzip.pm deleted file mode 100644 index a9cad247271..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Tarzip.pm +++ /dev/null @@ -1,352 +0,0 @@ -# -*- Mode: cperl; coding: utf-8; cperl-indent-level: 4 -*- -package CPAN::Tarzip; -use strict; -use vars qw($VERSION @ISA $BUGHUNTING); -use CPAN::Debug; -use File::Basename (); -$VERSION = sprintf "%.6f", substr(q$Rev: 2213 $,4)/1000000 + 5.4; -# module is internal to CPAN.pm - -@ISA = qw(CPAN::Debug); -$BUGHUNTING ||= 0; # released code must have turned off - -# it's ok if file doesn't exist, it just matters if it is .gz or .bz2 -sub new { - my($class,$file) = @_; - $CPAN::Frontend->mydie("CPAN::Tarzip->new called without arg") unless defined $file; - if (0) { - # nonono, we get e.g. 01mailrc.txt uncompressed if only wget is available - $CPAN::Frontend->mydie("file[$file] doesn't match /\\.(bz2|gz|zip|tgz)\$/") - unless $file =~ /\.(bz2|gz|zip|tgz)$/i; - } - my $me = { FILE => $file }; - if (0) { - } elsif ($file =~ /\.bz2$/i) { - unless ($me->{UNGZIPPRG} = $CPAN::Config->{bzip2}) { - my $bzip2; - if ($CPAN::META->has_inst("File::Which")) { - $bzip2 = File::Which::which("bzip2"); - } - if ($bzip2) { - $me->{UNGZIPPRG} = $bzip2 || "bzip2"; - } else { - $CPAN::Frontend->mydie(qq{ -CPAN.pm needs the external program bzip2 in order to handle '$file'. -Please install it now and run 'o conf init' to register it as external -program. -}); - } - } - } else { - # yes, we let gzip figure it out in *any* other case - $me->{UNGZIPPRG} = $CPAN::Config->{gzip} || "gzip"; - } - bless $me, $class; -} - -sub gzip { - my($self,$read) = @_; - my $write = $self->{FILE}; - if ($CPAN::META->has_inst("Compress::Zlib")) { - my($buffer,$fhw); - $fhw = FileHandle->new($read) - or $CPAN::Frontend->mydie("Could not open $read: $!"); - my $cwd = `pwd`; - my $gz = Compress::Zlib::gzopen($write, "wb") - or $CPAN::Frontend->mydie("Cannot gzopen $write: $! (pwd is $cwd)\n"); - $gz->gzwrite($buffer) - while read($fhw,$buffer,4096) > 0 ; - $gz->gzclose() ; - $fhw->close; - return 1; - } else { - my $command = CPAN::HandleConfig->safe_quote($self->{UNGZIPPRG}); - system(qq{$command -c "$read" > "$write"})==0; - } -} - - -sub gunzip { - my($self,$write) = @_; - my $read = $self->{FILE}; - if ($CPAN::META->has_inst("Compress::Zlib")) { - my($buffer,$fhw); - $fhw = FileHandle->new(">$write") - or $CPAN::Frontend->mydie("Could not open >$write: $!"); - my $gz = Compress::Zlib::gzopen($read, "rb") - or $CPAN::Frontend->mydie("Cannot gzopen $read: $!\n"); - $fhw->print($buffer) - while $gz->gzread($buffer) > 0 ; - $CPAN::Frontend->mydie("Error reading from $read: $!\n") - if $gz->gzerror != Compress::Zlib::Z_STREAM_END(); - $gz->gzclose() ; - $fhw->close; - return 1; - } else { - my $command = CPAN::HandleConfig->safe_quote($self->{UNGZIPPRG}); - system(qq{$command -dc "$read" > "$write"})==0; - } -} - - -sub gtest { - my($self) = @_; - return $self->{GTEST} if exists $self->{GTEST}; - defined $self->{FILE} or $CPAN::Frontend->mydie("gtest called but no FILE specified"); - my $read = $self->{FILE}; - my $success; - # After I had reread the documentation in zlib.h, I discovered that - # uncompressed files do not lead to an gzerror (anymore?). - if ( $CPAN::META->has_inst("Compress::Zlib") ) { - my($buffer,$len); - $len = 0; - my $gz = Compress::Zlib::gzopen($read, "rb") - or $CPAN::Frontend->mydie(sprintf("Cannot gzopen %s: %s\n", - $read, - $Compress::Zlib::gzerrno)); - while ($gz->gzread($buffer) > 0 ) { - $len += length($buffer); - $buffer = ""; - } - my $err = $gz->gzerror; - $success = ! $err || $err == Compress::Zlib::Z_STREAM_END(); - if ($len == -s $read) { - $success = 0; - CPAN->debug("hit an uncompressed file") if $CPAN::DEBUG; - } - $gz->gzclose(); - CPAN->debug("err[$err]success[$success]") if $CPAN::DEBUG; - } else { - my $command = CPAN::HandleConfig->safe_quote($self->{UNGZIPPRG}); - $success = 0==system(qq{$command -qdt "$read"}); - } - return $self->{GTEST} = $success; -} - - -sub TIEHANDLE { - my($class,$file) = @_; - my $ret; - $class->debug("file[$file]"); - my $self = $class->new($file); - if (0) { - } elsif (!$self->gtest) { - my $fh = FileHandle->new($file) - or $CPAN::Frontend->mydie("Could not open file[$file]: $!"); - binmode $fh; - $self->{FH} = $fh; - $class->debug("via uncompressed FH"); - } elsif ($CPAN::META->has_inst("Compress::Zlib")) { - my $gz = Compress::Zlib::gzopen($file,"rb") or - $CPAN::Frontend->mydie("Could not gzopen $file"); - $self->{GZ} = $gz; - $class->debug("via Compress::Zlib"); - } else { - my $gzip = CPAN::HandleConfig->safe_quote($self->{UNGZIPPRG}); - my $pipe = "$gzip -dc $file |"; - my $fh = FileHandle->new($pipe) or $CPAN::Frontend->mydie("Could not pipe[$pipe]: $!"); - binmode $fh; - $self->{FH} = $fh; - $class->debug("via external gzip"); - } - $self; -} - - -sub READLINE { - my($self) = @_; - if (exists $self->{GZ}) { - my $gz = $self->{GZ}; - my($line,$bytesread); - $bytesread = $gz->gzreadline($line); - return undef if $bytesread <= 0; - return $line; - } else { - my $fh = $self->{FH}; - return scalar <$fh>; - } -} - - -sub READ { - my($self,$ref,$length,$offset) = @_; - $CPAN::Frontend->mydie("read with offset not implemented") if defined $offset; - if (exists $self->{GZ}) { - my $gz = $self->{GZ}; - my $byteread = $gz->gzread($$ref,$length);# 30eaf79e8b446ef52464b5422da328a8 - return $byteread; - } else { - my $fh = $self->{FH}; - return read($fh,$$ref,$length); - } -} - - -sub DESTROY { - my($self) = @_; - if (exists $self->{GZ}) { - my $gz = $self->{GZ}; - $gz->gzclose() if defined $gz; # hard to say if it is allowed - # to be undef ever. AK, 2000-09 - } else { - my $fh = $self->{FH}; - $fh->close if defined $fh; - } - undef $self; -} - - -sub untar { - my($self) = @_; - my $file = $self->{FILE}; - my($prefer) = 0; - - if (0) { # makes changing order easier - } elsif ($BUGHUNTING) { - $prefer=2; - } elsif (MM->maybe_command($self->{UNGZIPPRG}) - && - MM->maybe_command($CPAN::Config->{tar})) { - # should be default until Archive::Tar handles bzip2 - $prefer = 1; - } elsif ( - $CPAN::META->has_usable("Archive::Tar") - && - $CPAN::META->has_inst("Compress::Zlib") ) { - $prefer = 2; - } else { - $CPAN::Frontend->mydie(qq{ -CPAN.pm needs either the external programs tar, gzip and bzip2 -installed. Can't continue. -}); - } - my $tar_verb = "v"; - if (defined $CPAN::Config->{tar_verbosity}) { - $tar_verb = $CPAN::Config->{tar_verbosity} eq "none" ? "" : - $CPAN::Config->{tar_verbosity}; - } - if ($prefer==1) { # 1 => external gzip+tar - my($system); - my $is_compressed = $self->gtest(); - my $tarcommand = CPAN::HandleConfig->safe_quote($CPAN::Config->{tar}) || "tar"; - if ($is_compressed) { - my $command = CPAN::HandleConfig->safe_quote($self->{UNGZIPPRG}); - $system = qq{$command -dc }. - qq{< "$file" | $tarcommand x${tar_verb}f -}; - } else { - $system = qq{$tarcommand x${tar_verb}f "$file"}; - } - if (system($system) != 0) { - # people find the most curious tar binaries that cannot handle - # pipes - if ($is_compressed) { - (my $ungzf = $file) =~ s/\.gz(?!\n)\Z//; - $ungzf = File::Basename::basename($ungzf); - my $ct = CPAN::Tarzip->new($file); - if ($ct->gunzip($ungzf)) { - $CPAN::Frontend->myprint(qq{Uncompressed $file successfully\n}); - } else { - $CPAN::Frontend->mydie(qq{Couldn\'t uncompress $file\n}); - } - $file = $ungzf; - } - $system = qq{$tarcommand x${tar_verb}f "$file"}; - $CPAN::Frontend->myprint(qq{Using Tar:$system:\n}); - if (system($system)==0) { - $CPAN::Frontend->myprint(qq{Untarred $file successfully\n}); - } else { - $CPAN::Frontend->mydie(qq{Couldn\'t untar $file\n}); - } - return 1; - } else { - return 1; - } - } elsif ($prefer==2) { # 2 => modules - unless ($CPAN::META->has_usable("Archive::Tar")) { - $CPAN::Frontend->mydie("Archive::Tar not installed, please install it to continue"); - } - my $tar = Archive::Tar->new($file,1); - my $af; # archive file - my @af; - if ($BUGHUNTING) { - # RCS 1.337 had this code, it turned out unacceptable slow but - # it revealed a bug in Archive::Tar. Code is only here to hunt - # the bug again. It should never be enabled in published code. - # GDGraph3d-0.53 was an interesting case according to Larry - # Virden. - warn(">>>Bughunting code enabled<<< " x 20); - for $af ($tar->list_files) { - if ($af =~ m!^(/|\.\./)!) { - $CPAN::Frontend->mydie("ALERT: Archive contains ". - "illegal member [$af]"); - } - $CPAN::Frontend->myprint("$af\n"); - $tar->extract($af); # slow but effective for finding the bug - return if $CPAN::Signal; - } - } else { - for $af ($tar->list_files) { - if ($af =~ m!^(/|\.\./)!) { - $CPAN::Frontend->mydie("ALERT: Archive contains ". - "illegal member [$af]"); - } - if ($tar_verb eq "v" || $tar_verb eq "vv") { - $CPAN::Frontend->myprint("$af\n"); - } - push @af, $af; - return if $CPAN::Signal; - } - $tar->extract(@af) or - $CPAN::Frontend->mydie("Could not untar with Archive::Tar."); - } - - Mac::BuildTools::convert_files([$tar->list_files], 1) - if ($^O eq 'MacOS'); - - return 1; - } -} - -sub unzip { - my($self) = @_; - my $file = $self->{FILE}; - if ($CPAN::META->has_inst("Archive::Zip")) { - # blueprint of the code from Archive::Zip::Tree::extractTree(); - my $zip = Archive::Zip->new(); - my $status; - $status = $zip->read($file); - $CPAN::Frontend->mydie("Read of file[$file] failed\n") - if $status != Archive::Zip::AZ_OK(); - $CPAN::META->debug("Successfully read file[$file]") if $CPAN::DEBUG; - my @members = $zip->members(); - for my $member ( @members ) { - my $af = $member->fileName(); - if ($af =~ m!^(/|\.\./)!) { - $CPAN::Frontend->mydie("ALERT: Archive contains ". - "illegal member [$af]"); - } - $status = $member->extractToFileNamed( $af ); - $CPAN::META->debug("af[$af]status[$status]") if $CPAN::DEBUG; - $CPAN::Frontend->mydie("Extracting of file[$af] from zipfile[$file] failed\n") if - $status != Archive::Zip::AZ_OK(); - return if $CPAN::Signal; - } - return 1; - } else { - my $unzip = $CPAN::Config->{unzip} or - $CPAN::Frontend->mydie("Cannot unzip, no unzip program available"); - my @system = ($unzip, $file); - return system(@system) == 0; - } -} - -1; - -__END__ - -=head1 LICENSE - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=cut diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Version.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Version.pm deleted file mode 100644 index da876aac2d7..00000000000 --- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/CPAN/Version.pm +++ /dev/null @@ -1,173 +0,0 @@ -package CPAN::Version; - -use strict; -use vars qw($VERSION); -$VERSION = "5.5"; - -# CPAN::Version::vcmp courtesy Jost Krieger -sub vcmp { - my($self,$l,$r) = @_; - local($^W) = 0; - CPAN->debug("l[$l] r[$r]") if $CPAN::DEBUG; - - return 0 if $l eq $r; # short circuit for quicker success - - for ($l,$r) { - s/_//g; - } - CPAN->debug("l[$l] r[$r]") if $CPAN::DEBUG; - for ($l,$r) { - next unless tr/.// > 1 || /^v/; - s/^v?/v/; - 1 while s/\.0+(\d)/.$1/; # remove leading zeroes per group - } - CPAN->debug("l[$l] r[$r]") if $CPAN::DEBUG; - if ($l=~/^v/ <=> $r=~/^v/) { - for ($l,$r) { - next if /^v/; - $_ = $self->float2vv($_); - } - } - CPAN->debug("l[$l] r[$r]") if $CPAN::DEBUG; - my $lvstring = "v0"; - my $rvstring = "v0"; - if ($] >= 5.006 - && $l =~ /^v/ - && $r =~ /^v/) { - $lvstring = $self->vstring($l); - $rvstring = $self->vstring($r); - CPAN->debug(sprintf "lv[%vd] rv[%vd]", $lvstring, $rvstring) if $CPAN::DEBUG; - } - - return ( - ($l ne "undef") <=> ($r ne "undef") - || - $lvstring cmp $rvstring - || - $l <=> $r - || - $l cmp $r - ); -} - -sub vgt { - my($self,$l,$r) = @_; - $self->vcmp($l,$r) > 0; -} - -sub vlt { - my($self,$l,$r) = @_; - 0 + ($self->vcmp($l,$r) < 0); -} - -sub vge { - my($self,$l,$r) = @_; - $self->vcmp($l,$r) >= 0; -} - -sub vle { - my($self,$l,$r) = @_; - 0 + ($self->vcmp($l,$r) <= 0); -} - -sub vstring { - my($self,$n) = @_; - $n =~ s/^v// or die "CPAN::Version::vstring() called with invalid arg [$n]"; - pack "U*", split /\./, $n; -} - -# vv => visible vstring -sub float2vv { - my($self,$n) = @_; - my($rev) = int($n); - $rev ||= 0; - my($mantissa) = $n =~ /\.(\d{1,12})/; # limit to 12 digits to limit - # architecture influence - $mantissa ||= 0; - $mantissa .= "0" while length($mantissa)%3; - my $ret = "v" . $rev; - while ($mantissa) { - $mantissa =~ s/(\d{1,3})// or - die "Panic: length>0 but not a digit? mantissa[$mantissa]"; - $ret .= ".".int($1); - } - # warn "n[$n]ret[$ret]"; - $ret =~ s/(\.0)+/.0/; # v1.0.0 => v1.0 - $ret; -} - -sub readable { - my($self,$n) = @_; - $n =~ /^([\w\-\+\.]+)/; - - return $1 if defined $1 && length($1)>0; - # if the first user reaches version v43, he will be treated as "+". - # We'll have to decide about a new rule here then, depending on what - # will be the prevailing versioning behavior then. - - if ($] < 5.006) { # or whenever v-strings were introduced - # we get them wrong anyway, whatever we do, because 5.005 will - # have already interpreted 0.2.4 to be "0.24". So even if he - # indexer sends us something like "v0.2.4" we compare wrongly. - - # And if they say v1.2, then the old perl takes it as "v12" - - if (defined $CPAN::Frontend) { - $CPAN::Frontend->mywarn("Suspicious version string seen [$n]\n"); - } else { - warn("Suspicious version string seen [$n]\n"); - } - return $n; - } - my $better = sprintf "v%vd", $n; - CPAN->debug("n[$n] better[$better]") if $CPAN::DEBUG; - return $better; -} - -1; - -__END__ - -=head1 NAME - -CPAN::Version - utility functions to compare CPAN versions - -=head1 SYNOPSIS - - use CPAN::Version; - - CPAN::Version->vgt("1.1","1.1.1"); # 1 bc. 1.1 > 1.001001 - - CPAN::Version->vlt("1.1","1.1"); # 0 bc. 1.1 not < 1.1 - - CPAN::Version->vcmp("1.1","1.1.1"); # 1 bc. first is larger - - CPAN::Version->vcmp("1.1.1","1.1"); # -1 bc. first is smaller - - CPAN::Version->readable(v1.2.3); # "v1.2.3" - - CPAN::Version->vstring("v1.2.3"); # v1.2.3 - - CPAN::Version->float2vv(1.002003); # "v1.2.3" - -=head1 DESCRIPTION - -This module mediates between some version that perl sees in a package -and the version that is published by the CPAN indexer. - -It's only written as a helper module for both CPAN.pm and CPANPLUS.pm. - -As it stands it predates version.pm but has the same goal: make -version strings visible and comparable. - -=head1 LICENSE - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=cut - -# Local Variables: -# mode: cperl -# cperl-indent-level: 4 -# End: |