Hi László, On So 02 Mär 2025 21:35:27 CET, Mike Gabriel wrote:
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#52876577We 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?
Ping!Find attached a .debdiff that builds the ICU extension as icu.so and places it in /usr/lib/*/sqlite/icu.so. So this now matches the installation style of the csv.so extension.
I tested loading the ICU module. That works when using the full path to the .so file.
[sunweaver@sunobo sqlite3]$ 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 Error: icu.so: cannot open shared object file: No such file or directory sqlite> .load /usr/lib/x86_64-linux-gnu/sqlite/icu.so sqlite> Find .debdiff attached. Can you upload it that way? 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
diff -Nru sqlite3-3.46.1/debian/changelog sqlite3-3.46.1/debian/changelog --- sqlite3-3.46.1/debian/changelog 2024-08-14 21:40:03.000000000 +0200 +++ sqlite3-3.46.1/debian/changelog 2024-05-24 09:18:30.000000000 +0200 @@ -1,3 +1,12 @@ +sqlite3 (3.46.1-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * debian/: + + Build ICU extension as dynamically loadable library and ship it in bin:pkg + libsqlite3-mod-icu. + + -- Mike Gabriel <sunwea...@debian.org> Fri, 24 May 2024 09:18:30 +0200 + sqlite3 (3.46.1-1) unstable; urgency=medium * New upstream release. diff -Nru sqlite3-3.46.1/debian/control sqlite3-3.46.1/debian/control --- sqlite3-3.46.1/debian/control 2024-05-30 19:37:02.000000000 +0200 +++ sqlite3-3.46.1/debian/control 2024-05-24 09:18:30.000000000 +0200 @@ -2,7 +2,7 @@ Section: devel Priority: optional Maintainer: Laszlo Boszormenyi (GCS) <g...@debian.org> -Build-Depends: debhelper-compat (= 13), autoconf (>= 2.59), libtool (>= 1.5.2), automake, chrpath, lynx, libreadline-dev, tcl8.6-dev +Build-Depends: debhelper-compat (= 13), autoconf (>= 2.59), libtool (>= 1.5.2), automake, chrpath, lynx, libreadline-dev, tcl8.6-dev, libicu-dev Build-Conflicts: tcl8.4, tcl8.4-dev, tcl8.5, tcl8.5-dev Standards-Version: 4.7.0 Rules-Requires-Root: no @@ -85,6 +85,19 @@ . This package contains the Tcl bindings. +Package: libsqlite3-mod-icu +Suggests: sqlite3-doc +Section: libs +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: SQLite 3 ICU extension + SQLite is a C library that implements an SQL database engine. + Programs that link with the SQLite library can have SQL database + access without running a separate RDBMS process. + . + This package contains the ICU extension as dynamically loadable + library. + Package: sqlite3-tools Suggests: sqlite3-doc Section: database diff -Nru sqlite3-3.46.1/debian/libsqlite3-mod-icu.install sqlite3-3.46.1/debian/libsqlite3-mod-icu.install --- sqlite3-3.46.1/debian/libsqlite3-mod-icu.install 1970-01-01 01:00:00.000000000 +0100 +++ sqlite3-3.46.1/debian/libsqlite3-mod-icu.install 2024-05-24 09:18:30.000000000 +0200 @@ -0,0 +1 @@ +usr/lib/*/sqlite/icu.so diff -Nru sqlite3-3.46.1/debian/rules sqlite3-3.46.1/debian/rules --- sqlite3-3.46.1/debian/rules 2024-03-13 21:16:30.000000000 +0100 +++ sqlite3-3.46.1/debian/rules 2024-05-24 09:18:30.000000000 +0200 @@ -99,6 +99,7 @@ $(MAKE) lemon endif cd ext/misc && $(HOST_CC) $(LDFLAGS) $(CPPFLAGS) $(CFLAGS) -g -fPIC -I../.. -shared csv.c -o csv.so + cd ext/icu && $(HOST_CC) $(LDFLAGS) $(CPPFLAGS) $(CFLAGS) -g -fPIC -I../.. -I../../src -shared icu.c $(shell pkg-config --libs --cflags icu-uc icu-io) -o icu.so touch $@ @@ -110,6 +111,7 @@ [ ! -f Makefile ] || $(MAKE) distclean rm -f config.h sqlite3session.h mksourceid rm -f ext/misc/csv.so + rm -f ext/icu/icu.so dh_autoreconf_clean dh_clean @@ -132,6 +134,8 @@ install -d $(DESTDIR)/usr/lib/$(DEB_HOST_MULTIARCH)/sqlite/ install -m 0775 ext/misc/csv.so \ $(DESTDIR)/usr/lib/$(DEB_HOST_MULTIARCH)/sqlite/ + install -m 0775 ext/icu/icu.so \ + $(DESTDIR)/usr/lib/$(DEB_HOST_MULTIARCH)/sqlite/ # Remove *.la files per policy 3.9.1.0 rm $(DESTDIR)/usr/lib/$(DEB_HOST_MULTIARCH)/libsqlite3.la
pgpni8NAo5vUV.pgp
Description: Digitale PGP-Signatur