(travis) Revisit the CI test matrix, and multiple run-script improvements
Peter Rabbitson [Wed, 29 Oct 2014 09:39:25 +0000 (10:39 +0100)]
- Add 5.8.4 testperl and also make the travis 5.8 run first: will
  give a much faster reponse time if something 5.8 related fails

- Make sure the perl sitelib sanitizer doesn't fire on legacy perls:
  on anything older than 5.12 we are essentialy nuking the baselib.
  The aftermath is that nobody will go to space that day.

- Stop considering DBIC_*_DEBUG part of the POISON-set
  These are more of a tracer - specify them explicitly instead

.travis.yml
maint/travis-ci_scripts/10_before_install.bash
maint/travis-ci_scripts/20_install.bash
maint/travis-ci_scripts/30_before_script.bash
maint/travis-ci_scripts/40_script.bash

index d68a13d..dbdea19 100644 (file)
@@ -70,6 +70,7 @@ notifications:
 language: perl
 
 perl:
+  - "5.8"
   - "5.20-extras"
 
 env:
@@ -79,141 +80,140 @@ env:
 matrix:
   fast_finish: true
   include:
-    # this particular perl is quite widespread
-    - perl: 5.8.8_thr_mb
+    # CLEANTEST of minimum supported with non-tracing poisoning
+    - perl: 5.8.3_nt_mb
       env:
         - CLEANTEST=true
-        - BREWOPTS="-Duseithreads -Dusemorebits"
-        - BREWVER=5.8.8
+        - DBIC_TRACE_PROFILE=console_monochrome
+        - BREWVER=5.8.3
+        - BREWOPTS="-Dusemorebits"
 
-    # so is this one (test a sane CPAN.pm)
-    - perl: 5.12.4_thr_mb
+    # Full Test of minimum supported without threads with non-tracing poisoning
+    - perl: 5.8.3_nt
       env:
-        - CLEANTEST=true
-        - BREWOPTS="-Duseithreads -Dusemorebits"
-        - BREWVER=5.12.4
+        - CLEANTEST=false
+        - POISON_ENV=true
+        - BREWVER=5.8.3
 
-    # this is the perl suse ships
-    - perl: 5.10.0_thr_dbg
+    # Full Test of minimum supported with threads with non-tracing poisoning
+    - perl: 5.8.5_thr
+      env:
+        - CLEANTEST=false
+        - POISON_ENV=true
+        - DBIC_TRACE_PROFILE=console
+        - BREWVER=5.8.5
+        - BREWOPTS="-Duseithreads"
+
+    # CLEANTEST of solaris-like perl with non-tracing poisoning
+    - perl: 5.8.4_nt
       env:
         - CLEANTEST=true
-        - BREWOPTS="-DDEBUGGING -Duseithreads"
-        - BREWVER=5.10.0
+        - POISON_ENV=true
+        - DBIC_TRACE_PROFILE=console
+        - BREWVER=5.8.4
 
-    # CLEANTEST of minimum supported
-    - perl: 5.8.3_nt_mb
+    # CLEANTEST: this particular perl is quite widespread
+    - perl: 5.8.8_thr_mb
       env:
         - CLEANTEST=true
-        - BREWOPTS="-Dusemorebits"
-        - BREWVER=5.8.3
+        - BREWVER=5.8.8
+        - BREWOPTS="-Duseithreads -Dusemorebits"
 
-    # Full Test of minimum supported with threads
-    - perl: 5.8.5_thr
+    # CLEANTEST: this is the perl suse ships
+    - perl: 5.10.0_thr_dbg
       env:
-        - CLEANTEST=false
-        - BREWOPTS="-Duseithreads"
-        - BREWVER=5.8.5
-        - DBIC_TRACE_PROFILE=console
+        - CLEANTEST=true
+        - BREWVER=5.10.0
+        - BREWOPTS="-DDEBUGGING -Duseithreads"
 
