Re: 64-bit time_t: an update

2023-07-31 Thread Simon Chopin
Hi all,

Quoting Steve Langasek (2023-07-19 23:27:21)
[snip]
> The "good" news is that, although there are over 1500 -dev packages yet to
> be analyzed, we have prioritized libraries based on the number of
> reverse-dependencies and therefore these 1500 -dev packages have among them
> less than 300 reverse-build-dependencies that have not already been
> identified as part of the transition (800 of these -dev packages have no
> reverse-build-dependencies at all).
>
> Therefore, I would like to propose the following.
>
> - Assume the remaining 1500 -dev packages are affected by the ABI breakage.
>   This will increase the number of library packages included in the
>   transition requiring sourceful uploads from < 500 to 2000[1], but will
>   only increase the number of packages requiring rebuilds from 5300 to 5600.
>
> - Agree a target window together with the Release Team for when the
>   transition will be uploaded to unstable; and based on this, set a deadline
>   beforehand for finalizing the list of library packages whose binary
>   package names will be changed.
>
> - We in Ubuntu Foundations will continue on a best effort basis to drive
>   down the list of -dev packages which cannot be analyzed, until that
>   deadline.
>
> - Any party (maintainer or otherwise) interested in having some of these
>   library packages excluded from the transition is welcome to contribute
>   fixes up to that deadline that will let us analyze them and show that the
>   ABI has not changed.

In order to avoid duplicating efforts, I've created a wiki page listing
all the packages that are still to be dealt with:

https://wiki.debian.org/ArmhfTimeTTodo

It's fairly crude, but hopefully enough for the purpose.

I'll be working the entire week on reducing that list, so if anyone
joining in the fun wants to discuss it, feel free to ping me on IRC
(schopin).

Cheers
--
Simon Chopin
Foundations TeamUbuntu MOTU/Core Dev
simon.cho...@canonical.comscho...@ubuntu.com



Re: 64-bit time_t: an update

2023-07-21 Thread Steve Langasek
On Thu, Jul 20, 2023 at 12:30:50AM +0100, Simon McVittie wrote:
> On Wed, 19 Jul 2023 at 14:27:21 -0700, Steve Langasek wrote:
> > to understand the impact that a change to the size of
> > time_t will have on a library's ABI, it must be possible to compile the
> > headers that expose that API

> Would the results of this analysis also be suitable for telling
> interested maintainers whether it's safe to opt-in a library to LFS
> and/or 64-bit time_t on i386, so that it will use 64-bit-time_t-safe
> glibc functions internally?

> (For example libdbus is already opted-in to LFS, and I'm reasonably
> sure it doesn't break public ABI under 64-bit time_t either, because it
> has a policy of avoiding most inclusions of system headers in its own
> public API)

Yes, there's sufficient information in the analysis to determine this.

> > The Ubuntu Foundations team have been putting in effort over the past two
> > months, package-by-package, to figure out how to make them compile so that
> > we know if their ABI is affected.

> Is there a reasonably simple way that interested developers can try this
> process for a package that they maintain?

Thanks for the PR[0] :)

> I realise your analysis has been done on armhf, but i386 would probably be
> an easier (and faster!) 32-bit architecture to deal with for many
> developers, even though we don't intend to do the 64-bit time_t transition
> systematically on i386.

Yes, for individual package analysis in Debian, i386 is likely better.  If
we're not actually doing 64-bit time_t for i386, it's better to use armhf
for the list of -dev packages to analyze - second to i386, it's going to
have the highest number of arch-specific -dev packages of any 32-bit arch.
And in Ubuntu of course, we've already dropped the vast majority of these
packages on i386 so there's nothing to analyze against.  But in Debian,
given a list of -dev packages that are applicable to armhf, it's almost
certainly faster for folks to do the analysis against i386.

> > The "good" news is that, although there are over 1500 -dev packages yet to
> > be analyzed, we have prioritized libraries based on the number of
> > reverse-dependencies

> Is the list you attached already in descending order by number of rdeps?

It was not.  I've attached that list now.  (And eventually I'll dd-list-ify
it if there's agreement on this path forward.)

> > libsdl1.2-compat-dev

> The source package src:sdl12-compat recently took over libsdl1.2-dev
> and libsdl1.2debian from the older src:libsdl1.2, which gives it quite
> a lot of rdeps (I know because I did a mass bug filing for them!),
> so having an answer for that one might reduce the rebuilds better than
> you might think. I suspect it actually won't have time_t in its ABI,
> although I could be wrong.

