From: Jesse Luehrs Date: Tue, 29 Mar 2011 19:21:19 +0000 (-0500) Subject: don't mark ::XS as a dep, but do set dynamic_config = 1 X-Git-Tag: 0.28~1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FPackage-Stash.git;a=commitdiff_plain;h=1de0245b552a791eca039472a61b8b8493626805 don't mark ::XS as a dep, but do set dynamic_config = 1 --- diff --git a/dist.ini b/dist.ini index e1c6ccd..7da5153 100644 --- a/dist.ini +++ b/dist.ini @@ -9,12 +9,17 @@ dist = Package-Stash awesome = =inc::MMPackageStash CompileTests_skip = [Cc]onflicts$ +[=inc::DistMeta] +dynamic_config = 1 + [Prereqs] perl = 5.8.1 Package::DeprecationManager = 0 -Package::Stash::XS = 0.22 Scalar::Util = 0 +[Prereqs / RuntimeRecommends] +Package::Stash::XS = 0.22 + [Prereqs / TestRequires] Test::Fatal = 0 Test::More = 0.88 diff --git a/inc/DistMeta.pm b/inc/DistMeta.pm new file mode 100644 index 0000000..aa340f5 --- /dev/null +++ b/inc/DistMeta.pm @@ -0,0 +1,31 @@ +package inc::DistMeta; +use Moose; + +has metadata => ( + is => 'ro', + isa => 'HashRef', + required => 1, +); + +with 'Dist::Zilla::Role::MetaProvider'; + +around BUILDARGS => sub { + my $orig = shift; + my $self = shift; + + my $params = $self->$orig(@_); + + my $zilla = delete $params->{zilla}; + my $plugin_name = delete $params->{plugin_name}; + + return { + zilla => $zilla, + plugin_name => $plugin_name, + metadata => $params, + }; +}; + +__PACKAGE__->meta->make_immutable; +no Moose; + +1; diff --git a/inc/MMPackageStash.pm b/inc/MMPackageStash.pm index bcbc48e..de68a03 100644 --- a/inc/MMPackageStash.pm +++ b/inc/MMPackageStash.pm @@ -44,7 +44,9 @@ CAN_CC my $template = $self->$orig(@_); - $template =~ s/(WriteMakefile\()/delete \$WriteMakefileArgs{PREREQ_PM}{'Package::Stash::XS'}\n unless can_cc();\n\n$1/; + my $xs_version = $self->zilla->prereqs->requirements_for('runtime', 'recommends')->as_string_hash->{'Package::Stash::XS'}; + + $template =~ s/(WriteMakefile\()/\$WriteMakefileArgs{PREREQ_PM}{'Package::Stash::XS'} = $xs_version\n if can_cc();\n\n$1/; return $template . $can_cc; };