Skip Menu |

This queue is for tickets about the podlators CPAN distribution.

Report information
The Basics
Id: 109997
Status: resolved
Priority: 0/
Queue: podlators

People
Owner: RRA [...] cpan.org
Requestors: ZEBARDY [...] cpan.org
Cc: dagolden [...] cpan.org
ether [...] cpan.org
ribasushi [...] leporine.io
AdminCc:

Bug Information
Severity: Important
Broken in: 4.00
Fixed in: 4.01



Subject: Possible circular dependency when building with cpanm
It seems that when attempting to build Module::Build with cpanm Pod::Man is discovered as a dependency provided by podlators, which appears to now have a dependency on Module::Build:- ==> Found dependencies: Module::Build --> Working on Module::Build Fetching http://backpan.perl.org/authors/id/L/LE/LEONT/Module-Build-0.4214.tar.gz ... OK ==> Found dependencies: CPAN::Meta --> Working on CPAN::Meta Fetching http://backpan.perl.org/authors/id/D/DA/DAGOLDEN/CPAN-Meta-2.150005.tar.gz ... OK Configuring CPAN-Meta-2.150005 ... OK ==> Found dependencies: Parse::CPAN::Meta --> Working on Parse::CPAN::Meta Fetching http://backpan.perl.org/authors/id/D/DA/DAGOLDEN/Parse-CPAN-Meta-1.4417.tar.gz ... OK Configuring Parse-CPAN-Meta-1.4417 ... OK ==> Found dependencies: CPAN::Meta::YAML --> Working on CPAN::Meta::YAML Fetching http://backpan.perl.org/authors/id/D/DA/DAGOLDEN/CPAN-Meta-YAML-0.016.tar.gz ... OK Configuring CPAN-Meta-YAML-0.016 ... OK Building CPAN-Meta-YAML-0.016 ... OK Successfully installed CPAN-Meta-YAML-0.016 (upgraded from 0.008) Building Parse-CPAN-Meta-1.4417 ... OK Successfully installed Parse-CPAN-Meta-1.4417 (upgraded from 1.4405) Building CPAN-Meta-2.150005 ... OK Successfully installed CPAN-Meta-2.150005 (upgraded from 2.120351) Configuring Module-Build-0.4214 ... OK ==> Found dependencies: Test::Harness, Pod::Man --> Working on Test::Harness Fetching http://backpan.perl.org/authors/id/L/LE/LEONT/Test-Harness-3.35.tar.gz ... OK Configuring Test-Harness-3.35 ... OK Building Test-Harness-3.35 ... OK Successfully installed Test-Harness-3.35 (upgraded from 2.56) --> Working on Pod::Man Fetching http://backpan.perl.org/authors/id/R/RR/RRA/podlators-4.00.tar.gz ... OK ! Installing the dependencies failed: Module 'Module::Build' is not installed ! Bailing out the installation for podlators-4.00. ! Installing the dependencies failed: Installed version (1.37) of Pod::Man is not in range '2.17' ! Bailing out the installation for Module-Build-0.4214. ! Installing the dependencies failed: Module 'Module::Build' is not installed ! Bailing out the installation for Log-Minimal-0.19. This is trying to install Module::Build on perl 5.8.8 (yeah I know, current work will hopefully see us free to choose a more modern perl version) with cpanm.
Subject: Re: [rt.cpan.org #109997] Possible circular dependency when building with cpanm
Date: Tue, 01 Dec 2015 11:42:59 -0800
To: "Aaron James Moses via RT" <bug-podlators [...] rt.cpan.org>
From: Russ Allbery <rra [...] cpan.org>
"Aaron James Moses via RT" <bug-podlators@rt.cpan.org> writes: Show quoted text
> It seems that when attempting to build Module::Build with cpanm Pod::Man > is discovered as a dependency provided by podlators, which appears to > now have a dependency on Module::Build:-
I might be mistaken, but I don't think there's anything I can do about this in podlators, is there? It feels like a bug in cpanm. -- #!/usr/bin/perl -- Russ Allbery, Just Another Perl Hacker $^=q;@!>~|{>krw>yn{u<$$<[~||<Juukn{=,<S~|}<Jwx}qn{<Yn{u<Qjltn{ > 0gFzD gD, 00Fz, 0,,( 0hF 0g)F/=, 0> "L$/GEIFewe{,$/ 0C$~> "@=,m,|,(e 0.), 01,pnn,y{ rw} >;,$0=q,$,,($_=$^)=~y,$/ C-~><@=\n\r,-~$:-u/ #y,d,s,(\$.),$1,gee,print
On Tue Dec 01 20:43:10 2015, RRA wrote: Show quoted text
> > I might be mistaken, but I don't think there's anything I can do about > this in podlators, is there? It feels like a bug in cpanm. >
It is not a bug in cpanm. The chain starts from this change: https://metacpan.org/source/RRA/podlators-4.00/Changes#L81-83 This requires Module::Build where it is not available (any perl except 5.10.x~5.20.x inclusive). Module::Build itself requires Pod::Man 2.17+ (https://metacpan.org/source/LEONT/Module-Build-0.4214/META.json#L58) which creates a circular dependency chain on any perl before 5.10. My recommendation is to revert the reliance on Module::Build - it makes no sense on *current* perls, as pulling in Module::Build on 5.22.0 (where it is not available) takes many minutes. Given you already had the entire thing running under ExtUtils::MakeMaker, it seems counterintuitive to increase the installation time burden.
On Tue Dec 01 23:33:09 2015, RIBASUSHI wrote: Show quoted text
> > ... creates a circular dependency chain on any perl before 5.10.
The above should have been 5.10.1. Perl 5.10.0 is affected by this problem as well as it has Pod::Man 2.16
Subject: Re: [rt.cpan.org #109997] Possible circular dependency when building with cpanm
Date: Tue, 01 Dec 2015 15:10:23 -0800
To: "Peter Rabbitson via RT" <bug-podlators [...] rt.cpan.org>
From: Russ Allbery <rra [...] cpan.org>
"Peter Rabbitson via RT" <bug-podlators@rt.cpan.org> writes: Show quoted text
> This requires Module::Build where it is not available (any perl except > 5.10.x~5.20.x inclusive).
Show quoted text
> Module::Build itself requires Pod::Man 2.17+ > (https://metacpan.org/source/LEONT/Module-Build-0.4214/META.json#L58) > which creates a circular dependency chain on any perl before 5.10.
Ah, thank you, that was the bit I hadn't fully realized. Module::Build has a particular version restriction. I was confused why cpanm wasn't content with the version of Pod::Man available as part of Perl, since it's been part of Perl core forever. I really like using Module::Build for normal development and builds, since if it's already installed it's a much nicer experience. However, it's not mandatory, since ExtUtils::MakeMaker can be used instead. I think the right approach here is for me to remove Module::Build from the requirements (but still ship a Build.PL for whoever might want to use it). I'll figure out how to do that and release a 4.01. I need to figure out why my fix for Term::Cap backwards-incompatible changes didn't work as well. -- #!/usr/bin/perl -- Russ Allbery, Just Another Perl Hacker $^=q;@!>~|{>krw>yn{u<$$<[~||<Juukn{=,<S~|}<Jwx}qn{<Yn{u<Qjltn{ > 0gFzD gD, 00Fz, 0,,( 0hF 0g)F/=, 0> "L$/GEIFewe{,$/ 0C$~> "@=,m,|,(e 0.), 01,pnn,y{ rw} >;,$0=q,$,,($_=$^)=~y,$/ C-~><@=\n\r,-~$:-u/ #y,d,s,(\$.),$1,gee,print
Subject: Re: [rt.cpan.org #109997] Possible circular dependency when building with cpanm
Date: Wed, 02 Dec 2015 00:15:31 +0100
To: bug-podlators [...] rt.cpan.org, ZEBARDY [...] cpan.org
From: Peter Rabbitson <ribasushi [...] cpan.org>
On 12/02/2015 12:10 AM, Russ Allbery via RT wrote: Show quoted text
> ... but still ship a Build.PL for whoever might want to use it
Sadly this will not work. Many clients both prefer Build.PL *AND* auto-install Module::Build even when it is not specified in the prereqs, because "Well - there is a Build.PL: surely this dist needs a Module::Build".
Subject: Re: [rt.cpan.org #109997] Possible circular dependency when building with cpanm
Date: Tue, 01 Dec 2015 15:18:42 -0800
To: "Peter Rabbitson via RT" <bug-podlators [...] rt.cpan.org>
From: Russ Allbery <rra [...] cpan.org>
"Peter Rabbitson via RT" <bug-podlators@rt.cpan.org> writes: Show quoted text
> Sadly this will not work. Many clients both prefer Build.PL *AND* > auto-install Module::Build even when it is not specified in the prereqs, > because "Well - there is a Build.PL: surely this dist needs a > Module::Build".
*That* feels like a bug, no? But maybe hard to fix. I'm pretty unhappy about the prospect of returning to the dark ages of ExtUtils::MakeMaker for development. Is there some other alternative here? -- #!/usr/bin/perl -- Russ Allbery, Just Another Perl Hacker $^=q;@!>~|{>krw>yn{u<$$<[~||<Juukn{=,<S~|}<Jwx}qn{<Yn{u<Qjltn{ > 0gFzD gD, 00Fz, 0,,( 0hF 0g)F/=, 0> "L$/GEIFewe{,$/ 0C$~> "@=,m,|,(e 0.), 01,pnn,y{ rw} >;,$0=q,$,,($_=$^)=~y,$/ C-~><@=\n\r,-~$:-u/ #y,d,s,(\$.),$1,gee,print
Subject: Re: [rt.cpan.org #109997] Possible circular dependency when building with cpanm
Date: Tue, 01 Dec 2015 15:19:58 -0800
To: "Russ Allbery via RT" <bug-podlators [...] rt.cpan.org>
From: Russ Allbery <rra [...] cpan.org>
"Russ Allbery via RT" <bug-podlators@rt.cpan.org> writes: Show quoted text
> I'm pretty unhappy about the prospect of returning to the dark ages of > ExtUtils::MakeMaker for development. Is there some other alternative > here?
Hm, what if I renamed Build.PL to something else, but documented that you could use it? Since it's invoked via perl Build.PL, I could easily rename it to Build-maint.PL or the like, and that should defeat the broken autodetection logic. -- #!/usr/bin/perl -- Russ Allbery, Just Another Perl Hacker $^=q;@!>~|{>krw>yn{u<$$<[~||<Juukn{=,<S~|}<Jwx}qn{<Yn{u<Qjltn{ > 0gFzD gD, 00Fz, 0,,( 0hF 0g)F/=, 0> "L$/GEIFewe{,$/ 0C$~> "@=,m,|,(e 0.), 01,pnn,y{ rw} >;,$0=q,$,,($_=$^)=~y,$/ C-~><@=\n\r,-~$:-u/ #y,d,s,(\$.),$1,gee,print
Subject: Re: [rt.cpan.org #109997] Possible circular dependency when building with cpanm
Date: Wed, 02 Dec 2015 00:25:46 +0100
To: bug-podlators [...] rt.cpan.org, ZEBARDY [...] cpan.org
From: Peter Rabbitson <ribasushi [...] cpan.org>
On 12/02/2015 12:20 AM, Russ Allbery via RT wrote: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=109997 > > > "Russ Allbery via RT" <bug-podlators@rt.cpan.org> writes: >
>> I'm pretty unhappy about the prospect of returning to the dark ages of >> ExtUtils::MakeMaker for development. Is there some other alternative >> here?
> Hm, what if I renamed Build.PL to something else, but documented that you > could use it? Since it's invoked via perl Build.PL, I could easily rename > it to Build-maint.PL or the like, and that should defeat the broken > autodetection logic.
I do not have a good answer to that, as I am not sure where the "M::B > EUMM" stance is coming from in the first place. I'd recommend asking "people in the know" here: https://chat.mibbit.com/?channel=%23toolchain&server=irc.perl.org
On Tue Dec 01 18:20:14 2015, RRA wrote: Show quoted text
> Hm, what if I renamed Build.PL to something else, but documented that you > could use it? Since it's invoked via perl Build.PL, I could easily rename > it to Build-maint.PL or the like, and that should defeat the broken > autodetection logic.
That's a stop-gap measure and should be released in a 4.01 ASAP, I think. Beyond that, I would look into not even shipping Build.PL (and ensuring that its not in the configure_requires dependencies). You can just leave it in the source code repository. The only person who will every wind up using it will be you or others working from the repo.
On Tue Dec 01 18:18:52 2015, RRA wrote: Show quoted text
> "Peter Rabbitson via RT" <bug-podlators@rt.cpan.org> writes: >
> > Sadly this will not work. Many clients both prefer Build.PL *AND* > > auto-install Module::Build even when it is not specified in the prereqs, > > because "Well - there is a Build.PL: surely this dist needs a > > Module::Build".
> > *That* feels like a bug, no? But maybe hard to fix. > > I'm pretty unhappy about the prospect of returning to the dark ages of > ExtUtils::MakeMaker for development. Is there some other alternative > here? >
Dist::Zilla (or Dist::Milla) could be considered a more developer-friendly experience, while ultimately generating a standard Makefile.PL with no extra dependencies for the shipped dist. (Make sure to specify installer = MakeMaker if you use Milla)
Show quoted text
> Build-maint.PL
On #toolchain, Grinnz pointed out the *.PL files in the top of the distribution directory will be run by ExtUtils::MakeMaker. (See PL_FILES in the EUMM docs). So don't name it ending in .PL.
Subject: Re: [rt.cpan.org #109997] Possible circular dependency when building with cpanm
Date: Tue, 01 Dec 2015 19:10:22 -0800
To: "Peter Rabbitson via RT" <bug-podlators [...] rt.cpan.org>
From: Russ Allbery <rra [...] cpan.org>
Thanks for the feedback. I thought more about this and realized that I was being silly trying to maintain two build systems when Perl core has to use ExtUtils::MakeMaker anyway. I'll be releasing 4.01 shortly using just ExtUtils::MakeMaker (which I see now has support for the new metadata elements anyway). -- #!/usr/bin/perl -- Russ Allbery, Just Another Perl Hacker $^=q;@!>~|{>krw>yn{u<$$<[~||<Juukn{=,<S~|}<Jwx}qn{<Yn{u<Qjltn{ > 0gFzD gD, 00Fz, 0,,( 0hF 0g)F/=, 0> "L$/GEIFewe{,$/ 0C$~> "@=,m,|,(e 0.), 01,pnn,y{ rw} >;,$0=q,$,,($_=$^)=~y,$/ C-~><@=\n\r,-~$:-u/ #y,d,s,(\$.),$1,gee,print
On 2015-12-01 22:10:34, RRA wrote: Show quoted text
> Thanks for the feedback. I thought more about this and realized that I > was being silly trying to maintain two build systems when Perl core has to > use ExtUtils::MakeMaker anyway. I'll be releasing 4.01 shortly using just > ExtUtils::MakeMaker (which I see now has support for the new metadata > elements anyway). >
Thanks for helping get this sorted — and all your work as usual, Russ! -- rjbs
This has been addressed, the ticket can be closed.
Actually there is some leftover text that is no longer true (?): https://metacpan.org/source/RRA/podlators-4.01/Makefile.PL#L3-7
Yeah, I leave my bugs open until RT updates with the new version number of a release so that I can close them with the correct fixed-in value. Now closing. (And fixed the comment as well.)