Skip Menu |

This queue is for tickets about the CPAN CPAN distribution.

Report information
The Basics
Id: 123447
Status: resolved
Priority: 0/
Queue: CPAN

People
Owner: Nobody in particular
Requestors: 'spro^^*%*^6ut# [...] &$%*c
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in:
  • 2.19-TRIAL
  • 2.20-TRIAL
  • 2.22



Subject: Dependency problem: does not install on fresh 5.26.0 installation
I have just installed 5.26.0 with the defaults for everything. ‘test Class::Load’ in the CPAN shell fails, apparently because a required dependency (Data::OptList) is listed as optional, so things get processed the wrong order. What I think are relevant parts of the build log are as follows: $ cpan5.26.0 Loading internal null logger. Install Log::Log4perl for logging messages There seems to be running another CPAN process (pid 16650). Contacting... Other job is running. Shall I try to run in downgraded mode? (Y/n) [y] Running in downgraded mode (experimental). Please report if something unexpected happens cpan shell -- CPAN exploration and modules installation (v2.18) Enter 'h' for help. Show quoted text
nolock_cpan> test Class::Load
... 'YAML' not installed, will not store persistent state CPAN: CPAN::Meta::Requirements loaded ok (v2.140) CPAN: Parse::CPAN::Meta loaded ok (v2.150010) CPAN: CPAN::Meta loaded ok (v2.150010) CPAN: Module::CoreList loaded ok (v5.20170530) Configuring E/ET/ETHER/Class-Load-0.24.tar.gz with Makefile.PL Checking if your kit is complete... Looks good Warning: prerequisite Data::OptList 0 not found. Warning: prerequisite Module::Implementation 0.04 not found. Warning: prerequisite Module::Runtime 0.012 not found. Warning: prerequisite Package::Stash 0.14 not found. Warning: prerequisite Test::Fatal 0 not found. Warning: prerequisite Test::Needs 0 not found. Warning: prerequisite Try::Tiny 0 not found. Generating a Unix-style Makefile Writing Makefile for Class::Load Writing MYMETA.yml and MYMETA.json ETHER/Class-Load-0.24.tar.gz /usr/local/bin/perl5.26.0 Makefile.PL -- OK Running make for E/ET/ETHER/Class-Load-0.24.tar.gz Show quoted text
---- Unsatisfied dependencies detected during ---- ---- ETHER/Class-Load-0.24.tar.gz ---- Data::OptList [requires,optional] Module::Implementation [requires] Module::Runtime [requires] Package::Stash [requires] Test::Fatal [build_requires] Test::Needs [build_requires] Try::Tiny [requires] Running test for module 'Module::Implementation' ... Notice how the list of dependencies says [requires,optional] for Data::OptList. The modules are then processed in this order: • Module::Implementation, which depends on: • Module::Runtime, which depends on: • Module::Build • Test::Fatal, which depends on: • Try::Tiny • Test::Requires • Package::Stash, which depends on: • Dist::CheckConflicts • Package::Stash::XS • Test::Needs and then when it comes to build Class::Load, it again lists the optional prerequisite: Running make for E/ET/ETHER/Class-Load-0.24.tar.gz
---- Unsatisfied dependencies detected during ---- ---- ETHER/Class-Load-0.24.tar.gz ---- Data::OptList [requires,optional] cp lib/Class/Load/PP.pm blib/lib/Class/Load/PP.pm cp lib/Class/Load.pm blib/lib/Class/Load.pm Manifying 1 pod document ETHER/Class-Load-0.24.tar.gz /usr/bin/make -- OK Running make test which fails: t/000-load.t .................... 1/? # Failed test 'use Test::Class::Load;' # at t/000-load.t line 9. # Tried to use 'Test::Class::Load'. # Error: Can't locate Data/OptList.pm in @INC (you may need to install the Data::OptList module) (@INC contains: blah blah blah) ... Files=16, Tests=2, 3 wallclock secs ( 0.07 usr 0.03 sys + 1.31 cusr 0.32 csys = 1.73 CPU) Result: FAIL Failed 13/16 test programs. 1/2 subtests failed. make: *** [test_dynamic] Error 2 ETHER/Class-Load-0.24.tar.gz /usr/bin/make test -- NOT OK //hint// to see the cpan-testers results for installing this module, try: reports ETHER/Class-Load-0.24.tar.gz Running test for module 'Data::OptList' Checksum for /Users/sprout/.cpan/sources/authors/id/R/RJ/RJBS/Data-OptList-0.110.tar.gz ok x Data-OptList-0.110 x Data-OptList-0.110/README x Data-OptList-0.110/Changes x Data-OptList-0.110/LICENSE x Data-OptList-0.110/dist.ini x Data-OptList-0.110/t x Data-OptList-0.110/t/hash.t x Data-OptList-0.110/META.yml x Data-OptList-0.110/MANIFEST Oh look, now it’s processing Data::OptList. How is that ‘,optional’ getting there? Attached is the full build log. $ perl5.26.0 -V Summary of my perl5 (revision 5 version 26 subversion 0) configuration: Platform: osname=darwin osvers=12.5.0 archname=darwin-2level uname='darwin pint.local 12.5.0 darwin kernel version 12.5.0: sun sep 29 13:33:47 pdt 2013; root:xnu-2050.48.12~1release_x86_64 x86_64 ' config_args='-Dversiononly -de' hint=recommended useposix=true d_sigaction=define useithreads=undef usemultiplicity=undef use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=n default_inc_excludes_dot=define bincompat5005=undef Compiler: cc='cc' ccflags ='-fno-common -DPERL_DARWIN -mmacosx-version-min=10.8 -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/opt/local/include -DPERL_USE_SAFE_PUTENV' optimize='-O3' cppflags='-fno-common -DPERL_DARWIN -mmacosx-version-min=10.8 -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/opt/local/include' ccversion='' gccversion='4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.27)' gccosandvers='' intsize=4 longsize=8 ptrsize=8 doublesize=8 byteorder=12345678 doublekind=3 d_longlong=define longlongsize=8 d_longdbl=define longdblsize=16 longdblkind=3 ivtype='long' ivsize=8 nvtype='double' nvsize=8 Off_t='off_t' lseeksize=8 alignbytes=8 prototype=define Linker and Libraries: ld='cc' ldflags =' -mmacosx-version-min=10.8 -fstack-protector -L/usr/local/lib -L/opt/local/lib' libpth=/usr/local/lib /usr/bin/../lib/clang/4.2/lib /usr/lib /opt/local/lib libs=-lpthread -ldbm -ldl -lm -lutil -lc perllibs=-lpthread -ldl -lm -lutil -lc libc= so=dylib useshrplib=false libperl=libperl.a gnulibc_version='' Dynamic Linking: dlsrc=dl_dlopen.xs dlext=bundle d_dlsymun=undef ccdlflags=' ' cccdlflags=' ' lddlflags=' -mmacosx-version-min=10.8 -bundle -undefined dynamic_lookup -L/usr/local/lib -L/opt/local/lib -fstack-protector' Characteristics of this binary (from libperl): Compile-time options: HAS_TIMES PERLIO_LAYERS PERL_COPY_ON_WRITE PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP PERL_OP_PARENT PERL_PRESERVE_IVUV PERL_USE_SAFE_PUTENV USE_64_BIT_ALL USE_64_BIT_INT USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERLIO USE_PERL_ATOF Built under darwin Compiled at Oct 29 2017 13:20:00 @INC: /usr/local/lib/perl5/site_perl/5.26.0/darwin-2level /usr/local/lib/perl5/site_perl/5.26.0 /usr/local/lib/perl5/5.26.0/darwin-2level /usr/local/lib/perl5/5.26.0 /usr/local/lib/perl5/site_perl
Subject: tmp.text

Message body is not shown because it is too large.

I think the issue is that Data::OptList is listed in both requires and recommends. The required version is version 0 and the recommends is for 0.110. I'd argue that this is a bug in the CPAN shell, but it probably makes sense to just require the 0.110 version.
On 2018-06-09 09:00:32, DROLSKY wrote: Show quoted text
> I think the issue is that Data::OptList is listed in both requires and > recommends. The required version is version 0 and the recommends is > for 0.110. > > I'd argue that this is a bug in the CPAN shell, but it probably makes > sense to just require the 0.110 version.
This is most definitely a CPAN bug. I'll move this ticket there. (I'll also update the prereqs in metadata so we don't hit this problem again, in the meantime.)
Having reproduced this in 2.18 we've been unable to reproduce in 2.20. This appears to be fixed now. Show quoted text
> This is most definitely a CPAN bug. I'll move this ticket there. > > (I'll also update the prereqs in metadata so we don't hit this problem > again, in the meantime.)
Indeed, this looks like a duplicate of #121914 which was fixed in 2.19. I'll mark this one as fixed, too.
Marking as resolved, since release 2.22 is out and not a trial. Thanks!