Skip Menu |

This queue is for tickets about the B-Hooks-EndOfScope CPAN distribution.

Report information
The Basics
Id: 89245
Status: resolved
Priority: 0/
Queue: B-Hooks-EndOfScope

People
Owner: Nobody in particular
Requestors: jkeenan [...] cpan.org
Cc: ribasushi [...] leporine.io
rjbs [...] cpan.org
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



CC: rjbs [...] cpan.org
Subject: B::Hooks::EndOfScope fails to report dependency on Variable::Magic
When a CPAN distribution has a dependency on B-Hooks-EndOfScope, it also has a dependency on everything on which B-Hooks-EndOfScope depends. That means that it's essential that all of B-Hooks-EndOfScope's dependencies be locatable and reported. I have encountered the following problem twice in the last year-and-a-half while trying to install Dist::Zilla. Dist::Zilla has a dependency on namespace::autoclean, which in turn has a dependency on B::Hooks::EndOfScope (http://deps.cpantesters.org/?module=Dist::Zilla). The Makefile in B-Hooks-EndOfScope (http://cpansearch.perl.org/src/BOBTFISH/B-Hooks-EndOfScope-0.12/Makefile.PL) reports a dependency on Variable::Magic thusly: ######### my %OPT_RUN_DEPS = (can_xs() ? ( 'Variable::Magic' => '0.48', # when changing, also change it in B::Hooks::EndOfScope::XS # make sure we smoke the pure-perl version fallback is_smoker() ? ( 'Devel::Hide' => '0.0007' ) : (), ) : () ); ######### There is no mention of Variable::Magic in B-Hooks-EndOfScope's dist.ini file (http://cpansearch.perl.org/src/BOBTFISH/B-Hooks-EndOfScope-0.12/dist.ini). Consequences: 1. CPAN Dependencies fails to report Variable::Magic as a prerequisite for B::Hooks::EndOfScope -- and vice versa. (See: http://deps.cpantesters.org/?module=B::Hooks::EndOfScope;perl=5.18.0;os=any%20OS;pureperl=0 and http://deps.cpantesters.org/depended-on-by.pl?dist=Variable-Magic-0.53.) 2. Because this dependency is not detected, installation of Dist::Zilla fails with output as in the attachment. This needs diagnosis and correction. Thank you very much. Jim Keenan
Subject: variable-magic-missing.txt
Can't locate Variable/Magic.pm in @INC (you may need to install the Variable::Magic module) (@INC contains: /Users/jimk/.cpan/build/Dist-Zilla-4.300039-K4QNYH/blib/arch /Users/jimk/.cpan/build/Dist-Zilla-4.300039-K4QNYH/blib/lib /Users/jimk/.cpan/build/Dist-Zilla-4.300039-K4QNYH/blib/lib /Users/jimk/.cpan/build/Dist-Zilla-4.300039-K4QNYH/blib/arch /usr/local/lib/perl5/site_perl/5.18.0/darwin-2level /usr/local/lib/perl5/site_perl/5.18.0 /usr/local/lib/perl5/5.18.0/darwin-2level /usr/local/lib/perl5/5.18.0 /usr/local/lib/perl5/site_perl/5.16.0 /usr/local/lib/perl5/site_perl/5.14.2 /usr/local/lib/perl5/site_perl/5.14.0 /usr/local/lib/perl5/site_perl/5.12.0 /usr/local/lib/perl5/site_perl/5.10.1 /usr/local/lib/perl5/site_perl/5.10.0 /usr/local/lib/perl5/site_perl/5.8.6 /usr/local/lib/perl5/site_perl .) at /usr/local/lib/perl5/site_perl/5.16.0/B/Hooks/EndOfScope.pm line 14. BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/5.16.0/B/Hooks/EndOfScope.pm line 14. Compilation failed in require at /usr/local/lib/perl5/site_perl/5.10.1/namespace/autoclean.pm line 10. BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/5.10.1/namespace/autoclean.pm line 10. Compilation failed in require at /usr/local/lib/perl5/site_perl/5.16.0/MooseX/OneArgNew.pm line 11. BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/5.16.0/MooseX/OneArgNew.pm line 11. Compilation failed in require at /usr/local/lib/perl5/site_perl/5.18.0/darwin-2level/Moose/Exporter.pm line 409. ...
Subject: Re: [rt.cpan.org #89245] B::Hooks::EndOfScope fails to report dependency on Variable::Magic
Date: Fri, 4 Oct 2013 14:55:29 -0700
To: James E Keenan via RT <bug-B-Hooks-EndOfScope [...] rt.cpan.org>
From: Karen Etheridge <ether [...] cpan.org>
On Thu, Oct 03, 2013 at 10:23:55PM -0400, James E Keenan via RT wrote: Show quoted text
> When a CPAN distribution has a dependency on B-Hooks-EndOfScope, it also has a dependency on everything on which B-Hooks-EndOfScope depends. That means that it's essential that all of B-Hooks-EndOfScope's dependencies be locatable and reported. > > I have encountered the following problem twice in the last year-and-a-half while trying to install Dist::Zilla. Dist::Zilla has a dependency on namespace::autoclean, which in turn has a dependency on B::Hooks::EndOfScope (http://deps.cpantesters.org/?module=Dist::Zilla). The Makefile in B-Hooks-EndOfScope (http://cpansearch.perl.org/src/BOBTFISH/B-Hooks-EndOfScope-0.12/Makefile.PL) reports a dependency on Variable::Magic thusly:
Show quoted text
> There is no mention of Variable::Magic in B-Hooks-EndOfScope's dist.ini file (http://cpansearch.perl.org/src/BOBTFISH/B-Hooks-EndOfScope-0.12/dist.ini).
Since this dependency is only used if the XS component is used, it shouldn't be listed as a hard dep (in META.*), but rather added at install time via MYMETA.*. However, this isn't being done, so I agree there's a problem there (the dzil-specific solution involves adding some extra code to Makefile.PL to detect the presence of a compiler and add additional prereqs to the makefile args). However, I'm wondering how this problem hasn't come up before. e.g. the first thing I do when I build a new dev perl is install Dist::Zilla (actually my pluginbundle, which has Dist::Zilla upstream of it), and I haven't run into this problem...
On 2013-10-04 14:55:43, ETHER wrote: Show quoted text
> Since this dependency is only used if the XS component is used, it > shouldn't be listed as a hard dep (in META.*), but rather added at > install > time via MYMETA.*. However, this isn't being done, so I agree there's > a > problem there (the dzil-specific solution involves adding some extra > code > to Makefile.PL to detect the presence of a compiler and add additional > prereqs to the makefile args).
I was totally braindead when I wrote this. The dependency *is* being added to MYMETA.* when 'perl Makefile.PL' is run - you even quoted the code that does it -- so if you're not getting Variable::Magic added as a prereq, you don't have a compiler (or rather - the heuristic for detecting a compiler is failing). Jim, can you attach the MYMETA.yml,json that is generated for you when you run 'make realclean; perl Makefile.PL'?
On Sat Oct 05 17:40:59 2013, ETHER wrote: Show quoted text
> I was totally braindead when I wrote this. The dependency *is* being > added to MYMETA.* when 'perl Makefile.PL' is run - you even quoted the > code that does it -- so if you're not getting Variable::Magic added as > a prereq, you don't have a compiler (or rather - the heuristic for > detecting a compiler is failing). > > Jim, can you attach the MYMETA.yml,json that is generated for you when > you run 'make realclean; perl Makefile.PL'?
I'm not sure exactly what you mean and, in any event, I subsequently installed Variable::Magic manually via 'cpan', then resumed the long march through the upgrade of Dist::Zilla. So I'm not sure if I can reproduce the conditions in which this failure occurred. FWIW, I downloaded and built B-Hooks-EndOfScope once again via 'cpan'; chdir-ed to the build directory; called 'make realclean; perl Makefile.PL'; and came up with the two files attached. Thank you very much. Jim Keenan
Subject: MYMETA.json
{ "abstract" : "Execute code after a scope finished compilation", "author" : [ "Florian Ragwitz <rafl@debian.org>", "Peter Rabbitson <ribasushi@cpan.org>" ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 4.300028, CPAN::Meta::Converter version 2.120921", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "B-Hooks-EndOfScope", "prereqs" : { "build" : { "requires" : { "Test::More" : "0.88" } }, "configure" : { "requires" : { "ExtUtils::CBuilder" : "0.26", "ExtUtils::MakeMaker" : "6.30" } }, "develop" : { "requires" : { "Pod::Coverage::TrustPod" : "0", "Test::Pod" : "1.41", "Test::Pod::Coverage" : "1.08" } }, "runtime" : { "requires" : { "Module::Implementation" : "0.05", "Module::Runtime" : "0.012", "Sub::Exporter::Progressive" : "0.001006", "Variable::Magic" : "0.48" } }, "test" : { "requires" : { "Test::More" : "0.88" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "mailto" : "bug-B-Hooks-EndOfScope@rt.cpan.org", "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=B-Hooks-EndOfScope" }, "homepage" : "http://metacpan.org/release/B-Hooks-EndOfScope", "repository" : { "type" : "git", "url" : "git://github.com/rafl/b-hooks-endofscope.git", "web" : "http://github.com/rafl/b-hooks-endofscope" } }, "version" : "0.12", "x_Dist_Zilla" : { "perl" : { "version" : "5.016000" }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "runtime", "type" : "requires" } }, "name" : "Prereqs", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "test", "type" : "requires" } }, "name" : "TestRequires", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "configure", "type" : "requires" } }, "name" : "ConfigureRequires", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::Metadata", "name" : "Metadata", "version" : "3.03" }, { "class" : "Dist::Zilla::Plugin::MakeMaker::Custom", "name" : "MakeMaker::Custom", "version" : "4.11" }, { "class" : "Dist::Zilla::Plugin::GatherDir", "name" : "@Filter/@Basic/GatherDir", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::PruneCruft", "name" : "@Filter/@Basic/PruneCruft", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::ManifestSkip", "name" : "@Filter/@Basic/ManifestSkip", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@Filter/@Basic/MetaYAML", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@Filter/@Basic/License", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::Readme", "name" : "@Filter/@Basic/Readme", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::ExtraTests", "name" : "@Filter/@Basic/ExtraTests", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::ExecDir", "name" : "@Filter/@Basic/ExecDir", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "@Filter/@Basic/ShareDir", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@Filter/@Basic/Manifest", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@Filter/@Basic/TestRelease", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@Filter/@Basic/ConfirmRelease", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@Filter/@Basic/UploadToCPAN", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@Filter/MetaConfig", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@Filter/MetaJSON", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::PkgVersion", "name" : "@Filter/PkgVersion", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@Filter/PodSyntaxTests", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::NoTabsTests", "name" : "@Filter/NoTabsTests", "version" : "0.01" }, { "class" : "Dist::Zilla::Plugin::PodCoverageTests", "name" : "@Filter/PodCoverageTests", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::MetaResources", "name" : "@Filter/MetaResources", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::Authority", "name" : "@Filter/Authority", "version" : "1.006" }, { "class" : "Dist::Zilla::Plugin::EOLTests", "name" : "@Filter/EOLTests", "version" : "0.02" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", "name" : "@Filter/PodWeaver", "version" : "3.101641" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", "version" : "4.300028" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", "version" : "4.300028" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { "is_trial" : "0" }, "version" : "4.300028" } }, "x_authority" : "cpan:FLORA" }
Subject: MYMETA.yml
--- abstract: 'Execute code after a scope finished compilation' author: - 'Florian Ragwitz <rafl@debian.org>' - 'Peter Rabbitson <ribasushi@cpan.org>' build_requires: Test::More: 0.88 configure_requires: ExtUtils::CBuilder: 0.26 ExtUtils::MakeMaker: 6.30 dynamic_config: 0 generated_by: 'Dist::Zilla version 4.300028, CPAN::Meta::Converter version 2.120921' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: B-Hooks-EndOfScope requires: Module::Implementation: 0.05 Module::Runtime: 0.012 Sub::Exporter::Progressive: 0.001006 Variable::Magic: 0.48 resources: bugtracker: http://rt.cpan.org/Public/Dist/Display.html?Name=B-Hooks-EndOfScope homepage: http://metacpan.org/release/B-Hooks-EndOfScope repository: git://github.com/rafl/b-hooks-endofscope.git version: 0.12 x_Dist_Zilla: perl: version: 5.016000 plugins: - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: runtime type: requires name: Prereqs version: 4.300028 - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: test type: requires name: TestRequires version: 4.300028 - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: configure type: requires name: ConfigureRequires version: 4.300028 - class: Dist::Zilla::Plugin::Metadata name: Metadata version: 3.03 - class: Dist::Zilla::Plugin::MakeMaker::Custom name: MakeMaker::Custom version: 4.11 - class: Dist::Zilla::Plugin::GatherDir name: '@Filter/@Basic/GatherDir' version: 4.300028 - class: Dist::Zilla::Plugin::PruneCruft name: '@Filter/@Basic/PruneCruft' version: 4.300028 - class: Dist::Zilla::Plugin::ManifestSkip name: '@Filter/@Basic/ManifestSkip' version: 4.300028 - class: Dist::Zilla::Plugin::MetaYAML name: '@Filter/@Basic/MetaYAML' version: 4.300028 - class: Dist::Zilla::Plugin::License name: '@Filter/@Basic/License' version: 4.300028 - class: Dist::Zilla::Plugin::Readme name: '@Filter/@Basic/Readme' version: 4.300028 - class: Dist::Zilla::Plugin::ExtraTests name: '@Filter/@Basic/ExtraTests' version: 4.300028 - class: Dist::Zilla::Plugin::ExecDir name: '@Filter/@Basic/ExecDir' version: 4.300028 - class: Dist::Zilla::Plugin::ShareDir name: '@Filter/@Basic/ShareDir' version: 4.300028 - class: Dist::Zilla::Plugin::Manifest name: '@Filter/@Basic/Manifest' version: 4.300028 - class: Dist::Zilla::Plugin::TestRelease name: '@Filter/@Basic/TestRelease' version: 4.300028 - class: Dist::Zilla::Plugin::ConfirmRelease name: '@Filter/@Basic/ConfirmRelease' version: 4.300028 - class: Dist::Zilla::Plugin::UploadToCPAN name: '@Filter/@Basic/UploadToCPAN' version: 4.300028 - class: Dist::Zilla::Plugin::MetaConfig name: '@Filter/MetaConfig' version: 4.300028 - class: Dist::Zilla::Plugin::MetaJSON name: '@Filter/MetaJSON' version: 4.300028 - class: Dist::Zilla::Plugin::PkgVersion name: '@Filter/PkgVersion' version: 4.300028 - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@Filter/PodSyntaxTests' version: 4.300028 - class: Dist::Zilla::Plugin::NoTabsTests name: '@Filter/NoTabsTests' version: 0.01 - class: Dist::Zilla::Plugin::PodCoverageTests name: '@Filter/PodCoverageTests' version: 4.300028 - class: Dist::Zilla::Plugin::MetaResources name: '@Filter/MetaResources' version: 4.300028 - class: Dist::Zilla::Plugin::Authority name: '@Filter/Authority' version: 1.006 - class: Dist::Zilla::Plugin::EOLTests name: '@Filter/EOLTests' version: 0.02 - class: Dist::Zilla::Plugin::PodWeaver name: '@Filter/PodWeaver' version: 3.101641 - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: 4.300028 - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' version: 4.300028 - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' version: 4.300028 - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' version: 4.300028 - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' version: 4.300028 - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' version: 4.300028 zilla: class: Dist::Zilla::Dist::Builder config: is_trial: 0 version: 4.300028 x_authority: cpan:FLORA
On 2013-10-05 16:08:37, JKEENAN wrote: Show quoted text
> > I'm not sure exactly what you mean and, in any event, I subsequently > installed Variable::Magic manually via 'cpan', then resumed the long > march through the upgrade of Dist::Zilla. So I'm not sure if I can > reproduce the conditions in which this failure occurred. > > FWIW, I downloaded and built B-Hooks-EndOfScope once again via 'cpan'; > chdir-ed to the build directory; called 'make realclean; perl > Makefile.PL'; and came up with the two files attached.
perl Makefile.PL creates MYMETA.json and MYMETA.yml, which contain the final list of prerequisites and other metadata, tailored to your particular environment. In those files, I see that Variable::Magic is indeed being specified as a prerequisite. I'm not sure why your cpan client isn't seeing that -- what version is it?
On Thu Oct 03 22:23:53 2013, JKEENAN wrote: Show quoted text
> When a CPAN distribution has a dependency on B-Hooks-EndOfScope, it > also has a dependency on everything on which B-Hooks-EndOfScope > depends. That means that it's essential that all of B-Hooks- > EndOfScope's dependencies be locatable and reported. > > I have encountered the following problem twice in the last year-and-a- > half while trying to install Dist::Zilla. Dist::Zilla has a > dependency on namespace::autoclean, which in turn has a dependency on > B::Hooks::EndOfScope > (http://deps.cpantesters.org/?module=Dist::Zilla). The Makefile in B- > Hooks-EndOfScope (http://cpansearch.perl.org/src/BOBTFISH/B-Hooks- > EndOfScope-0.12/Makefile.PL) reports a dependency on Variable::Magic > thusly: > > ######### > my %OPT_RUN_DEPS = (can_xs() ? ( > 'Variable::Magic' => '0.48', # when changing, also change it in > B::Hooks::EndOfScope::XS > > # make sure we smoke the pure-perl version fallback > is_smoker() ? ( 'Devel::Hide' => '0.0007' ) : (), > ) : () ); > ######### > > There is no mention of Variable::Magic in B-Hooks-EndOfScope's > dist.ini file (http://cpansearch.perl.org/src/BOBTFISH/B-Hooks- > EndOfScope-0.12/dist.ini). > > Consequences: > > 1. CPAN Dependencies fails to report Variable::Magic as a prerequisite > for B::Hooks::EndOfScope -- and vice versa. (See: > http://deps.cpantesters.org/?module=B::Hooks::EndOfScope;perl=5.18.0;os=any%20OS;pureperl=0 > and http://deps.cpantesters.org/depended-on-by.pl?dist=Variable-Magic- > 0.53.) > > 2. Because this dependency is not detected, installation of > Dist::Zilla fails with output as in the attachment.
The problem is in your paths, you're including older perls' pure-perl paths. In this particular case, it seems to be loading B::Hooks::EndOfScope from 5.16.0, which is probably an older version that relied on Variable::Magic unconditionally. However, because it doesn't use 5.16.0's architecture-specific dirs, where that Variable::Magic should live, it blows up. I would recommend to no longer compile perls that reuse older perl dirs, it' just asking for trouble. The -Dinc_version_list=none argument to configure should do this trick. I recommend closing this ticket. Leon
On Sun Oct 06 05:27:00 2013, LEONT wrote: Show quoted text
> I would recommend to no longer compile perls that reuse older perl > dirs, it' just asking for trouble. The -Dinc_version_list=none > argument to configure should do this trick.
Interesting option... Can you think of a reason perlbrew doesn't do that by default...?
On Sun Oct 06 05:44:08 2013, RIBASUSHI wrote: Show quoted text
> On Sun Oct 06 05:27:00 2013, LEONT wrote:
> > I would recommend to no longer compile perls that reuse older perl > > dirs, it' just asking for trouble. The -Dinc_version_list=none > > argument to configure should do this trick.
> > Interesting option... Can you think of a reason perlbrew doesn't do > that by default...?
It doesn't because it doesn't need to. Configure automatically sets this up when different perls use the same prefixes (e.g. /usr/local/lib/perl5/$version/). perlbrew uses a new prefix for every perl, so this doesn't happen. Leon
RT-Send-CC: ether [...] cpan.org, rjbs [...] cpan.org
I am disappointed in the resolution of this ticket. What that resolution boils down to is, "Don't use 'cpan'; only use 'perlbrew'" and "Change the way you have been building perl from source for the past nine years." However, the only reason that I encountered this problem was that I was trying to re-install Dist::Zilla, and the only reason I was trying to do that was to be able to work on YAML-Tiny as requested by David Golden. I have, however, decided that the tax which Dist::Zilla (and its associated bundles) imposes on my time is too great to pay. (In the case of YAML-Tiny I spent more than five hours getting Dist::Zilla installed -- and even then couldn't say 'dzil build' or 'dzil test' because I still faced the task of installing the 324 dependencies in the bundle associated with the github distribution of YAML-Tiny. But this morning it took me only five minutes to write a Makefile.PL that just works.) So, since I'm not going to be using Dist::Zilla going forward, I don't care whether this bug in B::Hooks::EndOfScope gets fixed or not. If anyone would like to discuss this further with me, please contact me off list. Thank you very much. Jim Keenan
Subject: Re: [rt.cpan.org #89245] B::Hooks::EndOfScope fails to report dependency on Variable::Magic
Date: Sun, 6 Oct 2013 10:01:12 -0700
To: James E Keenan via RT <bug-B-Hooks-EndOfScope [...] rt.cpan.org>
From: Karen Etheridge <ether [...] cpan.org>
On Sun, Oct 06, 2013 at 12:11:22PM -0400, James E Keenan via RT wrote: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=89245 > > > I am disappointed in the resolution of this ticket. What that resolution boils down to is, "Don't use 'cpan'; only use 'perlbrew'" and "Change the way you have been building perl from source for the past nine years."
cpan is a client; perlbrew is a mechanism for installing and managing multiple perl installs; they don't relate to each other at all here. My mentioning of 'cpan' was a red herring; it wasn't the problem at all. The problem, as LeonT pointed out, was bringing in older perls' install libs into the @INC chain, so an older installation of B::Hooks::EndOfScope was taking precedence, but not also dragging in the parallel install of Variable::Magic because it has an XS component, therefore arch-specific (therefore in another install dir). Show quoted text
> However, the only reason that I encountered this problem was that I was trying to re-install Dist::Zilla, and the only reason I was trying to do that was to be able to work on YAML-Tiny as requested by David Golden. I have, however, decided that the tax which Dist::Zilla (and its associated bundles) imposes on my time is too great to pay.
It's nothing to do with Dist::Zilla, other than the fact that DZ happens to (indirectly!) use B::Hooks::EndOfScope. Blaming it on this tool is unfair and totally unfounded. Show quoted text
> (In the case of YAML-Tiny I spent more than five hours getting Dist::Zilla installed -- and even then couldn't say 'dzil build' or 'dzil test' because I still faced the task of installing the 324 dependencies in the bundle associated with the github distribution of YAML-Tiny. But this morning it took me only five minutes to write a Makefile.PL that just works.)
fwiw, in YAML-Tiny you should be fine with just doing 'prove -lr t'. The distribution tests do not rely on the distribution being built. It's always nice to be able to run the author and release tests too, but during normal development, it's not necessary, and I wouldn't impose it as a mandatory requirement of anyone assisting with bug-blasting or other routine maintenance. Show quoted text
> So, since I'm not going to be using Dist::Zilla going forward, I don't care whether this bug in B::Hooks::EndOfScope gets fixed or not.
I'm sorry you had a bad experience, but you're aiming your frustration at the wrong target.
For those following along at home -- there is nothing to be fixed in the B-Hooks-EndOfScope distribution - the prereq is properly declared via MYMETA as a dynamic requirement. I've also added a CONTRIBUTING file to the YAML-Tiny distribution as a helper to show how to bypass Dist::Zilla during development, and how to install the plugins the distribution uses.
On Sun Oct 06 13:10:37 2013, ETHER wrote: Show quoted text
> For those following along at home -- there is nothing to be fixed in > the B-Hooks-EndOfScope distribution - the prereq is properly declared > via MYMETA as a dynamic requirement.
I think the real issue is that namespace::autoclean is only depending on B::Hooks::EndOfScope version "0". If it depended on a newer version that had the conditional dependency sorted out, then finding an old version in an old @INC directory wouldn't matter. Depending on "0" for anything is a bit dangerous. Though I do it quite often myself, it's really a bad practice. Jim -- I'm really sorry you hit this bug. I'd never realized what $Config{inc_version_list} really did because I don't think I've ever built perl without its own prefix. Scary! (I tend to use /opt/perl/v5.x.y/... for my custom perls.)
On 2013-10-08 12:07:54, DAGOLDEN wrote: Show quoted text
> I think the real issue is that namespace::autoclean is only depending > on B::Hooks::EndOfScope version "0". If it depended on a newer > version that had the conditional dependency sorted out, then finding > an old version in an old @INC directory wouldn't matter.
This has been done.