(travis) Add a CLEANTEST run of RURBAN's cperl in the spirit of 62f2092b
Peter Rabbitson [Mon, 11 Apr 2016 13:53:04 +0000 (15:53 +0200)]
Refer to the (*really* small) patchset for info on how to run the same locally
TLDR: you need to activate distroprefs and use CPAN.pm

.travis.yml
maint/travis-ci_scripts/20_install.bash
maint/travis-ci_scripts/30_before_script.bash
maint/travis-ci_scripts/common.bash
t/lib/ANFANG.pm
xt/extra/internals/optional_deps.t

index 0260450..93ec06b 100644 (file)
@@ -204,6 +204,8 @@ matrix:
         - DBICTEST_VIA_REPLICATED=0
         - DBICTEST_VERSION_WARNS_INDISCRIMINATELY=1
 
+    # MAKE SURE TO KEEP THE FLAGS IDENTICAL TO CPERL BELOW
+    # allows for easier side-by-side comparison
     - perl: "5.22.1_thr_qm"
       # explicit new infra spec preparing for a future forced upgrade
       # also need to pull in a sufficiently new compiler for quadmath.h
@@ -220,6 +222,22 @@ matrix:
     ###
     # Start of the allow_failures block
 
+    # MAKE SURE TO KEEP THE FLAGS IDENTICAL TO STOCK 5.22.1 ABOVE
+    # allows for easier side-by-side comparison
+    - perl: "cperl-5.22.1_thr_qm"
+      # explicit new infra spec preparing for a future forced upgrade
+      # also need to pull in a sufficiently new compiler for quadmath.h
+      sudo: required
+      dist: trusty
+      env:
+        # FIXME - work around https://github.com/perl11/cperl/issues/131
+        - VCPU_USE=1
+        - CLEANTEST=true
+        - POISON_ENV=true
+        - MVDT=false
+        - BREWVER=cperl-5.22.1
+        - BREWOPTS="-Duseithreads -Dusequadmath"
+
     # threaded oldest possible with blead CPAN
     - perl: "devcpan_5.8.1_thr_mb"
       sudo: false
@@ -330,6 +348,7 @@ matrix:
   allow_failures:
 
     # these run with various dev snapshots - allowed to fail
+    - perl: cperl-5.22.1_thr_qm
     - perl: devcpan_5.8.1_thr_mb
     - perl: devcpan_5.8.1
     - perl: devcpan_5.8.3_mb
index 08e25c4..7628b4a 100755 (executable)
@@ -31,7 +31,11 @@ if [[ -n "$BREWVER" ]] ; then
 
   BREWSRC="$BREWVER"
 
-  if [[ "$BREWVER" == "schmorp_stableperl" ]] ; then
+  if is_cperl; then
+    # FFS perlbrew ( see http://wollmers-perl.blogspot.de/2015/10/install-cperl-with-perlbrew.html )
+    wget -qO- https://github.com/perl11/cperl/archive/$BREWVER.tar.gz > /tmp/cperl-$BREWVER.tar.gz
+    BREWSRC="/tmp/cperl-$BREWVER.tar.gz"
+  elif [[ "$BREWVER" == "schmorp_stableperl" ]] ; then
     BREWSRC="http://stableperl.schmorp.de/dist/stableperl-5.22.0-1.001.tar.gz"
   fi
 
index 79a360d..3965bca 100755 (executable)
@@ -11,6 +11,19 @@ if [[ "$DEVREL_DEPS" == "true" ]] ; then
   export MVDT=""
 fi
 
+# Need a shitton of patches to run on cperl (luckily all provided)
+# Also need to have YAML in place, otherwise the distroprefs are not readable
+if is_cperl ; then
+
+  run_or_err "Downloading and installing cperl distroprefs" '
+    wget -qO- https://github.com/rurban/distroprefs/archive/master.tar.gz |\
+    tar -C $HOME/.cpan --strip-components 1 -zx distroprefs-master/prefs distroprefs-master/sources
+  '
+
+  installdeps YAML
+
+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)
index f73adde..7bbcfab 100755 (executable)
@@ -135,6 +135,8 @@ extract_prereqs() {
 parallel_installdeps_notest() {
   if [[ -z "$@" ]] ; then return; fi
 
+  is_cperl && echo_err "cpanminus is not yet usable on cperl" && exit 1
+
   # one module spec per line
   MODLIST="$(printf '%s\n' "$@" | sort -R)"
 
@@ -194,6 +196,8 @@ installdeps() {
 
 _dep_inst_with_test() {
   if [[ "$DEVREL_DEPS" == "true" ]] ; then
+    is_cperl && echo_err "cpanminus is not yet usable on cperl" && exit 1
+
     # --dev is already part of CPANM_OPT
     LASTCMD="$TIMEOUT_CMD cpanm $@"
     $LASTCMD 2>&1 || return 1
@@ -328,3 +332,5 @@ CPAN_is_sane() { perl -MCPAN\ 1.94_56 -e 1 &>/dev/null ; }
 CPAN_supports_BUILDPL() { perl -MCPAN\ 1.9205 -e1 &>/dev/null; }
 
 have_sudo() { sudo /bin/true &>/dev/null ; }
+
+is_cperl() { [[ "$BREWVER" =~ $( echo -n "^cperl-" ) ]] ; }
index 05304bf..4e49fe0 100644 (file)
@@ -46,6 +46,13 @@ $INC{$_} ||= __FILE__ for (qw( ANFANG.pm t/lib/ANFANG.pm ./t/lib/ANFANG.pm ));
 
       and
 
+    # a ghetto way of recognizing cperl without loading Config.pm
+    # the $] guard is there because touching $^V on pre-5.10 loads
+    # the entire utf8 stack (wtf!!!)
+    ( "$]" < 5.010 or $^V !~ /\d+c$/ )
+
+      and
+
     # just don't check anything under RELEASE_TESTING
     # a naive approach would be to simply whitelist both
     # strict and warnings, but pre 5.10 there were even
index f2feb4e..de45ae0 100644 (file)
@@ -17,6 +17,7 @@ use Scalar::Util();
 use MRO::Compat();
 use Carp 'confess';
 use List::Util 'shuffle';
+use Config;
 
 SKIP: {
   skip 'Lean load pattern testing unsafe with $ENV{PERL5OPT}', 1
@@ -28,6 +29,9 @@ SKIP: {
   skip 'Lean load pattern testing useless with $ENV{RELEASE_TESTING}', 1
     if $ENV{RELEASE_TESTING};
 
+  skip 'Lean load pattern testing useless under cperl', 1
+    if $Config{usecperl};
+
   is_deeply
     $inc_before,
     [],