Hi László,

On  Sa 01 Mär 2025 14:29:13 CET, László Böszörményi (GCS) wrote:

On Sat, Mar 1, 2025 at 1:47 PM Mike Gabriel <sunwea...@debian.org> wrote:
I am not 100% sure it builds on all arch, so an upload to experimental
sounds good to me. If things pop up, we can amend them, if not, you
can proceed with the upload to unstable.
 Tested locally and it fails to load from the CLI shell:
sqlite> .load libSqliteIcu.so
Error: /lib/x86_64-linux-gnu/libSqliteIcu.so: undefined symbol:
sqlite3_sqliteicu_init

But I can load the csv extension for example. Did you test the module
on your end? Maybe sqlite3 itself needs to build with ICU support [1].

I found an explanation of why this happens:
https://stackoverflow.com/questions/6578600/how-to-compile-sqlite-with-icu/52876577#52876577

We have to rename the ICU extension to libIcu.so or icu.so, then it works. But using libIcu.so or icu.so in the main multi-arch libdir is probably a bad idea.

So, my suggestion is to name the loadable module icu.so and ship it in /usr/lib/x86_64-linux-gnu/sqlite/. This requires users to load the module with its full pathname.

See below...

(sid-amd64-tests)root@sunobo:~# cd /usr/lib/x86_64-linux-gnu/
(sid-amd64-tests)root@sunobo:/usr/lib/x86_64-linux-gnu# mv libSqliteIcu.so libIcu.so
(sid-amd64-tests)root@sunobo:/usr/lib/x86_64-linux-gnu# sqlite3
SQLite version 3.46.1 2024-08-13 09:16:08
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .load libIcu.so
sqlite>

(sid-amd64-tests)root@sunobo:/usr/lib/x86_64-linux-gnu# mv libIcu.so icu.so
(sid-amd64-tests)root@sunobo:/usr/lib/x86_64-linux-gnu# sqlite3
SQLite version 3.46.1 2024-08-13 09:16:08
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .load icu.so
sqlite>

(sid-amd64-tests)root@sunobo:/usr/lib/x86_64-linux-gnu# mkdir sqlite
(sid-amd64-tests)root@sunobo:/usr/lib/x86_64-linux-gnu# mv icu.so sqlite/
(sid-amd64-tests)root@sunobo:/usr/lib/x86_64-linux-gnu# sqlite3
SQLite version 3.46.1 2024-08-13 09:16:08
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .load icu.so
Error: icu.so.so: cannot open shared object file: No such file or directory
sqlite> .load /usr/lib/x86_64-linux-gnu/sqlite/icu.so
sqlite>

Any other idea?

Mike


--

mike gabriel aka sunweaver (Debian Developer)
mobile: +49 (1520) 1976 148
landline: +49 (4351) 486 14 27

GnuPG Fingerprint: 9BFB AEE8 6C0A A5FF BF22  0782 9AF4 6B30 2577 1B31
mail: sunwea...@debian.org, http://sunweavers.net

Attachment: pgpIj8JZJZOjo.pgp
Description: Digitale PGP-Signatur

Reply via email to