[mingw-sqlite: 5/31] update to 3.6.12, to match native and enable rtree, fts3

Kalev Lember kalev at fedoraproject.org
Tue Mar 6 21:32:24 UTC 2012


commit a95fd8655a852c0a61501d8d1adad52e01800db3
Author: sailer <sailer at fedoraproject.org>
Date:   Thu Apr 23 11:39:19 2009 +0000

    update to 3.6.12, to match native and enable rtree, fts3

 .cvsignore                                         |    1 +
 ...tch => mingw32-sqlite-3.6.12-no-undefined.patch |   13 +-
 mingw32-sqlite.spec                                |   19 ++-
 sources                                            |    2 +-
 sqlite-3.6.12-libdl.patch                          |   11 +
 sqlite-3.6.12-memalign.patch                       |  204 +++++++++++++++++
 sqlite-3.6.12-no-sqlite-doc.patch                  |   12 +
 sqlite-3.6.6.2-libdl.patch                         |  240 --------------------
 8 files changed, 251 insertions(+), 251 deletions(-)
---
diff --git a/.cvsignore b/.cvsignore
index a54b4df..07380c4 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1,2 @@
 sqlite-3.6.6.2.tar.gz
+sqlite-3.6.12.tar.gz
diff --git a/mingw32-sqlite-3.6.6.2-no-undefined.patch b/mingw32-sqlite-3.6.12-no-undefined.patch
similarity index 61%
rename from mingw32-sqlite-3.6.6.2-no-undefined.patch
rename to mingw32-sqlite-3.6.12-no-undefined.patch
index 3da0b54..211dcd3 100644
--- a/mingw32-sqlite-3.6.6.2-no-undefined.patch
+++ b/mingw32-sqlite-3.6.12-no-undefined.patch
@@ -1,6 +1,6 @@
---- sqlite-3.6.6.2/Makefile.in.orig	2008-12-16 15:43:08.000000000 +0000
-+++ sqlite-3.6.6.2/Makefile.in	2008-12-16 15:43:27.000000000 +0000
-@@ -448,13 +448,14 @@
+--- sqlite-3.6.12/Makefile.in.orig	2009-03-30 18:37:16.000000000 +0200
++++ sqlite-3.6.12/Makefile.in	2009-04-23 11:16:17.000000000 +0200
+@@ -463,14 +463,15 @@
  
  libsqlite3.la:	$(LIBOBJ)
  	$(LTLINK) -o $@ $(LIBOBJ) $(TLIBS) \
@@ -11,9 +11,10 @@
  libtclsqlite3.la:	tclsqlite.lo libsqlite3.la
  	$(LTLINK) -o $@ tclsqlite.lo \
  		libsqlite3.la @TCL_STUB_LIB_SPEC@ $(TLIBS) \
-                 -rpath "$(libdir)/sqlite" \
--		-version-info "8:6:8"
-+		-version-info "8:6:8" -no-undefined
+ 		-rpath "$(TCLLIBDIR)" \
+ 		-version-info "8:6:8" \
+-		-avoid-version
++		-avoid-version -no-undefined
  
  sqlite3$(TEXE):	$(TOP)/src/shell.c libsqlite3.la sqlite3.h
  	$(LTLINK) $(READLINE_FLAGS) \
diff --git a/mingw32-sqlite.spec b/mingw32-sqlite.spec
index 9d3755f..4066509 100644
--- a/mingw32-sqlite.spec
+++ b/mingw32-sqlite.spec
@@ -5,8 +5,8 @@
 %define __find_provides %{_mingw32_findprovides}
 
 Name:           mingw32-sqlite
-Version:        3.6.6.2
-Release:        3%{?dist}
+Version:        3.6.12
+Release:        1%{?dist}
 Summary:        MinGW Windows port of sqlite embeddable SQL database engine
 
 License:        Public Domain
@@ -18,11 +18,14 @@ BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildArch:      noarch
 
 # Patches from Fedora native package.
