From: Peter Rabbitson Date: Wed, 29 Oct 2014 09:39:25 +0000 (+0100) Subject: (travis) Revisit the CI test matrix, and multiple run-script improvements X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=e52712a81216ad371188391dc3184dee9ba4f0ab;p=dbsrgits%2FDBIx-Class.git (travis) Revisit the CI test matrix, and multiple run-script improvements - 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 --- diff --git a/.travis.yml b/.travis.yml index d68a13d..dbdea19 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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 diff --git a/maint/travis-ci_scripts/10_before_install.bash b/maint/travis-ci_scripts/10_before_install.bash index da10ee4..e290987 100755 --- a/maint/travis-ci_scripts/10_before_install.bash +++ b/maint/travis-ci_scripts/10_before_install.bash @@ -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" diff --git a/maint/travis-ci_scripts/20_install.bash b/maint/travis-ci_scripts/20_install.bash index 3551e16..e85aaff 100755 --- a/maint/travis-ci_scripts/20_install.bash +++ b/maint/travis-ci_scripts/20_install.bash @@ -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 diff --git a/maint/travis-ci_scripts/30_before_script.bash b/maint/travis-ci_scripts/30_before_script.bash index b6b7587..8ca7f97 100755 --- a/maint/travis-ci_scripts/30_before_script.bash +++ b/maint/travis-ci_scripts/30_before_script.bash @@ -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 diff --git a/maint/travis-ci_scripts/40_script.bash b/maint/travis-ci_scripts/40_script.bash index 2edcafd..21a1d84 100755 --- a/maint/travis-ci_scripts/40_script.bash +++ b/maint/travis-ci_scripts/40_script.bash @@ -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