Compare commits

..

2 commits

Author SHA1 Message Date
Dave Cross
3b9f1e1b5a Only test on Perl 5.30. Add compat::p7 to lib 2020-07-13 14:23:49 +01:00
Dave Cross
b7949c6de4 Start Perl 7 testing 2020-06-28 18:25:13 +01:00
14 changed files with 81 additions and 335 deletions

View file

@ -1,10 +0,0 @@
# Set update schedule for GitHub Actions
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every week
interval: "weekly"

View file

@ -1,21 +0,0 @@
name: CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
build:
uses: PerlToolsTeam/github_workflows/.github/workflows/cpan-test.yml@main
coverage:
uses: PerlToolsTeam/github_workflows/.github/workflows/cpan-coverage.yml@main
perlcritic:
uses: PerlToolsTeam/github_workflows/.github/workflows/cpan-perlcritic.yml@main
complexity:
uses: PerlToolsTeam/github_workflows/.github/workflows/cpan-complexity.yml@main

1
.gitignore vendored
View file

@ -1,6 +1,7 @@
Parse-RPM-Spec-*.tar.gz
Parse-RPM-Spec/
Build
Changes
META.json
META.yml
MYMETA.json

8
.travis.yml Normal file
View file

@ -0,0 +1,8 @@
language: perl
perl:
- "5.30"
before_install:
cpanm -n Devel::Cover::Report::Coveralls
script:
perl Build.PL && ./Build build && cover -test -report coveralls

View file

@ -11,25 +11,16 @@ my $build = Module::Build->new(
},
build_requires => {
'Test::More' => 0,
'Test::Exception' => 0,
},
build_recommends => {
'Test::Pod' => 0,
'Test::Pod::Coverage' => 0,
},
create_makefile_pl => 'traditional',
meta_merge => {
'meta-spec' => { version => 2 },
resources => {
repository => {
type => 'git',
url => 'git://github.com/davorg-cpan/parse-rpm-spec.git',
web => 'https://github.com/davorg-cpan/parse-rpm-spec',
},
bugtracker => {
web => 'https://github.com/davorg-cpan/parse-rpm-spec/issues',
},
},
meta_merge => {
resources => {
repository => 'https://github.com/davorg/parse-rpm-spec'
}
},
);

109
Changes
View file