-Patch1:         sqlite-3.6.6.2-libdl.patch
+Patch1:         sqlite-3.6.12-libdl.patch
+# Avoid insecure sprintf(), use a system path for lempar.c, patch from Debian 
 Patch2:         sqlite-3.6.6.2-lemon-snprintf.patch
+Patch3:         sqlite-3.6.12-no-sqlite-doc.patch
+Patch4:         sqlite-3.6.12-memalign.patch
 
 # Patches for MinGW port.
-Patch1000:      mingw32-sqlite-3.6.6.2-no-undefined.patch
+Patch1000:      mingw32-sqlite-3.6.12-no-undefined.patch
 
 BuildRequires:  mingw32-filesystem >= 49
 BuildRequires:  mingw32-gcc
@@ -55,6 +58,8 @@ for Windows.
 %setup -q -n sqlite-%{version}
 %patch1 -p1 -b .libdl
 %patch2 -p1 -b .lemon-sprintf
+%patch3 -p1 -b .no-sqlite-doc
+%patch4 -p1 -b .align
 %patch1000 -p1
 
 # Ships with an old/broken version of libtool which cannot create
@@ -72,6 +77,8 @@ libtoolize --force
 # the extension via this export.
 #   - RWMJ 2008-09-30
 export config_TARGET_EXEEXT=.exe
+# add compile flags to enable rtree, fts3
+export MINGW32_CFLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -mms-bitfields -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_DISABLE_DIRSYNC=1 -DSQLITE_ENABLE_FTS3=3 -DSQLITE_ENABLE_RTREE=1 -fno-strict-aliasing"
 
 %{_mingw32_configure}
 make
@@ -104,6 +111,10 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
+* Thu Apr 23 2009 Thomas Sailer <t.sailer at alumni.ee.ethz.ch> - 3.6.12-1
+- update to 3.6.12 to match native
+- enable rtree, fts3
+
 * Wed Feb 25 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 3.6.6.2-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
 
