From 24e185d5cc41946a947d6cd2b19623240cc328b3 Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Thu, 18 Apr 2024 14:33:58 +0300 Subject: [PATCH] import perl-generators-1.10-7.module_el8.1.0+224+75158c84 --- ...0-remove-perl-provides-from-requires.patch | 208 ------------------ SPECS/perl-generators.spec | 13 +- 2 files changed, 1 insertion(+), 220 deletions(-) delete mode 100644 SOURCES/generators-1.10-remove-perl-provides-from-requires.patch diff --git a/SOURCES/generators-1.10-remove-perl-provides-from-requires.patch b/SOURCES/generators-1.10-remove-perl-provides-from-requires.patch deleted file mode 100644 index 0bfb8a3..0000000 --- a/SOURCES/generators-1.10-remove-perl-provides-from-requires.patch +++ /dev/null @@ -1,208 +0,0 @@ -diff --git a/t/02_list.t b/t/02_list.t -index a0b8206..507fd43 100644 ---- a/t/02_list.t -+++ b/t/02_list.t -@@ -13,7 +13,13 @@ my @provides = qx($PERL_PROV $file); - - # - # Provides --is(scalar(@provides), 0, 'No package is provided'); -+my @expectedprovides = ( -+ "$perl_ns(NoCleanA)\n", -+ "$perl_ns(NoCleanB)\n", -+ "$perl_ns(ToRemove)\n", -+ "$perl_ns(Foo)\n", -+); -+is_deeply([ sort @provides ], [ sort @expectedprovides ], "All expected provides were found."); - - # - # Requires -@@ -38,6 +44,8 @@ my @expectedrequires = ( - "$perl_ns(TARGET_CLASS)\n", - "$perl_ns(XML::XQL::Element)\n", - "$perl_ns(Class::Accessor::Fast)\n", -+ "$perl_ns(NoCleanA)\n", -+ "$perl_ns(NoCleanB)\n", - ); - - is_deeply([ sort @requires ], [ sort @expectedrequires ], "Only expected requires were found."); -diff --git a/t/data/list b/t/data/list -index f7b1a19..a40c76b 100644 ---- a/t/data/list -+++ b/t/data/list -@@ -36,3 +36,14 @@ use base TARGET_CLASS; - - # Do not ignore line which contains '->' in a coment - use base 'XML::XQL::Element'; # L -> L -+ -+use NoCleanA; -+package NoCleanA; -+ -+package NoCleanB; -+require NoCleanB; -+ -+package ToRemove; -+sub foo{} -+package Foo; -+use base 'ToRemove'; -diff --git a/template/bin/perl.req b/template/bin/perl.req -index 9e2e016..45cbd1a 100755 ---- a/template/bin/perl.req -+++ b/template/bin/perl.req -@@ -26,18 +26,29 @@ $HAVE_VERSION = 0; - eval { require version; $HAVE_VERSION = 1; }; - use Fedora::VSP (); - -+use File::Basename; -+my $dir = dirname($0); -+$HAVE_PROV = 0; -+if ( -e "$dir/perl.prov" ) { -+ $HAVE_PROV = 1; -+ $prov_script = "$dir/perl.prov"; -+} - - if ("@ARGV") { -- foreach (@ARGV) { -- process_file($_); -+ foreach my $file (@ARGV) { -+ process_file($file); -+ process_file_provides($file); -+ compute_global_requires(); - } - } else { - - # notice we are passed a list of filenames NOT as common in unix the - # contents of the file. - -- foreach (<>) { -- process_file($_); -+ foreach my $file (<>) { -+ process_file($file); -+ process_file_provides($file); -+ compute_global_requires(); - } - } - -@@ -45,8 +56,9 @@ if ("@ARGV") { - foreach $perlver (sort keys %perlreq) { - print "$perl_ns(:VERSION) >= $perlver\n"; - } --foreach $module (sort keys %require) { -- if (length($require{$module}) == 0) { -+ -+foreach my $module (sort keys %global_require) { -+ if (length($global_require{$module}) == 0) { - print "$perl_ns($module)\n"; - } else { - -@@ -54,13 +66,48 @@ foreach $module (sort keys %require) { - # operators. Also I will need to change the processing of the - # $RPM_* variable when I upgrade. - -- print "$perl_ns($module) >= $require{$module}\n"; -+ print "$perl_ns($module) >= $global_require{$module}\n"; - } - } - - exit 0; - -+sub compute_global_requires { -+ -+# restrict require_removable to all non provided by the file -+ foreach my $moduler (sort keys %require_removable) { -+ if (exists $provide{$moduler} && length($require_removable{$moduler}) == 0) { -+ $require_removable = delete $require_removable{$moduler}; -+ } -+ } -+# store requires to global_requires -+ foreach my $module (sort keys %require) { -+ my $oldver = $global_require{$module}; -+ my $newver = $require{$module}; -+ if ($oldver) { -+ $global_require{$module} = $newver -+ if ($HAVE_VERSION && $newver && version->new($oldver) < $newver); -+ } else { -+ $global_require{$module} = $newver; -+ } -+ } - -+# store requires_removable to global_requires -+ foreach my $module (sort keys %require_removable) { -+ my $oldver = $global_require{$module}; -+ my $newver = $require_removable{$module}; -+ if ($oldver) { -+ $global_require{$module} = $newver -+ if ($HAVE_VERSION && $newver && version->new($oldver) < $newver); -+ } else { -+ $global_require{$module} = $newver; -+ } -+ } -+# remove all local requires and provides -+ undef %require; -+ undef %require_removable; -+ undef %provide; -+} - - sub add_require { - my ($module, $newver) = @_; -@@ -82,6 +129,26 @@ sub add_require { - } - } - -+sub add_require_removable { -+ my ($module, $newver) = @_; -+ -+ # __EXAMPLE__ is not valid requirement -+ return if ($module =~ m/^__[A-Z]+__$/o); -+ -+ # To prevent that module does not end with '::' -+ # Example: use base Object::Event::; -+ $module =~ s/::$//; -+ -+ my $oldver = $require_removable{$module}; -+ if ($oldver) { -+ $require_removable{$module} = $newver -+ if ($HAVE_VERSION && $newver && version->new($oldver) < $newver); -+ } -+ else { -+ $require_removable{$module} = $newver; -+ } -+} -+ - sub process_file { - - my ($file) = @_; -@@ -312,7 +379,14 @@ sub process_file { - - # use base|parent qw(Foo) dependencies - # use aliased qw(Foo::Bar) dependencies -- if ($statement eq "use" && ($module eq "base" || $module eq "aliased")) { -+ if ($statement eq "use" && $module eq "base") { -+ add_require($module, $version); -+ if (defined($list) && $list ne "") { -+ add_require_removable($_, undef) for split(' ', $list); -+ } -+ next; -+ } -+ if ($statement eq "use" && $module eq "aliased") { - add_require($module, $version); - if (defined($list) && $list ne "") { - add_require($_, undef) for split(' ', $list); -@@ -353,3 +427,17 @@ sub process_file { - - return; - } -+ -+sub process_file_provides { -+ -+ my ($file) = @_; -+ chomp $file; -+ -+ return if (! $HAVE_PROV); -+ -+ my @result = readpipe( "$prov_script $file" ); -+ foreach my $prov (@result) { -+ $provide{$1} = undef if $prov =~ /perl\(([_:a-zA-Z0-9]+)\)/; -+ } -+ -+} diff --git a/SPECS/perl-generators.spec b/SPECS/perl-generators.spec index 2ea0046..e0b3b91 100644 --- a/SPECS/perl-generators.spec +++ b/SPECS/perl-generators.spec @@ -1,12 +1,11 @@ Name: perl-generators Version: 1.10 -Release: 10%{?dist} +Release: 7%{?dist} Summary: RPM Perl dependencies generators Group: Development/Libraries License: GPL+ URL: http://jplesnik.fedorapeople.org/generators Source0: %{url}/generators-%{version}.tar.gz -Patch0: generators-1.10-remove-perl-provides-from-requires.patch BuildArch: noarch BuildRequires: coreutils BuildRequires: findutils @@ -43,7 +42,6 @@ getting provides and requires from Perl binaries and modules. %prep %setup -q -n generators-%{version} -%patch0 -p1 %build perl Makefile.PL INSTALLDIRS=vendor INSTALLVENDORSCRIPT=%{_rpmconfigdir} @@ -66,15 +64,6 @@ make test %{_rpmconfigdir}/fileattrs/perl*.attr %changelog -* Wed May 29 2019 Jitka Plesnikova - 1.10-10 -- Update filter for removing perl dependencies (bug#1690773) - -* Fri Mar 29 2019 Jitka Plesnikova - 1.10-9 -- Rebuild with enable hardening (bug #1636329) - -* Wed Mar 20 2019 Jitka Plesnikova - 1.10-8 -- Remove perl dependencies that are provided in the same file (bug#1690773) - * Fri Feb 09 2018 Fedora Release Engineering - 1.10-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild