1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
#line 1
package Module::Install::PRIVATE::Configure_Programs;
use strict;
use warnings;
use lib 'inc';
use Module::Install::GetProgramLocations;
use vars qw( @ISA $VERSION );
use Module::Install::Base;
@ISA = qw( Module::Install::Base );
$VERSION = sprintf "%d.%02d%02d", q/0.1.0/ =~ /(\d+)/g;
# ---------------------------------------------------------------------------
sub configure_programs {
my ($self, @args) = @_;
$self->include('Module::Install::GetProgramLocations', 0);
$self->include_deps('File::Slurper', 0);
require File::Slurper;
File::Slurper->import('read_binary', 'write_binary');
my %info = (
'cat' => { default => 'cat', argname => 'CAT' },
'diff' => { default => 'diff', argname => 'DIFF' },
'grep' => { default => 'grep', argname => 'GREP',
types => {
'GNU' => { fetch => \&get_gnu_version,
numbers => '[2.1,)', },
},
},
'lzip' => { default => 'lzip', argname => 'LZIP',
types => {
'GNU' => { fetch => \&get_gnu_version,
numbers => '[1.3,)', },
},
},
'xz' => { default => 'xz', argname => 'XZ' },
'gzip' => { default => 'gzip', argname => 'GZIP' },
'bzip' => { default => 'bzip2', argname => 'BZIP',
types => {
'bzip2' => { fetch => \&get_bzip2_version,
numbers => '[1.0,)', },
},
},
'bzip2' => { default => 'bzip2', argname => 'BZIP2',
types => {
'bzip2' => { fetch => \&get_bzip2_version,
numbers => '[1.0,)', },
},
},
);
# XXX: disable grep support by pretending like the user doesn't have grep
# installed
delete $info{'grep'};
my %locations = $self->get_program_locations(\%info);
# XXX: pretend we didn't find grep
$locations{'grep'} = {
'version' => undef, 'type' => undef, 'path' => undef
};
Update_Config('lib/Mail/Mbox/MessageParser/Config.pm', \%locations);
Update_Config('old/Mail/Mbox/MessageParser/Config.pm', \%locations)
if -e 'old/Mail/Mbox/MessageParser.pm';
return \%locations;
}
# --------------------------------------------------------------------------
sub Update_Config
{
my $filename = shift;
my %locations = %{ shift @_ };
my $code = read_binary($filename);
foreach my $program (keys %locations)
{
if (defined $locations{$program}{'path'})
{
$locations{$program}{'path'} = "\'$locations{$program}{'path'}\'";
}
else
{
$locations{$program}{'path'} = "undef";
}
}
if ($code =~ /'programs'\s*=>\s*{\s*?\n([^}]+?) *}/s)
{
my $original_programs = $1;
my $new_programs = '';
foreach my $program (sort keys %locations)
{
$new_programs .= " '$program' => $locations{$program}{'path'},\n";
}
$code =~ s/\Q$original_programs\E/$new_programs/;
}
else
{
die "Couldn't find programs hash in $filename";
}
write_binary($filename, $code);
}
|