diff --git a/perl-generators.spec b/perl-generators.spec index 3162feed77284af65f35be68e6983c36c6970541..85a12bf03169e970578db6c0b4cf3b6e83b1fcc9 100644 --- a/perl-generators.spec +++ b/perl-generators.spec @@ -1,10 +1,17 @@ Name: perl-generators Version: 1.16 -Release: 1 +Release: 2 Summary: RPM Perl dependencies generators -License: GPL-1.0-or-later +License: GPL-1.0-or-later and GPL-2.0-or-later URL: http://jplesnik.fedorapeople.org/generators +# licensed under GPL-1.0-or-later Source0: %{url}/generators-%{version}.tar.gz +# S11:13 From Mageia: https://gitweb.mageia.org/software/rpm/rpm-setup +# with slightly modified (mageia specific code removed) +# Original licensed under GPL-2.0-or-later +Source11: perl_from_meta.attr +Source12: perl.req-from-meta +Source13: perl.recommends-from-meta BuildArch: noarch BuildRequires: coreutils findutils make @@ -32,7 +39,7 @@ Recommends: perl(version) %description This package provides RPM Perl dependencies generators which are used for -getting provides and requires from Perl binaries and modules. +getting provides and requires (including recommends) from Perl binaries and modules. %prep %setup -q -n generators-%{version} @@ -54,6 +61,9 @@ perl Makefile.PL INSTALLDIRS=vendor INSTALLVENDORSCRIPT=%{_rpmconfigdir} \ mkdir -p %{buildroot}%{_rpmconfigdir}/fileattrs/ install -p -m 644 fileattrs/* '%{buildroot}%{_rpmconfigdir}/fileattrs' +install %{S:11} %{buildroot}%{_rpmconfigdir}/fileattrs +install %{S:12} %{S:13} %{buildroot}%{_rpmconfigdir}/ + %check make test @@ -63,6 +73,10 @@ make test %{_rpmconfigdir}/fileattrs/perl*.attr %changelog +* Sat Jan 25 2025 Funda Wang - 1.16-2 +- add perl_from_meta from mageia so that dependencies could be + fetched from META.json/yml + * Mon Oct 14 2024 Funda Wang - 1.16-1 - update to 1.16 * Squash multiple perl(:VERSION) symbols into one diff --git a/perl.recommends-from-meta b/perl.recommends-from-meta new file mode 100644 index 0000000000000000000000000000000000000000..61818063029db4c12132b5b5364dbb91b0387ece --- /dev/null +++ b/perl.recommends-from-meta @@ -0,0 +1,61 @@ +#!/usr/bin/perl + +# Originally from Mageia as of 2025-01-25 +# https://gitweb.mageia.org/software/rpm/rpm-setup/ +# Licensed under GPL-2.0-or-later (maybe?) +# via: https://svnweb.mageia.org/packages/cauldron/rpm-mageia-setup/current/SPECS/rpm-mageia-setup.spec +# +# Modifed by Funda Wang , Jan 2025 + +use strict; +use warnings; + +use JSON qw{ from_json }; +use YAML qw{ Load }; + +# slurp the file +my $path = <>; +chomp($path); +open my $fh, '<', $path or die "can't open $path: $!"; +my $data = do { local $/; <$fh> }; +close $fh; + +# parse meta - either yaml or json +my $meta = $path =~ /\.yml$/ + ? Load( $data ) + : from_json( $data ); + +# dump the recommends with their version +my $recommends = $meta->{"meta-spec"}{version} >= 2 + ? $meta->{prereqs}{runtime}{recommends} + : $meta->{recommends}; +foreach my $module ( sort keys %$recommends ) { + next if $module eq 'perl'; # minimum perl version + my $version = $recommends->{$module}; + if ( $version == 0 ) { + print "perl($module)\n"; + } else { + print "perl($module) >= $version\n"; + } +} + +exit; + +=head1 NAME + +perl.recommends-from-meta - extract recommends from meta file + +=head1 SYNOPSIS + + $ perl.recommends-from-meta /path/to/META.yml + $ perl.recommends-from-meta /path/to/META.json + +=head1 DESCRIPTION + +This script will extract Perl recommends from the distribution meta +file. For each such recommends, it'll print them as: + + perl(Foo::Bar) + perl(App::Frobnizer) >= 1.23.456 + +Minimum perl version are skipped. diff --git a/perl.req-from-meta b/perl.req-from-meta new file mode 100644 index 0000000000000000000000000000000000000000..32f14b115a7b991a1bf5743f21cc90e3eae3f14a --- /dev/null +++ b/perl.req-from-meta @@ -0,0 +1,61 @@ +#!/usr/bin/perl + +# Originally from Mageia as of 2025-01-25 +# https://gitweb.mageia.org/software/rpm/rpm-setup/ +# Licensed under GPL-2.0-or-later (maybe?) +# via: https://svnweb.mageia.org/packages/cauldron/rpm-mageia-setup/current/SPECS/rpm-mageia-setup.spec +# +# Modifed by Funda Wang , Jan 2025 + +use strict; +use warnings; + +use JSON qw{ from_json }; +use YAML qw{ Load }; + +# slurp the file +my $path = <>; +chomp($path); +open my $fh, '<', $path or die "can't open $path: $!"; +my $data = do { local $/; <$fh> }; +close $fh; + +# parse meta - either yaml or json +my $meta = $path =~ /\.yml$/ + ? Load( $data ) + : from_json( $data ); + +# dump the requires with their version +my $requires = $meta->{"meta-spec"}{version} >= 2 + ? $meta->{prereqs}{runtime}{requires} + : $meta->{requires}; +foreach my $module ( sort keys %$requires ) { + next if $module eq 'perl'; # minimum perl version + my $version = $requires->{$module}; + if ( $version == 0 ) { + print "perl($module)\n"; + } else { + print "perl($module) >= $version\n"; + } +} + +exit; + +=head1 NAME + +perl.req-from-meta - extract requires from meta file + +=head1 SYNOPSIS + + $ perl.req-from-meta /path/to/META.yml + $ perl.req-from-meta /path/to/META.json + +=head1 DESCRIPTION + +This script will extract Perl requirements from the distribution meta +file. For each such requires, it'll print them as: + + perl(Foo::Bar) + perl(App::Frobnizer) >= 1.23.456 + +Minimum perl version are skipped. diff --git a/perl_from_meta.attr b/perl_from_meta.attr new file mode 100644 index 0000000000000000000000000000000000000000..a656a8f1cccbbbaabb9ef1f20d603647cea2c6a9 --- /dev/null +++ b/perl_from_meta.attr @@ -0,0 +1,10 @@ +# Originally from Mageia as of 2025-01-25 +# https://gitweb.mageia.org/software/rpm/rpm-setup/ +# Licensed under GPL-2.0-or-later (maybe?) +# via: https://svnweb.mageia.org/packages/cauldron/rpm-mageia-setup/current/SPECS/rpm-mageia-setup.spec +# +# Modifed by Funda Wang , Jan 2025 + +%__perl_from_meta_recommends %{_rpmconfigdir}/perl.recommends-from-meta +%__perl_from_meta_requires %{_rpmconfigdir}/perl.req-from-meta +%__perl_from_meta_path /(META.json|(MY|)META.yml)$