On Sat, Oct 29, 2011 at 06:45:50AM -0500, Jonathan Nieder wrote: > Hi, > > This patch is taken from Debian's subversion packaging. It avoids > having to rebuild Subversion each time an older or newer patchlevel of > SQLite gets installed (i.e., the x in 3.7.x changes). I'd appreciate > any thoughts you have. > > Thanks, > Jonathan > > [[[ > The actual ABI compatibility of sqlite3 doesn't depend on the patchlevel > (the x in 3.7.x), so stop being picky about the patchlevel when checking > the version number at runtime. This avoids spurious errors of the form > "svn: Couldn't perform atomic initialization" / "svn: SQLite compiled > for 3.7.4, but running with 3.7.3" when sqlite gets a minor update > without Subversion being rebuilt to match.
Shouldn't the version numbers in your example be the other way around? This idea sounds sane to me. > > * subversion/libsvn_subr/sqlite.c > (init_sqlite): Omit the patchlevel in version number sanity check. > (svn_sqlite__open): Include compatibility code for running against > libsqlite 3.7.7 even when built against a later version. > > Patch by: peters > (Tweaked by me to be cautious about SQLITE_VERSION_AT_LEAST checks.) > > Found by: Joao Palhoto Matos <joao.palh...@gmail.com> > http://bugs.debian.org/608925 > ]]] > > Index: subversion/libsvn_subr/sqlite.c > =================================================================== > --- subversion/libsvn_subr/sqlite.c (revision 1194866) > +++ subversion/libsvn_subr/sqlite.c (working copy) > @@ -606,7 +606,7 @@ static volatile svn_atomic_t sqlite_init_state = 0 > static svn_error_t * > init_sqlite(void *baton, apr_pool_t *pool) > { > - if (sqlite3_libversion_number() < SQLITE_VERSION_NUMBER) > + if (sqlite3_libversion_number()/1000 < SQLITE_VERSION_NUMBER/1000) > { > return svn_error_createf( > SVN_ERR_SQLITE_ERROR, NULL, > @@ -772,7 +772,7 @@ svn_sqlite__open(svn_sqlite__db_t **db, const char > */ > { > int ignored_err = SQLITE_OK; > -#if !SQLITE_VERSION_AT_LEAST(3,7,8) && defined(SQLITE_SCHEMA) > +#if defined(SQLITE_SCHEMA) > if (!strcmp(sqlite3_libversion(), "3.7.7")) > ignored_err = SQLITE_SCHEMA; > #endif