Package-Builder
view release on metacpan or search on metacpan
lib/Package/Builder.pm view on Meta::CPAN
'^\/initrd$', '^\/lost+found$', '^\/root$', '^\/selinux$',
'^\/sys$', '^\/usr$', '\/usr\/sbin$', '\/usr\/bin$'
);
our @config_pattern = (
"config", "conf",, "etc",
"initrd", "\.conf", "\.properties", "\.cnf",
"\.ini", "\.xml"
);
our @doc_pattern =
( "doc", "\.txt", "README", "LICENCE", "LICENSE", "TODO", "\.html", "\.tex" );
my %dirAlias = (
"/usr/sbin" => "%{_sbindir}",
"/usr/bin" => "%{_bindir}",
"/usr/lib" => "%{_libdir}",
"/usr/libexec" => "%{_libexecdir}",
"/usr/share" => "%{_datadir}",
"/var" => "%{_var}"
);
our $macrosFile = $ENV{'HOME'} . "/.rpmmacros";
our $topdir = getParameterFromConfig( "_topdir", "/usr/src/redhat" );
our $specDir = $topdir . "/SPECS";
our $srcDir = $topdir . "/SOURCES";
our $archiveRootPath = "/tmp/myrpm";
=head1 FUNCTIONS
=head2 extractArchive
=cut
sub extractArchive {
my $archive = shift;
my $root_dir = shift;
my $uid = shift;
my $gid = shift;
# Create temporary dir
my $snap_dir = "$archiveRootPath/$$";
my $tmp_dir = "$snap_dir/$root_dir";
eval { mkpath($tmp_dir) };
if ($@) {
print STDERR "\n * Couldn't create $tmp_dir: $@";
return undef;
}
my $cwdir = getcwd;
chdir $tmp_dir;
my $compressed_archive = ( $archive =~ /.+?\.(?:tar\.gz|tgz)$/i );
my $arch_obj = Archive::Tar->new( $archive, $compressed_archive );
$arch_obj->extract();
if ( defined $uid && defined $gid ) {
#change uid if necessary
$uid = getUserId($uid);
$gid = getGroupId($gid);
find(
sub {
chown $uid, $gid, $_;
},
$tmp_dir
);
}
chdir $cwdir;
return $snap_dir;
}
=head2 isReservedDir
=cut
sub isReservedDir {
my $dir = shift;
foreach my $rdir (@reserved_dirs) {
return 1 if ( $dir =~ /$rdir/ );
}
return 0;
}
=head2 isDocFile
=cut
sub isDocFile {
my $file = shift;
foreach my $dpat (@doc_pattern) {
return 1 if ( $file =~ /$dpat/ );
}
return 0;
}
=head2 isConfigFile
=cut
sub isConfigFile {
my $file = shift;
foreach my $cpat (@config_pattern) {
return 1 if ( $file =~ /$cpat/ );
}
return 0;
}
=head2 substituteAliasDir
=cut
sub substituteAliasDir {
my $path = shift;
#my $not_found=1;
foreach my $subpath ( keys %dirAlias ) {
#break unless ($not_found);
if ( $path =~ /^$subpath/ ) {
my $alias = $dirAlias{$subpath};
$path =~ s/^$subpath/$alias/;
return $path;
}
}
return $path;
}
( run in 0.865 second using v1.01-cache-2.11-cpan-5511b514fd6 )