App-CPANtoRPM
view release on metacpan or search on metacpan
lib/App/CPANtoRPM.pm view on Meta::CPAN
# Handle the prefix and get various file names.
#
$package{'prefix'} = $$self{'prefix'};
my $pkgname = $$self{'prefix'} . $package{'name'};
$package{'rpmname'} = $pkgname;
$package{'specname'} = "$pkgname.spec";
#
# Check the requires/provides for this package.
#
$self->_provides();
$self->_requires('instfiles');
#
# Now clean up the directory.
#
system("cd $package{DIR}; $package{clean_cmd}");
}
# Get a list of all of the files in the package. We'll ignore directories.
# It will return a hash:
# { LC_FILE => { FILE => 1 } }
# where LC_FILE is a file (all lowercased) and FILE is the same file (or files)
# in the case they actually exist. All FILE and LC_FILE are the paths
# relative to the top directory in the package.
#
# {
# manifest => { MANIFEST => 1 }
# t/readme => { t/README => 1,
# t/Readme => 1 }
# }
#
sub _get_filelist {
my($self,$dir) = @_;
$self->_log_message('INFO',"Listing package files");
my $succ = $self->_multiple_methods
( [ sub { 1; } ],
[ 'module','File::Find',['find'],
qq< find(sub { push(\@OUTPUT,\$File::Find::name) if (-f) },"$dir"); >
],
[ 'system','find',
"{find} '$dir' -type f" ]
);
my %files;
foreach my $file (@OUTPUT) {
$file =~ s,^$dir/,,;
next if (! $file);
$files{lc($file)}{$file} = 1;
}
return %files;
}
# This looks at the filelist determines which are pod files, which are
# .pm files, which are test files, etc.
#
sub _categorize_files {
my($self,$op,$dir,%files) = @_;
$self->_log_message('INFO',"Categorizing $op package files");
# First pass based on some simple tests.
my $in = new IO::File;
foreach my $file (keys %files) {
foreach my $f (keys %{ $files{$file} }) {
if ($op eq 'build') {
# Files in the blib directory:
#
# Ignored:
# */*.exists
#
# PM files:
# **/*.pm
#
# Bin files
# bin/*
# script/*
#
# man1 files:
# man1/*
# bindoc/*
#
# man3 files:
# man3/*
# libdoc/*
if ($f =~ /\.exists$/) {
next;
} elsif ($f =~ m,^lib/\Q$ARCH\E/.*\.pm$, ||
$f =~ m,^arch/auto/.*\.pm$,) {
$package{'instfiles'}{'pm'}{$f} = 1;
$package{'arch_inst'} = 1;
} elsif ($f =~ m,.*\.pm$,) {
$package{'instfiles'}{'pm'}{$f} = 1;
$package{'lib_inst'} = 1;
} elsif ($f =~ m,^lib/\Q$ARCH\E/.*\.so$, ||
$f =~ m,^arch/auto/.*\.so$,) {
$package{'instfiles'}{'lib'}{$f} = 1;
$package{'arch_inst'} = 1;
} elsif ($f =~ m,^(script|bin)/,) {
$package{'instfiles'}{'scripts'}{$f} = 1;
$package{'bin_inst'} = 1;
} elsif ($f =~ m,^man1/, ||
$f =~ m,^bindoc/,) {
$package{'instfiles'}{'man1'}{$f} = 1;
( run in 1.347 second using v1.01-cache-2.11-cpan-5735350b133 )