# 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
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";
"\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
# 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( ' ',
# 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',
)
my ($optdep_msg, $opt_testdeps);
-if ($args->{skip_author_deps}) {
+unless ($args->{with_optdeps}) {
$optdep_msg = <<'EOW';
******************************************************************************
*** 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. ***
*** ***
******************************************************************************
******************************************************************************
******************************************************************************
******************************************************************************
*** ***
-*** 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 ) ***
*** ***
******************************************************************************
******************************************************************************
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
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 :("
# 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
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;
# 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
}
-# 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'
);
}