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 )