Temporarily freeze travis SQLT on 0.11016, until the SQLT debacle is resolved
[dbsrgits/DBIx-Class.git] / maint / travis-ci_scripts / 30_before_script.bash
index 706c979..d89e6ff 100755 (executable)
@@ -31,9 +31,6 @@ if [[ "$CLEANTEST" = "true" ]]; then
 
   mv ~/.cpanm/latest-build/DBIx-Class-*/inc .
 
-  # older perls do not have a CPAN which understands configure_requires
-  # properly and what is worse a `cpan Foo` run exits with 0 even if some
-  # modules failed to install
   # The first CPAN which is somewhat sane is around 1.94_56 (perl 5.12)
   # The problem is that the first sane version also brings a *lot* of
   # deps with it, notably things like YAML and HTTP::Tiny
@@ -41,35 +38,10 @@ if [[ "$CLEANTEST" = "true" ]]; then
   # possible, mainly to catch "but X is perl core" mistakes
   # So instead we still use our stock (possibly old) CPAN, and add some
   # handholding
-  if ! CPAN_is_sane ; then
-    for m in \
-ExtUtils::MakeMaker \
-ExtUtils::CBuilder \
-Module::Build \
-; do
-      run_or_err "Pre-installing $m" "cpan $m"
-      if ! perl -e '
-
-eval ( q{require } . (
-  $ARGV[0] =~ m{ \/ .*? ([^\/]+) $ }x
-    ? do { my @p = split (/\-/, $1); pop @p; join "::", @p }
-    : $ARGV[0]
-) ) or ( print $@ and exit 1)' "$m" 2> /dev/null ; then
-
-        echo_err -e "$m installation failed\n$LASTOUT"
-        exit 1
-      fi
-    done
-  fi
 
-  # DBI has by far the longest test runtime - run less tests
-  # FIXME horrible horrible hack, need to implement in DBI itself
-  run_or_err "Downloading latest DBI distdir from CPAN" \
-    "SHELL=/bin/true cpanm --look DBI"
-  cd ~/.cpanm/latest-build/DBI-*/
-  perl -p -i -e 's/(create_.+?_tests) => 1/$1 => 0/' Makefile.PL
-  run_or_err "Pre-installing DBI, but running less tests" "perl Makefile.PL && make && make test && make install"
-  cd - &>/dev/null
+  # no configure_requires - we will need the usual suspects anyway
+  # without pre-installign these in one pass things like extract_prereqs won't work
+  CPAN_is_sane || installdeps ExtUtils::MakeMaker ExtUtils::CBuilder Module::Build
 
 else
   # we will be running all dbic tests - preinstall lots of stuff, run basic tests
@@ -86,11 +58,11 @@ else
   parallel_installdeps_notest Carp
   parallel_installdeps_notest Module::Build Module::Runtime
   parallel_installdeps_notest File::Spec Data::Dumper
-  parallel_installdeps_notest Test::Exception Encode::Locale Test::Fatal R/RS/RSAVAGE/Tree-DAG_Node-1.13.tgz
+  parallel_installdeps_notest Test::Exception Encode::Locale Test::Fatal
   parallel_installdeps_notest Test::Warn B::Hooks::EndOfScope Test::Differences HTTP::Status
   parallel_installdeps_notest Test::Pod::Coverage Test::EOL Devel::GlobalDestruction Sub::Name MRO::Compat Class::XSAccessor URI::Escape HTML::Entities
   parallel_installdeps_notest YAML LWP Class::Trigger JSON::XS DBI DateTime::Format::Builder Class::Accessor::Grouped Package::Variant
-  parallel_installdeps_notest Moose Module::Install JSON SQL::Translator File::Which
+  parallel_installdeps_notest Moose Module::Install JSON F/FR/FREW/SQL-Translator-0.11016.tar.gz File::Which
 
   if [[ -n "DBICTEST_FIREBIRD_DSN" ]] ; then
     # the official version is very much outdated and does not compile on 5.14+
@@ -123,6 +95,9 @@ if [[ "$CLEANTEST" = "true" ]]; then
     # sanity check, T::H does not report sensible errors when the subclass fails to load
     perl -MTAP::Harness::IgnoreNonessentialDzilAutogeneratedTests -e1
 