@ -1,109 +0,0 @@
2023-01-13 Dave Cross <dave@perlhacks.com>
* Version 1.1.2
* Fix name of excludearch method (thanks Michal Josef Špaček)
2023-01-12 Dave Cross <dave@perlhacks.com>
* Version 1.1.1
* Fix problem parsing perl-License-Syntax.spec (thanks Michal Josef Špaček)
2022-12-09 Dave Cross <dave@perlhacks.com>
* Version 1.1.0
* Support ExcludeArch, ExclusiveArch, ExcluseOS, ExclusiveOS
2021-01-23 Dave Cross <dave@perlhacks.com>
* Version 1.0.3
* Add bugtracker to metadata
2020-11-04 Dave Cross <dave@perlhacks.com>
* Version 1.0.2
* Add Test::Exception to prereqs
2020-11-03 Dave Cross <dave@perlhacks.com>
* Version 1.0.1
* Improved tests
* Added links to Github repo
2017-06-23 Dave Cross <dave@perlhacks.com>
* lib/Parse/RPM/Spec.pm: Removed extra whitespace
2015-07-18 Dave Cross <dave@perlhacks.com>
* .gitignore, .travis.yml, MANIFEST.SKIP: Added .gitignore,
.travis.yml and MANIFEST.SKIP
2015-07-17 Dave Cross <dave@perlhacks.com>
* MANIFEST: Added META.yml to MANIFEST
2013-08-20 Justin Cook <jscook@users.noreply.github.com>
* lib/Parse/RPM/Spec.pm: Update Spec.pm Fixed a typo in POD
2011-10-03 Dave Cross <dave@perlhacks.com>
* lib/Parse/RPM/Spec.pm: Made the spec parser more configurable (and
a little more efficient).
* lib/Parse/RPM/Spec.pm: Fix typo in documentation.
2010-07-11 Dave Cross <dave@perlhacks.com>
* lib/Parse/RPM/Spec.pm: Fixed docs to reflect previous fix.
* lib/Parse/RPM/Spec.pm: Change Source to return an array of sources
(Thanks to Vadim Vatlin for the suggestion).
2010-02-17 Dave Cross <dave@perlhacks.com>
* lib/Parse/RPM/Spec.pm: Version 0.07
* lib/Parse/RPM/Spec.pm: Added some docs to placate
Test::Pod::Coverage.
2010-02-10 Dave Cross <dave@perlhacks.com>
* lib/Parse/RPM/Spec.pm: Bump to version 0.06.
* lib/Parse/RPM/Spec.pm, t/file.spec, t/parse-rpm-spec.t: Added
support for Epoch field. And tests for it.
2010-02-09 Dave Cross <dave@perlhacks.com>
* lib/Parse/RPM/Spec.pm: Bump version.
* lib/Parse/RPM/Spec.pm, t/parse-rpm-spec.t: Parse the summary
correctly. Added a test for that.
2009-10-27 Dave Cross <dave@perlhacks.com>
* Build.PL: Removed version defintion (use one from .pm)
* lib/Parse/RPM/Spec.pm, t/parse-rpm-spec.t: Version 0.04. Handle
BuildArch definition. Thanks to Steve Goldner for pointing out the
omission.
2009-08-30 Dave Cross <dave@perlhacks.com>
* Build.PL, lib/Parse/RPM/Spec.pm: Add Moose as a requirement. Bump
version number to 0.03 for release.
2009-07-25 Dave Cross <dave@perlhacks.com>
* lib/Parse/RPM/Spec.pm: Made file attribute mandatory.
* MANIFEST, t/{Parse-RPM-Spec.t => parse-rpm-spec.t}: Renamed test
file.
* t/pod.t, t/pod_coverage.t: Added pod tests.
* Build.PL: Bump version number.
* Changes: Removed generated file.
* README, README.xml: Changed README to text file.
* t/Parse-RPM-Spec.t: Changes to support the Moose version.
* lib/Parse/RPM/Spec.pm: Switch to using Moose.
2008-08-25 Dave Cross <dave@perlhacks.com>
* README, README.xml: Removed README and added README.xml
* MANIFEST: Various changes
* lib/Parse/RPM/Spec.pm: Added documentation
* Build.PL, Changes, MANIFEST, README, lib/Parse/RPM/Spec.pm, t
/Parse-RPM-Spec.t, t/file.spec: Initial revision

View file