-    # Full Test of minimum supported without threads
-    - perl: 5.8.3_nt
+    # CLEANTEST: this one is in a number of debian-based LTS (test a sane CPAN.pm)
+    - perl: 5.14.2_thr_mb
       env:
-        - CLEANTEST=false
-        - BREWOPTS=""
-        - BREWVER=5.8.3
-        - DBIC_TRACE_PROFILE=console_monochrome
+        - CLEANTEST=true
+        - BREWVER=5.14.2
+        - BREWOPTS="-Duseithreads -Dusemorebits"
 
     ###
     # some permutations of tracing and envvar poisoning
 
-    - perl: 5.16.3_thr_mb
+    - perl: 5.12.3_thr
       env:
-        - CLEANTEST=false
-        - POISON_ENV=true
+        - CLEANTEST=true
         - DBIC_TRACE=1
-        - DBIC_MULTICREATE_DEBUG=0
-        - BREWOPTS="-Duseithreads -Dusemorebits"
-        - BREWVER=5.16.3
-
-    - perl: 5.20-extras
-      env:
-        - CLEANTEST=false
+        - DBIC_MULTICREATE_DEBUG=1
+        - DBIC_STORAGE_RETRY_DEBUG=1
         - POISON_ENV=true
         - DBIC_TRACE_PROFILE=console
+        - BREWVER=5.12.3
+        - BREWOPTS="-Duseithreads"
 
-    - perl: 5.8
+    - perl: 5.16.3_thr_mb
       env:
-        - CLEANTEST=true
-        - POISON_ENV=true
+        - CLEANTEST=false
         - DBIC_TRACE=1
-        - DBIC_TRACE_PROFILE=console
+        - POISON_ENV=true
+        - BREWVER=5.16.3
+        - BREWOPTS="-Duseithreads -Dusemorebits"
 
     - perl: 5.18-extras
       env:
         - CLEANTEST=false
-        - POISON_ENV=true
         - DBIC_TRACE=1
+        - POISON_ENV=true
         - DBIC_TRACE_PROFILE=console_monochrome
-        - DBIC_MULTICREATE_DEBUG=0
 
     ###
     # Start of the allow_failures block
 
-    # old threaded with blead CPAN
-    - perl: devcpan_5.8.7_thr
+    # 5.8.4 threaded with blead CPAN with non-tracing poisoning
+    - perl: devcpan_5.8.4_thr
       env:
         - CLEANTEST=true
-        - BREWOPTS="-Duseithreads"
-        - BREWVER=5.8.7
         - DEVREL_DEPS=true
+        - POISON_ENV=true
+        - BREWVER=5.8.4
+        - BREWOPTS="-Duseithreads"
 
     # 5.10.0 threaded with blead CPAN
     - perl: devcpan_5.10.0_thr_mb
       env:
         - CLEANTEST=true
-        - BREWOPTS="-Duseithreads -Dusemorebits"
-        - BREWVER=5.10.0
         - DEVREL_DEPS=true
+        - BREWVER=5.10.0
+        - BREWOPTS="-Duseithreads -Dusemorebits"
 
-    # 5.12.2 with blead CPAN
-    - perl: devcpan_5.12.2_thr
+    # 5.12.1 with blead CPAN
+    - perl: devcpan_5.12.1_thr
       env:
         - CLEANTEST=true
-        - BREWOPTS="-Duseithreads"
-        - BREWVER=5.12.2
-        - DEVREL_DEPS=true
-
-    # recentish threaded stable with blead CPAN
-    - perl: devcpan_5.18.2_thr_mb
-      env:
-        - CLEANTEST=false
-        - BREWOPTS="-Duseithreads -Dusemorebits"
-        - BREWVER=5.18.2
         - DEVREL_DEPS=true
+        - BREWVER=5.12.1
+        - BREWOPTS="-Duseithreads"
 
-    # bleadperl with stock CPAN, full depchain test
+    # bleadperl with stock CPAN, full depchain test with non-tracing poisoning
     - perl: bleadperl
       env:
         - CLEANTEST=true
