App-CPANtoRPM
view release on metacpan or search on metacpan
lib/App/CPANtoRPM.pm view on Meta::CPAN
$self->_log_message('INFO',"Using CPANPLUS");
my $err = $self->_load_module("CPANPLUS::Backend");
if (! $err) {
my $cb = CPANPLUS::Backend->new;
my @mods = $cb->search ( type => 'module',
allow => [ qr/^$package$/ ] );
if (@mods == 0) {
$self->_log_message('ERR',
"CPANPLUS: Module not found: $package");
} elsif (@mods > 1) {
$self->_log_message('ERR',
"CPANPLUS: Multiple versions exist: $package");
}
my $mod = $mods[0];
if (! $mod->{'package'} ||
! $mod->{'path'}) {
$self->_log_message('ERR',"CPANPLUS: Metadata incomplete: $package");
}
my($valid,$dir,$dist,$vers,$archive,$ext,$filetype) =
$self->_is_archive($mod->{'package'});
if (! $valid) {
$self->_log_message
('ERR',
"CPANPLUS: Metadata invalid (package): $package");
}
$package{'DIR'} = "$TMPDIR/$dir";
$package{'dir'} = $dir;
$package{'dist'} = $dist;
$package{'vers'} = $vers;
$package{'archive'} = $archive;
$package{'ext'} = $ext;
$package{'filetype'} = $filetype;
$package{'cpandir'} = $mod->{'path'};
my $succ = $mod->fetch( module => $mod,
fetchdir => "$TMPDIR" );
if (! $succ || ! -f "$TMPDIR/$archive") {
$self->_log_message('ERR',
"CPANPLUS: Unable to fetch module: $package");
}
last CPAN;
}
}
#
# Use CPAN to get the module.
#
$self->_log_message('INFO',"Using CPAN");
my $err = $self->_load_module("CPAN::Shell");
$err = $self->_load_module("CPAN") if (! $err);
if (! $err) {
my $mod = CPAN::Shell->expand('Module', $package);
if (! $mod) {
$self->_log_message('ERR',"CPAN: Module not found: $package");
}
$mod = $mod->{'RO'} if ($mod->{'RO'});
if (! $mod->{'CPAN_FILE'}) {
$self->_log_message('ERR',"CPAN: Metadata incomplete: $package");
}
my $cpan_file = $mod->{'CPAN_FILE'};
$cpan_file =~ m,(.*)/(.*),;
my($cpandir,$file) = ($1,$2);
my($valid,$dir,$dist,$vers,$archive,$ext,$filetype) =
$self->_is_archive($file);
if (! $valid) {
$self->_log_message('ERR',"CPAN: Metadata invalid (package): $package");
}
$package{'DIR'} = "$TMPDIR/$dir";
$package{'dir'} = $dir;
$package{'dist'} = $dist;
$package{'vers'} = $vers;
$package{'archive'} = $archive;
$package{'ext'} = $ext;
$package{'filetype'} = $filetype;
$package{'cpandir'} = $cpandir;
CPAN::get($cpan_file);
if (! $CPAN::Config->{'keep_source_where'}) {
$self->_log_message('ERR',
"CPAN: Unable to determine source dir: $package");
}
my $srcdir = $CPAN::Config->{'keep_source_where'} . "/authors/id";
if (! -f "$srcdir/$cpandir/$archive") {
$self->_log_message('ERR',"CPAN: Unable to fetch module: $package");
}
# Copy the file into the main directory.
$self->_log_message('INFO',"Copying file");
my $succ = $self->_multiple_methods
( [ sub { -f "$TMPDIR/$archive" } ],
['module','File::Copy',['copy'],
"copy('$srcdir/$cpandir/$archive','$TMPDIR')" ],
['system','cp',
"{cp} '$srcdir/$cpandir/$archive' '$TMPDIR'"],
);
if (! $succ) {
$self->_log_message('ERR',"Unable to copy file: $package");
}
last CPAN;
( run in 2.562 seconds using v1.01-cache-2.11-cpan-97f6503c9c8 )