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 )