X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=maint%2Ftravis-ci_scripts%2F30_before_script.bash;h=44218a6b396b334fdbf9db1f48bdef306f7d5729;hb=8bc629c4c91cf72b2f8d555a7a76dd8a81c30bf8;hp=d23b6cd7c8122d7cb5ff2c8f9d71ab11e1c6088d;hpb=37ab4b67abfeac8dd69ca9165ee001d2bda5285a;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/maint/travis-ci_scripts/30_before_script.bash b/maint/travis-ci_scripts/30_before_script.bash index d23b6cd..44218a6 100755 --- a/maint/travis-ci_scripts/30_before_script.bash +++ b/maint/travis-ci_scripts/30_before_script.bash @@ -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,38 +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 \ -R/RS/RSAVAGE/Tree-DAG_Node-1.13.tgz \ -Module::Build \ -E/ET/ETHER/Class-Method-Modifiers-2.04.tar.gz \ -; 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 @@ -117,30 +86,67 @@ if [[ "$CLEANTEST" = "true" ]]; then HARD_DEPS="$(echo $(make listdeps))" ##### TEMPORARY WORKAROUNDS + if ! CPAN_is_sane ; then + # combat dzillirium on harness-wide level, otherwise breakage happens weekly + echo_err "$(tstamp) Ancient CPAN.pm: engaging TAP::Harness::IgnoreNonessentialDzilAutogeneratedTests during dep install" + perl -MTAP::Harness=3.18 -e1 &>/dev/null || run_or_err "Upgrading TAP::Harness for HARNESS_SUBCLASS support" "cpan TAP::Harness" + export PERL5LIB="$(pwd)/maint/travis-ci_scripts/lib:$PERL5LIB" + export HARNESS_SUBCLASS="TAP::Harness::IgnoreNonessentialDzilAutogeneratedTests" + # 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" + + if CPAN_supports_BUILDPL ; then + # We will invoke a posibly MBT based BUILD-file, but we do not support + # configure requires. So we not only need to install MBT but its prereqs + # FIXME This is madness + HARD_DEPS="$(extract_prereqs Module::Build::Tiny) Module::Build::Tiny $HARD_DEPS" + else + # FIXME + # work around Params::Validate not having a Makefile.PL so really old + # toolchains can not figure out what the prereqs are ;( + # Need to do more research before filing a bug requesting Makefile inclusion + HARD_DEPS="$(extract_prereqs Params::Validate) $HARD_DEPS" + fi + fi +##### END TEMPORARY WORKAROUNDS - # work around Params::Validate not having a Makefile.PL so really old - # toolchains can not figure out what the prereqs are ;( - # Need to do more research before filing a bug requesting Makefile inclusion - perl -M5.008008 -e 1 &> /dev/null || \ - HARD_DEPS="$(extract_prereqs Params::Validate) $HARD_DEPS" + installdeps $HARD_DEPS -##### END TEMPORARY WORKAROUNDS +### FIXME in case we set it earlier in a workaround + if [[ -n "$HARNESS_SUBCLASS" ]] ; then - run_or_err "Installing/testing dependencies (may take up to 3 minutes): $HARD_DEPS" "cpan $HARD_DEPS" + 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" +} +' <<< "$LASTOUT") - # this is a fucked CPAN - save the log as we may need it - CPAN_is_sane || INSTALLDEPS_OUT="$LASTOUT" + unset HARNESS_SUBCLASS + fi else - # listalldeps is deliberate - will upgrade everything it can find - parallel_installdeps_notest $(make listalldeps) - 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) fi -echo_err "$(tstamp) Dependency configuration finished" +echo_err "$(tstamp) Dependency installation finished" # this will display list of available versions perl Makefile.PL @@ -148,7 +154,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