Bug#1009769: libhoel1.4: ABI break: h_exec_query_sqlite was dropped

2022-04-18 Thread Nicolas Mora

He Andreas, thanks for the feedback!

Le 2022-04-17 à 10 h 42, Andreas Metzler a écrit :


Yes, a rebuild will get a binary which works against the new
library, however (partial) upgrades from bookworm won't work.

BTW, the symbol file seems to be wrong:
| h_execute_query_sqlite@Base 1.4.15
the symbol is not available in 1.4.15, so the rebuilt glewlwyd would
depend on the libhoel1.4 (>= 1.14) instead of >= 1.18.


You're right, thanks



I think the first step would be to talk to upstream. One should not
break the ABI of a shraed library without need, when it must be done it
should happen properly with a soname bump.

Since I'm the upstream, I can fix that with a new version, and I'll try 
to forget my shame... ;-)


My bad, I thought using a #define for backward compatibility was enough, 
I didn't think about ABI break...




Afaict libhoel1.4 has only got glewlwyd as reverse depends? As plan B
if upstream is unwilling you could either patch libhoel (with the
downside that it would not be cross distribution compatible) or simply
make two new sourceful uploads, with
a) let new libhoel1.4 Breaks: glewlwyd (<= 2.6.2-2~) and have a fixed
symbol file. and
b) glewlwyd Build-Depend-ing on libhoel-dev >= 1.18-2 to get the correct
  Depends on  libhoel1.4 (>= 1.18-2).


I'll fix the packages then, thanks for the help!

/Nicolas



Bug#1009769: libhoel1.4: ABI break: h_exec_query_sqlite was dropped

2022-04-17 Thread Andreas Metzler
On 2022-04-17 Nicolas Mora  wrote:
> Hello,

> Le 2022-04-17 à 01 h 32, Andreas Metzler a écrit :

> > i.e. the symbol h_exec_query_sqlite was dropped from the library ABI.
> > This breaks all reverse dependencies built against 1.4.18, e.g. glewlwyd
> > is now broken:
> > (sid)ametzler@argenau:/dev/shm/GLEWY$ ldd -r /usr/bin/glewlwyd | tail -n1
> > undefined symbol: h_exec_query_sqlite   (/usr/bin/glewlwyd)

> Thanks,

> the symbol has changed its name, but a macro was added to make it source
> compatible:
> https://sources.debian.org/src/hoel/1.4.20-1/include/hoel.h/#L534

> Therefore the package glewlwyd-2.6.2 still builds with this new source.
> Glewlwyd 2.7.0 will use the new function h_execute_query_sqlite instead.

Hello Nicolas,

Yes, a rebuild will get a binary which works against the new
library, however (partial) upgrades from bookworm won't work.

BTW, the symbol file seems to be wrong:
| h_execute_query_sqlite@Base 1.4.15
the symbol is not available in 1.4.15, so the rebuilt glewlwyd would
depend on the libhoel1.4 (>= 1.14) instead of >= 1.18.

> What is the best approach to close this bug?

I think the first step would be to talk to upstream. One should not
break the ABI of a shraed library without need, when it must be done it
should happen properly with a soname bump.

The proper and easy fix would now be
for them to provide both symbols (Not a #define, but e.g. the deprecated
function calling the new one.)

> - Should I patch hoel package to replace the #define h_exec_query_sqlite()
> with a redefinition of h_exec_query_sqlite()?

Yeah, that is what I exactly thought upstream should do. ;-) Like

int h_exec_query_sqlite(const struct _h_connection * conn, const char * query)
   { return h_execute_query_sqlite(  }


> - Should I re-upload glewlwyd 2.6.2 to force a rebuild?

Afaict libhoel1.4 has only got glewlwyd as reverse depends? As plan B
if upstream is unwilling you could either patch libhoel (with the
downside that it would not be cross distribution compatible) or simply
make two new sourceful uploads, with
a) let new libhoel1.4 Breaks: glewlwyd (<= 2.6.2-2~) and have a fixed
symbol file. and
b) glewlwyd Build-Depend-ing on libhoel-dev >= 1.18-2 to get the correct
 Depends on  libhoel1.4 (>= 1.18-2).

cu Andreas
-- 
`What a good friend you are to him, Dr. Maturin. His other friends are
so grateful to you.'
`I sew his ears on from time to time, sure'



Bug#1009769: libhoel1.4: ABI break: h_exec_query_sqlite was dropped

2022-04-17 Thread Nicolas Mora

Hello,

Le 2022-04-17 à 01 h 32, Andreas Metzler a écrit :


i.e. the symbol h_exec_query_sqlite was dropped from the library ABI.
This breaks all reverse dependencies built against 1.4.18, e.g. glewlwyd
is now broken:
(sid)ametzler@argenau:/dev/shm/GLEWY$ ldd -r /usr/bin/glewlwyd | tail -n1
undefined symbol: h_exec_query_sqlite   (/usr/bin/glewlwyd)


Thanks,

the symbol has changed its name, but a macro was added to make it source 
compatible: 
https://sources.debian.org/src/hoel/1.4.20-1/include/hoel.h/#L534


Therefore the package glewlwyd-2.6.2 still builds with this new source. 
Glewlwyd 2.7.0 will use the new function h_execute_query_sqlite instead.


What is the best approach to close this bug?
- Should I patch hoel package to replace the #define 
h_exec_query_sqlite() with a redefinition of h_exec_query_sqlite()?

- Should I re-upload glewlwyd 2.6.2 to force a rebuild?

Thanks in advance for your advice

/Nicolas



Bug#1009769: libhoel1.4: ABI break: h_exec_query_sqlite was dropped

2022-04-16 Thread Andreas Metzler
Package: libhoel1.4
Version: 1.4.20-1
Severity: serious
Justification: Policy 8.6.2
X-Debbugs-Cc: glewl...@packages.debian.org, ametz...@bebt.de

Good morning,

1.4.18 to 1.4.20 features this change:

8X--
diff -NurBbp hoel-1.4.18/include/hoel.h hoel-1.4.20/include/hoel.h
--- hoel-1.4.18/include/hoel.h  2021-06-02 19:38:17.0 +0200
+++ hoel-1.4.20/include/hoel.h  2022-03-25 18:47:40.0 +0100
@@ -525,6 +525,16 @@ long long int h_last_insert_id_sqlite(co

 /**
  * h_exec_query_sqlite
+ * legacy function name, didn't realize the typo until now...
+ * redirect to h_execute_query_sqlite
+ * @param conn the connection to the database
+ * @param query the SQL query to execute
+ * @return H_OK on success
+ */
+#define h_exec_query_sqlite(conn, query) h_execute_query_sqlite(conn, query)
[...]
-int h_exec_query_sqlite(const struct _h_connection * conn, const char * query);
+int h_execute_query_sqlite(const struct _h_connection * conn, const char * 
query);
8X--


i.e. the symbol h_exec_query_sqlite was dropped from the library ABI.
This breaks all reverse dependencies built against 1.4.18, e.g. glewlwyd
is now broken:
(sid)ametzler@argenau:/dev/shm/GLEWY$ ldd -r /usr/bin/glewlwyd | tail -n1
undefined symbol: h_exec_query_sqlite   (/usr/bin/glewlwyd)

cu Andreas