Thanks.  I didn't mention, but there are definitely some false-negatives in
this list, because of e.g. all of the packages actually build-depend on a
metapackage -dev which doesn't actually contain the headers.  libboost-dev
is an example, which is prominent enough that we noticed it and manually
prioritized it.  I'll have a look at sdl as well for sure.

It would probably give us a more precise count if, instead of looking at
reverse-build-deps on associated -dev packages, we scanned the archive for
all packages shipping .shlibs and/or .symbols files and then looked at
reverse-dependencies of the packages named in those control files.  That
would take rather a bit more effort however since it would involve unpacking
the whole archive, and it doesn't matter for the actual transition which
will be based on binary package revdeps regardless, it only matters for the
question of prioritizing fails-to-compile headers for analysis.

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

[0] https://salsa.debian.org/vorlon/armhf-time_t/-/merge_requests/96
7 qtwayland5-private-dev
4 libogre-1.12-dev
4 android-libbase-dev
3 tcl-itcl4-dev
3 libplacebo-dev
3 libosp-dev
3 libopenvdb-dev
3 libkpipewire-dev
3 libini-config-dev
3 libgom-1.0-dev
3 libgnome-bluetooth-dev
3 libgirara-dev
3 libflatbuffers-dev
3 libfftw3-mpi-dev
3 libfcft-dev
3 libdrilbo-dev
3 libdpkg-dev
3 libcec-dev
3 libccp4-dev
3 libc-client2007e-dev
3 libapogee-dev
3 libapache2-mod-perl2-dev
3 libagg2-dev
3 libafflib-dev
3 libadplug-dev
3 iraf-noao-dev
3 guile-2.2-dev
3 gemmi-dev
3 coinor-libcbc-dev
3 casacore-dev
3 android-libziparchive-dev
3 android-libcutils-dev
3 ableton-link-dev
2 xserver-xorg-input-synaptics-dev
2 tao-json-dev
2 signond-dev
2 sfftw-dev
2 samba-dev
2 retroarch-dev
2 qttools5-private-dev
2 python3-cxx-dev
2 pinball-dev
2 pd-flext-dev
2 opencollada-dev
2 ofono-dev
2 nim-hts-dev
2 moarvm-dev
2 mirtest-dev
2 llvm-16-dev
2 libxorg-gtest-dev
2 libxlsxwriter-

Re: 64-bit time_t: an update

2023-07-19 Thread Simon McVittie
On Wed, 19 Jul 2023 at 14:27:21 -0700, Steve Langasek wrote:
> to understand the impact that a change to the size of
> time_t will have on a library's ABI, it must be possible to compile the
> headers that expose that API

Would the results of this analysis also be suitable for telling
interested maintainers whether it's safe to opt-in a library to LFS
and/or 64-bit time_t on i386, so that it will use 64-bit-time_t-safe
glibc functions internally?

(For example libdbus is already opted-in to LFS, and I'm reasonably
sure it doesn't break public ABI under 64-bit time_t either, because it
has a policy of avoiding most inclusions of system headers in its own
public API)

> The Ubuntu Foundations team have been putting in effort over the past two
> months, package-by-package, to figure out how to make them compile so that
> we know if their ABI is affected.

Is there a reasonably simple way that interested developers can try this
process for a package that they maintain?

I realise your analysis has been done on armhf, but i386 would probably be
an easier (and faster!) 32-bit architecture to deal with for many
developers, even though we don't intend to do the 64-bit time_t transition
systematically on i386.

> The "good" news is that, although there are over 1500 -dev packages yet to
> be analyzed, we have prioritized libraries based on the number of
> reverse-dependencies

Is the list you attached already in descending order by number of rdeps?

> libsdl1.2-compat-dev

The source package src:sdl12-compat recently took over libsdl1.2-dev
and libsdl1.2debian from the older src:libsdl1.2, which gives it quite
a lot of rdeps (I know because I did a mass bug filing for them!),
so having an answer for that one might reduce the rebuilds better than
you might think. I suspect it actually won't have time_t in its ABI,
although I could be wrong.

smcv



64-bit time_t: an update

2023-07-19 Thread Steve Langasek
Hi folks,

Two months ago, I posted with a proposal for how to handle a transition to
64-bit time_t on 32-bit archs in the trixie cycle.

  https://lists.debian.org/debian-devel/2023/05/msg00168.html

We have pretty good consensus on the path forward; however, at the time I
posted I had hoped to have an archive analysis done within a month, so that
this could be staged as the first major transition after trixie opened. 
This timeline proved to be very optimistic.

The problem is that, to understand the impact that a change to the size of
time_t will have on a library's ABI, it must be possible to compile the
headers that expose that API; and we have a significant number of -dev
packages in the archive that for one reason or another don't
straightforwardly compile out of the box.