+        - POISON_ENV=true
         - BREWVER=blead
 
-    # bleadperl with blead CPAN
+    # bleadperl with blead CPAN with non-tracing poisoning
     - perl: devcpan_bleadperl_thr_mb
       env:
         - CLEANTEST=false
-        - BREWOPTS="-Duseithreads -Dusemorebits"
-        - BREWVER=blead
         - DEVREL_DEPS=true
+        - POISON_ENV=true
+        - BREWVER=blead
+        - BREWOPTS="-Duseithreads -Dusemorebits"
 
 
   # which ones of the above can fail
   allow_failures:
 
     # these run with various dev snapshots - allowed to fail
-    - perl: devcpan_5.8.7_thr
+    - perl: devcpan_5.8.4_thr
     - perl: devcpan_5.10.0_thr_mb
-    - perl: devcpan_5.12.2_thr
-    - perl: devcpan_5.18.2_thr_mb
+    - perl: devcpan_5.12.1_thr
     - perl: bleadperl
     - perl: devcpan_bleadperl_thr_mb
 
index da10ee4..e290987 100755 (executable)
@@ -62,7 +62,7 @@ if [[ "$CLEANTEST" != "true" ]]; then
   # (https is critical - apt-get update can't seem to follow the 302)
   sudo bash -c 'echo -e "\ndeb [arch=i386] https://oss.oracle.com/debian unstable main non-free" >> /etc/apt/sources.list'
 
-  run_or_err "Cloning poor man's cache from github" "git clone --depth=1 --branch=poor_mans_travis_cache https://github.com/ribasushi/travis_futzing.git $CACHE_DIR && $CACHE_DIR/reassemble"
+  run_or_err "Cloning poor man's cache from github" "git clone --depth=1 --single-branch --branch=oracle/10.2.0 https://github.com/poortravis/poormanscache.git $CACHE_DIR && $CACHE_DIR/reassemble"
 
   run_or_err "Priming up the APT cache with $(echo $(ls -d $CACHE_DIR/apt_cache/*.deb))" "sudo cp $CACHE_DIR/apt_cache/*.deb /var/cache/apt/archives"
 
index 3551e16..e85aaff 100755 (executable)
@@ -53,10 +53,11 @@ if [[ -n "$BREWVER" ]] ; then
 # the presently installed libs
 # Idea stolen from
 # https://github.com/kentfredric/Dist-Zilla-Plugin-Prereqs-MatchInstalled-All/blob/master/maint-travis-ci/sterilize_env.pl
-elif [[ "$CLEANTEST" == "true" ]] && [[ "$POISON_ENV" != "true" ]] ; then
+# Only works on 5.12+ (where sitlib was finally properly fixed)
+elif [[ "$CLEANTEST" == "true" ]] && [[ "$POISON_ENV" != "true" ]] && perl -M5.012 -e 1 &>/dev/null ; then
 
   echo_err "$(tstamp) Cleaning precompiled Travis-Perl"
