Control: tags -1 + patch

As observed, we need both libcasa-python3-9 and python3-casacore to build against a consistent combination of libpython and libboost-python and for them to load that combination at runtime for this to work.

I've prototyped something that achieves these goals and autopkgtests pass for both Python 3.13 and 3.14 with this packaging. While it's a works-on-my-machine solution, I'm not sure if it makes sense to upload to Debian and would appreciate comments.

        https://salsa.debian.org/stuart/casacore
        https://salsa.debian.org/stuart/python-casacore

The packaging changes for casacore build the libcasa-python3-9 package with each available interpreter, creating files:

./usr/lib/x86_64-linux-gnu/libcasa_python3.cpython-313-x86_64-linux-gnu.so.9
./usr/lib/x86_64-linux-gnu/libcasa_python3.cpython-314-x86_64-linux-gnu.so.9
./usr/lib/x86_64-linux-gnu/libcasa_python3.so.9
./usr/lib/x86_64-linux-gnu/libcasa_python313.so.9 ->
        libcasa_python3.cpython-313-x86_64-linux-gnu.so.9
./usr/lib/x86_64-linux-gnu/libcasa_python314.so.9 ->
        libcasa_python3.cpython-314-x86_64-linux-gnu.so.9

that is, Debian-specific soname libraries libcasa_pythonXY; they also have their more familiar Python abi tag in the filenames there so that any searches with apt-file to locate packages shipping Python modules will pick them up. I've left libcasa_python3.so.9 with the upstream soname for compatibility - it is linked against whatever the default interpreter was at build time, so it's of limited compatibility for the same reasons as this bug exists. There are no users in Debian other than python-casacore (below); I'm not sure if this is a library where there would be other users in the wild.

The libcasa-python3-9 package then gets dependencies...

Depends: libboost-python1.83.0 (>= 1.83.0), libboost-python1.83.0-py313, libboost-python1.83.0-py314, ..., libpython3.13 (>= 3.13.0~rc3), libpython3.14 (>= 3.14.1)

... meaning that the transition tracker (via ben) will track this package for both boost and python transitions as needed.


The follow-up changes for python-casacore ensure that it links against the appropriate version of the library at build time. Correctly tagged libraries are generated for each .so:

./usr/lib/python3/dist-packages/casacore/_tConvert.cpython-313-x86_64-linux-gnu.so
./usr/lib/python3/dist-packages/casacore/_tConvert.cpython-314-x86_64-linux-gnu.so
[... etc ...]

These libraries don't directly link against libpython3, so the versioned dependencies that are generated are against python3 itself (this is unchanged from the current dependency generation).

Depends: ..., python3 (<< 3.15), python3 (>= 3.13~), ...



All this is achieved by adding a Debian-specific soname into casacore, which isn't delightful. At the same time, it only needs to be supported for the lifespan of a Python interpreter in Debian (i.e. ~ 1 year), so this isn't a "forever" promise on the soname.

As an alternative to messing about with sonames, we could leave the sonames unchanged but locate libcasa-python3-9's libraries in python-version-specific paths, and fiddle with rpath settings in python-casacore to get it to load the right one at runtime. I'm not sure whether that is better or worse magic.


--
Stuart Prescott   http://www.nanonanonano.net/ [email protected]
Debian Developer  http://www.debian.org/       [email protected]
GPG fingerprint   90E2 D2C1 AD14 6A1B 7EBB 891D BBC1 7EBB 1396 F2F7

Reply via email to