Re: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-06 Thread Steve Langasek
On Sat, Jan 06, 2024 at 10:01:30AM -0700, Sam Hartman wrote:
> > "Steve" == Steve Langasek  writes:

> >> At one level, krb5-multidev only has an rdep of 5, but I suspect
> >> the rdep count for libkrb5-dev is somewhat larger:-) I don't know
> >> how many packages would be removed from the transition if we
> >> decide most of the krb5 libraries do not need to transition.

> Steve> If we determined only libkdb5-10 and libgssrpc4 were
> Steve> affected, that does significantly reduce the number of
> Steve> packages needing to be rebuilt because of krb5, though maybe
> Steve> most of those packages also depend on other libraries that
> Steve> are transitioning.

> I confirm libgssrpc is also affected.
> (It would be nice to get rid of libgssrpc entirely and just use the
> system tli-rpc).
> My bad; I was so focused on time_t I forgot about timeval.

> However, I do think that we're limited only to libkdb5-10 and
> libgssrpc4.
> I would prefer not to change the abi of the other libraries, especially
> libkrb5, libk5crypto3 and libgssapi-krb5-2.

> What can I do to help facilitate that?

I've updated the override list here.

Reduces the count of revdeps to be rebuilt from 5450+168 to 5439+168.

Thanks,
-- 
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


Re: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-06 Thread Sam Hartman
> "Steve" == Steve Langasek  writes:

>> At one level, krb5-multidev only has an rdep of 5, but I suspect
>> the rdep count for libkrb5-dev is somewhat larger:-) I don't know
>> how many packages would be removed from the transition if we
>> decide most of the krb5 libraries do not need to transition.

Steve> If we determined only libkdb5-10 and libgssrpc4 were
Steve> affected, that does significantly reduce the number of
Steve> packages needing to be rebuilt because of krb5, though maybe
Steve> most of those packages also depend on other libraries that
Steve> are transitioning.

I confirm libgssrpc is also affected.
(It would be nice to get rid of libgssrpc entirely and just use the
system tli-rpc).
My bad; I was so focused on time_t I forgot about timeval.

However, I do think that we're limited only to libkdb5-10 and
libgssrpc4.
I would prefer not to change the abi of the other libraries, especially
libkrb5, libk5crypto3 and libgssapi-krb5-2.

What can I do to help facilitate that?

--Sam


signature.asc
Description: PGP signature


Re: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-06 Thread Helmut Grohne
On Fri, Jan 05, 2024 at 12:23:00AM -0800, Steve Langasek wrote:
> I am also attaching here the dd-list output for the packages that will need
> to be sourcefully NMUed for the transition, for your review.

I could readily identify a number of packages (incomplete) also affected
by DEP17. Whenever you face files in aliased locations (other than
systemd units), please go via experimental to let dumat judge your
upload. Check the bookworm package for files in aliased locations, not
the unstable one.

>uhd

DEP17-affected, probably harmless

>btrfs-progs

DEP17-affected


>pacemaker (U)

DEP17-affected

>libmtp

DEP17-affected, probably harmless

>openafs (U)

DEP17-affected, probably harmless

>samba (U)

DEP17-affected, probably harmless

>apt

DEP17-affected, probably harmless

>ceph

DEP17-affected

>util-linux (U)

Do not upload to unstable directly. Will need mitigations.

>libapogee3

Do not upload to unstable directly. Will need mitigations.

>libfishcamp

Do not upload to unstable directly. Will need mitigations.

>libplayerone

Do not upload to unstable directly. Will need mitigations.

>libricohcamerasdk

Do not upload to unstable directly. Will need mitigations.

>libsbig

Do not upload to unstable directly. Will need mitigations.

>boinc

DEP17-affected

>gcc-13

If this affects libgcc-s1, do not upload to unstable as you risk
deleting libgcc_s.so.1. Will need mitigations in that case.

>libosmo-sccp

DEP17-affected, probably harmless

>libgpod

DEP17-affected, probably harmless

>libselinux

Do not upload to unstable directly. Will need mitigations.

>zfs-linux