The Ubuntu Foundations team have been putting in effort over the past two
months, package-by-package, to figure out how to make them compile so that
we know if their ABI is affected.  However, despite a significant investment
of effort, we still have roughly 1500 -dev packages still in need of
analysis, and have sustained a rate of processing only around 50 -dev
packages a week.

The "good" news is that, although there are over 1500 -dev packages yet to
be analyzed, we have prioritized libraries based on the number of
reverse-dependencies and therefore these 1500 -dev packages have among them
less than 300 reverse-build-dependencies that have not already been
identified as part of the transition (800 of these -dev packages have no
reverse-build-dependencies at all).

Therefore, I would like to propose the following.

- Assume the remaining 1500 -dev packages are affected by the ABI breakage.
  This will increase the number of library packages included in the
  transition requiring sourceful uploads from < 500 to 2000[1], but will
  only increase the number of packages requiring rebuilds from 5300 to 5600.

- Agree a target window together with the Release Team for when the
  transition will be uploaded to unstable; and based on this, set a deadline
  beforehand for finalizing the list of library packages whose binary
  package names will be changed.

- We in Ubuntu Foundations will continue on a best effort basis to drive
  down the list of -dev packages which cannot be analyzed, until that
  deadline.

- Any party (maintainer or otherwise) interested in having some of these
  library packages excluded from the transition is welcome to contribute
  fixes up to that deadline that will let us analyze them and show that the
  ABI has not changed.

Your thoughts?

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

[1] All numbers approximate: the analysis that has been completed so far has
been done against Ubuntu lunar as a stable reference base.  The Debian
transition will of course be done based on a complete analysis of unstable,
which is in progress separately.
libgnome-rr-4-dev
libhfsp-dev
libhx-dev
libibnetdisc-dev
libip6tc-dev
libipmiconsole-dev
libipset-dev
libisns-dev
libisoburn-dev
libixion-dev
libjpeg-turbo8-dev
libklibc-dev
libkrad-dev
libksba-dev
liblasso3-dev
libldacbt-abr-dev
libldb-dev
liblouisutdml-dev
liblrm2-dev
libmaa-dev
libmircommon-dev
libmiroil-dev
libmirplatform-dev
libmirwayland-dev
libmlir-14-dev
libmozjs-102-dev
libmutter-11-dev
libnetplan-dev
libntirpc-dev
libnutscan-dev
liborcus-dev
libotf-dev
libpils2-dev
libportal-dev
libpskc-dev
libptexenc-dev
libpython3.10-dev
libpython3.11-dev
libradosstriper-dev
libreoffice-dev
libsource-highlight-dev
libsss-certmap-dev
libsss-simpleifp-dev
libstdc++-11-dev
libstdc++-12-dev
libstonith1-dev
libsysmetrics-dev
libtotem-dev
libunwind-14-dev
libunwind-15-dev
libusbredirhost-dev
libuwac0-dev
libverto-dev
libvolume-key-dev
libwhoopsie-dev
libwhoopsie-preferences-dev
lua-rrd-dev
python3-ldb-dev
python3-talloc-dev
rhythmbox-dev
ruby3.0-dev
ruby3.1-dev
samba-dev
slapi-dev
libblimps3-dev
libfishcamp-dev
libopenvr-dev
libparmetis-dev
libtestu01-0-dev
libttspico-dev
389-ds-base-dev
android-libandroidfw-dev
android-libselinux-dev
android-libsepol-dev
android-libunwind-dev
angelscript-dev
atfs-dev
cairo-dock-dev
casacore-dev
cauchy-dev
codeblocks-dev
coinor-libbonmin-dev
coinor-libcbc-dev
libfprint-2-tod-dev
dovecot-dev
irssi-dev
isc-dhcp-dev
libaal-dev
libapache2-mod-perl2-dev
bind9-dev
libcanberra-gtk-common-dev
libclc-14-dev
libclc-15-dev
libd3dadapter9-mesa-dev
libdpkg-dev
libfreeradius-dev
libglvnd-core-dev
libmirrenderer-dev
libpinyin-common-dev
libpolly-15-dev
libradospp-dev
libreiser4-dev
libreofficekit-dev
libubi-dev
mir-renderer-gl-dev
ocfs2-tools-dev
php8.1-dev
rados-objclass-dev
remmina-dev
zsh-dev
libamgcl-dev
libjulius-dev
libthrust-dev
notion-dev
ableton-link-dev
android-libbase-dev
android-libcutils-dev
android-lib