#1134117 c4core: missed transition

#1134117#5
Date:
2026-04-16 17:16:18 UTC
From:
To:
Hi Maintainer

As per Debian policy 8.1 Shared Libraries [1]:

The run-time shared library must be placed in a package whose name
changes whenever the SONAME of the shared library changes.

This was not done in the 0.2.11-1 upload (and also not in the 0.2.7-1 upload).

The effect can be seen in the autopkgtest regression of jsonnet in
testing [2].  I have copied part of the log below.

Regards
Graham


[1] https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#run-time-shared-libraries
[2] https://ci.debian.net/packages/j/jsonnet/testing/amd64/


 32s autopkgtest [09:44:27]: test command1: DISABLE_LIB_TESTS=1
JSONNET_BIN=/usr/bin/jsonnet JSONNETFMT_BIN=/usr/bin/jsonnetfmt sh
tests.sh
 32s autopkgtest [09:44:27]: test command1: [-----------------------
 32s snippet: /usr/bin/jsonnet: error while loading shared libraries:
libc4core.so.0.2.7: cannot open shared object file: No such file or
directory
 32s  [31;1mFAIL [0m  [1m(exit code) [0m:  [36m/usr/bin/jsonnet
--ext-str prefix='Happy Hour ' --ext-code brunch=true --tla-str
prefix='Happy Hour ' --tla-code brunch=true .//arith.jsonnet [0m
 32s This run's output:
 32s /usr/bin/jsonnet: error while loading shared libraries:
libc4core.so.0.2.7: cannot open shared object file: No such file or
directory
 32s Actual exit code 127, expected 0

#1134117#12
Date:
2026-04-26 13:49:47 UTC
From:
To:
We believe that the bug you reported is fixed in the latest version of
c4core, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1134117@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Gabriel Barrantes <gabriel.barrantes.dev@outlook.com> (supplier of updated c4core package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Sun, 26 Apr 2026 01:51:33 +0000
Source: c4core
Architecture: source
Version: 0.2.11-2
Distribution: unstable
Urgency: medium
Maintainer: Gabriel Barrantes <gabriel.barrantes.dev@outlook.com>
Changed-By: Gabriel Barrantes <gabriel.barrantes.dev@outlook.com>
Closes: 1133806 1134117
Changes:
 c4core (0.2.11-2) unstable; urgency=medium
 .
   * debian/patches:
     - Add patch to allow coinstall (Closes: #1133806)
     - Set proper soversion (Closes: #1134117)
   * debian/libc4core0.symbols: add symbols
Checksums-Sha1:
 dc33b2256aabfa85fd86fa3a703a7aa7b7867207 1766 c4core_0.2.11-2.dsc
 5a08897715073f16105674b63b8f85682e973ba4 5692 c4core_0.2.11-2.debian.tar.xz
 721c363ec816b1e658fc7c29379ba96e20e46f56 6101 c4core_0.2.11-2_source.buildinfo
Checksums-Sha256:
 c2f323fbfe0283cb853e1f18e2a1966c1433ab4ee711292d9a918abb0737183b 1766 c4core_0.2.11-2.dsc
 4f9482d883dd9a7797d9c7d3f09bd9ac6535de814cb51cc213e0eda038e8b592 5692 c4core_0.2.11-2.debian.tar.xz
 4eb02d137e4003e09fec85edc0c20e27b055d0fa261ec9d1ad4aeeddab71da24 6101 c4core_0.2.11-2_source.buildinfo
Files:
 e05519da3b20f80005269142bbf77855 1766 libs optional c4core_0.2.11-2.dsc
 2a847fb923cfffd71fc9d9a00cbc6421 5692 libs optional c4core_0.2.11-2.debian.tar.xz
 bf0b77b554007a9206add88a82dc0fbe 6101 libs optional c4core_0.2.11-2_source.buildinfo
-----BEGIN PGP SIGNATURE-----

iQHEBAEBCgAuFiEEQGIgyLhVKAI3jM5BH1x6i0VWQxQFAmnuDKgQHGJhZ2VAZGVi
aWFuLm9yZwAKCRAfXHqLRVZDFOvlC/4j4xAZubL72sH/voOpZoE4Fek+xA6MIhSJ
vTZ1dTDMNwtPa5VY4hf9YDCh6/3sk6AMihj1PfsLVhBqYKfHOw6U65vtn+60jvSw
X+QoxIrRJ+4VcBBF/CIP9QQpQ5tKFTU2wKGh/KiUc8ELlrY2AevbUmCynEUhiteJ
B25bR1tlPFjEni4k3q7+plx2YdgE3q99vmHrv8HGUWKXDtiF4rIz9qojyDxjX88Z
QfudRJVQn1ynHkX/YaS3B8hfirPrbySX3pwynnyHtnxRIL5hh1TqNcVjCEidylBz
bQta5PNgo5p/AQSwcUZJUmZLUVuk2R8C77jSPeqS2+mLSzlPYbO9uolG6R4NB1FI
QQtgbVTJmHteEiww3kNFF8da8qYDfBPMqDqVrYvo+FPAk+g6INzqviawQ6MCqb0V
Tluz9RNgM5A6tPsane6JYixC7W/UPzoUsp9X4txh/KoBwvVUHNE8hi5IAq6zYBSU
2Ao/hQHKfo2fixFSvYpOwbTboPuRe4M=
=j9T7
-----END PGP SIGNATURE-----

#1134117#17
Date:
2026-04-29 09:46:56 UTC
From:
To:
I can see the SONAME in libc4core0_0.2.11-2 has changed from
libc4core.so.0 to libc4core.so.0.2.11, great!

However, the name of the binary package libc4core0 still needs to be changed.

I'll quote again from Debian policy 8.1 Shared Libraries [1] (emphasis mine):

The run-time shared library **must** be placed in a package whose name
changes whenever the SONAME of the shared library changes.
... the run-time shared library and its SONAME symlink **should** be
placed in a package named librarynamesoversion ...

My understanding is the name of the run-time shared library **must**
change when the SONAME changes, and its name  **should** should match
the soversion.  There is also a Lintian warning [2] about this.

Regards
Graham


[1] https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#run-time-shared-libraries
[2] https://lintian.debian.org/tags/package-name-doesnt-match-sonames.html

#1134117#26
Date:
2026-05-09 21:02:21 UTC
From:
To:
On unstable I am getting:

root@c5bea899c560:/# apt update && apt install -y libc4core0 binutils
root@c5bea899c560:/# readelf -d /usr/lib/x86_64-linux-gnu/libc4core.so.0.2.11 | grep SONAME
 0x000000000000000e (SONAME)             Library soname: [libc4core.so.0]

Soname is matching major version everywhere (I think), am I wrong?

Gabriel

#1134117#31
Date:
2026-05-15 06:53:59 UTC
From:
To:
Hi Graham,

The SONAME in 0.2.11-2 is libc4core.so.0, as Gabriel confirmed by readelf
on the installed package on unstable.

The three relevant names are all consistent:

Versioned filename: libc4core.so.0.2.11 (file on disk)
SONAME symlink: libc4core.so.0 -> libc4core.so.0.2.11
Binary package: libc4core0 (soversion = 0)

The SONAME has not changed to libc4core.so.0.2.11.
That is the versioned filename on disk, not the ELF SONAME.
The patch in 0.2.11-2 correctly set SOVERSION to the major version only, so
the SONAME is
now stable at libc4core.so.0 and the package name libc4core0 matches it
exactly, satisfying Policy 8.1.

Unless there is further comment or new evidence to the contrary, this bug
should be closed.

Regards,
Fukui

#1134117#44
Date:
2026-05-28 21:18:13 UTC
From:
To:
c4core (0.2.11-2) unstable; urgency=medium
...
  * debian/patches:
...
    - Set proper soversion (Closes: #1134117)
...
 -- Gabriel Barrantes <gabriel.barrantes.dev@outlook.com>  Sun, 26 Apr 2026 01:51:33 +0000


This is likely wrong:

The fundamental requirement is that the SONAME changes whenever the ABI
changes in a not backwards-compatible way.

When upstream does not guarantee ABI stability between releases,
then the SONAME must change with every release.

cu
Adrian

#1134117#49
Date:
2026-07-21 05:22:15 UTC
From:
To:
Hi Adrian,

After asking upstream some questions to clarify their ABI policy, I now
have a different view on this issue.
You are correct: we should think again about forcing the SOVERSION to 0 in
0.2.11-2, because upstream does not guarantee ABI stability between 0.x
releases.

I recently reached out to the upstream maintainer (jpmag) to clarify their
versioning policy, and they confirmed the following:

* Current 0.x series: ABI compatibility is explicitly not preserved between
releases (e.g., between 0.2.7 and 0.2.11), and breaks are expected on every
release by design until 0.6.0.

* Future releases (0.6.0+): Upstream intends to stabilize the SONAME/ABI
across patch releases (breaking only at the minor 0.x level), as committed
in upstream issue #177.
Because the ABI changes with every release in the current series, we should
drop the artificial "Set proper soversion" patch introduced in 0.2.11-2.
We will allow upstream's build system to natively set the full-version
SONAME (e.g., libc4core.so.0.2.11) and rename the binary package
accordingly (to libc4core0.2.11) to comply with Debian Policy 8.1.

We should continue tracking the full SONAME per release until upstream
implements patch-level stability in 0.6.0, at which point we can transition
to a minor-version naming scheme.
I am preparing the updated package now and working to coordinate the
necessary rebuilds for jsonnet and libryml0.
Once the updated package is ready, I will share with you since I have no
upload rights for this package.

Regards,
Fukui

#1134117#54
Date:
2026-07-29 15:56:55 UTC
From:
To:
Hi,

Following up to my last message, the updated package (0.6.0-1) is ready.

Upstream released 0.6.0 with the SONAME policy they committed to in
#177( https://github.com/biojppm/c4core/pull/177 ). For the 0.x series,
SOVERSION now tracks major.minor (libc4core.so.0.6), which ensures
stability across patch releases going forward. I've updated the
packaging accordingly.

Draft package is up for review at mentors.debian.net:
https://mentors.debian.net/package/c4core/

or via dget:
dget -x https://mentors.debian.net/debian/pool/main/c/c4core/c4core_0.6.0-1.dsc

As I have no upload rights, I'd appreciate a sponsor to review
and upload. Once this lands, I'll follow up on rebuilding jsonnet and
libryml0 against the new SONAME.

Regards,
Fukui

#1134117#59
Date:
2026-08-16 14:10:07 UTC
From:
To:
Hi,

Gentle reminder on this.
The 0.6.0-1 draft has been up on mentors.debian.net for a couple of weeks:

https://mentors.debian.net/package/c4core/

I am happy to address any review comments if you or anyone else has
a chance to take a look. Let me know if anything's unclear or needs
changing.

Regards,
Fukui

#1134117#64
Date:
2026-08-24 16:28:51 UTC
From:
To:
Hello, I'm sponsoring (so it clears new queue), but please note that you don't likely need the old binary around in oldlibs, you can just remove it in a future upload
thanks!

G.