Relax developer policy, allowing to skip optional dependencies when in a checkout
[dbsrgits/DBIx-Class.git] / Makefile.PL
index d2cd848..3b4f588 100644 (file)
@@ -12,6 +12,14 @@ use lib "$FindBin::Bin/lib";
 use Config;
 $ENV{PERL5LIB} = join ($Config{path_sep}, @INC);
 
+use Getopt::Long qw/:config gnu_getopt bundling_override no_ignore_case pass_through/;
+my $args = {
+  skip_author_deps => undef,
+};
+GetOptions ($args, 'skip_author_deps');
+if (@ARGV) {
+  warn "\nIgnoring unrecognized option(s): @ARGV\n\n";
+}
 
 ###
 ### DO NOT ADD OPTIONAL DEPENDENCIES HERE, EVEN AS recommends()
@@ -64,23 +72,45 @@ my $reqs = {
 
 
 # require extra modules for testing if we're in a checkout
+my $optdep_msg;
 if ($Module::Install::AUTHOR) {
-  warn <<'EOW';
+  if ($args->{skip_author_deps}) {
+    $optdep_msg = <<'EOW';
+
+******************************************************************************
+******************************************************************************
+***                                                                        ***
+*** IGNORING AUTHOR MODE: no optional test dependencies will be forced.    ***
+***                                                                        ***
+*** If you are using this checkout with the intention of submitting a DBIC ***
+*** patch, you are *STRONGLY ENCOURAGED* to install all dependencies, so   ***
+*** that every possible unit-test will run.                                ***
+***                                                                        ***
+******************************************************************************
+******************************************************************************
+
+EOW
+  }
+  else {
+    $optdep_msg = <<'EOW';
+
 ******************************************************************************
 ******************************************************************************
 ***                                                                        ***
 *** AUTHOR MODE: all optional test dependencies converted to hard requires ***
+***      ( to disabled re-run Makefile.PL with --skip_author_deps )        ***
 ***                                                                        ***
 ******************************************************************************
 ******************************************************************************
 
 EOW
 
-  require DBIx::Class::Optional::Dependencies;
-  $reqs->{test_requires} = {
-    %{$reqs->{test_requires}},
-    map { %$_ } (values %{DBIx::Class::Optional::Dependencies->req_group_list}),
-  };
+    require DBIx::Class::Optional::Dependencies;
+    $reqs->{test_requires} = {
+      %{$reqs->{test_requires}},
+      map { %$_ } (values %{DBIx::Class::Optional::Dependencies->req_group_list}),
+    };
+  }
 }
 
 # compose final req list, for alphabetical ordering
@@ -104,7 +134,10 @@ for my $mod (sort keys %final_req) {
   $rtype->($mod, $ver);
 }
 
+# output twice since the deplist is > 70 lines
+warn $optdep_msg;
 auto_install();
+warn $optdep_msg;
 
 # re-create various autogenerated documentation bits
 if ($Module::Install::AUTHOR) {
@@ -180,7 +213,7 @@ WriteAll();
 
 
 # Re-write META.yml to _exclude_ all forced requires (we do not want to ship this)
-if ($Module::Install::AUTHOR) {
+if ($Module::Install::AUTHOR && ! $args->{skip_author_deps} ) {
 
   # FIXME test_requires is not yet part of META
   my %original_build_requires = ( %$build_requires, %$test_requires );