Revert ab340f7f - it no longer makes sense given the excellent CI setup
Peter Rabbitson [Mon, 15 Feb 2016 11:42:13 +0000 (12:42 +0100)]
There should be no functional changes / difference in behavior (the config
option is named differently, and is inverted in meaning)

Verified no change in behavior (at least on CI) via:
( not checking all 20+ jobs as the log-counter jumps towards the end )

for n in $(seq 18) ; do
  x=$((112787688 + $n)) && \
  y=$((112787738 + $n)) && \
  echo "$x => $y" && \
  diff -U0 \
    <(wget -qO- https://s3.amazonaws.com/archive.travis-ci.org/jobs/$x/log.txt | \
      perl -0777 -n -E 'say ( ($_ =~ /List of loadable modules within both the core and(.+?)List of loadable modules within both the core and/s )[0] )') \
    <(wget -qO- https://s3.amazonaws.com/archive.travis-ci.org/jobs/$y/log.txt | \
      perl -0777 -n -E 'say ( ($_ =~ /List of loadable modules within both the core and(.+?)List of loadable modules within both the core and/s )[0] )')
done | less

This also happened to find https://rt.cpan.org/Ticket/Display.html?id=112601

Makefile.PL
maint/Makefile.PL.inc/11_authortests.pl
maint/Makefile.PL.inc/12_authordeps.pl
maint/travis-ci_scripts/30_before_script.bash
maint/travis-ci_scripts/50_after_success.bash
t/lib/ANFANG.pm
t/lib/DBICTest/RunMode.pm