@ -1,3 +1,5 @@
use compat::perl7;
package Parse::RPM::Spec;
use 5.006000;
@ -7,7 +9,7 @@ use warnings;
use Carp;
use Moose;
our $VERSION = 'v1.1.2';
our $VERSION = 'v1.0.0';
has file => ( is => 'ro', isa => 'Str', required => 1 );
has name => ( is => 'rw', isa => 'Str' );
@ -23,8 +25,6 @@ has buildroot => ( is => 'rw', isa => 'Str' );
has buildarch => ( is => 'rw', isa => 'Str' );
has buildrequires => ( is => 'rw', isa => 'ArrayRef[Str]', default => sub { [] } );
has requires => ( is => 'rw', isa => 'ArrayRef[Str]', default => sub { [] } );
has [ qw( excludearch exclusivearch excludeos exclusiveos ) ]
=> ( is => 'rw', isa => 'Str' );
has parse_spec => (
is => 'ro',
@ -35,25 +35,21 @@ has parse_spec => (
sub _build_parse_spec {
return {
scalars => {
name => qr[^Name:\s+(\S+)],
version => qr[^Version:\s+(\S+)],
epoch => qr[^Epoch:\s+(\S+)],
release => qr[^Release:\s+(\S+)],
summary => qr[^Summary:\s+(.+)],
license => qr[^License:\s+(.+)],
group => qr[^Group:\s+(\S+)],
url => qr[^(?:URL|Url):\s+(\S+)],
buildroot => qr[^BuildRoot:\s+(\S+)],
buildarch => qr[^BuildArch:\s+(\S+)],
excludearch => qr[^ExcludeArch:\s+(\S+)],
exclusivearch => qr[^ExclusiveArch:\s+(\S+)],
excludeos => qr[^ExcludeOS:\s+(\S+)],
exclusiveos => qr[^ExclusiveOS:\s+(\S+)],
name => qr[^Name:\s*(\S+)],
version => qr[^Version:\s*(\S+)],
epoch => qr[^Epoch:\s*(\S+)],
release => qr[^Release:\s*(\S+)],
summary => qr[^Summary:\s*(.+)],
license => qr[^License:\s*(.+)],
group => qr[^Group:\s*(\S+)],
url => qr[^URL:\s*(\S+)],
buildroot => qr[^BuildRoot:\s*(\S+)],
buildarch => qr[^BuildArch:\s*(\S+)],
},
arrays => {
source => qr[^Source\d*:\s+(\S+)],
buildrequires => qr[^BuildRequires:\s+(.+)],
requires => qr[^Requires:\s+(.+)],
source => qr[^Source\d*:\s*(\S+)],
buildrequires => qr[^BuildRequires:\s*(.+)],
requires => qr[^Requires:\s*(.+)],
},
};
}
@ -89,7 +85,7 @@ sub parse_file {
croak "Spec file $file is empty\n";
}
open my $fh, '<', $file or croak "Cannot open $file: $!\n";
open my $fh, $file or croak "Cannot open $file: $!\n";
my $scalars = $self->parse_spec->{scalars};
my $arrays = $self->parse_spec->{arrays};

49
lib/compat/perl7.pm Normal file
View file

@ -0,0 +1,49 @@
=head1 compat::perl7
=head2 Subroutines
=head3 import
Do the clever stuff.
=cut
package compat::perl7;
# use compat::perl7 enables perl 5 code to function in a perl 7-ish way as much as possible compared to the version you are running.
# it also is a hint to both tools and the compiler what the level of compatibility is with future versions of the language.
BEGIN {
# This code is a proof of concept provided against 5.30. In order for this code to work on other versions of perl
# we would need to generate it via p7.pm.PL as part of shipping it to CPAN.
$] >= 5.030 && $] < 5.031 or die("Perl 5.30 is required to use this module.");
}
sub import {
# use warnings; no warnings qw/experimental/;
# perl -e'use warnings; no warnings qw/experimental/; my $w; BEGIN {$w = ${^WARNING_BITS} } print unpack("H*", $w) . "\n"'
${^WARNING_BITS} = pack( "H*", "55555555555555555555555515000440050454" );
# use strict; use utf8;
# perl -MData::Dumper -e'my $h; use strict; use utf8; use feature (qw/bitwise current_sub declared_refs evalbytes fc postderef_qq refaliasing say signatures state switch unicode_eval unicode_strings/); BEGIN { $h = $^H } printf("\$^H = 0x%08X\n", $h); print Dumper \%^H; '
$^H = 0x1C820FE2;
%^H = (
'feature___SUB__' => 1,
'feature_bitwise' => 1,
'feature_evalbytes' => 1,
'feature_fc' => 1,
'feature_myref' => 1,
'feature_postderef_qq' => 1,
'feature_refaliasing' => 1,
'feature_say' => 1,
'feature_signatures' => 1,
'feature_state' => 1,
'feature_switch' => 1,
'feature_unicode' => 1,
'feature_unieval' => 1
);
}
1;

View file

@ -12,8 +12,6 @@ BuildArch: noarch
BuildRequires: perl >= 1:5.6.0
BuildRequires: perl(Module::Build)
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
ExclusiveArch: megaCPU
ExcludeArch: crapCPU
%description
If you have two arrays and you want to know if they are the same or

View file

@ -1,13 +0,0 @@
use strict;
use warnings;
use Test::More;
use Test::Exception;
use Parse::RPM::Spec;
my $spec = Parse::RPM::Spec->new( { file => 't/perl-License-Syntax.spec' } );
is($spec->license, 'GPL-1.0-or-later OR Artistic-1.0-Perl', 'Correct license');
done_testing;

View file

