Warren Young
2013-06-03 20:11:50 UTC
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.
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.