index f4ac1b8..0be14e8 100644 (file)
@@ -99,7 +99,7 @@ my $test_requires = {
 # tests will fail
 # Note - these are added as test_requires *directly*, so they get properly
 # excluded on META.yml cleansing (even though no dist can be created from this)
-# we force these reqs regarless of author_deps, worst case scenario they will
+# we force these reqs regarless of --with-optdeps, worst case scenario they will
 # be specified twice
 #
 # also note that we *do* set dynamic_config => 0, as these are the only things
@@ -205,10 +205,10 @@ sub invoke_author_mode {
     config => [qw/gnu_getopt bundling_override no_ignore_case pass_through/]
   );
   my $args = {
-    skip_author_deps => undef,
+    with_optdeps => undef,
   };
   $getopt->getoptions($args, qw/
-    skip_author_deps|skip-author-deps
+    with_optdeps|with-optdeps
   /);
   if (@ARGV) {
     warn "\nIgnoring unrecognized option(s): @ARGV\n\n";
@@ -236,10 +236,6 @@ sub invoke_author_mode {
     "\t" . $mm_proto->oneliner( qq(\$ENV{PERLIO}='unix' and system( \$^X, qw( -MExtUtils::Command -e dos2unix -- ), $targets ) ) );
   };
 
-  # we are in the process of (re)writing the makefile - some things we
-  # call below very well may fail
-  local $ENV{DBICTEST_NO_MAKEFILE_VERIFICATION} = 1;
-
   require File::Spec;
   # string-eval, not do(), because we need to provide the
   # $mm_proto, $reqs and $*_requires lexicals to the included file
index 7760de2..77bb071 100644 (file)
@@ -31,7 +31,7 @@ test_xt : pm_to_blib
     # perl cmd
     join( ' ',
       '$(ABSPERLRUN)',
-      map { $mm_proto->quote_literal($_) } qw(-e $ENV{RELEASE_TESTING}=1;$ENV{DBICTEST_NO_MAKEFILE_VERIFICATION}=1;)
+      map { $mm_proto->quote_literal($_) } qw(-e $ENV{RELEASE_TESTING}=1;$ENV{HARNESS_OPTIONS}=j4;)
     ),
     # test list
     join( ' ',
@@ -50,7 +50,7 @@ dbic_distdir_retest_ws_and_footers :
       # perl cmd
       join( ' ',
         '$(ABSPERLRUN)',
-        map { $mm_proto->quote_literal($_) } qw(-Ilib -e $ENV{RELEASE_TESTING}=1;$ENV{DBICTEST_NO_MAKEFILE_VERIFICATION}=1;)
+        map { $mm_proto->quote_literal($_) } qw(-Ilib -e $ENV{RELEASE_TESTING}=1;$ENV{HARNESS_OPTIONS}=j4;)
       ),
       'xt/dist/postdistdir/*.t',
     )
index e83e03d..e6d7f34 100644 (file)
@@ -1,6 +1,6 @@
 my ($optdep_msg, $opt_testdeps);
 
-if ($args->{skip_author_deps}) {
+unless ($args->{with_optdeps}) {
   $optdep_msg = <<'EOW';
 
 ******************************************************************************
@@ -9,8 +9,12 @@ if ($args->{skip_author_deps}) {
 *** 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.                                ***
+*** patch you may want to aim at running more tests by re-configuring via: ***
+***                                                                        ***
+***  perl Makefile.PL --with-optdeps                                       ***
+***                                                                        ***
+*** which will install all optional dependencies. This is not a mandatory  ***
+*** step - the extensive CI setup will likely catch your mistakes anyway.  ***
 ***                                                                        ***
 ******************************************************************************
 ******************************************************************************
@@ -23,8 +27,8 @@ else {
 ******************************************************************************
 ******************************************************************************
 ***                                                                        ***
-*** AUTHOR MODE: all optional test dependencies converted to hard requires ***
-***       ( to disable re-run Makefile.PL with --skip-author-deps )        ***
+*** --with-optdeps specified: converting all optional test dependencies to ***
+*** hard requires ( to disable re-run Makefile.PL without options )        ***
 ***                                                                        ***
 ******************************************************************************
 ******************************************************************************
index 6033440..3da762a 100755 (executable)
@@ -114,13 +114,12 @@ else
   fi
 fi
 
-# generate the makefile which will have different deps depending on
-# the runmode and envvars set above
-run_or_err "Configure on current branch" "perl Makefile.PL"
 
 # install (remaining) dependencies, sometimes with a gentle push
 if [[ "$CLEANTEST" = "true" ]]; then
 
+  run_or_err "Configure on current branch" "perl Makefile.PL"
+
   # we are doing a devrel pass - try to upgrade *everything* (we will be using cpanm so safe-ish)
   if [[ "$DEVREL_DEPS" == "true" ]] ; then
 
@@ -143,16 +142,19 @@ if [[ "$CLEANTEST" = "true" ]]; then
 
   installdeps $HARD_DEPS
 
+  run_or_err "Re-configure" "perl Makefile.PL"
+
 else
 
+  run_or_err "Configure on current branch with --with-optdeps" "perl Makefile.PL --with-optdeps"
+
   parallel_installdeps_notest "$(make listdeps | sort -R)"
 
+  run_or_err "Re-configure with --with-optdeps" "perl Makefile.PL --with-optdeps"
 fi
 
 echo_err "$(tstamp) Dependency installation finished"
 
-run_or_err "Re-configure" "perl Makefile.PL"
-
 # make sure we got everything we need
 if [[ -n "$(make listdeps)" ]] ; then
   echo_err "$(tstamp) Not all deps installed - something went wrong :("
index 9642c3e..a6dfecc 100755 (executable)
@@ -27,7 +27,7 @@ if [[ "$DEVREL_DEPS" == "true" ]] && perl -M5.008003 -e1 &>/dev/null ; then
   # FIXME Change when Moose goes away
   installdeps Moose $(perl -Ilib -MDBIx::Class::Optional::Dependencies=-list_missing,dist_dir)
 
-  run_or_err "Attempt to build a dist" "rm -rf inc/ && perl Makefile.PL --skip-author-deps && make dist"
+  run_or_err "Attempt to build a dist" "rm -rf inc/ && perl Makefile.PL && make dist"
   tarball_assembled=1
 
 elif [[ "$CLEANTEST" != "true" ]] ; then
index 444cf41..d66322a 100644 (file)
@@ -123,4 +123,10 @@ BEGIN {
 
 use lib 't/lib';
 
+# Back in ab340f7f ribasushi stupidly introduced a "did you check your deps"
+# verification tied very tightly to Module::Install. The check went away, and
+# so eventually will M::I, but bisecting can bring all of this back from the
+# dead. In order to reduce hair-pulling make sure that ./inc/ is always there
+-f 'Makefile.PL' and mkdir 'inc' and mkdir 'inc/.author';
+
 1;
index 178378e..b151392 100644 (file)
@@ -14,8 +14,6 @@ use DBICTest::Util qw( local_umask find_co_root );
 # return a Path::Class::Dir object or undef
 sub _find_co_root { eval { dir( find_co_root() ) } }
 
-_check_author_makefile() unless $ENV{DBICTEST_NO_MAKEFILE_VERIFICATION};
-
 # PathTools has a bug where on MSWin32 it will often return / as a tmpdir.
 # This is *really* stupid and the result of having our lockfiles all over
 # the place is also rather obnoxious. So we use our own heuristics instead
@@ -83,109 +81,13 @@ EOE
 }
 
 
-# Die if the author did not update his makefile
-#
-# This is pretty heavy handed, so the check is pretty solid:
-#
-# 1) Assume that this particular module is loaded from -I <$root>/t/lib
-# 2) Make sure <$root>/Makefile.PL exists
-# 3) Make sure we can stat() <$root>/Makefile.PL
-#
-# If all of the above is satisfied
-#
-# *) die if <$root>/inc does not exist
-# *) die if no stat() results for <$root>/Makefile (covers no Makefile)
-# *) die if Makefile.PL mtime > Makefile mtime
-#
-sub _check_author_makefile {
-
-  my $root = _find_co_root()
-    or return;
-
-  my $optdeps = file('lib/DBIx/Class/Optional/Dependencies.pm');
-
-  # not using file->stat as it invokes File::stat which in turn breaks stat(_)
-  my ($mf_pl_mtime, $mf_mtime, $optdeps_mtime) = ( map
-    { (stat ($root->file ($_)) )[9] || undef }  # stat returns () on nonexistent files
-    (qw|Makefile.PL  Makefile|, $optdeps)
-  );
-
-  return unless $mf_pl_mtime;   # something went wrong during co_root detection ?
-
-  my @fail_reasons;
-
-  if(not -d $root->subdir ('inc')) {
-    push @fail_reasons, "Missing ./inc directory";
-  }
-
-  if(not $mf_mtime) {
-    push @fail_reasons, "Missing ./Makefile";
-  }
-  else {
-    if($mf_mtime < $mf_pl_mtime) {
-      push @fail_reasons, "./Makefile.PL is newer than ./Makefile";
-    }
-    if($mf_mtime < $optdeps_mtime) {
-      push @fail_reasons, "./$optdeps is newer than ./Makefile";
-    }
-  }
-
-  if (@fail_reasons) {
-    print STDERR <<'EOE';
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-======================== FATAL ERROR ===========================
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-We have a number of reasons to believe that this is a development
-checkout and that you, the user, did not run `perl Makefile.PL`
-before using this code. You absolutely _must_ perform this step,
-to ensure you have all required dependencies present. Not doing
-so often results in a lot of wasted time for other contributors
-trying to assist you with spurious "its broken!" problems.
-
-By default DBICs Makefile.PL turns all optional dependencies into
-*HARD REQUIREMENTS*, in order to make sure that the entire test
-suite is executed, and no tests are skipped due to missing modules.
-If you for some reason need to disable this behavior - supply the
---skip_author_deps option when running perl Makefile.PL
-
-If you are seeing this message unexpectedly (i.e. you are in fact
-attempting a regular installation be it through CPAN or manually),
-please report the situation to either the mailing list or to the
-irc channel as described in
-
-http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class.pm#GETTING_HELP/SUPPORT
-
-The DBIC team
-
-
-Reasons you received this message:
-
-EOE
-
-    foreach my $r (@fail_reasons) {
-      print STDERR "  * $r\n";
-    }
-    print STDERR "\n\n\n";
-
-    require Time::HiRes;
-    Time::HiRes::sleep(0.005);
-    print STDOUT "\nBail out!\n";
-    exit 1;
-  }
-}
-
 # Mimic $Module::Install::AUTHOR
 sub is_author {
 
-  my $root = _find_co_root()
-    or return undef;
-
   return (
-    ( not -d $root->subdir ('inc') )
+    ! -d 'inc/Module'
       or
-    ( -e $root->subdir ('inc')->subdir ($^O eq 'VMS' ? '_author' : '.author') )
+    -e 'inc/.author'
   );
 }