Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package perl-Perl-PrereqScanner-NotQuiteLite for openSUSE:Factory checked in at 2022-08-25 15:08:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Perl-PrereqScanner-NotQuiteLite (Old) and /work/SRC/openSUSE:Factory/.perl-Perl-PrereqScanner-NotQuiteLite.new.2083 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Perl-PrereqScanner-NotQuiteLite" Thu Aug 25 15:08:55 2022 rev:2 rq:999041 version:0.9916 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Perl-PrereqScanner-NotQuiteLite/perl-Perl-PrereqScanner-NotQuiteLite.changes 2021-09-15 22:51:27.590912232 +0200 +++ /work/SRC/openSUSE:Factory/.perl-Perl-PrereqScanner-NotQuiteLite.new.2083/perl-Perl-PrereqScanner-NotQuiteLite.changes 2022-08-25 15:09:01.601206552 +0200 @@ -1,0 +2,13 @@ +Sat Apr 9 03:08:16 UTC 2022 - Tina M??ller <timueller+p...@suse.de> + +- updated to 0.9916 + see /usr/share/doc/packages/perl-Perl-PrereqScanner-NotQuiteLite/Changes + + 0.9916 2022/04/08 + - Ignore core modules with undef version correctly + - Drop URI::cpan dependency and use Parse::Distname to parse cpan URI + + 0.9915 2022/04/01 + - Add optional option + +------------------------------------------------------------------- Old: ---- Perl-PrereqScanner-NotQuiteLite-0.9914.tar.gz New: ---- Perl-PrereqScanner-NotQuiteLite-0.9916.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Perl-PrereqScanner-NotQuiteLite.spec ++++++ --- /var/tmp/diff_new_pack.ubavMH/_old 2022-08-25 15:09:02.173207761 +0200 +++ /var/tmp/diff_new_pack.ubavMH/_new 2022-08-25 15:09:02.181207778 +0200 @@ -1,7 +1,7 @@ # # spec file for package perl-Perl-PrereqScanner-NotQuiteLite # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,10 +18,10 @@ %define cpan_name Perl-PrereqScanner-NotQuiteLite Name: perl-Perl-PrereqScanner-NotQuiteLite -Version: 0.9914 +Version: 0.9916 Release: 0 -Summary: Tool to scan your Perl code for its prerequisites License: Artistic-1.0 OR GPL-1.0-or-later +Summary: Tool to scan your Perl code for its prerequisites URL: https://metacpan.org/release/%{cpan_name} Source0: https://cpan.metacpan.org/authors/id/I/IS/ISHIGAKI/%{cpan_name}-%{version}.tar.gz Source1: cpanspec.yml @@ -35,11 +35,11 @@ BuildRequires: perl(Module::CPANfile) >= 1.1004 BuildRequires: perl(Module::CoreList) >= 3.11 BuildRequires: perl(Module::Find) +BuildRequires: perl(Parse::Distname) BuildRequires: perl(Regexp::Trie) BuildRequires: perl(Test::FailWarnings) BuildRequires: perl(Test::More) >= 0.98 BuildRequires: perl(Test::UseAllModules) >= 0.17 -BuildRequires: perl(URI::cpan) BuildRequires: perl(parent) Requires: perl(CPAN::Meta::Prereqs) >= 2.150010 Requires: perl(CPAN::Meta::Requirements) >= 2.140000 @@ -47,8 +47,8 @@ Requires: perl(Module::CPANfile) >= 1.1004 Requires: perl(Module::CoreList) >= 3.11 Requires: perl(Module::Find) +Requires: perl(Parse::Distname) Requires: perl(Regexp::Trie) -Requires: perl(URI::cpan) Requires: perl(parent) %{perl_requires} ++++++ Perl-PrereqScanner-NotQuiteLite-0.9914.tar.gz -> Perl-PrereqScanner-NotQuiteLite-0.9916.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Perl-PrereqScanner-NotQuiteLite-0.9914/Changes new/Perl-PrereqScanner-NotQuiteLite-0.9916/Changes --- old/Perl-PrereqScanner-NotQuiteLite-0.9914/Changes 2021-09-12 20:25:31.000000000 +0200 +++ new/Perl-PrereqScanner-NotQuiteLite-0.9916/Changes 2022-04-08 08:13:59.000000000 +0200 @@ -1,5 +1,12 @@ Revision history for Perl-PrereqScanner-NotQuiteLite +0.9916 2022/04/08 + - Ignore core modules with undef version correctly + - Drop URI::cpan dependency and use Parse::Distname to parse cpan URI + +0.9915 2022/04/01 + - Add optional option + 0.9914 2021/09/13 - Support Object::Pad diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Perl-PrereqScanner-NotQuiteLite-0.9914/MANIFEST new/Perl-PrereqScanner-NotQuiteLite-0.9916/MANIFEST --- old/Perl-PrereqScanner-NotQuiteLite-0.9914/MANIFEST 2021-09-12 20:26:15.000000000 +0200 +++ new/Perl-PrereqScanner-NotQuiteLite-0.9916/MANIFEST 2022-04-08 08:15:15.000000000 +0200 @@ -56,6 +56,7 @@ t/app/exclude_core.t t/app/features.t t/app/ignore.t +t/app/optional.t t/app/private.t t/app/scan_also.t t/app/use_index.t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Perl-PrereqScanner-NotQuiteLite-0.9914/META.json new/Perl-PrereqScanner-NotQuiteLite-0.9916/META.json --- old/Perl-PrereqScanner-NotQuiteLite-0.9914/META.json 2021-09-12 20:26:15.000000000 +0200 +++ new/Perl-PrereqScanner-NotQuiteLite-0.9916/META.json 2022-04-08 08:15:15.000000000 +0200 @@ -45,8 +45,8 @@ "Module::CPANfile" : "1.1004", "Module::CoreList" : "3.11", "Module::Find" : "0", + "Parse::Distname" : "0", "Regexp::Trie" : "0", - "URI::cpan" : "0", "parent" : "0", "perl" : "5.008001" }, @@ -69,6 +69,6 @@ "url" : "https://github.com/charsbar/Perl-PrereqScanner-NotQuiteLite" } }, - "version" : "0.9914", + "version" : "0.9916", "x_serialization_backend" : "JSON::PP version 4.05" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Perl-PrereqScanner-NotQuiteLite-0.9914/META.yml new/Perl-PrereqScanner-NotQuiteLite-0.9916/META.yml --- old/Perl-PrereqScanner-NotQuiteLite-0.9914/META.yml 2021-09-12 20:26:15.000000000 +0200 +++ new/Perl-PrereqScanner-NotQuiteLite-0.9916/META.yml 2022-04-08 08:15:15.000000000 +0200 @@ -28,11 +28,11 @@ Module::CPANfile: '1.1004' Module::CoreList: '3.11' Module::Find: '0' + Parse::Distname: '0' Regexp::Trie: '0' - URI::cpan: '0' parent: '0' perl: '5.008001' resources: repository: https://github.com/charsbar/Perl-PrereqScanner-NotQuiteLite -version: '0.9914' +version: '0.9916' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Perl-PrereqScanner-NotQuiteLite-0.9914/bin/scan-perl-prereqs-nqlite new/Perl-PrereqScanner-NotQuiteLite-0.9916/bin/scan-perl-prereqs-nqlite --- old/Perl-PrereqScanner-NotQuiteLite-0.9914/bin/scan-perl-prereqs-nqlite 2021-01-17 19:29:58.000000000 +0100 +++ new/Perl-PrereqScanner-NotQuiteLite-0.9916/bin/scan-perl-prereqs-nqlite 2022-04-01 14:48:43.000000000 +0200 @@ -25,6 +25,8 @@ base_dir|base-dir=s ignore_re|ignore-re=s ignore=s@ + optional_re|optional-re=s + optional=s@ private_re|private-re=s private=s@ recommends @@ -149,6 +151,16 @@ You can also specify a regexp instead of a list of paths. If this is set, C<ignore> options are ignored. +=item optional + +Set a list of paths C<scan-perl-prereqs-nqlite> should ignore. This is +useful when your distribution has a set of OS-specific modules, for example. + +=item optional_re + +You can also specify a regexp instead of a list of paths. If this is +set, C<optional> options are ignored. + =item private Set a list of modules C<scan-perl-prereqs-nqlite> should consider diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Perl-PrereqScanner-NotQuiteLite-0.9914/cpanfile new/Perl-PrereqScanner-NotQuiteLite-0.9916/cpanfile --- old/Perl-PrereqScanner-NotQuiteLite-0.9914/cpanfile 2021-01-17 19:29:58.000000000 +0100 +++ new/Perl-PrereqScanner-NotQuiteLite-0.9916/cpanfile 2022-04-08 08:09:58.000000000 +0200 @@ -5,8 +5,8 @@ requires 'Module::CPANfile', '1.1004'; requires 'Module::CoreList', '3.11'; requires 'Module::Find'; +requires 'Parse::Distname'; requires 'Regexp::Trie'; -requires 'URI::cpan'; requires 'parent'; requires 'perl', '5.008001'; suggests 'JSON::PP'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Perl-PrereqScanner-NotQuiteLite-0.9914/lib/Perl/PrereqScanner/NotQuiteLite/App.pm new/Perl-PrereqScanner-NotQuiteLite-0.9916/lib/Perl/PrereqScanner/NotQuiteLite/App.pm --- old/Perl-PrereqScanner-NotQuiteLite-0.9914/lib/Perl/PrereqScanner/NotQuiteLite/App.pm 2021-01-17 19:29:58.000000000 +0100 +++ new/Perl-PrereqScanner-NotQuiteLite-0.9916/lib/Perl/PrereqScanner/NotQuiteLite/App.pm 2022-04-08 08:09:13.000000000 +0200 @@ -10,6 +10,7 @@ use CPAN::Meta::Requirements; use Perl::PrereqScanner::NotQuiteLite; use Perl::PrereqScanner::NotQuiteLite::Util::Prereqs; +use Parse::Distname; use constant WIN32 => $^O eq 'MSWin32'; @@ -79,6 +80,19 @@ $opts{private_re} ||= $re->_regexp; } + if ($opts{optional} and ref $opts{optional} eq 'ARRAY') { + require Regexp::Trie; + my $re = Regexp::Trie->new; + for (@{$opts{optional}}) { + s|\\|/|g if WIN32; + $re->add($_); + } + $opts{optional_re} ||= $re->_regexp; + } + if ($opts{optional_re}) { + $opts{suggests} = 1; + } + if (my $index_name = delete $opts{use_index}) { my $index_package = "CPAN::Common::Index::$index_name"; if (eval "require $index_package; 1") { @@ -286,7 +300,8 @@ if (Module::CoreList::is_core($module, undef, $perl_version) and !Module::CoreList::deprecated_in($module, undef, $perl_version) ) { - my $core_version = $Module::CoreList::version{$perl_version}{$module} or next; + next unless exists $Module::CoreList::version{$perl_version}{$module}; + my $core_version = $Module::CoreList::version{$perl_version}{$module}; next unless $req->accepts_module($module => $core_version); $req->clear_requirement($module); if ($self->{verbose}) { @@ -358,15 +373,19 @@ my ($self, $module) = @_; my $res = $self->{index}->search_packages({ package => $module }) or return; ## ignore (non-dual) core modules - return if URI->new($res->{uri})->dist_name eq 'perl'; + return if _dist_from_uri($res->{uri}) eq 'perl'; return $res->{uri}; } +sub _dist_from_uri { + my $uri = shift; + $uri =~ s!^cpan:///\w+/!!; + Parse::Distname->new($uri)->dist; +} + sub _dedupe_indexed_prereqs { my ($self, $prereqs) = @_; - require URI::cpan; - for my $req ($self->_requirements($prereqs)) { my %uri_map; for my $module ($req->required_modules) { @@ -388,7 +407,7 @@ } # Replace with the main module if none is versioned - my $dist = URI->new($uri)->dist_name; + my $dist = _dist_from_uri($uri); (my $main_module = $dist) =~ s/-/::/g; if ($self->_get_uri($main_module)) { $req->add_minimum($main_module); @@ -445,11 +464,14 @@ return if $file =~ /\b$self->{ignore_re}\b/; } + my $optional = $self->{optional_re} && $file =~ /\b$self->{optional_re}\b/ ? 1 : 0; + my $context = Perl::PrereqScanner::NotQuiteLite->new( parsers => $self->{parsers}, recommends => $self->{recommends}, suggests => $self->{suggests}, verbose => $self->{verbose}, + optional => $optional, )->scan_file($file); my $relpath = File::Spec->abs2rel($file, $self->{base_dir}); @@ -629,6 +651,14 @@ installed unless asked. However, you are advised to create a separate distribution for the specific feature. +=item optional, optional_re + +Instead of ignoring a set of files, you can also use C<optional> option +to mark all the prerequisites found in some of the files in your distribution +optional (i.e. suggests). You can specify (a reference to) a list of +files (with C<optional> option), or a regular expression that matches +the files (with C<optional_re> option). + =item private, private_re Your distribution may use private modules that are not uploaded to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Perl-PrereqScanner-NotQuiteLite-0.9914/lib/Perl/PrereqScanner/NotQuiteLite/Context.pm new/Perl-PrereqScanner-NotQuiteLite-0.9916/lib/Perl/PrereqScanner/NotQuiteLite/Context.pm --- old/Perl-PrereqScanner-NotQuiteLite-0.9914/lib/Perl/PrereqScanner/NotQuiteLite/Context.pm 2021-01-17 19:29:58.000000000 +0100 +++ new/Perl-PrereqScanner-NotQuiteLite-0.9916/lib/Perl/PrereqScanner/NotQuiteLite/Context.pm 2022-04-01 14:48:43.000000000 +0200 @@ -71,6 +71,7 @@ noes => CPAN::Meta::Requirements->new, file => $args{file}, verbose => $args{verbose}, + optional => $args{optional}, stash => {}, ); @@ -148,7 +149,12 @@ } sub add { - shift->_add('requires', @_); + my $self = shift; + if ($self->{optional}) { + $self->_add('suggests', @_); + } else { + $self->_add('requires', @_); + } } sub add_recommendation { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Perl-PrereqScanner-NotQuiteLite-0.9914/lib/Perl/PrereqScanner/NotQuiteLite.pm new/Perl-PrereqScanner-NotQuiteLite-0.9916/lib/Perl/PrereqScanner/NotQuiteLite.pm --- old/Perl-PrereqScanner-NotQuiteLite-0.9914/lib/Perl/PrereqScanner/NotQuiteLite.pm 2021-09-12 20:25:39.000000000 +0200 +++ new/Perl-PrereqScanner-NotQuiteLite-0.9916/lib/Perl/PrereqScanner/NotQuiteLite.pm 2022-04-08 07:37:21.000000000 +0200 @@ -6,7 +6,7 @@ use Perl::PrereqScanner::NotQuiteLite::Context; use Perl::PrereqScanner::NotQuiteLite::Util; -our $VERSION = '0.9914'; +our $VERSION = '0.9916'; our @BUNDLED_PARSERS = qw/ Aliased AnyMoose Autouse Catalyst ClassAccessor diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Perl-PrereqScanner-NotQuiteLite-0.9914/t/app/exclude_core.t new/Perl-PrereqScanner-NotQuiteLite-0.9916/t/app/exclude_core.t --- old/Perl-PrereqScanner-NotQuiteLite-0.9914/t/app/exclude_core.t 2021-01-17 19:29:58.000000000 +0100 +++ new/Perl-PrereqScanner-NotQuiteLite-0.9916/t/app/exclude_core.t 2022-04-08 07:35:20.000000000 +0200 @@ -37,4 +37,14 @@ END }, {exclude_core => 1}, { runtime => { requires => { Foo => 0, perl => '5.020' }}}); +test_app('ignore core modules with undef version', sub { + my $tmpdir = shift; + + test_file("$tmpdir/MyTest.pm", <<'END'); +use strict; +use warnings; +use Foo; +END +}, {exclude_core => 1, perl_version => 5.006}, { runtime => { requires => { Foo => 0 }}}); + done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Perl-PrereqScanner-NotQuiteLite-0.9914/t/app/optional.t new/Perl-PrereqScanner-NotQuiteLite-0.9916/t/app/optional.t --- old/Perl-PrereqScanner-NotQuiteLite-0.9914/t/app/optional.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Perl-PrereqScanner-NotQuiteLite-0.9916/t/app/optional.t 2022-04-01 14:48:43.000000000 +0200 @@ -0,0 +1,59 @@ +use strict; +use warnings; +use FindBin; +use lib "$FindBin::Bin/../../"; +use Test::More; +use t::Util; + +test_app('optional file', sub { + my $tmpdir = shift; + + test_file("$tmpdir/lib/MyTest.pm", <<'END'); +use strict; +use warnings; +use Foo; +END + + test_file("$tmpdir/lib/MyTest/Win32.pm", <<'END'); +use strict; +use warnings; +use Win32; +END +END +}, {optional => [qw!lib/MyTest/Win32.pm!]}, { runtime => { requires => { Foo => 0, strict => 0, warnings => 0 }, suggests => { Win32 => 0 }}}); + +test_app('optional dir', sub { + my $tmpdir = shift; + + test_file("$tmpdir/lib/MyTest.pm", <<'END'); +use strict; +use warnings; +use Foo; +END + + test_file("$tmpdir/lib/MyTest/Win32.pm", <<'END'); +use strict; +use warnings; +use Win32; +END +END +}, {optional => [qw!lib/MyTest/!]}, { runtime => { requires => { Foo => 0, strict => 0, warnings => 0}, suggests => { Win32 => 0 }}}); + +test_app('optional_re', sub { + my $tmpdir = shift; + + test_file("$tmpdir/lib/MyTest.pm", <<'END'); +use strict; +use warnings; +use Foo; +END + + test_file("$tmpdir/lib/MyTest/Win32.pm", <<'END'); +use strict; +use warnings; +use Win32; +END +END +}, {optional_re => 'lib/MyTest/'}, { runtime => { requires => { Foo => 0, strict => 0, warnings => 0 }, suggests => { Win32 => 0 }}}); + +done_testing;