This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]