tokuhirom / Minilla

Authorizing tool for CPAN modules
https://metacpan.org/release/Minilla
Other
98 stars 65 forks source link

build with ModuleBuild tool doesn't install dependencies #189

Closed JForst closed 8 years ago

JForst commented 8 years ago

Hi, it seems that this commit did break the installation with cpanm of pakets which use ModuleBuild in that sort, that dependencies noted in cpanfile are no longer installed, due to the lack of MYMETA files.

I generated a small tarball, which is not installable with cpanm if the dependency (here Moose) is not already installed.

The tarball is generated with the following steps:

if lib/Minilla/ModuleMaker/ModuleBuild.pm lines 139 .. are inserted again, all works like expected. That means running

Kind regards,

Jörg

karenetheridge commented 8 years ago

I can't reproduce this issue. The new prereqs added to cpanfile do make it into META.yml and META.json in the built distribution, so they should be properly satisfied by any cpan client installing the distribution.

Leont commented 8 years ago

Can you tell me exactly which MB versions you're observing this with? I wouldn't be surprised if that 0.4005 really ought to be 0.4200

JForst commented 8 years ago

Yes, you are right, the prereqs do appear in META.yml and META.json, but the Build.PL file does not contain the part where these files were copied to MYMETA.yml and MYMETA.json.

But without MYMETA.yml and MYMETA.json Module::Build doesn't install the dependencies.

JForst commented 8 years ago

My MB version is 0.4214

Leont commented 8 years ago

But without MYMETA.yml and MYMETA.json Module::Build doesn't install the dependencies.

Module::Build creates the MYMETA files when you do «perl Build.PL», the whole copying thing paves over that.

It seems Minilla doesn't write the prerequisites to the Build.PL, and doesn't run anything else that pulls them out of the cpanfile either. The current situation isn't correct, but I don't think that reverting to the old one is the solution either.

karenetheridge commented 8 years ago

One option is simply to drop support for Module::Build altogether. These days if a distribution needs Module::Build, it is complicated enough that it wouldn't be using Minilla anyway.

Leont commented 8 years ago

One option is simply to drop support for Module::Build altogether. These days if a distribution needs Module::Build, it is complicated enough that it wouldn't be using Minilla anyway.

I don't think that's an option for some of the dists that use Minilla (in particular the xsutil ones)

JForst commented 8 years ago

It seems Minilla doesn't write the prerequisites to the Build.PL, and doesn't run anything else that pulls them out of the cpanfile either. The current situation isn't correct, but I don't think that reverting to the old one is the solution either.

How do these prerequisites have to look like? Sorry I'm not experienced in the details of package building.

In the Build.PL of Module::Build there is also the fallback of copying META files to MYMETA, so why is this wrong?

Leont commented 8 years ago

How do these prerequisites have to look like? Sorry I'm not experienced in the details of package building.

Something like this.

In the Build.PL of Module::Build there is also the fallback of copying META files to MYMETA, so why is this wrong?

It only does that when there is no MYMETA file, and unlike other dists it actually has good (bootstrapping) reasons why that may be the case (though I don't think it's actually necessary).

JForst commented 8 years ago

So, generating a more complete Build.PL file should work. I tried to do so here.

Did I miss something?