diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..dfd0e30 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +# 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" diff --git a/.github/workflows/perltest.yml b/.github/workflows/perltest.yml index 9b2c868..0f185c4 100644 --- a/.github/workflows/perltest.yml +++ b/.github/workflows/perltest.yml @@ -1,9 +1,5 @@ -# This is a basic workflow to help you get started with Actions - name: CI -# Controls when the action will run. Triggers the workflow on push or pull request -# events but only for the master branch on: push: branches: [ master ] @@ -11,21 +7,15 @@ on: branches: [ master ] workflow_dispatch: -# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: build: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ 'ubuntu-latest', 'macos-latest' ] - perl: [ 'latest' ] - name: Perl ${{ matrix.perl }} on ${{ matrix.os }} - steps: - - uses: actions/checkout@v2 - - name: Set up perl - uses: shogo82148/actions-setup-perl@v1 - with: - perl-version: ${{ matrix.perl }} - - run: perl -V - - run: cpanm --installdeps . - - run: prove -lv t + 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 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b749796..0000000 --- a/.travis.yml +++ /dev/null @@ -1,25 +0,0 @@ -language: perl -matrix: - include: - - perl: "5.30" - - perl: "5.28" - - perl: "5.26" - - perl: "5.24" - - perl: "5.22" - - perl: "5.20" - dist: trusty - - perl: "5.18" - dist: trusty - - perl: "5.16" - dist: trusty - - perl: "5.14" - dist: trusty - - perl: "5.12" - dist: trusty - - perl: "5.10" - dist: trusty - -before_install: - cpanm -n Devel::Cover::Report::Coveralls -script: - perl Build.PL && ./Build build && cover -test -report coveralls diff --git a/Build.PL b/Build.PL index 487bf06..f4f7477 100644 --- a/Build.PL +++ b/Build.PL @@ -23,11 +23,11 @@ my $build = Module::Build->new( resources => { repository => { type => 'git', - url => 'git://github.com/davorg/parse-rpm-spec.git', - web => 'https://github.com/davorg/parse-rpm-spec', + 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/parse-rpm-spec/issues', + web => 'https://github.com/davorg-cpan/parse-rpm-spec/issues', }, }, }, diff --git a/Changes b/Changes index d566588..4adc8fb 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,18 @@ +2023-01-13 Dave Cross + + * Version 1.1.2 + * Fix name of excludearch method (thanks Michal Josef Špaček) + +2023-01-12 Dave Cross + + * Version 1.1.1 + * Fix problem parsing perl-License-Syntax.spec (thanks Michal Josef Špaček) + +2022-12-09 Dave Cross + + * Version 1.1.0 + * Support ExcludeArch, ExclusiveArch, ExcluseOS, ExclusiveOS + 2021-01-23 Dave Cross * Version 1.0.3 diff --git a/lib/Parse/RPM/Spec.pm b/lib/Parse/RPM/Spec.pm index 961219f..eb871c8 100644 --- a/lib/Parse/RPM/Spec.pm +++ b/lib/Parse/RPM/Spec.pm @@ -7,7 +7,7 @@ use warnings; use Carp; use Moose; -our $VERSION = 'v1.0.3'; +our $VERSION = 'v1.1.2'; has file => ( is => 'ro', isa => 'Str', required => 1 ); has name => ( is => 'rw', isa => 'Str' ); @@ -23,6 +23,8 @@ 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', @@ -33,21 +35,25 @@ 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:\s*(\S+)], - buildroot => qr[^BuildRoot:\s*(\S+)], - buildarch => qr[^BuildArch:\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|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+)], }, 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+(.+)], }, }; } @@ -83,7 +89,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}; diff --git a/t/file.spec b/t/file.spec index c2956d6..413f402 100644 --- a/t/file.spec +++ b/t/file.spec @@ -12,6 +12,8 @@ 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 diff --git a/t/parse-license-correctly.t b/t/parse-license-correctly.t new file mode 100644 index 0000000..77f83f4 --- /dev/null +++ b/t/parse-license-correctly.t @@ -0,0 +1,13 @@ +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; diff --git a/t/parse-rpm-spec.t b/t/parse-rpm-spec.t index c776e09..d8a1b31 100644 --- a/t/parse-rpm-spec.t +++ b/t/parse-rpm-spec.t @@ -1,24 +1,31 @@ +use strict; +use warnings; + use Test::More; use Test::Exception; BEGIN { use_ok('Parse::RPM::Spec') }; -ok($spec = Parse::RPM::Spec->new( { file => 't/file.spec' } ), +ok(my $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 arrchitecture'); +is($spec->buildarch, 'noarch', 'Correct build architecture'); 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') } diff --git a/t/perl-License-Syntax.spec b/t/perl-License-Syntax.spec new file mode 100644 index 0000000..22ded0d --- /dev/null +++ b/t/perl-License-Syntax.spec @@ -0,0 +1,131 @@ +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 - 0.13-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue May 31 2022 Jitka Plesnikova - 0.13-22 +- Perl 5.36 rebuild + +* Fri Jan 21 2022 Fedora Release Engineering - 0.13-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Jul 22 2021 Fedora Release Engineering - 0.13-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri May 21 2021 Jitka Plesnikova - 0.13-19 +- Perl 5.34 rebuild + +* Wed Jan 27 2021 Fedora Release Engineering - 0.13-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 0.13-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jun 23 2020 Jitka Plesnikova - 0.13-16 +- Perl 5.32 rebuild + +* Thu Jan 30 2020 Fedora Release Engineering - 0.13-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jul 26 2019 Fedora Release Engineering - 0.13-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri May 31 2019 Jitka Plesnikova - 0.13-13 +- Perl 5.30 rebuild + +* Fri Feb 01 2019 Fedora Release Engineering - 0.13-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 0.13-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu Jun 28 2018 Jitka Plesnikova - 0.13-10 +- Perl 5.28 rebuild + +* Thu Feb 08 2018 Fedora Release Engineering - 0.13-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 0.13-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jun 05 2017 Jitka Plesnikova - 0.13-7 +- Perl 5.26 rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 0.13-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Sun May 15 2016 Jitka Plesnikova - 0.13-5 +- Perl 5.24 rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 0.13-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jun 18 2015 Fedora Release Engineering - 0.13-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Jun 05 2015 Jitka Plesnikova - 0.13-2 +- Perl 5.22 rebuild + +* Thu Apr 02 2015 Petr Šabata 0.13-1 +- Initial packaging diff --git a/t/pod.t b/t/pod.t index 437887a..d6e05a9 100644 --- a/t/pod.t +++ b/t/pod.t @@ -1,3 +1,6 @@ +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 $@; diff --git a/t/pod_coverage.t b/t/pod_coverage.t index d692068..a2cc35f 100644 --- a/t/pod_coverage.t +++ b/t/pod_coverage.t @@ -1,3 +1,6 @@ +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 $@;