Package: libglut3.12
Version: 3.4.0-1build1

Dear Maintainers,

after updating the Glut package, all programs depending on
libglut.so.3 fail.

The former package freeglut3 (2.8.1-6) provided
- a shared library /usr/lib/x86_64-linux-gnu/libglut.so.3.9.0
with an internal SONAME "libglut.so.3"
- a symlink /usr/lib/x86_64-linux-gnu/libglut.so.3 pointing to
that library

The current package libglut3.12 (3.4.0-1) now provides
- a shared library /usr/lib/x86_64-linux-gnu/libglut.so.3.12.0
with an internal SONAME "libglut.so.3.12"
- a symlink /usr/lib/x86_64-linux-gnu/libglut.so.3.12 pointing to
that library.

The SONAME change from MAJOR version number 3 to MAJOR plus MINOR
version number 3.12 is documented in the Debian Patch
https://sources.debian.org/src/freeglut/3.4.0-
1/debian/patches/20_update_soversion.cmake/.

The upstream source
https://github.com/freeglut/freeglut/blob/master/CMakeLists.txt
is not affected and handles the SONAME convention correct (only
MAJOR version).

# Consequences

1. Every program depending on libglut.so.3 will now fail after
updating the package because the new package provides no
symlink /usr/lib/x86_64-linux-gnu/libglut.so.3 pointing to
/usr/lib/x86_64-linux-gnu/libglut.so.3.12.0 any more.

2: The new SONAME "libglut.so.3.12" breaks ABI compatibility and
does not follow the Naming Convention for Shared Libraries:
https://www.debian.org/doc/debian-policy/ch-sharedlibs.html.
Shared libraries should contain a SONAME record with MAJOR
version numbers only, otherwise with every single update of that
library each program depending on it must be recompiled.

# Example to Reproduce

With a simple FreeGlut demo program
github.com/freeglut/freeglut/tree/master/progs/demos/3dview,
which has been compiled with former freeglut3 package and now
runs with libglut3.12 package):
$ 3dview: error while loading shared libraries: libglut.so.3:
cannot open shared object file: No such file or directory
$ ldd 3dview
linux-vdso.so.1 (0x00007ffe4d3cb000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007d87755fd000)
libglut.so.3 => not found
libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007d8775576000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007d8775200000)
...

# Proposed Solution

1. Provide a symlink /usr/lib/x86_64-linux-gnu/libglut.so.3 in
the package pointing to /usr/lib/x86_64-linux-gnu/libglut.so.3.12
or to /usr/lib/x86_64-linux-gnu/libglut.so.3.12.0

2. Restrict the SONAME record of /usr/lib/x86_64-linux-
gnu/libglut.so.3.12.0 to "libglut.so.3"


I am using Debian GNU/Linux 12 with kernel Linux 6.1.0-25-amd64
and Linux Mint 22 with kernel Linux 6.8.0-47-generic amd64.

Some selected references with the same problem:
https://askubuntu.com/questions/1526992/is-there-a-reason-24-04-
lts-noble-numbat-does-not-provide-libglut-so-3
https://community.freefem.org/t/libglut-so-3-not-found/2637

Thank you for considering it.

Kind regards,

A. Sdala

Reply via email to