The fossil upstream is also the sqlite3 upstream. They could not
possibly be more familiar with sqlite3!

When you ask fossil to build using an external (system) sqlite3
library, configuration-time checks are performed to see if the
external sqlite3 is up to snuff. If not, either because it is too
early a version or because it was compiled without some necessary
functionality, it ignores your request and builds with the internal
version anyway.

Some time ago, not defining SQLITE_ENABLE_JSON1 was the deficiency
with the Debian system sqlite3 that it noticed. Maybe it's something
else now.

Here's what the sources *say* it needs:

$ ./configure --print-minimum-sqlite-version
Host System...x86_64-pc-linux-gnu
Build System...x86_64-pc-linux-gnu
C compiler... cc -g -O2
C++ compiler... c++ -g -O2
Build C compiler...cc
Checking for stdlib.h...ok
3.43.0

Here's what the autobuilder logs for fossil 2.24 say:

dh_auto_configure -- --disable-option-checking \
    --disable-internal-sqlite \
...
Checking for sqlite3_open in sqlite3...-lsqlite3
JSON support enabled
TH1 embedded documentation support enabled
TH1 hooks support enabled
Checking libs for iconv...none needed
...
Using sqlite3.c from this source tree.

Why the fall back to the internal version? It doesn't say. Perhaps
there is some bit rot because they may not exercise this option much.
I will look into it. But in the meantime, getting it to build with the
external sqlite3 might require surgery to disable fossil's
configure-time sqlite3-check logic. I would be loath to do that, for
obvious reasons. In the past, fossil upstream has sometimes put
bleeding-edge sqlite3 versions into its internal version. Right now
it's version 3.46.0, while Debian/sid is at 3.45.3. Sometimes they've
accidentally used recent features without updating the version it asks
for. I wouldn't feel comfortable overriding fossil's config-time
checks without coordination with them on the issue.

Reply via email to