'namespace::autoclean' => '0.09',
};
+my $admin_script = {
+ %$moose_basic,
+ %$admin_basic,
+ 'Getopt::Long::Descriptive' => '0.081',
+ 'Text::CSV' => '1.16',
+};
+
my $datetime_basic = {
'DateTime' => '0.55',
'DateTime::Format::Strptime' => '1.2',
};
my $id_shortener = {
- 'Math::BigInt' => '1.89',
+ 'Math::BigInt' => '1.80',
'Math::Base36' => '0.07',
};
my $rdbms_mssql_ado = {
'DBD::ADO' => '0',
};
+my $rdbms_msaccess_odbc = {
+ 'DBD::ODBC' => '0',
+};
+my $rdbms_msaccess_ado = {
+ 'DBD::ADO' => '0',
+};
my $rdbms_mysql = {
'DBD::mysql' => '0',
};
my $rdbms_db2 = {
'DBD::DB2' => '0',
};
+my $rdbms_db2_400 = {
+ 'DBD::ODBC' => '0',
+};
+my $rdbms_informix = {
+ 'DBD::Informix' => '0',
+};
+my $rdbms_sqlanywhere = {
+ 'DBD::SQLAnywhere' => '0',
+};
+my $rdbms_sqlanywhere_odbc = {
+ 'DBD::ODBC' => '0',
+};
+my $rdbms_firebird = {
+ 'DBD::Firebird' => '0',
+};
+my $rdbms_firebird_interbase = {
+ 'DBD::InterBase' => '0',
+};
my $rdbms_firebird_odbc = {
'DBD::ODBC' => '0',
};
my $reqs = {
- dist => {
- #'Module::Install::Pod::Inherit' => '0.01',
+ dist_podinherit => {
+ req => {
+ 'Pod::Inherit' => '0.90',
+ 'Pod::Tree' => '0',
+ }
},
replicated => {
admin_script => {
req => {
- %$moose_basic,
- %$admin_basic,
- 'Getopt::Long::Descriptive' => '0.081',
- 'Text::CSV' => '1.16',
+ %$admin_script,
},
pod => {
title => 'dbicadmin',
deploy => {
req => {
- 'SQL::Translator' => '0.11006',
+ 'SQL::Translator' => '0.11016',
},
pod => {
title => 'Storage::DBI::deploy()',
},
},
- test_notabs => {
+ test_whitespace => {
req => {
+ 'Test::EOL' => '1.0',
'Test::NoTabs' => '0.9',
},
},
- test_eol => {
+ test_strictures => {
req => {
- 'Test::EOL' => '0.6',
+ 'Test::Strict' => '0.16',
},
},
req => $json_any,
},
+ test_admin_script => {
+ req => {
+ %$admin_script,
+ 'JSON' => 0,
+ 'JSON::XS' => 0,
+ $^O eq 'MSWin32'
+ # for t/admin/10script.t
+ ? ('Win32::ShellQuote' => 0)
+ # DWIW does not compile (./configure even) on win32
+ : ('JSON::DWIW' => 0 )
+ ,
+ }
+ },
+
test_leaks => {
req => {
'Test::Memory::Cycle' => '0',
test_cdbicompat => {
req => {
- 'DBIx::ContextualFetch' => '0',
+ 'Class::DBI' => 0,
'Class::DBI::Plugin::DeepAbstractSearch' => '0',
- 'Class::Trigger' => '0',
+ %$datetime_basic,
'Time::Piece::MySQL' => '0',
- 'Clone' => '0',
'Date::Simple' => '3.03',
},
},
rdbms_pg => {
req => {
+ # when changing this list make sure to adjust xt/optional_deps.t
%$rdbms_pg,
},
pod => {
},
},
+ rdbms_msaccess_odbc => {
+ req => {
+ %$rdbms_msaccess_odbc,
+ },
+ pod => {
+ title => 'MS Access support via DBD::ODBC',
+ desc => 'Modules required to connect to MS Access via DBD::ODBC',
+ },
+ },
+
+ rdbms_msaccess_ado => {
+ req => {
+ %$rdbms_msaccess_ado,
+ },
+ pod => {
+ title => 'MS Access support via DBD::ADO (Windows only)',
+ desc => 'Modules required to connect to MS Access via DBD::ADO. This particular DBD is available on Windows only',
+ },
+ },
+
rdbms_mysql => {
req => {
%$rdbms_mysql,
},
},
+ rdbms_db2_400 => {
+ req => {
+ %$rdbms_db2_400,
+ },
+ pod => {
+ title => 'DB2 on AS/400 support',
+ desc => 'Modules required to connect to DB2 on AS/400',
+ },
+ },
+
+ rdbms_informix => {
+ req => {
+ %$rdbms_informix,
+ },
+ pod => {
+ title => 'Informix support',
+ desc => 'Modules required to connect to Informix',
+ },
+ },
+
+ rdbms_sqlanywhere => {
+ req => {
+ %$rdbms_sqlanywhere,
+ },
+ pod => {
+ title => 'SQLAnywhere support',
+ desc => 'Modules required to connect to SQLAnywhere',
+ },
+ },
+
+ rdbms_sqlanywhere_odbc => {
+ req => {
+ %$rdbms_sqlanywhere_odbc,
+ },
+ pod => {
+ title => 'SQLAnywhere support via DBD::ODBC',
+ desc => 'Modules required to connect to SQLAnywhere via DBD::ODBC',
+ },
+ },
+
+ rdbms_firebird => {
+ req => {
+ %$rdbms_firebird,
+ },
+ pod => {
+ title => 'Firebird support',
+ desc => 'Modules required to connect to Firebird',
+ },
+ },
+
+ rdbms_firebird_interbase => {
+ req => {
+ %$rdbms_firebird_interbase,
+ },
+ pod => {
+ title => 'Firebird support via DBD::InterBase',
+ desc => 'Modules required to connect to Firebird via DBD::InterBase',
+ },
+ },
+
+ rdbms_firebird_odbc => {
+ req => {
+ %$rdbms_firebird_odbc,
+ },
+ pod => {
+ title => 'Firebird support via DBD::ODBC',
+ desc => 'Modules required to connect to Firebird via DBD::ODBC',
+ },
+ },
+
# the order does matter because the rdbms support group might require
# a different version that the test group
test_rdbms_pg => {
req => {
$ENV{DBICTEST_PG_DSN}
? (
+ # when changing this list make sure to adjust xt/optional_deps.t
%$rdbms_pg,
- 'Sys::SigAction' => '0',
+ ($^O ne 'MSWin32' ? ('Sys::SigAction' => '0') : ()),
'DBD::Pg' => '2.009002',
) : ()
},
},
},
+ test_rdbms_msaccess_odbc => {
+ req => {
+ $ENV{DBICTEST_MSACCESS_ODBC_DSN}
+ ? (
+ %$rdbms_msaccess_odbc,
+ %$datetime_basic,
+ 'Data::GUID' => '0',
+ ) : ()
+ },
+ },
+
+ test_rdbms_msaccess_ado => {
+ req => {
+ $ENV{DBICTEST_MSACCESS_ADO_DSN}
+ ? (
+ %$rdbms_msaccess_ado,
+ %$datetime_basic,
+ 'Data::GUID' => 0,
+ ) : ()
+ },
+ },
+
test_rdbms_mysql => {
req => {
$ENV{DBICTEST_MYSQL_DSN}
$ENV{DBICTEST_SYBASE_DSN}
? (
%$rdbms_ase,
- 'DateTime::Format::Sybase' => '0',
) : ()
},
},
},
},
+ test_rdbms_db2_400 => {
+ req => {
+ $ENV{DBICTEST_DB2_400_DSN}
+ ? (
+ %$rdbms_db2_400,
+ ) : ()
+ },
+ },
+
+ test_rdbms_informix => {
+ req => {
+ $ENV{DBICTEST_INFORMIX_DSN}
+ ? (
+ %$rdbms_informix,
+ ) : ()
+ },
+ },
+
+ test_rdbms_sqlanywhere => {
+ req => {
+ $ENV{DBICTEST_SQLANYWHERE_DSN}
+ ? (
+ %$rdbms_sqlanywhere,
+ ) : ()
+ },
+ },
+
+ test_rdbms_sqlanywhere_odbc => {
+ req => {
+ $ENV{DBICTEST_SQLANYWHERE_ODBC_DSN}
+ ? (
+ %$rdbms_sqlanywhere_odbc,
+ ) : ()
+ },
+ },
+
+ test_rdbms_firebird => {
+ req => {
+ $ENV{DBICTEST_FIREBIRD_DSN}
+ ? (
+ %$rdbms_firebird,
+ ) : ()
+ },
+ },
+
+ test_rdbms_firebird_interbase => {
+ req => {
+ $ENV{DBICTEST_FIREBIRD_INTERBASE_DSN}
+ ? (
+ %$rdbms_firebird_interbase,
+ ) : ()
+ },
+ },
+
test_rdbms_firebird_odbc => {
req => {
$ENV{DBICTEST_FIREBIRD_ODBC_DSN}
if (keys %errors) {
my $missing = join (', ', map { $deps->{$_} ? "$_ >= $deps->{$_}" : $_ } (sort keys %errors) );
$missing .= " (see $class for details)" if $reqs->{$group}{pod};
- $missing .= "\n";
$res = {
status => 0,
errorlist => \%errors,
# This is to be called by the author only (automatically in Makefile.PL)
sub _gen_pod {
- my ($class, $distver) = @_;
-
- my $modfn = __PACKAGE__ . '.pm';
- $modfn =~ s/\:\:/\//g;
+ my ($class, $distver, $pod_dir) = @_;
- my $podfn = __FILE__;
- $podfn =~ s/\.pm$/\.pod/;
+ die "No POD root dir supplied" unless $pod_dir;
$distver ||=
eval { require DBIx::Class; DBIx::Class->VERSION; }
"\n\n---------------------------------------------------------------------\n"
;
+ # do not ask for a recent version, use 1.x API calls
+ # this *may* execute on a smoker with old perl or whatnot
+ require File::Path;
+
+ (my $modfn = __PACKAGE__ . '.pm') =~ s|::|/|g;
+
+ (my $podfn = "$pod_dir/$modfn") =~ s/\.pm$/\.pod/;
+ (my $dir = $podfn) =~ s|/[^/]+$||;
+
+ File::Path::mkpath([$dir]);
+
my $sqltver = $class->req_list_for ('deploy')->{'SQL::Translator'}
or die "Hrmm? No sqlt dep?";
my @chunks = (
- <<'EOC',
+ <<"EOC",
#########################################################################
##################### A U T O G E N E R A T E D ########################
#########################################################################
'=head2 req_group_list',
'=over',
'=item Arguments: none',
- '=item Returns: \%list_of_requirement_groups',
+ '=item Return Value: \%list_of_requirement_groups',
'=back',
<<'EOD',
This method should be used by DBIx::Class packagers, to get a hashref of all
'=head2 req_list_for',
'=over',
'=item Arguments: $group_name',
- '=item Returns: \%list_of_module_version_pairs',
+ '=item Return Value: \%list_of_module_version_pairs',
'=back',
<<'EOD',
This method should be used by DBIx::Class extension authors, to determine the
'=head2 req_ok_for',
'=over',
'=item Arguments: $group_name',
- '=item Returns: 1|0',
+ '=item Return Value: 1|0',
'=back',
<<'EOD',
Returns true or false depending on whether all modules required by
'=head2 req_missing_for',
'=over',
'=item Arguments: $group_name',
- '=item Returns: $error_message_string',
+ '=item Return Value: $error_message_string',
'=back',
<<"EOD",
Returns a single line string suitable for inclusion in larger error messages.
'=head2 req_errorlist_for',
'=over',
'=item Arguments: $group_name',
- '=item Returns: \%list_of_loaderrors_per_module',
+ '=item Return Value: \%list_of_loaderrors_per_module',
'=back',
<<'EOD',
Returns a hashref containing the actual errors that occured while attempting
open (my $fh, '>', $podfn) or Carp::croak "Unable to write to $podfn: $!";
print $fh join ("\n\n", @chunks);
+ print $fh "\n";
close ($fh);
}