-
Notifications
You must be signed in to change notification settings - Fork 5
/
Makefile.PL
126 lines (108 loc) · 4.6 KB
/
Makefile.PL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
use inc::Module::Install 0.81;
name 'DBIx-Class';
perl_version '5.006001';
all_from 'lib/DBIx/Class.pm';
requires 'Data::Page' => 2.00;
requires 'Scalar::Util' => 0;
requires 'SQL::Abstract' => 1.51;
requires 'SQL::Abstract::Limit' => 0.13;
requires 'Class::C3' => 0.20;
requires 'Class::C3::Componentised' => 1.0004;
requires 'Storable' => 0;
requires 'Carp::Clan' => 0;
requires 'DBI' => 1.40;
requires 'Module::Find' => 0;
requires 'Class::Inspector' => 0;
requires 'Class::Accessor::Grouped' => 0.08003;
requires 'JSON::Any' => 1.17;
requires 'Scope::Guard' => 0.03;
requires 'List::Util' => 1.19;
# Perl 5.8.0 doesn't have utf8::is_utf8()
requires 'Encode' => 0 if ($] <= 5.008000);
test_requires 'DBD::SQLite' => 1.14;
test_requires 'Test::Builder' => 0.33;
test_requires 'Test::Exception' => 0;
test_requires 'Test::Deep' => 0;
install_script 'script/dbicadmin';
tests "t/*.t t/*/*.t";
# re-build README and require CDBI modules for testing if we're in a checkout
if( -e 'inc/.author' ) {
build_requires 'DBIx::ContextualFetch';
build_requires 'Class::Trigger';
system('pod2text lib/DBIx/Class.pm > README');
}
auto_provides;
auto_install;
# Have all prerequisites, check DBD::SQLite sanity
if (! $ENV{DBICTEST_NO_SQLITE_CHECK} ) {
# Win32 does not have real fork()s so a segfault will bring
# everything down. Warn about it.
if ($^O eq 'MSWin32') {
print <<'EOW';
######################################################################
# #
# A short stress-testing of DBD::SQLite will follow. If you have a #
# buggy library this might very well be the last text you will see #
# before the installation silently terminates. If this happens it #
# would mean that you are running a buggy version of DBD::SQLite #
# known to randomly segfault on errors. Even if you have the latest #
# CPAN module version, the system sqlite3 dynamic library might have #
# been compiled against an older buggy sqlite3 dev library (oddly #
# DBD::SQLite will prefer the system library against the one bundled #
# with it). You are strongly advised to resolve this issue before #
# proceeding. #
# #
# If this happens to you (this text is the last thing you see), and #
# you just want to install this module without worrying about the #
# tests (which will almost certainly fail) - set the environment #
# variable DBICTEST_NO_SQLITE_CHECK to a true value and try again. #
# #
######################################################################
EOW
}
my $pid = fork();
if (not defined $pid) {
die "Unable to fork(): $!";
}
elsif (! $pid) {
require DBI;
for (1 .. 100) {
my $dbh;
$dbh = DBI->connect ('dbi:SQLite::memory:', undef, undef, {
AutoCommit => 1,
RaiseError => 0,
PrintError => 0,
})
or die "Unable to connect to database: $@";
$dbh->do ('CREATE TABLE name_with_no_columns'); # a subtle syntax error
$dbh->do ('COMMIT'); # followed by commit
$dbh->disconnect;
}
exit 0;
}
else {
wait();
my $sig = $? & 127;
if ($sig == 11) {
warn (<<EOE);
############################### WARNING #################################
# #
# You are running a buggy version of DBD::SQLite known to randomly #
# segfault on errors. Even if you have the latest CPAN module version, #
# the sqlite3 dynamic library on this system might have been compiled #
# against an older buggy sqlite3 dev library (oddly DBD::SQLite will #
# prefer the system library against the one bundled with it). You are #
# strongly advised to resolve this issue before proceeding. #
# #
#########################################################################
EOE
my $ans = prompt (
"The test suite of this module is almost certain to fail.\n"
. 'Do you really want to continue?',
'no',
);
exit 0 unless ($ans =~ /^y(es)?$/i);
}
}
}
WriteAll;