@ -1,31 +1,24 @@
use strict;
use warnings;
use Test::More;
use Test::Exception;
BEGIN { use_ok('Parse::RPM::Spec') };
ok(my $spec = Parse::RPM::Spec->new( { file => 't/file.spec' } ),
ok($spec = Parse::RPM::Spec->new( { file => 't/file.spec' } ),
'Got an object');
isa_ok($spec, 'Parse::RPM::Spec');
is($spec->name, 'perl-Array-Compare', 'Correct name');
is($spec->summary, 'Perl extension for comparing arrays', 'Correct summary');
is($spec->url, 'http://search.cpan.org/dist/Array-Compare/', 'Correct URL');
is($spec->epoch, 1, 'Correct epoch');
is($spec->version, '1.16', 'Correct version');
$spec->version('1.17');
is($spec->version, '1.17', 'Changed version correctly');
is($spec->buildarch, 'noarch', 'Correct build architecture');
is($spec->buildarch, 'noarch', 'Correct build arrchitecture');
is(@{$spec->buildrequires}, 2, 'Correct number of build requirements');
is($spec->buildrequires->[0], 'perl >= 1:5.6.0',
'First build requirement is correct');
is($spec->exclusivearch, 'megaCPU', 'Correct exclusive architecture');
is($spec->excludearch, 'crapCPU', 'Correct excluded architecture');
dies_ok { Parse::RPM::Spec->new }
'No spec file given';
dies_ok { Parse::RPM::Spec->new( file => 'not-there') }

View file

@ -1,131 +0,0 @@
Name: perl-License-Syntax
Version: 0.13
Release: 23%{?dist}
Summary: Coding and decoding of license strings using SPDX and SUSE syntax
License: GPL-1.0-or-later OR Artistic-1.0-Perl
URL: https://metacpan.org/release/License-Syntax
Source0: https://cpan.metacpan.org/authors/id/J/JN/JNW/License-Syntax-%{version}.tar.gz
BuildArch: noarch
# Build
BuildRequires: coreutils
BuildRequires: make
BuildRequires: perl-generators
BuildRequires: perl-interpreter
BuildRequires: perl(ExtUtils::MakeMaker) >= 6.76
BuildRequires: perl(strict)
BuildRequires: perl(warnings)
# Runtime
BuildRequires: perl(Carp)
BuildRequires: perl(Data::Dumper)
BuildRequires: perl(DBD::SQLite)
BuildRequires: perl(DBI)
BuildRequires: perl(POSIX)
BuildRequires: perl(Text::CSV)
# Tests only
BuildRequires: perl(Test::More)
# Optional tests only
BuildRequires: perl(Pod::Coverage) >= 0.18
BuildRequires: perl(Test::Pod) >= 1.22
BuildRequires: perl(Test::Pod::Coverage) >= 1.08
Requires: perl(:MODULE_COMPAT_%(eval "$(perl -V:version)"; echo $version))
Requires: perl(DBD::SQLite)
%description
License::Syntax is an object oriented module. When constructing new
License::Syntax objects, you can provide a mapping table for license
names. The table is used for recognizing alternate alias names for the
licenses (left hand side) and also defines the canonical short names of
the licenses (right hand side). The mapping table is consulted twice,
before and after decoding the syntax, thus non-terminal mappings may
actually be followed.
%prep
%setup -q -n License-Syntax-%{version}
chmod -c a-x license_syntax.pl
%build
perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1
%{make_build}
%install
%{make_install}
rm -f %{buildroot}/%{perl_vendorlib}/License/license_syntax.pl
%{_fixperms} %{buildroot}/*
%check
make test
%files
%doc Changes README license_syntax.pl synopsis.csv
%{perl_vendorlib}/*
%{_mandir}/man3/*
%changelog
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-23
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Tue May 31 2022 Jitka Plesnikova <jplesnik@redhat.com> - 0.13-22
- Perl 5.36 rebuild
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-21
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-20
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri May 21 2021 Jitka Plesnikova <jplesnik@redhat.com> - 0.13-19
- Perl 5.34 rebuild
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jun 23 2020 Jitka Plesnikova <jplesnik@redhat.com> - 0.13-16
- Perl 5.32 rebuild
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri May 31 2019 Jitka Plesnikova <jplesnik@redhat.com> - 0.13-13
- Perl 5.30 rebuild
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Thu Jun 28 2018 Jitka Plesnikova <jplesnik@redhat.com> - 0.13-10
- Perl 5.28 rebuild
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Mon Jun 05 2017 Jitka Plesnikova <jplesnik@redhat.com> - 0.13-7
- Perl 5.26 rebuild
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Sun May 15 2016 Jitka Plesnikova <jplesnik@redhat.com> - 0.13-5
- Perl 5.24 rebuild
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.13-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.13-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Fri Jun 05 2015 Jitka Plesnikova <jplesnik@redhat.com> - 0.13-2
- Perl 5.22 rebuild
* Thu Apr 02 2015 Petr Šabata <contyk@redhat.com> 0.13-1
- Initial packaging

View file

@ -1,6 +1,3 @@
use strict;
use warnings;
use Test::More;
eval "use Test::Pod 1.00";
plan skip_all => "Test::Pod 1.00 required for testing POD" if $@;

View file

@ -1,6 +1,3 @@
use strict;
use warnings;
use Test::More;
eval "use Test::Pod::Coverage 1.00";
plan skip_all => "Test::Pod::Coverage 1.00 required for testing POD coverage" if $@;