From: Peter Rabbitson Date: Mon, 15 Feb 2016 11:42:13 +0000 (+0100) Subject: Revert ab340f7f - it no longer makes sense given the excellent CI setup X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=7b87b77c04e07cfea1103dba8ecbd3f219e949d2;p=dbsrgits%2FDBIx-Class.git Revert ab340f7f - it no longer makes sense given the excellent CI setup There should be no functional changes / difference in behavior (the config option is named differently, and is inverted in meaning) Verified no change in behavior (at least on CI) via: ( not checking all 20+ jobs as the log-counter jumps towards the end ) for n in $(seq 18) ; do x=$((112787688 + $n)) && \ y=$((112787738 + $n)) && \ echo "$x => $y" && \ diff -U0 \ <(wget -qO- https://s3.amazonaws.com/archive.travis-ci.org/jobs/$x/log.txt | \ perl -0777 -n -E 'say ( ($_ =~ /List of loadable modules within both the core and(.+?)List of loadable modules within both the core and/s )[0] )') \ <(wget -qO- https://s3.amazonaws.com/archive.travis-ci.org/jobs/$y/log.txt | \ perl -0777 -n -E 'say ( ($_ =~ /List of loadable modules within both the core and(.+?)List of loadable modules within both the core and/s )[0] )') done | less This also happened to find https://rt.cpan.org/Ticket/Display.html?id=112601 --- diff --git a/Makefile.PL b/Makefile.PL index f4ac1b8..0be14e8 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -99,7 +99,7 @@ my $test_requires = { # tests will fail # Note - these are added as test_requires *directly*, so they get properly # excluded on META.yml cleansing (even though no dist can be created from this) -# we force these reqs regarless of author_deps, worst case scenario they will +# we force these reqs regarless of --with-optdeps, worst case scenario they will # be specified twice # # also note that we *do* set dynamic_config => 0, as these are the only things @@ -205,10 +205,10 @@ sub invoke_author_mode { config => [qw/gnu_getopt bundling_override no_ignore_case pass_through/] ); my $args = { - skip_author_deps => undef, + with_optdeps => undef, }; $getopt->getoptions($args, qw/ - skip_author_deps|skip-author-deps + with_optdeps|with-optdeps /); if (@ARGV) { warn "\nIgnoring unrecognized option(s): @ARGV\n\n"; @@ -236,10 +236,6 @@ sub invoke_author_mode { "\t" . $mm_proto->oneliner( qq(\$ENV{PERLIO}='unix' and system( \$^X, qw( -MExtUtils::Command -e dos2unix -- ), $targets ) ) ); }; - # we are in the process of (re)writing the makefile - some things we - # call below very well may fail - local $ENV{DBICTEST_NO_MAKEFILE_VERIFICATION} = 1; - require File::Spec; # string-eval, not do(), because we need to provide the # $mm_proto, $reqs and $*_requires lexicals to the included file diff --git a/maint/Makefile.PL.inc/11_authortests.pl b/maint/Makefile.PL.inc/11_authortests.pl index 7760de2..77bb071 100644 --- a/maint/Makefile.PL.inc/11_authortests.pl +++ b/maint/Makefile.PL.inc/11_authortests.pl @@ -31,7 +31,7 @@ test_xt : pm_to_blib # perl cmd join( ' ', '$(ABSPERLRUN)', - map { $mm_proto->quote_literal($_) } qw(-e $ENV{RELEASE_TESTING}=1;$ENV{DBICTEST_NO_MAKEFILE_VERIFICATION}=1;) + map { $mm_proto->quote_literal($_) } qw(-e $ENV{RELEASE_TESTING}=1;$ENV{HARNESS_OPTIONS}=j4;) ), # test list join( ' ', @@ -50,7 +50,7 @@ dbic_distdir_retest_ws_and_footers : # perl cmd join( ' ', '$(ABSPERLRUN)', - map { $mm_proto->quote_literal($_) } qw(-Ilib -e $ENV{RELEASE_TESTING}=1;$ENV{DBICTEST_NO_MAKEFILE_VERIFICATION}=1;) + map { $mm_proto->quote_literal($_) } qw(-Ilib -e $ENV{RELEASE_TESTING}=1;$ENV{HARNESS_OPTIONS}=j4;) ), 'xt/dist/postdistdir/*.t', ) diff --git a/maint/Makefile.PL.inc/12_authordeps.pl b/maint/Makefile.PL.inc/12_authordeps.pl index e83e03d..e6d7f34 100644 --- a/maint/Makefile.PL.inc/12_authordeps.pl +++ b/maint/Makefile.PL.inc/12_authordeps.pl @@ -1,6 +1,6 @@ my ($optdep_msg, $opt_testdeps); -if ($args->{skip_author_deps}) { +unless ($args->{with_optdeps}) { $optdep_msg = <<'EOW'; ****************************************************************************** @@ -9,8 +9,12 @@ if ($args->{skip_author_deps}) { *** IGNORING AUTHOR MODE: no optional test dependencies will be forced. *** *** *** *** If you are using this checkout with the intention of submitting a DBIC *** -*** patch, you are *STRONGLY ENCOURAGED* to install all dependencies, so *** -*** that every possible unit-test will run. *** +*** patch you may want to aim at running more tests by re-configuring via: *** +*** *** +*** perl Makefile.PL --with-optdeps *** +*** *** +*** which will install all optional dependencies. This is not a mandatory *** +*** step - the extensive CI setup will likely catch your mistakes anyway. *** *** *** ****************************************************************************** ****************************************************************************** @@ -23,8 +27,8 @@ else { ****************************************************************************** ****************************************************************************** *** *** -*** AUTHOR MODE: all optional test dependencies converted to hard requires *** -*** ( to disable re-run Makefile.PL with --skip-author-deps ) *** +*** --with-optdeps specified: converting all optional test dependencies to *** +*** hard requires ( to disable re-run Makefile.PL without options ) *** *** *** ****************************************************************************** ****************************************************************************** diff --git a/maint/travis-ci_scripts/30_before_script.bash b/maint/travis-ci_scripts/30_before_script.bash index 6033440..3da762a 100755 --- a/maint/travis-ci_scripts/30_before_script.bash +++ b/maint/travis-ci_scripts/30_before_script.bash @@ -114,13 +114,12 @@ else fi fi -# generate the makefile which will have different deps depending on -# the runmode and envvars set above -run_or_err "Configure on current branch" "perl Makefile.PL" # install (remaining) dependencies, sometimes with a gentle push if [[ "$CLEANTEST" = "true" ]]; then + run_or_err "Configure on current branch" "perl Makefile.PL" + # we are doing a devrel pass - try to upgrade *everything* (we will be using cpanm so safe-ish) if [[ "$DEVREL_DEPS" == "true" ]] ; then @@ -143,16 +142,19 @@ if [[ "$CLEANTEST" = "true" ]]; then installdeps $HARD_DEPS + run_or_err "Re-configure" "perl Makefile.PL" + else + run_or_err "Configure on current branch with --with-optdeps" "perl Makefile.PL --with-optdeps" + parallel_installdeps_notest "$(make listdeps | sort -R)" + run_or_err "Re-configure with --with-optdeps" "perl Makefile.PL --with-optdeps" fi echo_err "$(tstamp) Dependency installation finished" -run_or_err "Re-configure" "perl Makefile.PL" - # make sure we got everything we need if [[ -n "$(make listdeps)" ]] ; then echo_err "$(tstamp) Not all deps installed - something went wrong :(" diff --git a/maint/travis-ci_scripts/50_after_success.bash b/maint/travis-ci_scripts/50_after_success.bash index 9642c3e..a6dfecc 100755 --- a/maint/travis-ci_scripts/50_after_success.bash +++ b/maint/travis-ci_scripts/50_after_success.bash @@ -27,7 +27,7 @@ if [[ "$DEVREL_DEPS" == "true" ]] && perl -M5.008003 -e1 &>/dev/null ; then # FIXME Change when Moose goes away installdeps Moose $(perl -Ilib -MDBIx::Class::Optional::Dependencies=-list_missing,dist_dir) - run_or_err "Attempt to build a dist" "rm -rf inc/ && perl Makefile.PL --skip-author-deps && make dist" + run_or_err "Attempt to build a dist" "rm -rf inc/ && perl Makefile.PL && make dist" tarball_assembled=1 elif [[ "$CLEANTEST" != "true" ]] ; then diff --git a/t/lib/ANFANG.pm b/t/lib/ANFANG.pm index 444cf41..d66322a 100644 --- a/t/lib/ANFANG.pm +++ b/t/lib/ANFANG.pm @@ -123,4 +123,10 @@ BEGIN { use lib 't/lib'; +# Back in ab340f7f ribasushi stupidly introduced a "did you check your deps" +# verification tied very tightly to Module::Install. The check went away, and +# so eventually will M::I, but bisecting can bring all of this back from the +# dead. In order to reduce hair-pulling make sure that ./inc/ is always there +-f 'Makefile.PL' and mkdir 'inc' and mkdir 'inc/.author'; + 1; diff --git a/t/lib/DBICTest/RunMode.pm b/t/lib/DBICTest/RunMode.pm index 178378e..b151392 100644 --- a/t/lib/DBICTest/RunMode.pm +++ b/t/lib/DBICTest/RunMode.pm @@ -14,8 +14,6 @@ use DBICTest::Util qw( local_umask find_co_root ); # return a Path::Class::Dir object or undef sub _find_co_root { eval { dir( find_co_root() ) } } -_check_author_makefile() unless $ENV{DBICTEST_NO_MAKEFILE_VERIFICATION}; - # PathTools has a bug where on MSWin32 it will often return / as a tmpdir. # This is *really* stupid and the result of having our lockfiles all over # the place is also rather obnoxious. So we use our own heuristics instead @@ -83,109 +81,13 @@ EOE } -# Die if the author did not update his makefile -# -# This is pretty heavy handed, so the check is pretty solid: -# -# 1) Assume that this particular module is loaded from -I <$root>/t/lib -# 2) Make sure <$root>/Makefile.PL exists -# 3) Make sure we can stat() <$root>/Makefile.PL -# -# If all of the above is satisfied -# -# *) die if <$root>/inc does not exist -# *) die if no stat() results for <$root>/Makefile (covers no Makefile) -# *) die if Makefile.PL mtime > Makefile mtime -# -sub _check_author_makefile { - - my $root = _find_co_root() - or return; - - my $optdeps = file('lib/DBIx/Class/Optional/Dependencies.pm'); - - # not using file->stat as it invokes File::stat which in turn breaks stat(_) - my ($mf_pl_mtime, $mf_mtime, $optdeps_mtime) = ( map - { (stat ($root->file ($_)) )[9] || undef } # stat returns () on nonexistent files - (qw|Makefile.PL Makefile|, $optdeps) - ); - - return unless $mf_pl_mtime; # something went wrong during co_root detection ? - - my @fail_reasons; - - if(not -d $root->subdir ('inc')) { - push @fail_reasons, "Missing ./inc directory"; - } - - if(not $mf_mtime) { - push @fail_reasons, "Missing ./Makefile"; - } - else { - if($mf_mtime < $mf_pl_mtime) { - push @fail_reasons, "./Makefile.PL is newer than ./Makefile"; - } - if($mf_mtime < $optdeps_mtime) { - push @fail_reasons, "./$optdeps is newer than ./Makefile"; - } - } - - if (@fail_reasons) { - print STDERR <<'EOE'; - -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -======================== FATAL ERROR =========================== -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -We have a number of reasons to believe that this is a development -checkout and that you, the user, did not run `perl Makefile.PL` -before using this code. You absolutely _must_ perform this step, -to ensure you have all required dependencies present. Not doing -so often results in a lot of wasted time for other contributors -trying to assist you with spurious "its broken!" problems. - -By default DBICs Makefile.PL turns all optional dependencies into -*HARD REQUIREMENTS*, in order to make sure that the entire test -suite is executed, and no tests are skipped due to missing modules. -If you for some reason need to disable this behavior - supply the ---skip_author_deps option when running perl Makefile.PL - -If you are seeing this message unexpectedly (i.e. you are in fact -attempting a regular installation be it through CPAN or manually), -please report the situation to either the mailing list or to the -irc channel as described in - -http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class.pm#GETTING_HELP/SUPPORT - -The DBIC team - - -Reasons you received this message: - -EOE - - foreach my $r (@fail_reasons) { - print STDERR " * $r\n"; - } - print STDERR "\n\n\n"; - - require Time::HiRes; - Time::HiRes::sleep(0.005); - print STDOUT "\nBail out!\n"; - exit 1; - } -} - # Mimic $Module::Install::AUTHOR sub is_author { - my $root = _find_co_root() - or return undef; - return ( - ( not -d $root->subdir ('inc') ) + ! -d 'inc/Module' or - ( -e $root->subdir ('inc')->subdir ($^O eq 'VMS' ? '_author' : '.author') ) + -e 'inc/.author' ); }