Make `perl Makefile.PL` runs more user friendly - better diagnostics
Peter Rabbitson [Fri, 25 Jan 2013 13:14:31 +0000 (14:14 +0100)]
maint/Makefile.PL.inc/11_authortests.pl
maint/Makefile.PL.inc/52_autogen_README.pl
maint/Makefile.PL.inc/53_autogen_pod.pl
maint/Makefile.PL.inc/56_autogen_testddl.pl

index e29b542..f9f78ee 100644 (file)
@@ -34,7 +34,7 @@ test_xt : pm_to_blib
     # perl cmd
     join( ' ',
       '$(ABSPERLRUN)',
-      map { $mm_proto->quote_literal($_) } qw(-e $ENV{RELEASE_TESTING}=1;)
+      map { $mm_proto->quote_literal($_) } qw(-e $ENV{RELEASE_TESTING}=1;$ENV{DBICTEST_NO_MAKEFILE_VERIFICATION}=1;)
     ),
     # test list
     join( ' ',
index b2ce205..0f4a38c 100644 (file)
@@ -1,4 +1,4 @@
-# When a long-standing branch is updated a README may still inger around
+# When a long-standing branch is updated a README may still linger around
 unlink 'README' if -f 'README';
 
 # Makefile syntax allows adding extra dep-specs for already-existing targets,
index 2496a47..4efe837 100644 (file)
@@ -21,6 +21,9 @@ else {
 # generate the OptDeps pod both in the clone-dir and during the makefile distdir
 {
   print "Regenerating Optional/Dependencies.pod\n";
+
+  # this should always succeed - hence no error checking
+  # if someone breaks OptDeps - travis should catch it
   require DBIx::Class::Optional::Dependencies;
   DBIx::Class::Optional::Dependencies->_gen_pod ($ver, "$pod_dir/lib");
 
@@ -50,8 +53,19 @@ EOP
   my $pod_fn = "$pod_dir/dbicadmin.pod";
 
   # if the author doesn't have the prereqs, don't fail the initial "perl Makefile.pl" step
-  # therefore no error checking
-  system($^X, qw( -Ilib -- script/dbicadmin --documentation-as-pod ), $pod_fn);
+  my $great_success;
+  {
+    local @ARGV = ('--documentation-as-pod', $pod_fn);
+    local *CORE::GLOBAL::exit = sub { $great_success++; die; };
+    do 'script/dbicadmin';
+  }
+  if (!$great_success and ($@ || $!) ) {
+    printf ("FAILED!!! Subsequent `make dist` will fail. %s\n",
+      $ENV{DBICDIST_DEBUG}
+        ? 'Full error: ' . ($@ || $!)
+        : 'Re-run with $ENV{DBICDIST_DEBUG} set for more info'
+    );
+  }
 
   postamble <<"EOP";
 
@@ -64,13 +78,9 @@ EOP
 }
 
 
-# generate the inherit pods both in the clone-dir and during the makefile distdir
+# generate the inherit pods only during distbuilding phase
+# it is too slow to do at regular Makefile.PL
 {
-  print "Regenerating project documentation to include inherited methods\n";
-
-  # if the author doesn't have the prereqs, don't fail the initial "perl Makefile.pl" step
-  do "maint/gen_pod_inherit" or print "\n!!! FAILED: $@\n";
-
   postamble <<"EOP";
 
 clonedir_generate_files : dbic_clonedir_gen_inherit_pods
index c383708..21903bf 100644 (file)
@@ -6,10 +6,14 @@ my $ddl_fn = File::Spec->catfile(qw(t lib sqlite.sql));
 # on error
 # The EUMM build-stage generation will run unconditionally and
 # errors will not be trapped
-if (my $out = ` "$^X" -Ilib maint/gen_schema `) {
-  open (my $fh, '>:unix', $ddl_fn) or die "Unable to open $ddl_fn: $!";
-  print $fh $out;
-  close $fh;
+require DBIx::Class::Optional::Dependencies;
+if ( DBIx::Class::Optional::Dependencies->req_ok_for ('deploy') ) {
+  print "Regenerating t/lib/sqlite.sql\n";
+  if (my $out = ` "$^X" -Ilib maint/gen_schema `) {
+    open (my $fh, '>:unix', $ddl_fn) or die "Unable to open $ddl_fn: $!";
+    print $fh $out;
+    close $fh;
+  }
 }
 
 postamble <<"EOP";
@@ -21,7 +25,5 @@ dbic_clonedir_regen_test_ddl :
 @{[ $crlf_fixup->($ddl_fn) ]}
 EOP
 
-
-
 # keep the Makefile.PL eval happy
 1;