[Bast-commits] r5035 - DBIx-Class/0.08/trunk

ribasushi at dev.catalyst.perl.org ribasushi at dev.catalyst.perl.org
Fri Oct 31 23:36:02 GMT 2008


Author: ribasushi
Date: 2008-10-31 23:36:02 +0000 (Fri, 31 Oct 2008)
New Revision: 5035

Modified:
   DBIx-Class/0.08/trunk/Makefile.PL
Log:
Kill the install process at the MakeMaker stage if a dodgy DBD::SQLite is detected

Modified: DBIx-Class/0.08/trunk/Makefile.PL
===================================================================
--- DBIx-Class/0.08/trunk/Makefile.PL	2008-10-31 20:34:27 UTC (rev 5034)
+++ DBIx-Class/0.08/trunk/Makefile.PL	2008-10-31 23:36:02 UTC (rev 5035)
@@ -62,6 +62,56 @@
 
 auto_install;
 
+# Have all prerequisites, check DBD::SQLite sanity
+{
+  my $pid = fork();
+  if (not defined $pid) {
+      die "Unable to fork(): $!";
+  }
+  elsif (! $pid) {
+      require DBI;
+      for (1 .. 10) {
+          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 actual sqlite3.so might have been compiled against an older buggy   #
+# sqlite3 dev library. You are strongly advised to update DBD::SQLite.    #
+#                                                                         #
+###########################################################################
+
+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;
 
 




More information about the Bast-commits mailing list