-  perl -MConfig -MFile::Find -e '
+  perl -M5.012 -MConfig -MFile::Find -e '
     my $sitedirs = {
       map { $Config{$_} => 1 }
         grep { $_ =~ /site(lib|arch)exp$/ }
@@ -93,7 +94,7 @@ if [[ "$POISON_ENV" = "true" ]] ; then
   # set them to true and see if anything explodes
   for var in \
     DBICTEST_SQLITE_REVERSE_DEFAULT_ORDER \
-    $(grep -P '\$ENV\{' -r lib/ --exclude-dir Optional | grep -oP '\bDBIC\w+' | sort -u | grep -v DBIC_TRACE)
+    $( grep -P '\$ENV\{' -r lib/ --exclude-dir Optional | grep -oP '\bDBIC\w+' | sort -u | grep -vP '^(DBIC_TRACE(_PROFILE)?|DBIC_.+_DEBUG)$' )
   do
     if [[ -z "${!var}" ]] ; then
       export $var=1
@@ -106,7 +107,10 @@ if [[ "$POISON_ENV" = "true" ]] ; then
   export DBI_DRIVER="ADO"
 
   # some people do in fact set this - boggle!!!
-  export PERL_STRICTURES_EXTRA=1
+  # it of course won't work before 5.8.4
+  if perl -M5.008004 -e 1 &>/dev/null ; then
+    export PERL_STRICTURES_EXTRA=1
+  fi
 
   # emulate a local::lib-like env
   # trick cpanm into executing true as shell - we just need the find+unpack
index b6b7587..8ca7f97 100755 (executable)
@@ -8,10 +8,11 @@ if [[ -n "$SHORT_CIRCUIT_SMOKE" ]] ; then exit 0 ; fi
 # FIXME - this is a kludge in place of proper MDV testing. For the time
 # being simply use the minimum versions of our DBI/DBDstack, to avoid
 # fuckups like 0.08260 (went unnoticed for 5 months)
-if [[ "$POISON_ENV" = "true" ]] ; then
+if [[ "$DEVREL_DEPS" != "true" ]] && [[ "$POISON_ENV" = "true" ]] ; then
 
   # use url-spec for DBI due to https://github.com/miyagawa/cpanminus/issues/328
-  if perl -M5.013003 -e1 &>/dev/null ; then
+  if [[ "$CLEANTEST" != "true" ]] || perl -M5.013003 -e1 &>/dev/null ; then
+    # the fulltest may re-upgrade DBI, be conservative only on cleantests
     # earlier DBI will not compile without PERL_POLLUTE which was gone in 5.14
     parallel_installdeps_notest T/TI/TIMB/DBI-1.614.tar.gz
   else
@@ -19,6 +20,7 @@ if [[ "$POISON_ENV" = "true" ]] ; then
   fi
 
   # Test both minimum DBD::SQLite and minimum BigInt SQLite
+  # reverse the logic from above for this (low on full, higher on clean)
   if [[ "$CLEANTEST" = "true" ]]; then
     parallel_installdeps_notest DBD::SQLite@1.37
   else
@@ -88,10 +90,16 @@ else
   parallel_installdeps_notest YAML LWP Class::Trigger JSON::XS DateTime::Format::Builder Class::Accessor::Grouped Package::Variant
   parallel_installdeps_notest SQL::Abstract Moose Module::Install JSON SQL::Translator File::Which
 
+  # Neither DBD::Interbase nor DBD::Firebird compile on DBI < 1.611, so when
+  # we POISON_ENV - nothing will work on 1.57
+  if ( perl -MDBI -e 1 && ! perl -MDBI\ 1.611 -e 1 )&>/dev/null ; then
+    unset DBICTEST_FIREBIRD_DSN DBICTEST_FIREBIRD_INTERBASE_DSN
+  fi
+
+  # the official version is very much outdated and does not compile on 5.14+
+  # use this rather updated source tree (needs to go to PAUSE):
+  # https://github.com/pilcrow/perl-dbd-interbase
   if [[ -n "$DBICTEST_FIREBIRD_INTERBASE_DSN" ]] ; then
-    # the official version is very much outdated and does not compile on 5.14+
-    # use this rather updated source tree (needs to go to PAUSE):
-    # https://github.com/pilcrow/perl-dbd-interbase
     parallel_installdeps_notest git://github.com/dbsrgits/perl-dbd-interbase.git
   fi
 
index 2edcafd..21a1d84 100755 (executable)
@@ -28,7 +28,7 @@ else
 fi
 TEST_T1=$SECONDS
 
-if [[ -z "$DBICTRACE" ]] && [[ -z "$POISON_ENV" ]] && [[ -s "$TEST_STDERR_LOG" ]] ; then
+if [[ -z "$DBIC_TRACE" ]] && [[ -z "$DBIC_MULTICREATE_DEBUG" ]] && [[ -s "$TEST_STDERR_LOG" ]] ; then
   STDERR_LOG_SIZE=$(wc -l < "$TEST_STDERR_LOG")
 
   # prepend STDERR log