X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2F_Util.pm;h=37dddfcb895efc858270890942da81e84249f851;hb=b34d93310401fd6f4fd68dc965b4aec592913eb1;hp=8c2ef12b2a78b3c71e1d88b9c624afc141e533d2;hpb=01b25f121c701218255c44a5037f1c57c8a00382;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/_Util.pm b/lib/DBIx/Class/_Util.pm index 8c2ef12..37dddfc 100644 --- a/lib/DBIx/Class/_Util.pm +++ b/lib/DBIx/Class/_Util.pm @@ -4,6 +4,37 @@ package # hide from PAUSE use warnings; use strict; +# Temporary - tempextlib +use namespace::clean; +BEGIN { + require Module::Runtime; + require File::Spec; + + # There can be only one of these, make sure we get the bundled part and + # *not* something off the site lib + for (qw( + DBIx::Class::SQLMaker + SQL::Abstract + SQL::Abstract::Test + )) { + if ($INC{Module::Runtime::module_notional_filename($_)}) { + die "\nUnable to continue - a part of the bundled templib contents " + . "was already loaded (likely an older version from CPAN). " + . "Make sure that @{[ __PACKAGE__ ]} is loaded before $_\n\n" + ; + } + } + + our ($HERE) = File::Spec->rel2abs( + File::Spec->catdir( (File::Spec->splitpath(__FILE__))[1], '_TempExtlib' ) + ) =~ /^(.*)$/; # screw you, taint mode + + die "TempExtlib $HERE does not seem to exist - perhaps you need to run `perl Makefile.PL` in the DBIC checkout?\n" + unless -d $HERE; + + unshift @INC, $HERE; +} + use constant SPURIOUS_VERSION_CHECK_WARNINGS => ($] < 5.010 ? 1 : 0); BEGIN { @@ -17,6 +48,8 @@ BEGIN { # but of course BROKEN_FORK => ($^O eq 'MSWin32') ? 1 : 0, + BROKEN_GOTO => ($] < '5.008003') ? 1 : 0, + HAS_ITHREADS => $Config{useithreads} ? 1 : 0, # ::Runmode would only be loaded by DBICTest, which in turn implies t/ @@ -55,12 +88,23 @@ use Carp 'croak'; use Scalar::Util qw(weaken blessed reftype); use List::Util qw(first); +# DO NOT edit away without talking to riba first, he will just put it back +# BEGIN pre-Moo2 import block +BEGIN { + my $initial_fatal_bits = (${^WARNING_BITS}||'') & $warnings::DeadBits{all}; + local $ENV{PERL_STRICTURES_EXTRA} = 0; + require Sub::Quote; Sub::Quote->import('quote_sub'); + ${^WARNING_BITS} &= ( $initial_fatal_bits | ~ $warnings::DeadBits{all} ); +} +sub qsub ($) { goto "e_sub } # no point depping on new Moo just for this +# END pre-Moo2 import block + use base 'Exporter'; our @EXPORT_OK = qw( sigwarn_silencer modver_gt_or_eq fail_on_internal_wantarray fail_on_internal_call refdesc refcount hrefaddr is_exception - perlstring + quote_sub qsub perlstring serialize UNRESOLVABLE_CONDITION ); @@ -101,6 +145,12 @@ sub refcount ($) { B::svref_2object($_[0])->REFCNT; } +sub serialize ($) { + require Storable; + local $Storable::canonical = 1; + Storable::nfreeze($_[0]); +} + sub is_exception ($) { my $e = $_[0];