andk / cpanpm

CPAN.pm
87 stars 79 forks source link

configure_requires failure, but an UNKNOWN report is generated anyway #185

Open eserte opened 1 month ago

eserte commented 1 month ago

In https://github.com/skaji/perl-File-Copy-clonefile/issues/3 I complained about a module which generated an UNKNOWN report because of an unmet dependency. However it seems that the author did everything right and has a proper configure.requires setting in his META.json.

In a similar log I see the following:

Fetching with LWP:
http://cpan.metacpan.org/authors/id/S/SK/SKAJI/App-RemoteCommand-0.991.tar.gz
...
---- Unsatisfied dependencies detected during ----
----   SKAJI/App-RemoteCommand-0.991.tar.gz   ----
    Dist::Build [build_requires]
Running install for module 'Dist::Build'
Checksum for /home/cpansand/.cpan/sources/authors/id/L/LE/LEONT/Dist-Build-0.006.tar.gz ok
Configuring L/LE/LEONT/Dist-Build-0.006.tar.gz with Build.PL
...
Running Build test for LEONT/Dist-Build-0.006.tar.gz
prove
t/00-compile.t .. ok
ExtUtils::Builder::AutoDetect::C version 0.012 required--this is only version 0.009 at /opt/perl-5.36.3/lib/site_perl/5.36.3/ExtUtils/Builder/Planner.pm line 84.
...
  LEONT/Dist-Build-0.006.tar.gz
  ./Build test -- NOT OK
...
Warning: Prerequisite 'Dist::Build => 0.006' for 'SKAJI/App-RemoteCommand-0.991.tar.gz' failed when processing 'LEONT/Dist-Build-0.006.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Configuring S/SK/SKAJI/App-RemoteCommand-0.991.tar.gz with Build.PL
Dist::Build version 0.006 required--this is only version 0.001 at Build.PL line 7.
BEGIN failed--compilation aborted at Build.PL line 7.
(/opt/perl-5.36.3/bin/perl Build.PL exited with 65280)
CPAN::Reporter: Build.PL result is 'unknown', Stopped with an error.
CPAN::Reporter: preparing a CPAN Testers report for App-RemoteCommand-0.991
CPAN::Reporter: sending test report with 'unknown' via File

The latter can be roughly reproduced with the following Dockerfile:

# docker build -t perl-test . && docker run perl-test

FROM perl:5.40-bookworm

# Simulate old Dist::Build installation
RUN cpan L/LE/LEONT/ExtUtils-Builder-0.002.tar.gz L/LE/LEONT/ExtUtils-Builder-Compiler-0.009.tar.gz L/LE/LEONT/Dist-Build-0.001.tar.gz

# Simulate old state with Dist::Build 0.006 in the indexes
RUN rm /root/.cpan/Metadata
RUN gunzip /root/.cpan/sources/modules/02packages.details.txt.gz
RUN perl -i -pe 's{^Dist::Build\s+.*}{Dist::Build                       0.006  L/LE/LEONT/Dist-Build-0.006.tar.gz}' /root/.cpan/sources/modules/02packages.details.txt
RUN gzip /root/.cpan/sources/modules/02packages.details.txt
RUN zgrep '^Dist::Build[ ]' /root/.cpan/sources/modules/02packages.details.txt.gz

# Need to upgrade Dist::Build
CMD cpan File::Copy::clonefile
#CMD cpan SKAJI/App-RemoteCommand-0.991.tar.gz
#CMD cpan L/LE/LEONT/Dist-Build-0.006.tar.gz

So for me it seems that CPAN.pm does not properly detect a failure in a configure.requires build, and falsely send cpantesters reports.