RPM-Specfile
view release on metacpan or search on metacpan
cpanflute2-old view on Meta::CPAN
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.
my $build_arch;
if($options{'arch'}) {
$build_arch = $options{'arch'};
}
elsif($options{'noarch'}) {
$build_arch = 'noarch';
}
else {
$build_arch = get_default_build_arch();
if($build_arch eq '') {
print STDERR "Could not get default build arch!\n";
exit(1);
}
}
$build_switch = 'a' if(defined($options{'buildall'}));
$tarball =~ /^(.+)\-([^-]+)\.t(ar\.)?gz$/;
my $name = $options{name} || $1;
my $ver = $options{version} || $2;
my $tarball_top_dir = "$name-%{version}";
die "Module name/version not parsable from $tarball" unless $name and $ver;
$name =~ s/::/-/g;
copy($fullname, $tmpdir)
or die "copy $fullname: $!";
utime((stat($fullname))[8,9], "$tmpdir/$tarball");
if (my @files = Archive::Tar->list_archive("$tmpdir/$tarball")) {
$use_module_build = 1 if grep { /Build\.PL$/ } @files;
if (not exists $options{noarch}) {
$noarch = 1;
$noarch = 0 if grep { /\.(xs|c|cc|C)$/ } @files;
}
my %prefixes;
foreach (@files) {
my @path_components = split m[/], $_;
$prefixes{$path_components[0]}++;
# find docs
if (m,^${name}-${ver}/(
authors?|
change(log|s)|
credits|
copy(ing|right)|
licen[cs]e|
readme|
todo
)$,ix) {
push(@docs, $1);
}
}
if (scalar keys %prefixes == 1) {
($tarball_top_dir) = keys %prefixes;
$tarball_top_dir =~ s/$ver/%{version}/;
}
}
#
# Get patches copied into place
my $patchfile = '';
my @patchfiles = ();
my $patch = '';
if ($options{patch}) {
for $patch (@{$options{'patch'}}) {
copy($patch, $tmpdir) or die "copy ${patch}: $!";
utime((stat($options{patch}))[8,9],
"$tmpdir/" . basename($options{patch}));
push @patchfiles, (basename($patch));
}
}
#
# Copy install scriptlets if defined to the tmp directory
foreach my $scriptlet (qw(pre post preun postun)) {
if(defined($options{$scriptlet})) {
copy($options{$scriptlet}, $tmpdir)
or die "copy ${options{${scriptlet}}}: $!";
my ($atime, $mtime) = (stat($options{$scriptlet}))[8,9];
$options{$scriptlet} = "${tmpdir}/" . basename($options{$scriptlet});
utime($atime, $mtime, $options{$scriptlet});
}
}
my $spec = new RPM::Specfile;
# perlver. turning perl versions into happy rpm epochs. also used to
# determine INSTALLDIRS strategy
my $perlver = $defaults{'perlver'};
if ($options{perlver}) {
if ($options{perlver} eq '5.6.1') {
$perlver = "1:5.6.1";
}
elsif ($options{perlver} eq '5.8.0') {
$perlver = "2:5.8.0";
( run in 0.862 second using v1.01-cache-2.11-cpan-71847e10f99 )