+    # DBD::SQLite reasonably wants DBI at config time
+    HARD_DEPS="DBI $HARD_DEPS"
+
     # FIXME
     # parent is temporary due to Carp https://rt.cpan.org/Ticket/Display.html?id=88494
     HARD_DEPS="parent $HARD_DEPS"
@@ -142,36 +117,52 @@ if [[ "$CLEANTEST" = "true" ]]; then
   fi
 ##### END TEMPORARY WORKAROUNDS
 
-  run_or_err "Installing/testing dependencies (may take up to 5 minutes): $HARD_DEPS" "cpan $HARD_DEPS"
-
-  # save the log as we may need it
-  INSTALLDEPS_OUT="$LASTOUT"
+  installdeps $HARD_DEPS
 
 ### FIXME in case we set it earlier in a workaround
   if [[ -n "$HARNESS_SUBCLASS" ]] ; then
 
     INSTALLDEPS_SKIPPED_TESTLIST=$(perl -0777 -e '
-my $in = <>;
-my $re = qr(
-  ^ (?: \QBuilding and testing\E | \s* CPAN\.pm: .+? (?i:build)\S* ) \s+ (\S+)
-  .*?
-  ^ === \s \QSkipping nonessential autogenerated tests: \E([^\n]+)
-)msx;
-while ( $in =~ /$re/g ) {
-  print "!!! Skipped nonessential tests while installing $1: $2\n"
+my $curmod_re = qr{
+^
+  (?:
+    \QBuilding and testing\E
+      |
+    [\x20\t]* CPAN\.pm: [^\n]*? (?i:build)\S*
+  )
+
+  [\x20\t]+ (\S+)
+$}mx;
+
+my $curskip_re = qr{^ === \x20 \QSkipping nonessential autogenerated tests: \E([^\n]+) }mx;
+
+my (undef, @chunks) = (split qr/$curmod_re/, <>);
+while (@chunks) {
+  my ($mod, $log) = splice @chunks, 0, 2;
+  print "!!! Skipped nonessential tests while installing $mod:\n\t$1\n"
+    if $log =~ $curskip_re;
 }
 ' <<< "$LASTOUT")
 
+    if [[ -n "$INSTALLDEPS_SKIPPED_TESTLIST" ]] ; then
+      POSTMORTEM="$POSTMORTEM$(
+        echo
+        echo "The following non-essential tests were skipped during deps installation"
+        echo "============================================================="
+        echo "$INSTALLDEPS_SKIPPED_TESTLIST"
+        echo "============================================================="
+        echo
+      )"
+    fi
+
     unset HARNESS_SUBCLASS
   fi
 
 else
-  if [[ -n "$TEST_BUILDER_BETA_CPAN_TARBALL" ]] ; then
-    parallel_installdeps_notest $TEST_BUILDER_BETA_CPAN_TARBALL
-  fi
 
   # listalldeps is deliberate - will upgrade everything it can find
-  parallel_installdeps_notest $(make listalldeps)
+  parallel_installdeps_notest $(make listalldeps | grep -v SQL::Translator)
+
 fi
 
 echo_err "$(tstamp) Dependency installation finished"
@@ -182,7 +173,7 @@ perl Makefile.PL
 if [[ -n "$(make listdeps)" ]] ; then
   echo_err "$(tstamp) Not all deps installed - something went wrong :("
   sleep 1 # without this the echo below confuses the console listener >.<
-  CPAN_is_sane || echo_err -e "Outdated CPAN.pm used - full logs follows\n$INSTALLDEPS_OUT\n\nSearch for 'NOT OK' in the text above\n\nDeps still missing:"
+  CPAN_is_sane || echo_err -e "Outdated CPAN.pm used - full installdep log follows\n$INSTALLDEPS_OUT\n\nSearch for 'NOT OK' in the text above\n\nDeps still missing:"
   sleep 3 # without this the above echo confuses the console listener >.<
   make listdeps
   exit 1
@@ -200,7 +191,7 @@ $(perl -0777 -p -e 's/.+\n\n(?!\z)//s' < /proc/cpuinfo)
 $(free -m -t)
 
 = Environment
-$(env | grep -P 'TEST|TRAVIS|PERL|DBIC' | LC_ALL=C sort | cat -v)
+$(env | grep -P 'TEST|HARNESS|MAKE|TRAVIS|PERL|DBIC' | LC_ALL=C sort | cat -v)
 
 = Perl in use
 $(perl -V)