Do not upload to unstable directly. Will need mitigations.

>libguestfs (U)

DEP17-affected, probably harmless

>libtirpc

Do not upload to unstable directly. Will need mitigations.

>fuse
>fuse3

Do not upload to unstable directly. Will need mitigations.

>audit

Do not upload to unstable directly. Will need mitigations.

>zlib

Do not upload to unstable. Will cause file loss unless mitigated.

>readline

Do not upload to unstable. Will cause file loss unless mitigated.

>openrc (U)

Do not upload to unstable directly. Will need mitigations.

>krb5

DEP17-affected

As predicted, this is going to have annoying interactions and the list
here definitely is incomplete.

Helmut



Re: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Steve Langasek
On Fri, Jan 05, 2024 at 02:23:59PM -0700, Sam Hartman wrote:
> > "Steve" == Steve Langasek  writes:

> Steve> - In multi-library packages, there is no reliable way to map
> Steve> from a set of headers in a dev package to specific shared
> Steve> libraries in a runtime library package that's not
> Steve> additionally computationally prohibitive; we therefore
> Steve> conservatively assume that if any headers from a source
> Steve> package show time_t ABI changes, all the runtime library
> Steve> packages from the source package are affected by the
> Steve> transition.  This seems sensible in general, but er, in the
> Steve> pathological case we have Source: zlib that now ships both
> Steve> zlib1g-dev and libminizip-dev, zlib1g-dev is confirmed to not
> Steve> be ABI breaking, libminizip-dev has failed to analyze, and we
> Steve> don't want to force a transition for zlib1g because of
> Steve> libminizip (!).  Current plan is to simply special case
> Steve> zlib1g, but there could be other problem packages we haven't
> Steve> identified.

> I think krb5 may be in this category.
> In particular, it looks like time_t is only exposed in the kdb.h API,
> which appears to have no reverse depends outside of krb5.
> I actually think that the freeIPA server may have a plugin that depends
> on kdb.h, and Samba4 can be built in such a way that it depends on
> kdb.h, but it looks like neither of those applies to the Debian archive.

https://adrien.dcln.fr/misc/armhf-time_t/2023-12-18/compat_reports/libkrb5-dev/lfs_to_time_t/compat_report.html
indicates that the CLIENT struct is affected because the cl_call function
pointer takes a 'struct timeval' as an argument.  So that's not internal to
kdb, it looks like an actual ABI change?

> At one level, krb5-multidev only has an rdep of 5, but I suspect the
> rdep count for libkrb5-dev is somewhat larger:-)
> I don't know how many packages would be removed from the transition if
> we decide most of the krb5 libraries do not need to transition.

If we determined only libkdb5-10 and libgssrpc4 were affected, that does
significantly reduce the number of packages needing to be rebuilt because of
krb5, though maybe most of those packages also depend on other libraries
that are transitioning.

-- 
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


Re: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Steve Langasek
On Fri, Jan 05, 2024 at 05:28:37PM +0100, Guillem Jover wrote:
> > Guillem Jover 
> >libaio
> >libmd
> >liburing

> I checked these, and it looks like libmd and liburing are
> false-positives?

>  * libmd uses AC_SYS_LARGEFILE, and on 32-bit arches it is already built
>with LFS, the problem is that the header exposes off_t which means
>the code linking against it needs to match its build flags,
>otherwise they would already be broken now. You might want to look
>into this as a potential pattern for other false-positives probably.
>(I should probably update upstream the .pc file to include the
>-D_FILE_OFFSET_BITS=64 flags if enabled, but I don't think the
>analysis used .pc files anyway.)

Thanks - yes, the analysis didn't use .pc files, though I'm checking if
that's something we could improve on.  But as you say it doesn't help with
the current libmd anyway, so I'm adding that to the manual exclusion list.

Reduces the count of revdeps to be rebuilt from 5450+178 to 5450+169.

