Commit cabe5381 authored by Max Kanat-Alexander's avatar Max Kanat-Alexander

Bug 648178: Make install-module.pl check if a compiler is available

and fail with a clear error if not. r=glob, a=mkanat
parent f0129cf8
......@@ -33,6 +33,7 @@ use Bugzilla::Constants;
use Bugzilla::Install::Requirements qw(have_vers);
use Bugzilla::Install::Util qw(bin_loc install_string);
use Config;
use CPAN;
use Cwd qw(abs_path);
use File::Path qw(rmtree);
......@@ -102,6 +103,8 @@ use constant CPAN_DEFAULTS => {
sub check_cpan_requirements {
my ($original_dir, $original_args) = @_;
_require_compiler();
my @install;
foreach my $module (REQUIREMENTS) {
my $installed = have_vers($module, 1);
......@@ -122,6 +125,26 @@ sub check_cpan_requirements {
}
}
sub _require_compiler {
my @errors;
my $cc_name = $Config{cc};
my $cc_exists = bin_loc($cc_name);
if (!$cc_exists) {
push(@errors, install_string('install_no_compiler'));
}
my $make_name = $CPAN::Config->{make};
my $make_exists = bin_loc($make_name);
if (!$make_exists) {
push(@errors, install_string('install_no_make'));
}
die @errors if @errors;
}
sub install_module {
my ($name, $test) = @_;
my $bzlib = BZ_LIB;
......
......@@ -58,8 +58,14 @@ our @EXPORT_OK = qw(
sub bin_loc {
my ($bin, $path) = @_;
# If the binary is a full path...
if ($bin =~ m{[/\\]}) {
return MM->maybe_command($bin) || '';
}
# Otherwise we look for it in the path in a cross-platform way.
my @path = $path ? @$path : File::Spec->path;
foreach my $dir (@path) {
next if !-d $dir;
my $full_path = File::Spec->catfile($dir, $bin);
......
......@@ -131,6 +131,13 @@ 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. ***',
install_no_compiler => <<END,
ERROR: Using install-module.pl requires that you install a compiler, such as
gcc.
END
install_no_make => <<END,
ERROR: Using install-module.pl requires that you install "make".
END
lc_new_vars => <<'END',
This version of Bugzilla contains some variables that you may want to
change and adapt to your local settings. Please edit the file
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment