App-cpan2arch
view release on metacpan or search on metacpan
lib/App/cpan2arch/GetMetadata.pm view on Meta::CPAN
use strict;
use warnings;
no source::encoding; # Avoid dying on v5.42.0 (non-ASCII char in POD).
use Object::Pad 0.825;
package App::cpan2arch::GetMetadata; # For toolchain compatibility.
role App::cpan2arch::GetMetadata;
use File::Spec::Functions qw< catdir splitdir >;
use Scalar::Util qw< looks_like_number >;
our $VERSION = 'v1.1.2';
field %_endpoints :reader :writer = (
module => 'https://fastapi.metacpan.org/v1/module/',
release => 'https://fastapi.metacpan.org/v1/release/',
download => 'https://fastapi.metacpan.org/v1/download_url/',
);
field $_mua_mcpan :reader;
field %_optionals :reader;
lib/App/cpan2arch/GetMetadata.pm view on Meta::CPAN
$rel = $self->_get_release($dist);
return 1 if $rel == 1;
$self->_pdbg("Release\n");
$self->_pdump( '$rel', \$rel, "\n" );
}
# Find Module::Install, license, and XS files in the dist.
my $ret = $self->_find_files( $dist, $rel->{download_url} );
return 1 if looks_like_number($ret) && $ret == 1;
my %files = $ret->%*;
# Get 'optionals_features' descriptions (will be added to the optdepends array).
# See https://metacpan.org/pod/CPAN::Meta::Spec#optional_features.
{
foreach my ( $feature, $feat_info ) ( $rel->{metadata}{optional_features}->%* ) {
foreach my ( $phase, $phase_info ) ( $feat_info->{prereqs}->%* ) {
foreach my ( $relation, $rel_info ) ( $phase_info->%* ) {
lib/App/cpan2arch/MergePrereqs.pm view on Meta::CPAN
use strict;
use warnings;
no source::encoding; # Avoid dying on v5.42.0 (non-ASCII char in POD).
use Object::Pad 0.825;
package App::cpan2arch::MergePrereqs; # For toolchain compatibility.
role App::cpan2arch::MergePrereqs;
use Scalar::Util qw< looks_like_number >;
use List::Util qw< any >;
our $VERSION = 'v1.1.2';
field %_cpan_prereqs :reader :writer;
field @_fetch_errors :reader;
field @_prereq_dists;
# Merge CPAN prerequisites to PKGBUILD dependencies.
#
lib/App/cpan2arch/MergePrereqs.pm view on Meta::CPAN
my %meta = $self->meta;
%_cpan_prereqs = (
depends => undef,
makedepends => undef,
checkdepends => undef,
optdepends => undef,
);
my $prereqs = $self->_get_dists;
return 1 if looks_like_number($prereqs) && $prereqs == 1;
$self->_pdump( '$prereqs', $prereqs, "\n" );
foreach my $dep ( $prereqs->@* ) {
my ( $module, $dist, $phase, $relationship, $version, $failed ) =
$dep->@{ qw< module dist phase relationship version failed > };
my $variable =
$relationship eq 'recommends' || $relationship eq 'suggests' ? 'optdepends'
: $phase eq 'configure' || $phase eq 'build' ? 'makedepends'
: $phase eq 'runtime' ? 'depends'
lib/App/cpan2arch/WritePkgbuild.pm view on Meta::CPAN
no source::encoding; # Avoid dying on v5.42.0 (non-ASCII char in POD).
use Object::Pad 0.825;
package App::cpan2arch::WritePkgbuild; # For toolchain compatibility.
role App::cpan2arch::WritePkgbuild;
use open qw< :std :encoding(UTF-8) >;
use File::Basename qw< basename >;
use Scalar::Util qw< looks_like_number >;
use List::Util qw<
any
first
reduce
uniq
>;
$|++; # Disable STDOUT buffering.
our $VERSION = 'v1.1.2';
lib/App/cpan2arch/WritePkgbuild.pm view on Meta::CPAN
{
my $ret = $self->_comp_vers( $_pkgbuild{pkgver}, $srcinfo_meta{pkgver}, '<' );
return 1 if defined $ret && $ret == 1;
if ( defined $ret && $ret == 0 ) {
warn "$prog: $FILES{metadata} version ($srcinfo_meta{pkgver}) is newer than $_pkgbuild{pkgver}\n";
return 1;
}
}
if ( !looks_like_number( $srcinfo_meta{pkgrel} ) ) {
warn "$prog: pkgrel $srcinfo_meta{pkgrel} is not a number\n";
return 1;
}
# Add epoch if newer version breaks pacman's version comparison logic.
#
# References:
# https://wiki.archlinux.org/title/PKGBUILD#epoch
# https://man.archlinux.org/man/core/pacman/PKGBUILD.5.en#:~:text=epoch
# https://man.archlinux.org/man/alpm-epoch.7
( run in 0.610 second using v1.01-cache-2.11-cpan-0b5f733616e )