Author: dagolden
Date: Tue Sep 1 13:42:17 2009
New Revision: 13250
Modified:
Module-Build/trunk/lib/Module/Build/Base.pm
Module-Build/trunk/t/properties/needs_compiler.t
Log:
don't let needs_compiler override an existing CBuilder prereq
Modified: Module-Build/trunk/lib/Module/Build/Base.pm
==============================================================================
--- Module-Build/trunk/lib/Module/Build/Base.pm (original)
+++ Module-Build/trunk/lib/Module/Build/Base.pm Tue Sep 1 13:42:17 2009
@@ -23,6 +23,7 @@
use Module::Build::ModuleInfo;
use Module::Build::Notes;
use Module::Build::Config;
+use Module::Build::Version;
#################### Constructors ###########################
@@ -1239,9 +1240,15 @@
}
sub _add_prereq {
- my ($self, $prereq_type, $module, $version) = @_;
- $self->log_info("Adding to $prereq_type\: $module => $version\n");
- $self->{properties}{$prereq_type}{$module} = $version;
+ my ($self, $type, $module, $version) = @_;
+ my $p = $self->{properties};
+ $version = 0 unless defined $version;
+ if ( exists $p->{$type}{$module} ) {
+ return if $self->compare_versions( $version, '<=', $p->{$type}{$module} );
+ }
+ $self->log_info("Adding to $type\: $module => $version\n");
+ $p->{$type}{$module} = $version;
+ return 1;
}
sub prereq_failures {
Modified: Module-Build/trunk/t/properties/needs_compiler.t
==============================================================================
--- Module-Build/trunk/t/properties/needs_compiler.t (original)
+++ Module-Build/trunk/t/properties/needs_compiler.t Tue Sep 1 13:42:17 2009
@@ -5,7 +5,7 @@
use MBTest;
use DistGen;
-plan tests => 13;
+plan tests => 16;
# Ensure any Module::Build modules are loaded from correct directory
blib_load('Module::Build');
@@ -83,4 +83,23 @@
"ExtUtils::CBuilder is not in build_requires"
);
+#--------------------------------------------------------------------------#
+# don't override specific EU::CBuilder build_requires
+#--------------------------------------------------------------------------#
+
+$dist->change_build_pl({
+ module_name => $dist->name,
+ license => 'perl',
+ build_requires => { 'ExtUtils::CBuilder' => 0.2 },
+});
+$dist->regen;
+
+ok( $mb = $dist->new_from_context ,
+ "Build.PL with xs files, build_requires EU::CB 0.2"
+);
+ok( $mb->needs_compiler, "needs_compiler is true" );
+is( $mb->build_requires->{'ExtUtils::CBuilder'}, 0.2,
+ "build_requires for ExtUtils::CBuilder is correct version"
+);
+
# vim:ts=2:sw=2:et:sta:sts=2