|Subject:||Install fails if the distribution has a META.json which specifies a configure_requires value and sets dynamic_config to true.|
|Date:||Wed, 15 Jun 2011 20:33:58 +0000 (GMT)|
|To:||bug-CPAN [...] rt.cpan.org|
|From:||perl [...] galumph.com|
Distribution has a Build.PL which uses non-core modules. The modules /are/ specified in configure_requires, but the modules don't get installed, so compilation of Build.PL fails. The problem appears to be with CPAN::Distribution::configure_requires(). pick_meta_file() finds the META.json. The condition in configure_requires() calls read_meta(), which correctly parses the JSON, but then discovers that dynamic_config is true and so does not return the meta object. Back in configure_requires(), the else clause kicks in, which then attempts parse_meta_yml() on the META.json file, which obviously fails, and thus configure_requires returns no dependencies. I'm assuming that read_meta() shouldn't be changed to return the object regardless of whether dynamic_config is true, so configure_requires() should be changed to not assume YAML if read_meta() doesn't return an object.