PaulHowarth/Blog/2012-04-18

Wednesday 18th April 2012

Fedora Project

  • Raised Bug #813698 requesting that the Test::Mouse module be split into a sub-package from perl-Mouse so as to avoid the latter package having a dependency on perl(Test::Builder), a development package

Local Packages

  • New package perl-MetaCPAN-API (0.43)

  • I built this package to use in a new version of my upstream monitoring script for perl module releases, since pulling data from http://search.cpan.org/ seems to be getting less reliable; whilst developing the new script, I came across a few inconsistencies:

    • Algorithm-Diff-XS 0.04 cites a version: 0.01 rather than 0.04 in its META.yml (CPAN RT#76654)

    • Crypt-RSA 1.99 cites a version: 1.97 rather than 1.99 in its META.yml (CPAN RT#76655)

    • IO-Capture 0.05 cites a version: 0.04 rather than 0.05 in its META.yml (CPAN RT#76656)

    • PlRPC 0.2020 cites a version: 0.2018 rather than 0.2020 in its META.yml (CPAN RT#76657)

    • Spiffy 0.30 cites a version: 0.25 rather than 0.30 in its META.yml (CPAN RT#19865)

    • According to MetaCPAN, the "latest" release of Class-MOP is 0.36 rather than 1.12 (MetaCPAN Issue #550)

    • common-sense doesn't show up on MetaCPAN, and neither do grepmail or weblint (MetaCPAN Issue #548)

  • Retrieving the "latest" version of a module from MetaCPAN was easy; finding the latest development version was harder, but I came up with this:
  • use MetaCPAN::API;
    
    my $distro = 'Archive-Tar'; # for example
    
    my $dist = $mcpan->release(
        search => {
            q => "distribution:$distro AND maturity:developer",
            fields => "name,version,status,maturity,date",
            sort => 'date:desc',
            size => 1,
        },
    );
    my $hits = $dist->{'hits'}->{'hits'};
    my ($best_hit, $devel_meta_version, $devel_name_version, $devel_date);
    if (scalar @{ $hits }) {
        $best_hit = shift( $hits )->{'fields'};
        $devel_meta_version = $best_hit->{'version'};
        $devel_name_version = version_from_name($distro, $best_hit->{'name'});
        $devel_date = $best_hit->{'date'};
    }


Recent