Initial revision
This commit is contained in:
commit
598503e669
7 changed files with 294 additions and 0 deletions
22
Build.PL
Normal file
22
Build.PL
Normal file
|
@ -0,0 +1,22 @@
|
|||
use Module::Build;
|
||||
use 5.006000;
|
||||
|
||||
my $build = Module::Build->new(
|
||||
license => 'perl',
|
||||
dist_version => '0.01',
|
||||
dist_author => 'Dave Cross <dave@mag-sol.com>',
|
||||
module_name => 'Parse::RPM::Spec',
|
||||
requires => {
|
||||
perl => '5.6.0',
|
||||
},
|
||||
build_requires => {
|
||||
'Test::More' => 0,
|
||||
},
|
||||
build_recommends => {
|
||||
'Test::Pod' => 0,
|
||||
'Test::Pod::Coverage' => 0,
|
||||
},
|
||||
create_makefile_pl => 'traditional',
|
||||
);
|
||||
|
||||
$build->create_build_script;
|
6
Changes
Normal file
6
Changes
Normal file
|
@ -0,0 +1,6 @@
|
|||
Revision history for Perl extension Parse::RPM::Spec.
|
||||
|
||||
0.01 Mon Aug 25 11:41:00 2008
|
||||
- original version; created by h2xs 1.23 with options
|
||||
-X -n Parse::RPM::Spec
|
||||
|
6
MANIFEST
Normal file
6
MANIFEST
Normal file
|
@ -0,0 +1,6 @@
|
|||
Changes
|
||||
Build.PL
|
||||
MANIFEST
|
||||
README
|
||||
t/Parse-RPM-Spec.t
|
||||
lib/Parse/RPM/Spec.pm
|
40
README
Normal file
40
README
Normal file
|
@ -0,0 +1,40 @@
|
|||
Parse-RPM-Spec version 0.01
|
||||
===========================
|
||||
|
||||
The README is used to introduce the module and provide instructions on
|
||||
how to install the module, any machine dependencies it may have (for
|
||||
example C compilers and installed libraries) and any other information
|
||||
that should be provided before the module is installed.
|
||||
|
||||
A README file is required for CPAN modules since CPAN extracts the
|
||||
README file from a module distribution so that people browsing the
|
||||
archive can use it get an idea of the modules uses. It is usually a
|
||||
good idea to provide version information here so that people can
|
||||
decide whether fixes for the module are worth downloading.
|
||||
|
||||
INSTALLATION
|
||||
|
||||
To install this module type the following:
|
||||
|
||||
perl Makefile.PL
|
||||
make
|
||||
make test
|
||||
make install
|
||||
|
||||
DEPENDENCIES
|
||||
|
||||
This module requires these other modules and libraries:
|
||||
|
||||
blah blah blah
|
||||
|
||||
COPYRIGHT AND LICENCE
|
||||
|
||||
Put the correct copyright and licence information here.
|
||||
|
||||
Copyright (C) 2008 by Dave Cross
|
||||
|
||||
This library is free software; you can redistribute it and/or modify
|
||||
it under the same terms as Perl itself, either Perl version 5.10.0 or,
|
||||
at your option, any later version of Perl 5 you may have available.
|
||||
|
||||
|
153
lib/Parse/RPM/Spec.pm
Normal file
153
lib/Parse/RPM/Spec.pm
Normal file
|
@ -0,0 +1,153 @@
|
|||
package Parse::RPM::Spec;
|
||||
|
||||
use 5.006000;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Carp;
|
||||
|
||||
our @ISA = qw(Exporter);
|
||||
|
||||
our $VERSION = '0.01';
|
||||
|
||||
my @attr = qw(name version release summary license gropu url source
|
||||
buildroot buildarch buildrequires requires);
|
||||
|
||||
my %attr = map { $_ => 1 } @attr;
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
|
||||
my $args = shift;
|
||||
my $self = {};
|
||||
|
||||
if (my $type = ref $args) {
|
||||
if ($type eq 'HASH') {
|
||||
$self = $args;
|
||||
} else {
|
||||
croak "Unknown reference of type $type passed to ${class}::new\n";
|
||||
}
|
||||
} else {
|
||||
$self->{file} = $args;
|
||||
}
|
||||
|
||||
$self = bless $self, $class;
|
||||
|
||||
$self->parse_file;
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub parse_file {
|
||||
my $self = shift;
|
||||
|
||||
my $file = shift || $self->{file};
|
||||
|
||||
unless (defined $file) {
|
||||
croak "No spec file to parse\n";
|
||||
}
|
||||
|
||||
unless (-e $file) {
|
||||
croak "Spec file $file doesn't exist\n";
|
||||
}
|
||||
|
||||
unless (-r $file) {
|
||||
croak "Cannot read spec file $file\n";
|
||||
}
|
||||
|
||||
unless (-s $file) {
|
||||
croak "Spec file $file is empty\n";
|
||||
}
|
||||
|
||||
open my $fh, $file or croak "Cannot open $file: $!\n";
|
||||
|
||||
while (<$fh>) {
|
||||
/^Name:\s*(\S+)/ and $self->{name} = $1;
|
||||
/^Version:\s*(\S+)/ and $self->{version} = $1;
|
||||
/^Release:\s*(\S+)/ and $self->{release} = $1;
|
||||
/^Summary:\s*(\S+)/ and $self->{summary} = $1;
|
||||
/^License:\s*(.+)/ and $self->{license} = $1;
|
||||
/^Group:\s*(\S+)/ and $self->{group} = $1;
|
||||
/^URL:\s*(\S+)/ and $self->{url} = $1;
|
||||
/^Source0:\s*(\S+)/ and $self->{source} = $1;
|
||||
/^BuildRoot:\s*(\S+)/ and $self->{buildroot} = $1;
|
||||
|
||||
/^BuildRequires:\s*(.+)/ and push @{$self->{buildrequires}}, $1;
|
||||
/^Requires:\s*(.+)/ and push @{$self->{requires}}, $1;
|
||||
}
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub AUTOLOAD {
|
||||
our $AUTOLOAD;
|
||||
|
||||
my $self = shift;
|
||||
|
||||
my ($attr) = $AUTOLOAD =~ /.*::(.*)/;
|
||||
|
||||
unless ($attr{$attr}) {
|
||||
croak "Invalid attribute: $attr\n";
|
||||
}
|
||||
|
||||
my $val = $self->{$attr};
|
||||
|
||||
if (@_) {
|
||||
$self->{$attr} = shift;
|
||||
}
|
||||
|
||||
return $val;
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
||||
# Below is stub documentation for your module. You'd better edit it!
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Parse::RPM::Spec - Perl extension for blah blah blah
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Parse::RPM::Spec;
|
||||
blah blah blah
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Stub documentation for Parse::RPM::Spec, created by h2xs. It looks like the
|
||||
author of the extension was negligent enough to leave the stub
|
||||
unedited.
|
||||
|
||||
Blah blah blah.
|
||||
|
||||
=head2 EXPORT
|
||||
|
||||
None by default.
|
||||
|
||||
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
Mention other useful documentation such as the documentation of
|
||||
related modules or operating system documentation (such as man pages
|
||||
in UNIX), or any relevant external documentation such as RFCs or
|
||||
standards.
|
||||
|
||||
If you have a mailing list set up for your module, mention it here.
|
||||
|
||||
If you have a web site set up for your module, mention it here.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Dave Cross, E<lt>dave@localdomainE<gt>
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
Copyright (C) 2008 by Dave Cross
|
||||
|
||||
This library is free software; you can redistribute it and/or modify
|
||||
it under the same terms as Perl itself, either Perl version 5.10.0 or,
|
||||
at your option, any later version of Perl 5 you may have available.
|
||||
|
||||
|
||||
=cut
|
19
t/Parse-RPM-Spec.t
Normal file
19
t/Parse-RPM-Spec.t
Normal file
|
@ -0,0 +1,19 @@
|
|||
use Test::More tests => 12;
|
||||
BEGIN { use_ok('Parse::RPM::Spec') };
|
||||
|
||||
eval { my $spec = Parse::RPM::Spec->new(\'t/file.spec') };
|
||||
ok($@);
|
||||
like($@, qr/SCALAR/);
|
||||
|
||||
ok($spec = Parse::RPM::Spec->new('t/file.spec'));
|
||||
isa_ok($spec, 'Parse::RPM::Spec');
|
||||
|
||||
ok($spec = Parse::RPM::Spec->new({ file => 't/file.spec' }));
|
||||
isa_ok($spec, 'Parse::RPM::Spec');
|
||||
|
||||
is($spec->name, 'perl-Array-Compare');
|
||||
is($spec->version, '1.16');
|
||||
$spec->version('1.17');
|
||||
is($spec->version, '1.17');
|
||||
is(@{$spec->buildrequires}, 2);
|
||||
is($spec->buildrequires->[0], 'perl >= 1:5.6.0');
|
48
t/file.spec
Normal file
48
t/file.spec
Normal file
|
@ -0,0 +1,48 @@
|
|||
Name: perl-Array-Compare
|
||||
Version: 1.16
|
||||
Release: 1%{?dist}
|
||||
Summary: Perl extension for comparing arrays
|
||||
License: GPL+ or Artistic
|
||||
Group: Development/Libraries
|
||||
URL: http://search.cpan.org/dist/Array-Compare/
|
||||
Source0: http://www.cpan.org/authors/id/D/DA/DAVECROSS/Array-Compare-%{version}.tar.gz
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
BuildArch: noarch
|
||||
BuildRequires: perl >= 1:5.6.0
|
||||
BuildRequires: perl(Module::Build)
|
||||
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
|
||||
|
||||
%description
|
||||
If you have two arrays and you want to know if they are the same or
|
||||
different, then Array::Compare will be useful to you.
|
||||
|
||||
%prep
|
||||
%setup -q -n Array-Compare-%{version}
|
||||
|
||||
%build
|
||||
%{__perl} Build.PL installdirs=vendor
|
||||
./Build
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
./Build install destdir=$RPM_BUILD_ROOT create_packlist=0
|
||||
find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null \;
|
||||
|
||||
%{_fixperms} $RPM_BUILD_ROOT/*
|
||||
|
||||
%check
|
||||
./Build test
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%doc Changes README
|
||||
%{perl_vendorlib}/*
|
||||
%{_mandir}/man3/*
|
||||
|
||||
%changelog
|
||||
* Tue Aug 19 2008 Dave Cross <dave@mag-sol.com> 1.16-1
|
||||
- Specfile autogenerated by cpanspec 1.77.
|
Loading…
Add table
Reference in a new issue