aboutsummaryrefslogtreecommitdiffstats
path: root/perl.recommends-from-meta
diff options
context:
space:
mode:
authorJani Välimaa <wally@mageia.org>2025-01-23 19:35:04 +0200
committerJani Välimaa <wally@mageia.org>2025-01-24 18:32:52 +0200
commitd881e53fe4db126eb43bfdc1990d4bed548cb955 (patch)
tree260728d4ea5c60478f60f3153e8ea4e97e56ccee /perl.recommends-from-meta
parent7e4fb3769c6923e7313867ecf49bfc5710cbbcc7 (diff)
downloadrpm-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-xperl.recommends-from-meta57
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.