--- /dev/null
+#!/usr/bin/env perl
+use strict;
+use warnings;
+# PODNAME: package-stash-conflicts
+
+use Getopt::Long;
+use Package::Stash::Conflicts;
+
+my $verbose;
+GetOptions("verbose|v" => \$verbose);
+
+if ($verbose) {
+ Package::Stash::Conflicts->check_conflicts;
+}
+else {
+ my @conflicts = Package::Stash::Conflicts->calculate_conflicts;
+ print "$_\n" for map { $_->{package} } @conflicts;
+ exit @conflicts;
+}
[Prereqs]
perl = 5.8.3
+Dist::CheckConflicts = 0
Package::DeprecationManager = 0
Package::Stash::XS = 0
Scalar::Util = 0
[Prereqs / TestRecommends]
Test::LeakTrace = 0
+
+[Prereqs / ConfigureRequires]
+Dist::CheckConflicts = 0
# copied out of moose
my $check_conflicts = <<'CHECK_CONFLICTS';
sub check_conflicts {
- my %conflicts = (
- 'Class::MOP' => '1.08',
- 'MooseX::Role::WithOverloading' => '0.08',
- 'namespace::clean' => '0.18',
- );
- my $found = 0;
- for my $mod ( sort keys %conflicts ) {
- eval "require $mod";
- next if $@;
-
- my $installed = $mod->VERSION();
- if ( $installed le $conflicts{$mod} ) {
-
- print <<"EOF";
-
+ if (eval { require 'lib/Package/Stash/Conflicts.pm'; 1; }) {
+ if (eval { Package::Stash::Conflicts->check_conflicts; 1 }) {
+ return;
+ }
+ else {
+ my $err = $@;
+ $err =~ s/^/ /mg;
+ warn "***\n$err***\n";
+ }
+ }
+ else {
+ print <<'EOF';
***
- This version of Package::Stash conflicts with the version of
- $mod ($installed) you have installed.
-
- You will need to upgrade $mod after installing
- this version of Package::Stash.
+ Your toolchain doesn't support configure_requires, so Dist::CheckConflicts
+ hasn't been installed yet. You should check for conflicting modules
+ manually using the 'package-stash-conflicts' script that is installed with
+ this distribution once the installation finishes.
***
-
EOF
-
- $found = 1;
- }
}
- return unless $found;
-
# More or less copied from Module::Build
- return if $ENV{PERL_MM_USE_DEFAULT};
+ return if $ENV{PERL_MM_USE_DEFAULT};
return unless -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
sleep 4;
--- /dev/null
+package # hide from PAUSE
+ Package::Stash::Conflicts;
+use strict;
+use warnings;
+
+use Dist::CheckConflicts
+ -dist => 'Package-Stash',
+ -conflicts => {
+ 'Class::MOP' => '1.08',
+ 'MooseX::Role::WithOverloading' => '0.08',
+ 'namespace::clean' => '0.18',
+ };
+
+1;