GrammaticalFramework / GF

Archive of monolithic GF repository until 2018-07-25
http://www.grammaticalframework.org/
Other
189 stars 51 forks source link

Decouple outdated SQLite3 Btree dependency #22

Open ComFreek opened 6 years ago

ComFreek commented 6 years ago

Right now, the module src/runtime/c/sg includes a custom version (namely sqlite3Btree.{c,h}) of an outdated snapshot of SQLite's source. These files mention functions such as sqlite3StrICmp which are nowhere defined and are thus leading to undefined reference errors; at least when building for Windows which does not allow unknown references in shared libraries afaik. See also https://groups.google.com/forum/#!topic/gf-dev/BkYwEl0SE00 where the exact issued build instructions can be found.

I tried replacing sqlite3Btree.{c,h} by the most recent SQLite3 amalgamation files, however, the internal API of sqlite3Btree changed. For example, the old sqlite3BtreeInsert's function signature contained in this repository looks like

https://github.com/GrammaticalFramework/GF/blob/6cf80c07691354a2e716914839c1eb8cdeb3c3a7/src/runtime/c/sg/sqlite3Btree.h#L601-L603

but the current one (as found in the amalgamation sqlite3.c) looks like

SQLITE_PRIVATE int sqlite3BtreeInsert(BtCursor*, const BtreePayload *pPayload,
                       int flags, int seekResult);

As SQLITE_PRIVATE also indicates, the Btree API was never meant to be stable and publicly accessible.

ComFreek commented 6 years ago

Follow-up: I got a cross-compilation from Ubuntu to Windows working by manually defining all missing functions (i.e. copy-pasting from the SQLite source until all references were saturated):

Still, I hope this issue gets fixed since my hacky approach probably introduced a handful of bugs and logical inconsistencies in addition to those already present in the outdated SQLite source contained in this repo.