Bring back _TempExtlib (d0435d75), this time for Sub::Quote
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Optional / Dependencies.pm
index 6ac9e50..4a15356 100644 (file)
@@ -7,6 +7,10 @@ BEGIN {
     require warnings and warnings->import;
     require strict and strict->import;
   }
+
+  # Temporary to satisfy TempExtlib under tests
+  require DBIx::Class::StartupCheck
+    if $0 =~ /\.t$/;
 }
 
 sub croak {
@@ -80,6 +84,7 @@ my $dbic_reqs = {
       'Class::Unload' => '0.07',
       'Time::Piece' => '0',
       'Time::Piece::MySQL' => '0',
+      'DBD::mysql' => '4.023',
     },
   },
 
@@ -98,8 +103,18 @@ my $dbic_reqs = {
     },
   },
 
+  config_file_reader => {
+    pod => {
+      title => 'Generic config reader',
+      desc => 'Modules required for generic config file parsing, currently Config::Any (rarely used at runtime)',
+    },
+    req => {
+      'Config::Any' => '0.20',
+    },
+  },
+
   admin => {
-    include => '_json_any',
+    include => [qw( _json_any config_file_reader )],
     req => {
       %$moose_basic,
       'MooseX::Types::Path::Class' => '0.05',
@@ -133,6 +148,16 @@ my $dbic_reqs = {
     },
   },
 
+  ic_file => {
+    req => {
+      'Path::Class' => '0.18',
+    },
+    pod => {
+      title => 'DBIx::Class::InflateColumn::File (Deprecated)',
+      desc => 'Modules required for the deprecated L<DBIx::Class::InflateColumn::File>',
+    },
+  },
+
   ic_dt => {
     req => {
       'DateTime' => '0.55',
@@ -157,7 +182,6 @@ my $dbic_reqs = {
 
   cdbicompat => {
     req => {
-      'Class::Data::Inheritable' => '0',
       'Class::Trigger' => '0',
       'DBIx::ContextualFetch' => '0',
       'Clone' => '0.32',
@@ -225,6 +249,17 @@ my $dbic_reqs = {
     },
   },
 
+  binary_data => {
+    pod => {
+      title => 'Binary datatype support (certain RDBMS)',
+      desc =>
+        'Some RDBMS engines require specific versions of the respective DBD '
+      . 'driver for binary data support. Note that this group does not '
+      . 'require anything on its own, but instead is augmented by various '
+      . 'RDBMS-specific groups. See the documentation of each rbms_* group '
+      . 'for details',
+    },
+  },
 
   # this is just for completeness as SQLite
   # is a core dep of DBIC for testing
@@ -264,13 +299,19 @@ my $dbic_reqs = {
   rdbms_pg => {
     include => '_ic_dt_pg_base',
     req => {
-      # when changing this list make sure to adjust xt/optional_deps.t
       'DBD::Pg' => 0,
     },
     pod => {
       title => 'PostgreSQL support',
       desc => 'Modules required to connect to PostgreSQL',
     },
+    augment => {
+      binary_data => {
+        req => {
+          'DBD::Pg' => '2.009002'
+        },
+      }
+    },
   },
 
   _rdbms_mssql_common => {
@@ -497,13 +538,6 @@ my $dbic_reqs = {
       DBICTEST_PG_USER => 0,
       DBICTEST_PG_PASS => 0,
     ],
-    req => {
-      # the order does matter because the rdbms support group might require
-      # a different version that the test group
-      #
-      # when changing this list make sure to adjust xt/optional_deps.t
-      'DBD::Pg' => '2.009002',  # specific version to test bytea
-    },
   },
 
   test_rdbms_mssql_odbc => {
@@ -840,7 +874,9 @@ sub skip_without {
   if ( my $err = $self->req_missing_for($groups) ) {
     my ($fn, $ln) = (caller(0))[1,2];
     $tb->skip("block in $fn around line $ln requires $err");
-    local $^W = 0;
+
+    BEGIN { ${^WARNING_BITS} = "" }
+
     last SKIP;
   }
 
@@ -878,7 +914,7 @@ sub __envvar_group_desc {
   join '/', @res;
 }
 
-my $groupname_re = qr/ [A-Z_a-z][0-9A-Z_a-z]* /x;
+my $groupname_re = qr/ [a-z_] [0-9_a-z]* /x;
 my $modname_re = qr/ [A-Z_a-z] [0-9A-Z_a-z]* (?:::[0-9A-Z_a-z]+)* /x;
 my $modver_re = qr/ [0-9]+ (?: \. [0-9]+ )? /x;
 
@@ -1123,6 +1159,9 @@ sub _errorlist_for_modreqs {
     my $v = $reqs->{$m};
 
     if (! exists $req_unavailability_cache{$m}{$v} ) {
+      # masking this off is important, as it may very well be
+      # a transient error
+      local $SIG{__DIE__} if $SIG{__DIE__};
       local $@;
       eval( "require $m;" . ( $v ? "$m->VERSION(q($v))" : '' ) );
       $req_unavailability_cache{$m}{$v} = $@;
@@ -1183,16 +1222,12 @@ sub _gen_pod {
 "\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]);
+  require DBIx::Class::_Util;
+  DBIx::Class::_Util::mkdir_p( DBIx::Class::_Util::parent_dir( $podfn ) );
 
   my $sqltver = $class->req_list_for('deploy')->{'SQL::Translator'}
     or die "Hrmm? No sqlt dep?";