diff options
author | Jani Välimaa <wally@mageia.org> | 2025-01-23 19:35:04 +0200 |
---|---|---|
committer | Jani Välimaa <wally@mageia.org> | 2025-01-24 18:32:52 +0200 |
commit | d881e53fe4db126eb43bfdc1990d4bed548cb955 (patch) | |
tree | 260728d4ea5c60478f60f3153e8ea4e97e56ccee /perl.recommends-from-meta | |
parent | 7e4fb3769c6923e7313867ecf49bfc5710cbbcc7 (diff) | |
download | rpm-setup-d881e53fe4db126eb43bfdc1990d4bed548cb955.tar rpm-setup-d881e53fe4db126eb43bfdc1990d4bed548cb955.tar.gz rpm-setup-d881e53fe4db126eb43bfdc1990d4bed548cb955.tar.bz2 rpm-setup-d881e53fe4db126eb43bfdc1990d4bed548cb955.tar.xz rpm-setup-d881e53fe4db126eb43bfdc1990d4bed548cb955.zip |
Generate recommends from perl META (mga#33945)
Diffstat (limited to 'perl.recommends-from-meta')
-rwxr-xr-x | perl.recommends-from-meta | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/perl.recommends-from-meta b/perl.recommends-from-meta new file mode 100755 index 0000000..c0c7521 --- /dev/null +++ b/perl.recommends-from-meta @@ -0,0 +1,57 @@ +#!/usr/bin/perl + +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 { + my $v = qx{ rpm --eval '%perl_convert_version $version' }; + print "perl($module) >= $v"; + } +} + +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 convert the minimum version to +follow Mageia perl versioning (using C<%perl_convert_version>), and +print them as: + + perl(Foo::Bar) + perl(App::Frobnizer) >= 1.23.456 + +Minimum perl version are skipped. |