diff --git a/sources b/sources
index d80768a..2211e51 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-23cd36188f21d427d45191d317bcbcd5  sqlite-3.6.6.2.tar.gz
+13600865a69a3f54d2ac42a0d6b743db  sqlite-3.6.12.tar.gz
diff --git a/sqlite-3.6.12-libdl.patch b/sqlite-3.6.12-libdl.patch
new file mode 100644
index 0000000..4d2c272
--- /dev/null
+++ b/sqlite-3.6.12-libdl.patch
@@ -0,0 +1,11 @@
+diff -up sqlite-3.6.4/configure.ac.orig sqlite-3.6.4/configure.ac
+--- sqlite-3.6.4/configure.ac.orig	2008-11-08 11:37:15.000000000 +0200
++++ sqlite-3.6.4/configure.ac	2008-11-08 11:35:50.000000000 +0200
+@@ -606,6 +606,7 @@ AC_ARG_ENABLE(load-extension, AC_HELP_ST
+       [use_loadextension=$enableval],[use_loadextension=no])
+ if test "${use_loadextension}" = "yes" ; then
+   OPT_FEATURE_FLAGS=""
++  AC_SEARCH_LIBS(dlopen, [dl])
+ else
+   OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
+ fi
diff --git a/sqlite-3.6.12-memalign.patch b/sqlite-3.6.12-memalign.patch
new file mode 100644
index 0000000..f58609c
--- /dev/null
+++ b/sqlite-3.6.12-memalign.patch
@@ -0,0 +1,204 @@
+---------------------
+PatchSet 6171 
+Date: 2009/04/05 15:22:09
+Author: drh
+Branch: HEAD
+Tag: (none) 
+Branches: 
+Log:
+Additional code to make sure and to assert that memory allocations have
+8-byte alignment.  Ticket #3777.
+
+Members: 
+	src/btree.c:1.589->1.590 
+	src/memjournal.c:1.10->1.11 
+	src/pager.c:1.577->1.578 
+	src/sqliteInt.h:1.850->1.851 
+	src/vdbeaux.c:1.446->1.447 
+	src/vdbemem.c:1.139->1.140 
+
+Index: sqlite/src/btree.c
+diff -u sqlite/src/btree.c:1.589 sqlite/src/btree.c:1.590
+--- sqlite/src/btree.c:1.589	Thu Apr  2 20:16:59 2009
++++ sqlite/src/btree.c	Sun Apr  5 12:22:09 2009
+@@ -5357,13 +5357,13 @@
+   }
+   szCell = (u16*)&apCell[nMaxCells];
+   aCopy[0] = (u8*)&szCell[nMaxCells];
+-  assert( ((aCopy[0] - (u8*)0) & 7)==0 ); /* 8-byte alignment required */
++  assert( EIGHT_BYTE_ALIGNMENT(aCopy[0]) );
+   for(i=1; i<NB; i++){
+     aCopy[i] = &aCopy[i-1][pBt->pageSize+ROUND8(sizeof(MemPage))];
+     assert( ((aCopy[i] - (u8*)0) & 7)==0 ); /* 8-byte alignment required */
+   }
+   aSpace1 = &aCopy[NB-1][pBt->pageSize+ROUND8(sizeof(MemPage))];
+-  assert( ((aSpace1 - (u8*)0) & 7)==0 ); /* 8-byte alignment required */
++  assert( EIGHT_BYTE_ALIGNMENT(aSpace1) );
+   if( ISAUTOVACUUM ){
+     aFrom = &aSpace1[pBt->pageSize];
+   }
+Index: sqlite/src/memjournal.c
+diff -u sqlite/src/memjournal.c:1.10 sqlite/src/memjournal.c:1.11
+--- sqlite/src/memjournal.c:1.10	Thu Apr  2 17:22:42 2009
++++ sqlite/src/memjournal.c	Sun Apr  5 12:22:09 2009
+@@ -237,6 +237,7 @@
+ */
+ void sqlite3MemJournalOpen(sqlite3_file *pJfd){
+   MemJournal *p = (MemJournal *)pJfd;
++  assert( EIGHT_BYTE_ALIGNMENT(p) );
+   memset(p, 0, sqlite3MemJournalSize());
+   p->pMethod = &MemJournalMethods;
+ }
+Index: sqlite/src/pager.c
+diff -u sqlite/src/pager.c:1.577 sqlite/src/pager.c:1.578
+--- sqlite/src/pager.c:1.577	Sat Apr  4 15:53:48 2009
++++ sqlite/src/pager.c	Sun Apr  5 12:22:09 2009
+@@ -3114,9 +3114,9 @@
+   ** source file journal.c).
+   */
+   if( sqlite3JournalSize(pVfs)>sqlite3MemJournalSize() ){
+-    journalFileSize = sqlite3JournalSize(pVfs);
++    journalFileSize = ROUND8(sqlite3JournalSize(pVfs));
+   }else{
+-    journalFileSize = sqlite3MemJournalSize();
++    journalFileSize = ROUND8(sqlite3MemJournalSize());
+   }
+ 
+   /* Set the output variable to NULL in case an error occurs. */
+@@ -3172,23 +3172,25 @@
+   **     Journal file name               (nPathname+8+1 bytes)
+   */
+   pPtr = (u8 *)sqlite3MallocZero(
+-    sizeof(*pPager) +           /* Pager structure */
+-    pcacheSize      +           /* PCache object */
+-    pVfs->szOsFile  +           /* The main db file */
+-    journalFileSize * 2 +       /* The two journal files */ 
+-    nPathname + 1 +             /* zFilename */
+-    nPathname + 8 + 1           /* zJournal */
++    ROUND8(sizeof(*pPager)) +      /* Pager structure */
++    ROUND8(pcacheSize) +           /* PCache object */
++    ROUND8(pVfs->szOsFile) +       /* The main db file */
++    journalFileSize * 2 +          /* The two journal files */ 
++    nPathname + 1 +                /* zFilename */
++    nPathname + 8 + 1              /* zJournal */
+   );
++  assert( EIGHT_BYTE_ALIGNMENT(journalFileSize) );
+   if( !pPtr ){
+     sqlite3_free(zPathname);
+     return SQLITE_NOMEM;
+   }
+   pPager =              (Pager*)(pPtr);
+-  pPager->pPCache =    (PCache*)(pPtr += sizeof(*pPager));
+-  pPager->fd =   (sqlite3_file*)(pPtr += pcacheSize);
+-  pPager->sjfd = (sqlite3_file*)(pPtr += pVfs->szOsFile);
++  pPager->pPCache =    (PCache*)(pPtr += ROUND8(sizeof(*pPager)));
++  pPager->fd =   (sqlite3_file*)(pPtr += ROUND8(pcacheSize));
++  pPager->sjfd = (sqlite3_file*)(pPtr += ROUND8(pVfs->szOsFile));
+   pPager->jfd =  (sqlite3_file*)(pPtr += journalFileSize);
+   pPager->zFilename =    (char*)(pPtr += journalFileSize);
++  assert( EIGHT_BYTE_ALIGNMENT(pPager->jfd) );
+ 
+   /* Fill in the Pager.zFilename and Pager.zJournal buffers, if required. */
+   if( zPathname ){
+Index: sqlite/src/sqliteInt.h
+diff -u sqlite/src/sqliteInt.h:1.850 sqlite/src/sqliteInt.h:1.851
+--- sqlite/src/sqliteInt.h:1.850	Wed Apr  1 18:03:01 2009
++++ sqlite/src/sqliteInt.h	Sun Apr  5 12:22:09 2009
+@@ -456,6 +456,11 @@
+ #define ROUNDDOWN8(x) ((x)&~7)
+ 
+ /*
++** Assert that the pointer X is aligned to an 8-byte boundary.
++*/
++#define EIGHT_BYTE_ALIGNMENT(X)   ((((char*)(X) - (char*)0)&7)==0)
++
++/*
+ ** An instance of the following structure is used to store the busy-handler
+ ** callback for a given sqlite handle. 
+ **
+Index: sqlite/src/vdbeaux.c
+diff -u sqlite/src/vdbeaux.c:1.446 sqlite/src/vdbeaux.c:1.447
+--- sqlite/src/vdbeaux.c:1.446	Wed Mar 25 15:43:09 2009
++++ sqlite/src/vdbeaux.c	Sun Apr  5 12:22:09 2009
+@@ -1023,6 +1023,7 @@
+   u8 *pEnd,            /* Pointer to 1 byte past the end of *ppFrom buffer */
+   int *pnByte          /* If allocation cannot be made, increment *pnByte */
+ ){
++  assert( EIGHT_BYTE_ALIGNMENT(*ppFrom) );
+   if( (*(void**)pp)==0 ){
+     nByte = ROUND8(nByte);
+     if( (pEnd - *ppFrom)>=nByte ){
+@@ -1096,6 +1097,8 @@
+     if( isExplain && nMem<10 ){
+       nMem = 10;
+     }
++    zCsr += (zCsr - (u8*)0)&7;
++    assert( EIGHT_BYTE_ALIGNMENT(zCsr) );
+ 
+     do {
+       memset(zCsr, 0, zEnd-zCsr);
+Index: sqlite/src/vdbemem.c
+diff -u sqlite/src/vdbemem.c:1.139 sqlite/src/vdbemem.c:1.140
+--- sqlite/src/vdbemem.c:1.139	Sun Mar 29 15:12:10 2009
++++ sqlite/src/vdbemem.c	Sun Apr  5 12:22:09 2009
+@@ -209,6 +209,7 @@
+   assert( !(fg&(MEM_Str|MEM_Blob)) );
+   assert( fg&(MEM_Int|MEM_Real) );
+   assert( (pMem->flags&MEM_RowSet)==0 );
++  assert( EIGHT_BYTE_ALIGNMENT(pMem) );
+ 
+ 
+   if( sqlite3VdbeMemGrow(pMem, nByte, 0) ){
+@@ -345,6 +346,7 @@
+ i64 sqlite3VdbeIntValue(Mem *pMem){
+   int flags;
+   assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
++  assert( EIGHT_BYTE_ALIGNMENT(pMem) );
+   flags = pMem->flags;
+   if( flags & MEM_Int ){
+     return pMem->u.i;
+@@ -373,6 +375,7 @@
+ */
+ double sqlite3VdbeRealValue(Mem *pMem){
+   assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
++  assert( EIGHT_BYTE_ALIGNMENT(pMem) );
+   if( pMem->flags & MEM_Real ){
+     return pMem->r;
+   }else if( pMem->flags & MEM_Int ){
+@@ -403,6 +406,7 @@
+   assert( pMem->flags & MEM_Real );
+   assert( (pMem->flags & MEM_RowSet)==0 );
+   assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
++  assert( EIGHT_BYTE_ALIGNMENT(pMem) );
+ 
+   pMem->u.i = doubleToInt64(pMem->r);
+   if( pMem->r==(double)pMem->u.i ){
+@@ -416,6 +420,8 @@
+ int sqlite3VdbeMemIntegerify(Mem *pMem){
+   assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
+   assert( (pMem->flags & MEM_RowSet)==0 );
++  assert( EIGHT_BYTE_ALIGNMENT(pMem) );
++
+   pMem->u.i = sqlite3VdbeIntValue(pMem);
+   MemSetTypeFlag(pMem, MEM_Int);
+   return SQLITE_OK;
+@@ -427,6 +433,8 @@
+ */
+ int sqlite3VdbeMemRealify(Mem *pMem){
+   assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
++  assert( EIGHT_BYTE_ALIGNMENT(pMem) );
++
+   pMem->r = sqlite3VdbeRealValue(pMem);
+   MemSetTypeFlag(pMem, MEM_Real);
+   return SQLITE_OK;
+diff -u sqlite/src/vdbeaux.c:1.447 sqlite/src/vdbeaux.c:1.448
+--- sqlite/src/vdbeaux.c:1.447	Sun Apr  5 12:22:09 2009
++++ sqlite/src/vdbeaux.c	Mon Apr  6 11:11:43 2009
+@@ -1099,6 +1099,7 @@
+     }
+     zCsr += (zCsr - (u8*)0)&7;
+     assert( EIGHT_BYTE_ALIGNMENT(zCsr) );
++    if( zEnd<zCsr ) zEnd = zCsr;
+ 
+     do {
+       memset(zCsr, 0, zEnd-zCsr);
diff --git a/sqlite-3.6.12-no-sqlite-doc.patch b/sqlite-3.6.12-no-sqlite-doc.patch
new file mode 100644
index 0000000..787f1bb
--- /dev/null
+++ b/sqlite-3.6.12-no-sqlite-doc.patch
@@ -0,0 +1,12 @@
+diff -up sqlite-3.6.12/sqlite3.1.no-sqlite-doc sqlite-3.6.12/sqlite3.1
+--- sqlite-3.6.12/sqlite3.1.no-sqlite-doc	2009-04-03 12:37:35.000000000 +0300
++++ sqlite-3.6.12/sqlite3.1	2009-04-03 12:37:44.000000000 +0300
+@@ -221,8 +221,6 @@ o All other command line options are pro
+ 
+ .SH SEE ALSO
+ http://www.sqlite.org/
+-.br
+-The sqlite-doc package
+ .SH AUTHOR
+ This manual page was originally written by Andreas Rottmann
+ <rotty at debian.org>, for the Debian GNU/Linux system (but may be used


More information about the mingw mailing list