[TEST] sqlite3-3.7.17-1 (Cygwin 1.7.19 locking feature)

Warren Young warren@etr-usa.com
Mon Jun 3 20:11:00 GMT 2013


This is a big-push attempt at a version of Cygwin SQLite that will make 
everyone happy (ha!) whether they want POSIX advisory locking behavior 
or Windows mandatory locking behavior.  My part of the effort is being 
stubborn on this point and doing the basic testing and packaging.  The 
real magic was added by Corinna to yesterday's 1.7.19 cygwin1.dll snapshot.

This build relies on a new feature in that snapshot, so you must install 
it first.  If you want to try this SQLite build, check with uname -r 
that you are in fact running the new DLL, else it will *silently* cope 
with the error that results.  (This is a feature.)

This test build of Cygwin SQLite does several things at once:

- It switches back to a "Unix mode" build, as we tried in 3.7.12.1-1. 
As a result, the hacky patch to make it use the Unix mode /tmp path 
selection logic has been removed.

- By default, it requests mandatory locking using the feature added in 
yesterday's Cygwin 1.7.19 snapshot.  This should make it cooperate with 
native Windows programs also using SQLite despite running in Unix mode.

I have no STC for this, so I don't know if it is effective.  The only 
test I know of requires running Tortoise SVN with all the Explorer 
integration features enabled, and I simply don't want to do that to my 
development box.  The test, for those who have done this to *their* box, 
is to try using Cygwin svn on a directory while that same directory is 
open in Explorer.  Bounce back and forth between the two svn clients. 
If they don't seem to interfere, the new feature in the Cygwin DLL is 
probably working as expected.

- This mandatory-locks-by-default feature of this SQLite build can be 
disabled by setting the new CYGWIN_SQLITE_LOCKING environment variable 
to "posix".  (The value is not case-sensitive, so you can spell it 
"POSIX" if that makes you feel better.)  This should finally allow those 
like Achim Gratz to use the official Cygwin SQLite build, as it 
effectively makes it behave like a stock Unix mode build.

- This build also switches the temporary storage strategy to 2, which 
makes it always use in-memory temporary files.  Although running SQLite 
in pure Unix mode by setting the above environment variable should 
obviate the need for this, I want to try shipping SQLite so people don't 
need to do that for things like monotone to work.  I'll consider 
reverting this change if there is some need for huge DB files which no 
longer open with this change.

Downloads are at http://etr-usa.com/cygwin/sqlite3/

Broadly speaking, you want the files with "3.7.17-1" in their name.  The 
one(s) you want may be buried a level deep, since that tree mirrors the 
Cygwin repository mirror structure.

If you want to test using the interactive sqlite3.exe program, it's in 
the package at the top level.

If you want to test instead using existing binaries dynamically linked 
to cygsqlite3-0.dll, you should only need to download the one package in 
the libsqlite3_0 subdirectory.

You shouldn't need the -devel and -debuginfo packages.  Your current 
-devel should suffice to build against the new DLL.

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list