Re: 64-bit time_t: package lists, counts du jour, dd-list for NMUs

2024-01-22 Thread Sune Vuorela
On 2024-01-22, Simon McVittie  wrote:
> Unfortunately, perhaps because common build systems like Autotools,
> Meson and CMake make it awkward to use non-numeric SONAME suffixes,

With CMake it is actually quite simple. Even to a point where it is easy
to get wrong:

add_library(Foo SHARED foo.cpp)
set_target_properties(Foo PROPERTIES VERSION 1vorlon.0.0 SOVERSION
1smcv)

$ objdump -x libFoo.so | grep SONAME
  SONAME   libFoo.so.1smcv

ls:

libFoo.so -> libFoo.so.1smcv
libFoo.so.1smcv -> libFoo.so.1vorlon.0.0
libFoo.so.1vorlon.0.0

/Sune



Re: 64-bit time_t: package lists, counts du jour, dd-list for NMUs

2024-01-22 Thread Simon McVittie
On Mon, 22 Jan 2024 at 05:31:45 -0800, Steve Langasek wrote:
> Others in this list have package names I don't understand, such as a 'd'
> suffix that doesn't correspond to anything in the soname

I believe this is conventionally used to mean "this is a Debian-specific
SONAME that intentionally differs from upstream's ABI", either because
the upstream project doesn't support building a shared library at all,
the upstream builds a shared library but breaks the ABI without bumping
the SONAME (and resists attempts to fix this upstream), or there is ABI
added/removed in Debian delta.

Ideally this would be addressed with an "upstream first" approach,
or failing that, it should genuinely be part of the SONAME, as in
e.g. libstemmer0d (which is static-only upstream, and Debian patches
the build system to produce a libstemmer.so.0d shared library) and
libleveldb1d (I haven't checked the history, but presumably it's similar).

For packages in the libstemmer0d situation, since the ABI is
Debian-specific *anyway*, the right route is perhaps to bump the SONAME
to libstemmer.so.0d1 or libstemmer.so.1d and handle it like a normal
transition?

Unfortunately, perhaps because common build systems like Autotools,
Meson and CMake make it awkward to use non-numeric SONAME suffixes,
there are also libraries that use the 0d suffix but *don't* include the
"d" in the SONAME, for example libcdd0d (libcdd.so.0).

Looking at the cddlib (libcdd0d) changelog, it seems that 0d is a little
misleading in this case, because the ABI is *not* Debian-specific:

   * Renamed libcdd0 to libcdd0d. The ABI changed since the last
 package, but upstream started using the SONAME 0 now. Since the
 package is not widely used, changing the package name, but not the
 SONAME, is enough.

For the libcdd0d situation, it's "the same shape" as a toolchain ABI
suffix like v5 or t64, so a rename to libcdd0t64 would probably be right
(if this package is affected by 64-bit time_t, which I haven't checked).

Another convention that is sometimes used if upstream doesn't really
handle ABI breaks the way we would want, and there is a manageably
small number of dependent packages in Debian, is to package the library
libfoo.so.0 as libfoo0, then libfoo0a, libfoo0b, and so on. This is
difficult to distinguish from the "0d" conventions above, if the ABI
happens to have been broken exactly 4 times. Examples of this include
libharfbuzz0b, libgjs0g, libcryptui0a.

Again, for the libharfbuzz0b case, it's "the same shape" as a toolchain
ABI suffix like v5 or t64, so a rename to libharfbuzz0t64 would probably
be right (if this package is affected by time_t at all).

> or libcoin80c

Unfortunately the changelog just says "Renamed package dropping v5 suffix
to c", without explaining why.

Since this used libcoin80v5 for the libstdc++ v5 transition, I would guess
that libcoin80t64 could be the right name for it now? But its maintainers
would know better.

smcv



Re: 64-bit time_t: package lists, counts du jour, dd-list for NMUs

2024-01-22 Thread Steve Langasek
In exercising scripts for the mass NMUs in a dry run, I've run into another
little snag.

$ grep -vEc '[0-9](c102|c2|g|ldbl|v5)?$' reports/runtime-libs 
234
$

The package rename handling assumes that the affected runtime library
packages have names matching a certain pattern (ends in a digit, plus a
possible previous ABI qualifier).  But 234 of the library patches don't
match this pattern; some don't correspond to library sonames at all.

Right off the bat, the first of these is 389-ds-base-libs.  I don't want to
rename it to '389-ds-base-libst64'.  Also it turns out that there are no
reverse-dependencies of this lib package.  So I will omit this package from
the transition.

Others in this list have package names I don't understand, such as a 'd'
suffix that doesn't correspond to anything in the soname, or libcoin80c. 
libdmtx0b and libvibrant6b at least have explanations in the changelog.  So
I guess I'll work on fleshing out a rename map for these.

On Sun, Jan 21, 2024 at 12:57:17AM -0800, Steve Langasek wrote:
> Hello,
> 
> Here is an updated analysis of the transition.  This is based on a full
> rerun on Debian unstable as of 2024-01-17 and includes a number of
> incremental fixes reducing the number of libraries to be transitioned.
> Though this is not particularly significant; the number of source packages
> to be NMUed drops from 1197+51=1248 to 1192+50=1242, and the number of
> source packages to be binNMUed drops from 5442+170=5610 to 5415+170=5585.
> 
> It also picks up a small number of source packages (5) that are new to
> unstable since last month.  I have no strong opinion about forcing a package
> name change for these, since they likely don't have any reverse-dependencies
> yet with a significant install base on 32-bit archs; but by default they're
> included.
> 
> 
> Output files from the new analysis can be found here:
> 
>   https://adrien.dcln.fr/misc/armhf-time_t/2023-12-18/
> 
> I am not making the same mistake as before and attempting to attach all of
> the various supplementary files, thus hitting email size limits.  Instead, I
> have pushed them all to:
> 
>   https://people.canonical.com/~vorlon/armhf-time_t/
> 
> 
> You may have noticed that it is now past the original proposed date of
> 2024-01-18.  This was a knowingly aggressive target date on which to try to
> converge; there are still discussion subthreads in flight on debian-devel
> that I want to make sure settle out before we proceed, and also Guillem let
> me know there was a dpkg upload planned that would conflict, pushing this
> back to Monday, 22 Jan at minimum.  Based on capacity and availability, I
> would like to now start uploads to experimental this Friday, 26 Jan.
> 
> I do not know how long it will take to build all 1200+ source packages and
> upload them.  I assume it will take a few days at least.  Once the
> transition has started, I will post again to debian-devel with projections
> of when we might expect to start landing changes in unstable.
> 
> Attached is the current dd-list for the packages that would have sourceful
> NMUs.

-- 
Steve Langasek   Give me a lever long enough and a Free OS
Debian Developer   to set it on, and I can move the world.
Ubuntu Developer   https://www.debian.org/
slanga...@ubuntu.com vor...@debian.org


signature.asc
Description: PGP signature