From c64d5c4846f0f33087fb3d734a8d01588d904dbd Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Wed, 12 Aug 2009 13:05:26 +0000 Subject: Bug 507493: checksetup.pl's output should use colors for missing and too old Perl modules - Patch by Frédéric Buclin r/a=mkanat MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bugzilla/Install/Requirements.pm | 15 ++++++++++----- Bugzilla/Install/Util.pm | 10 ++++++++++ checksetup.pl | 4 ++-- template/en/default/setup/strings.txt.pl | 1 + 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/Bugzilla/Install/Requirements.pm b/Bugzilla/Install/Requirements.pm index 2b496fc2c..0d013f62f 100644 --- a/Bugzilla/Install/Requirements.pm +++ b/Bugzilla/Install/Requirements.pm @@ -29,6 +29,7 @@ use Bugzilla::Constants; use Bugzilla::Install::Util qw(vers_cmp install_string); use List::Util qw(max); use Safe; +use Term::ANSIColor; use base qw(Exporter); our @EXPORT = qw( @@ -429,8 +430,8 @@ sub print_module_instructions { if (vers_cmp($perl_ver, '5.10') > -1) { $url_to_theory58S = 'http://cpan.uwinnipeg.ca/PPMPackages/10xx/'; } - print install_string('ppm_repo_add', - { theory_url => $url_to_theory58S }); + print colored(install_string('ppm_repo_add', + { theory_url => $url_to_theory58S }), 'red'); # ActivePerls older than revision 819 require an additional command. if (_get_activestate_build_id() < 819) { print install_string('ppm_repo_up'); @@ -463,7 +464,7 @@ sub print_module_instructions { } if (my @missing = @{$check_results->{missing}}) { - print install_string('commands_required') . "\n"; + print colored(install_string('commands_required'), 'red') . "\n"; foreach my $package (@missing) { my $command = install_command($package); print " $command\n"; @@ -473,6 +474,9 @@ sub print_module_instructions { if ($output && $check_results->{any_missing} && !ON_WINDOWS) { print install_string('install_all', { perl => $^X }); } + if (!$check_results->{pass}) { + print colored(install_string('installation_failed'), 'red') . "\n\n"; + } } sub _translate_feature { @@ -562,8 +566,9 @@ sub have_vers { my $want_string = $wanted ? "v$wanted" : install_string('any'); $ok = "$ok:" if $ok; - printf "%s %19s %-9s $ok $vstr $black_string\n", - install_string('checking_for'), $package, "($want_string)"; + my $str = sprintf "%s %19s %-9s $ok $vstr $black_string\n", + install_string('checking_for'), $package, "($want_string)"; + print $vok ? $str : colored($str, 'red'); } return $vok ? 1 : 0; diff --git a/Bugzilla/Install/Util.pm b/Bugzilla/Install/Util.pm index 35a855e8d..e53164d25 100644 --- a/Bugzilla/Install/Util.pm +++ b/Bugzilla/Install/Util.pm @@ -43,6 +43,7 @@ our @EXPORT_OK = qw( template_include_path vers_cmp get_console_locale + init_console ); sub bin_loc { @@ -332,6 +333,11 @@ sub get_console_locale { return $locale; } +sub init_console { + eval { ON_WINDOWS && require Win32::Console::ANSI; }; + $ENV{'ANSI_COLORS_DISABLED'} = 1 if ($@ || !-t *STDOUT); + $ENV{'HTTP_ACCEPT_LANGUAGE'} ||= get_console_locale(); +} # This is like request_cache, but it's used only by installation code # for setup.cgi and things like that. @@ -395,6 +401,10 @@ running, what perl version we're using, and what OS we're running on. Returns the language to use based on the LC_CTYPE value returned by the OS. If LC_CTYPE is of the form fr-CH, then fr is appended to the list. +=item C + +Sets the C and C environment variables. + =item C =over diff --git a/checksetup.pl b/checksetup.pl index 0f410ed7d..d3e3f7952 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -53,7 +53,7 @@ BEGIN { chdir dirname($0); } use lib qw(. lib); use Bugzilla::Constants; use Bugzilla::Install::Requirements; -use Bugzilla::Install::Util qw(install_string get_version_and_os get_console_locale); +use Bugzilla::Install::Util qw(install_string get_version_and_os init_console); ###################################################################### # Live Code @@ -61,7 +61,7 @@ use Bugzilla::Install::Util qw(install_string get_version_and_os get_console_loc # When we're running at the command line, we need to pick the right # language before ever displaying any string. -$ENV{'HTTP_ACCEPT_LANGUAGE'} ||= get_console_locale(); +init_console(); my %switch; GetOptions(\%switch, 'help|h|?', 'check-modules', 'no-templates|t', diff --git a/template/en/default/setup/strings.txt.pl b/template/en/default/setup/strings.txt.pl index 3b75b73b3..c46bceabb 100644 --- a/template/en/default/setup/strings.txt.pl +++ b/template/en/default/setup/strings.txt.pl @@ -79,6 +79,7 @@ then the value of the ##column## column that needs to be fixed: EOT install_module => 'Installing ##module## version ##version##...', + installation_failed => '*** Installation aborted. Read the messages above. ***', max_allowed_packet => <