[bug] Something fishy going on with sqlite3...

Achim Gratz Stromeko@NexGo.DE
Wed Apr 4 11:08:00 GMT 2012


Warren Young <warren <at> etr-usa.com> writes:
> 
> Send me the cygport file and I'll build new sqlite3 packages.

I've just made a local patch package, tests look good so far.
Specifically, I can now build the Perl DBD::SQLite module (either with
the bundled SQLite or the locally installed library) and have all
tests pass even when I'm not administrator.

---8<----->8---
ORIG_PN="sqlite"
ORIG_PV=`echo $PV|tr . \ |\
awk -e '{printf "%1d%02d%02d%02d",$1,$2,$3,$4;}'`
DESCRIPTION="SQLite database library"
HOMEPAGE="http://www.sqlite.org/"
SRC_URI="http://www.sqlite.org/${ORIG_PN}-autoconf-${ORIG_PV}.tar.gz"
SRC_DIR="${ORIG_PN}-autoconf-${ORIG_PV}"

PKG_NAMES="${PN} lib${PN}_0 lib${PN}-devel"
PKG_HINTS='setup lib devel'
PKG_CONTENTS[0]='usr/bin/*.exe usr/share/'
PKG_CONTENTS[1]='usr/bin/*.dll'
PKG_CONTENTS[2]='usr/include/ usr/lib/'

NO_AUTOHEADER=1

CYGCONF_ARGS="CC=gcc-4 CXX=g++-4"
# define -DSQLITE_OS_UNIX to avoid Cygwin being recognized as "Windows"
CPPFLAGS="-DSQLITE_OS_UNIX -DSQLITE_ENABLE_COLUMN_METADATA\
 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS_PARENTHESIS\
 -DSQLITE_ENABLE_FTS4"
---8<----->8---

> (If you're wondering why I haven't responded to this thread before
> now, it's because this is the first post to the thread that told me
> there was a problem with the package.)

I wasn't sure either where the problem was.  This particular "feature"
has been in SQLite forever and on of my colleagues just tells me he's
been bitten by it many years before.  The conditions for it to occur
are apparently sufficiently narrow to not bother most folks.  To
summarize (and hopefully for others to reproduce by now), all of the
following conditions must hold for the error to trigger:

1. The user running SQLite must not have administrative rights.
2. SQLite must not be run from a Windows console, but in mintty.
(I didn't test other terminals).
3. SQLite needs to be told to open a TEMPORARY database _and_ put it to disk.

This will get you "Error: unable to open database file".  If you build
SQLite with debugging switched on, it will actually tell you a quite
different story:

assertion "isDelete==0 || isCreate" failed: file
"/usr/src/sqlite3-3.7.3-1p1/src/sqlite-3.7.3/sqlite3.c", line 31496,
function: winOpen Abort (core dumped)

The clue here is that it tried to use a Windows interface to open the
file, not a Cygwin one, which got me on the right track.


-- 
Achim.


--
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