>  * liburing is marked as LFS-sensitive, but that comes from inline
>functions using off_t which end up casting that into an u32 type,
>so I don't think this should affect the ABI. It is also forcibly
>built with -D_FILE_OFFSET_BITS=64 in the upstream build system
>(and with future=+lfs for good measure in the packaging, which
>I'll switch to abi=+lfs).

io_uring_prep_fadvise and io_uring_prep_madvise appear to be symbols
publicly exposed in the ABI of /usr/lib/x86_64-linux-gnu/liburing-ffi.so.2
so I don't think it's true that the marking is only because of inline
functions?  But as this is also already built with LFS and is a
false-positive, I've removed this as well.

Reduces the count of revdeps to be rebuilt from 5450+169 to 5450+168 (not
much improvement :).

-- 
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


Re: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Steve Langasek
On Fri, Jan 05, 2024 at 06:59:20PM +0100, Sebastian Ramacher wrote:
> > > > I am also attaching here the dd-list output for the packages that will 
> > > > need
> > > > to be sourcefully NMUed for the transition, for your review.

> > > Why do the need sourceful NMUs if they just need to be rebuilt?

> > Sorry, if the original message hadn't been lost somewhere in the mail
> > system before being delivered to debian-devel (I've now tried to resend it),
> > this might have been clearer from context.  Guillem points out the mail has
> > been delivered to debian-release, so you can read the whole thing there:

> >   https://lists.debian.org/debian-release/2024/01/msg00033.html

> > Anyway, this is the list of source packages containing libraries whose ABI
> > will change.  So the packages need to be renamed in order to expose the ABI
> > incompatibility to reverse-dependencies. 

> I am confused. Above you say:

> > these in turn have 174 additional
> > reverse-dependencies that would need rebuilt (list attached).

> This sounds to me like those are packages that are involved in the
> transition and need rebuilds, but do not change their ABI. And in fact,
> for most of packages that I maintain on the list, the ABI does not
> change.

> Can you please clarify which of the packages in your lists require
> changes to the binary package names and which do not?

Sorry for the confusion.  The two lists requiring binary package name
changes are the attachments named 'source-packages' and
'lfs-and-depends-time_t'.  This is what I fed into dd-list, and encompass
1248 source packages (1195 + 53).

-- 
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


Re: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Sam Hartman
> "Steve" == Steve Langasek  writes:

Steve> - In multi-library packages, there is no reliable way to map
Steve> from a set of headers in a dev package to specific shared
Steve> libraries in a runtime library package that's not
Steve> additionally computationally prohibitive; we therefore
Steve> conservatively assume that if any headers from a source
Steve> package show time_t ABI changes, all the runtime library
Steve> packages from the source package are affected by the
Steve> transition.  This seems sensible in general, but er, in the
Steve> pathological case we have Source: zlib that now ships both
Steve> zlib1g-dev and libminizip-dev, zlib1g-dev is confirmed to not
Steve> be ABI breaking, libminizip-dev has failed to analyze, and we
Steve> don't want to force a transition for zlib1g because of
Steve> libminizip (!).  Current plan is to simply special case
Steve> zlib1g, but there could be other problem packages we haven't
Steve> identified.

I think krb5 may be in this category.
In particular, it looks like time_t is only exposed in the kdb.h API,
which appears to have no reverse depends outside of krb5.
I actually think that the freeIPA server may have a plugin that depends
on kdb.h, and Samba4 can be built in such a way that it depends on
kdb.h, but it looks like neither of those applies to the Debian archive.


At one level, krb5-multidev only has an rdep of 5, but I suspect the
rdep count for libkrb5-dev is somewhat larger:-)
I don't know how many packages would be removed from the transition if
we decide most of the krb5 libraries do not need to transition.


signature.asc
Description: PGP signature


Re: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Sebastian Ramacher
Hi Steve

On 2024-01-05 09:42:06 -0800, Steve Langasek wrote:
> Hi Sebastian,
> 
> On Fri, Jan 05, 2024 at 06:34:38PM +0100, Sebastian Ramacher wrote:
> > On 2024-01-05 00:23:00 -0800, Steve Langasek wrote:
> > > On Fri, Jan 05, 2024 at 12:17:04AM -0800, Steve Langasek wrote:
> > > > == Results ==
> 
> > > > The overall findings of this analysis are 1,745 "dev" packages which
> > > > either are confirmed to have ABI changes or could not be checked;
> > > > mapping to 2,154 runtime libraries (list attached) from 1,195 source
> > > > packages (list attached) and 5,477 reverse-dependencies requiring
> > > > no-change rebuilds (list attached).  This is within the previously
> > > > calculated range of "5300 to 5600", but there are a number of
> > > > newly-identified packages that fail to compile and have a large number
> > > > of reverse-dependencies.  I will continue to work to identify
> > > > false-positives here in the hopes of bringing this count down before
> > > > pulling the trigger on an actual transition.
> 
> > > [...]
> 
> > > > In addition, Guillem pointed out that if there are libraries whose
> > > > ABIs are lfs-sensitive but not time_t-sensitive, and either they
> > > > themselves depend on libraries which are time_t-sensitive or they have
> > > > reverse-dependencies that do, so they will also need to be included in
> > > > the transition.  I have identified a list of 53 packages in this
> > > > category (list attached); these in turn have 174 additional
> > > > reverse-dependencies that would need rebuilt (list attached).
> 
> > > I am also attaching here the dd-list output for the packages that will 
> > > need
> > > to be sourcefully NMUed for the transition, for your review.
> 
> > Why do the need sourceful NMUs if they just need to be rebuilt?
> 
> Sorry, if the original message hadn't been lost somewhere in the mail
> system before being delivered to debian-devel (I've now tried to resend it),
> this might have been clearer from context.  Guillem points out the mail has
> been delivered to debian-release, so you can read the whole thing there:
> 
>   https://lists.debian.org/debian-release/2024/01/msg00033.html
> 
> Anyway, this is the list of source packages containing libraries whose ABI
> will change.  So the packages need to be renamed in order to expose the ABI
> incompatibility to reverse-dependencies. 

I am confused. Above you say:

> these in turn have 174 additional
> reverse-dependencies that would need rebuilt (list attached).

This sounds to me like those are packages that are involved in the
transition and need rebuilds, but do not change their ABI. And in fact,
for most of packages that I maintain on the list, the ABI does not
change.

Can you please clarify which of the packages in your lists require
changes to the binary package names and which do not?

Cheers
-- 
Sebastian Ramacher



Re: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Steve Langasek
Hi Sebastian,

On Fri, Jan 05, 2024 at 06:34:38PM +0100, Sebastian Ramacher wrote:
> On 2024-01-05 00:23:00 -0800, Steve Langasek wrote:
> > On Fri, Jan 05, 2024 at 12:17:04AM -0800, Steve Langasek wrote:
> > > == Results ==

> > > The overall findings of this analysis are 1,745 "dev" packages which
> > > either are confirmed to have ABI changes or could not be checked;
> > > mapping to 2,154 runtime libraries (list attached) from 1,195 source
> > > packages (list attached) and 5,477 reverse-dependencies requiring
> > > no-change rebuilds (list attached).  This is within the previously
> > > calculated range of "5300 to 5600", but there are a number of
> > > newly-identified packages that fail to compile and have a large number
> > > of reverse-dependencies.  I will continue to work to identify
> > > false-positives here in the hopes of bringing this count down before
> > > pulling the trigger on an actual transition.

> > [...]

> > > In addition, Guillem pointed out that if there are libraries whose
> > > ABIs are lfs-sensitive but not time_t-sensitive, and either they
> > > themselves depend on libraries which are time_t-sensitive or they have
> > > reverse-dependencies that do, so they will also need to be included in
> > > the transition.  I have identified a list of 53 packages in this
> > > category (list attached); these in turn have 174 additional
> > > reverse-dependencies that would need rebuilt (list attached).

> > I am also attaching here the dd-list output for the packages that will need
> > to be sourcefully NMUed for the transition, for your review.

> Why do the need sourceful NMUs if they just need to be rebuilt?

Sorry, if the original message hadn't been lost somewhere in the mail
system before being delivered to debian-devel (I've now tried to resend it),
this might have been clearer from context.  Guillem points out the mail has
been delivered to debian-release, so you can read the whole thing there:

  https://lists.debian.org/debian-release/2024/01/msg00033.html

Anyway, this is the list of source packages containing libraries whose ABI
will change.  So the packages need to be renamed in order to expose the ABI
incompatibility to reverse-dependencies.  That's not a no-change rebuild.

This is consistent with historical practice in Debian for
toolchain-triggered ABI changes ('g' for libc5->glibc; c102; c2; v5; ldbl)

-- 
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


Re: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Sebastian Ramacher
On 2024-01-05 00:23:00 -0800, Steve Langasek wrote:
> On Fri, Jan 05, 2024 at 12:17:04AM -0800, Steve Langasek wrote:
> > == Results ==
> > 
> > The overall findings of this analysis are 1,745 "dev" packages which either
> > are confirmed to have ABI changes or could not be checked; mapping to 2,154
> > runtime libraries (list attached) from 1,195 source packages (list attached)
> > and 5,477 reverse-dependencies requiring no-change rebuilds (list attached).
> > This is within the previously calculated range of "5300 to 5600", but there
> > are a number of newly-identified packages that fail to compile and have a
> > large number of reverse-dependencies.  I will continue to work to identify
> > false-positives here in the hopes of bringing this count down before pulling
> > the trigger on an actual transition.
> 
> [...]
> 
> > In addition, Guillem pointed out that if there are libraries whose ABIs are
> > lfs-sensitive but not time_t-sensitive, and either they themselves depend on
> > libraries which are time_t-sensitive or they have reverse-dependencies that
> > do, so they will also need to be included in the transition.  I have
> > identified a list of 53 packages in this category (list attached); these in
> > turn have 174 additional reverse-dependencies that would need rebuilt (list
> > attached).
> 
> I am also attaching here the dd-list output for the packages that will need
> to be sourcefully NMUed for the transition, for your review.

Why do the need sourceful NMUs if they just need to be rebuilt?

Cheers
-- 
Sebastian Ramacher



Re: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Guillem Jover
Hi!

[ It seems the original post didn't get through to debian-devel (yet?),
  I found it on debian-release though
  https://lists.debian.org/debian-release/2024/01/msg00033.html,
  you might want to repost it here though, so that it can be commented
  on properly? :) ]

On Fri, 2024-01-05 at 00:23:00 -0800, Steve Langasek wrote:
> On Fri, Jan 05, 2024 at 12:17:04AM -0800, Steve Langasek wrote:
> > == Results ==
> > 
> > The overall findings of this analysis are 1,745 "dev" packages which either
> > are confirmed to have ABI changes or could not be checked; mapping to 2,154
> > runtime libraries (list attached) from 1,195 source packages (list attached)
> > and 5,477 reverse-dependencies requiring no-change rebuilds (list attached).
> > This is within the previously calculated range of "5300 to 5600", but there
> > are a number of newly-identified packages that fail to compile and have a
> > large number of reverse-dependencies.  I will continue to work to identify
> > false-positives here in the hopes of bringing this count down before pulling
> > the trigger on an actual transition.

> Guillem Jover 
>libaio
>libmd
>liburing

I checked these, and it looks like libmd and liburing are
false-positives?

 * libmd uses AC_SYS_LARGEFILE, and on 32-bit arches it is already built
   with LFS, the problem is that the header exposes off_t which means
   the code linking against it needs to match its build flags,
   otherwise they would already be broken now. You might want to look
   into this as a potential pattern for other false-positives probably.
   (I should probably update upstream the .pc file to include the
   -D_FILE_OFFSET_BITS=64 flags if enabled, but I don't think the
   analysis used .pc files anyway.)

 * liburing is marked as LFS-sensitive, but that comes from inline
   functions using off_t which end up casting that into an u32 type,
   so I don't think this should affect the ABI. It is also forcibly
   built with -D_FILE_OFFSET_BITS=64 in the upstream build system
   (and with future=+lfs for good measure in the packaging, which
   I'll switch to abi=+lfs).

Thanks,
Guillem