CPAN-Packager
view release on metacpan or search on metacpan
lib/CPAN/Packager/Builder/RPM/Spec.pm view on Meta::CPAN
if ( $options{test} ) {
$spec->check("make test");
}
my $installdirs = "";
if ( $options{'installdirs'} ) {
# perl 5.8 explicitly supports the INSTALLDIRS option. in previous
# perls, it was a vendor added option. Red Hat and Debian provide
# this for their perl 5.6.1, but the syntax for 5.8.0 is different,
# at least in the Red Hat case
$installdirs = "INSTALLDIRS=$options{'installdirs'}";
}
my $makefile_pl
= qq{CFLAGS="\$RPM_OPT_FLAGS" %{__perl} Makefile.PL < /dev/null};
my $make_install
= qq{make pure_install PERL_INSTALL_ROOT=\$RPM_BUILD_ROOT};
my $make;
if ($use_module_build) {
$makefile_pl
= qq{CFLAGS="\$RPM_OPT_FLAGS" %{__perl} Build.PL destdir=\$RPM_BUILD_ROOT $installdirs < /dev/null};
$make_install
= qq{./Build pure_install PERL_INSTALL_ROOT=\$RPM_BUILD_ROOT};
$make = "./Build %{?_smp_mflags} OPTIMIZE=\"\$RPM_OPT_FLAGS\"";
}
else {
$makefile_pl
= qq{CFLAGS="\$RPM_OPT_FLAGS" %{__perl} Makefile.PL $installdirs};
$make = "make %{?_smp_mflags} OPTIMIZE=\"\$RPM_OPT_FLAGS\"";
}
$spec->build(<<EOB);
$makefile_pl
$make
EOB
$spec->clean('rm -rf $RPM_BUILD_ROOT');
my $usr_local_sect = "";
if ( $options{'use-usr-local'} ) {
$usr_local_sect = q{
for dir in bin share/doc share/man; do
if [ -d $RPM_BUILD_ROOT/usr/$dir ]; then
mkdir -p $RPM_BUILD_ROOT/usr/local/$dir
mv $RPM_BUILD_ROOT/usr/$dir/* $RPM_BUILD_ROOT/usr/local/$dir/
rm -Rf $RPM_BUILD_ROOT/usr/$dir
fi
done
}
}
my $inst = q{
rm -rf $RPM_BUILD_ROOT
$make_install
find $RPM_BUILD_ROOT -type f -a \( -name perllocal.pod -o -name .packlist \
-o \( -name '*.bs' -a -empty \) \) -exec rm -f {} ';'
find $RPM_BUILD_ROOT -type d -depth -exec rmdir {} 2>/dev/null ';'
chmod -R u+w $RPM_BUILD_ROOT/*
for brp in %{_prefix}/lib/rpm/%{_build_vendor}/brp-compress \
%{_prefix}/lib/rpm/brp-compress
do
[ -x $brp ] && $brp && break
done
$usr_local_sect
find $RPM_BUILD_ROOT -type f \
| sed "s@^$RPM_BUILD_ROOT@@g" \
> %{name}-%{version}-%{release}-filelist
eval `%{__perl} -V:archname -V:installsitelib -V:installvendorlib -V:installprivlib`
for d in $installsitelib $installvendorlib $installprivlib; do
[ -z "$d" -o "$d" = "UNKNOWN" -o ! -d "$RPM_BUILD_ROOT$d" ] && continue
find $RPM_BUILD_ROOT$d/* -type d \
| grep -v "/$archname\(/auto\)\?$" \
| sed "s@^$RPM_BUILD_ROOT@%dir @g" \
>> %{name}-%{version}-%{release}-filelist
done
if [ "$(cat %{name}-%{version}-%{release}-filelist)X" = "X" ] ; then
echo "ERROR: EMPTY FILE LIST"
exit 1
fi
};
$inst =~ s/\$make_install/$make_install/g;
$inst =~ s/\$usr_local_sect/$usr_local_sect/g;
$inst =~ s/\$options{'?(.*?)'?}/$options{$1} || ''/ge;
$spec->install($inst);
#
# Add the install scriptlets if defined...
foreach my $scriptlet (qw(pre post preun postun)) {
if ( defined( $options{$scriptlet} ) ) {
open( SCRIPTLET, "<${options{${scriptlet}}}" ) ## no critic
|| die
"Could not open scriptlet ${options{${scriptlet}}} for reading!";
local $/; # enable slurp mode.
$content = <SCRIPTLET>;
close(SCRIPTLET);
$spec->$scriptlet($content);
}
}
if ( $options{'just-spec'} ) {
return $spec->generate_specfile;
}
# write the spec file. create some macros.
$spec->write_specfile("$tmpdir/perl-$name.spec");
open FH, ">$tmpdir/macros" ## no critic
or die "Can't create $tmpdir/macros: $!";
print FH qq{
%_topdir $tmpdir
%_builddir %{_topdir}
( run in 2.117 seconds using v1.01-cache-2.11-cpan-5b529ec07f3 )