CPAN-Packager
view release on metacpan or search on metacpan
lib/CPAN/Packager/Builder/RPM/Spec.pm view on Meta::CPAN
package CPAN::Packager::Builder::RPM::Spec;
# stealed from cpanflute2 because cpanflute2 isn't updated all recently.
# so I just copied it and patched.
# cpanflute2 code looks ugly, so we need to refactor it later.
use Mouse;
use File::Basename;
use File::Copy qw(copy);
use Archive::Tar;
use File::Temp qw(tempdir);
use URI::Escape qw(uri_escape);
use Cwd;
use YAML;
use RPM::Specfile;
sub build {
my ( $self, $args, $fullname ) = @_;
# Setup some defaults
my %defaults;
my $orig_cmd = join( " ", $0, $fullname );
$defaults{'outdir'} = './';
$defaults{'tmpdir'} = '/tmp';
$defaults{'release'} = '8';
$defaults{'installdirs'} = "";
{
my ( $username, $fullname ) = ( getpwuid($<) )[ 0, 6 ];
$fullname = ( split /,/, $fullname )[0];
$defaults{'email'} = $fullname ? $fullname . ' ' : '';
$defaults{'email'} .= '<';
$defaults{'email'} .= $ENV{REPLYTO} || $username . '@redhat.com';
$defaults{'email'} .= '>';
}
# Parse command line options
my %options = %$args;
my $content;
my @requires = @{ $options{'requires'} || [] };
my @build_requires = @{ $options{'build-requires'} || [] };
if ( $options{'just-spec'} and $options{'buildall'} ) {
print "Error: just-spec and build cannot both be specified.\n";
exit(1);
}
#
# Make sure filename was provided
die 'file name must be provided' unless $fullname;
#
# If we were given a description file, make sure it exists
if ( $options{'descfile'} ) {
if ( !-e $options{'descfile'} ) {
print STDERR "Description file given does not exist!\n";
print STDERR "File: ${options{'descfile'}}\n";
exit(1);
}
if ( !-r $options{'descfile'} ) {
print STDERR "Description file given is not readable!\n";
print STDERR "File: ${options{'descfile'}}\n";
exit(1);
}
}
#
# Overide defaults if necessary, otherwise keep them.
my $tarball = basename($fullname);
my $create = $options{create} || '';
my $email = $options{email} || $defaults{'email'};
my $requires = $options{requires} || [];
my $buildrequires = $options{buildrequires} || [];
my $outdir = $options{outdir} || $defaults{'outdir'};
my $tmpdir = $options{tmpdir} || $defaults{'tmpdir'};
my $noarch = $options{noarch} || '';
my $plat_perl_reqs = $options{'noperlreqs'} ? 0 : 1;
my $release = $options{'release'} || $defaults{'release'};
my $build_switch = 's';
my $use_module_build = 0;
my @docs = ();
$tmpdir = tempdir( CLEANUP => 1, DIR => $tmpdir );
#
# Set build arch - this is needed to find out where
# the binary rpm was placed, and copy it back to the
# current working directory.
( run in 2.620 seconds using v1.01-cache-2.11-cpan-c221a9de4ec )