[perl-DBD-SQLite] Fix testsuite to run with the latest sqlite (bugs.debian.org/591111).

Adam Tkac atkac at fedoraproject.org
Tue Aug 24 13:35:53 UTC 2010


commit acf6c396c24366416725a0b0d1dc32c98b80a94b
Author: Adam Tkac <atkac at redhat.com>
Date:   Tue Aug 24 15:35:41 2010 +0200

    Fix testsuite to run with the latest sqlite (bugs.debian.org/591111).
    
    Signed-off-by: Adam Tkac <atkac at redhat.com>

 ...-clean-temporary-files-in-child-processes.patch |   49 ++++++++++++++++++++
 perl-DBD-SQLite.spec                               |    7 ++-
 2 files changed, 55 insertions(+), 1 deletions(-)
---
diff --git a/0001-Don-t-clean-temporary-files-in-child-processes.patch b/0001-Don-t-clean-temporary-files-in-child-processes.patch
new file mode 100644
index 0000000..6ef1d4b
--- /dev/null
+++ b/0001-Don-t-clean-temporary-files-in-child-processes.patch
@@ -0,0 +1,49 @@
+From 89c8a661e61bbf0fb1d1e5050262390649e13f2a Mon Sep 17 00:00:00 2001
+From: Niko Tyni <ntyni at debian.org>
+Date: Mon, 23 Aug 2010 08:15:15 +0300
+Subject: [PATCH] Don't clean temporary files in child processes
+
+As of SQLite 3.7.0, write locks try to stat() the database
+file and fail with a 'Disk I/O error' if it is missing. This
+breaks those tests that fork child processes (namely 08_busy.t
+and t/28_schemachange.t) because the child process removes
+the database file in the END block.
+
+The fix is to disable the clean() function for child processes.
+
+See <http://bugs.debian.org/591111>
+---
+ t/lib/Test.pm |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/t/lib/Test.pm b/t/lib/Test.pm
+index 80e50ce..8d1be25 100644
+--- a/t/lib/Test.pm
++++ b/t/lib/Test.pm
+@@ -7,6 +7,7 @@ use Exporter   ();
+ use File::Spec ();
+ use Test::More ();
+ 
++my $parent;
+ use vars qw{$VERSION @ISA @EXPORT @CALL_FUNCS};
+ BEGIN {
+ 	$VERSION = '1.29';
+@@ -15,6 +16,7 @@ BEGIN {
+ 
+ 	# Allow tests to load modules bundled in /inc
+ 	unshift @INC, 'inc';
++	$parent = $$;
+ }
+ 
+ # Always load the DBI module
+@@ -22,6 +24,7 @@ use DBI ();
+ 
+ # Delete temporary files
+ sub clean {
++	return if $$ != $parent;
+ 	unlink( 'foo'         );
+ 	unlink( 'foo-journal' );
+ }
+-- 
+1.7.1
+
diff --git a/perl-DBD-SQLite.spec b/perl-DBD-SQLite.spec
index 7c61aad..8f10c0f 100644
--- a/perl-DBD-SQLite.spec
+++ b/perl-DBD-SQLite.spec
@@ -1,6 +1,6 @@
 Name:           perl-DBD-SQLite
 Version:        1.29
-Release:        3%{?dist}
+Release:        4%{?dist}
 Summary:        SQLite DBI Driver
 
 Group:          Development/Libraries
@@ -8,6 +8,7 @@ License:        GPL+ or Artistic
 URL:            http://search.cpan.org/dist/DBD-SQLite/
 Source0:        http://search.cpan.org/CPAN/authors/id/A/AD/ADAMK/DBD-SQLite-%{version}.tar.gz
 patch0:         perl-DBD-SQLite-bz543982.patch
+Patch1:         0001-Don-t-clean-temporary-files-in-child-processes.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 # if sqlite >= 3.1.3 then
@@ -35,6 +36,7 @@ libraries.
 %prep
 %setup -q -n DBD-SQLite-%{version}
 %patch0 -p1
+%patch1 -p1
 
 %build
 CFLAGS="$RPM_OPT_FLAGS" %{__perl} Makefile.PL INSTALLDIRS=vendor
@@ -67,6 +69,9 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
+* Tue Aug 24 2010 Adam Tkac <atkac redhat com> - 1.29-4
+- fix testsuite to run with the latest sqlite (bugs.debian.org/591111)
+
 * Tue Aug 24 2010 Adam Tkac <atkac redhat com> - 1.29-3
 - rebuild
 



More information about the perl-devel mailing list