Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-02-13 Thread Sam Hartman
> "Ansgar" == Ansgar   writes:


Ansgar> As far as I understand this approach will break any consumer
Ansgar> on a library whose ABI changes to to the ABI changes
Ansgar> introduced here unless the consumer is built with the flags
Ansgar> from `dpkg-buildflags` (which would now define the ABI).

Ansgar> Do we want this?

I'm fairly sure we do not.  Elsewhere in the thread, I saw one of the
toolchain maintainers talking about what is involved in getting gcc to
support the new flags.  My suspicion is that handling things with
dpkg-flags is more about moving quickly with the transition than a
desired end state.

Personally I'd consider it a release blocker if we don't get the
compilers updated prior to the release.

I think it would be reasonable to open a bug on the toolchain packages
now talking about this.
I think logistically it would not be desirable for those bugs to be RC
at this time.
Yes, if not fixed they will eventually need to be, but for example I
don't think it would be desirable to block toolchain testing migrations
on this issue at this time.  And obviously we're not going to remove the
toolchain from the release.

--Sam
Speaking with my armchair I have no hat in this non-hat on.



Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-02-13 Thread Ansgar
On Sat, 6 Jan 2024 19:38:42 -0800 Steve Langasek wrote:
> - dpkg will be uploaded to experimental with 64-bit time_t in the
default
>   flags

As far as I understand this approach will break any consumer on a
library whose ABI changes to to the ABI changes introduced here unless
the consumer is built with the flags from `dpkg-buildflags` (which
would now define the ABI).

In particular users could no longer just invoke `gcc` alone, but would
have to also rely on `dpkg-buildflags` for any software they built on
their own using runtime libraries shipped by Debian. It would work in
some cases (multi-ABI libraries like libc6 or libraries not affected by
the ABI change), but it is not reliable.

Do we want this? It must at least be documented, probably in Debian
Policy and GCC.

This was asked on debian-devel@ multiple times, but there was no answer
so far.

Ansgar



Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-17 Thread Steve Langasek
Hi Colin,

On Tue, Jan 09, 2024 at 01:32:11PM +, Colin Watson wrote:
> On Mon, Jan 08, 2024 at 03:01:11PM -0800, Steve Langasek wrote:
> > On Fri, Jan 05, 2024 at 09:17:52PM +0100, Paul Gevers wrote:
> > > On 05-01-2024 17:36, Rene Engelhard wrote:
> > > > Also a problem is that experimental also might already contain totally
> > > > unrelated updates like new upstream versions...

> > > I share this worry. Have you thought about how to handle the cases where 
> > > you
> > > don't have experimental to upload to? How big is this problem?



> In the current situation, though, not having experimental available
> means that there's no opportunity for dumat to weigh in regarding
> usrmerge interactions, which seems problematic given Helmut's
> preliminary analysis.

I guess this is a reply to the bits of context I retained above rather than
directly a reply to my most immediate preceding message.  In a separate
subthread, I laid out what I thought the process should be for handling the
transition of packages in that situation; but you are raising a separate
point.

Which parallels what Helmut had to say:

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

I have also had other out-of-band conversations with Helmut about the
overlapping issues between usrmerge and time_t, so this was generally
speaking on my radar although I didn't address it in my proposed transition
plan.

I think it is unrealistic to ask experimental to be otherwise quiesced of
transitions to ensure that we can stage all of the affected libraries in
experimental, and I also think that making false transitions for packages
that are ALREADY in experimental because of transitions would be
counterproductive. ("False" because if the library package has a different
soname between unstable and experimental, then renaming the runtime library
package in the *experimental* version is unnecessary because there's nothing
"in the wild" depending on that package name but with the old ABI for which
upgrade compatibility is of concern.)

My preferred path forward here would be, as Helmut suggests, to check which
libraries are in the intersection of (packages in experimental for which we
won't stage time_t uploads) and (packages that exist in bookworm and need
transitioning of aliased paths), and ensure that these packages are handled
carefully according to Helmut's own guidance.  My optimistic expectation is
that the intersection will be null, or nearly; but in any case I will bring
data.

And my proposal for checking that set, since we're only talking about
runtime library packages, is to check whether any of the contents of these
packages in bookworm match ^/lib - as a runtime library package NOT matching
this pattern, but matching a pattern for one of the other aliased
directories, would be something ...  special.

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


Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-09 Thread Colin Watson
On Mon, Jan 08, 2024 at 03:01:11PM -0800, Steve Langasek wrote:
> On Fri, Jan 05, 2024 at 09:17:52PM +0100, Paul Gevers wrote:
> > On 05-01-2024 17:36, Rene Engelhard wrote:
> > > Also a problem is that experimental also might already contain totally
> > > unrelated updates like new upstream versions...
> 
> > I share this worry. Have you thought about how to handle the cases where you
> > don't have experimental to upload to? How big is this problem?
> 
> > Another worry, how will you provide the required changes to the maintainers
> > of the packages? Via BTS? For those working on salsa: MR? Both? Something
> > else? Obviously we should not end in the situation that a new upload goes
> > back to the old name (or are the ftp-masters so keen on this transition that
> > that won't happen? But what about newer versions with the old name already
> > in experimental, conform the former worry?). I've seen NMU's being ignored
> > by subsequent uploads by the maintainer, even when they fixed RC issues
> > which were then reintroduced.
> 
> I would intend to provide diffs via the BTS.  This remains the standard
> policy for NMUs in Debian per the Developer's Reference, and as far as I
> know has worked effectively for all such previous ABI transitions.

In the current situation, though, not having experimental available
means that there's no opportunity for dumat to weigh in regarding
usrmerge interactions, which seems problematic given Helmut's
preliminary analysis.

-- 
Colin Watson (he/him)  [cjwat...@debian.org]



Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-09 Thread Simon McVittie
On Mon, 08 Jan 2024 at 15:01:11 -0800, Steve Langasek wrote:
> If a maintainer ignores the NMU and drops the rename, they'll be introducing
> a new library transition again on 32-bit archs.  Won't they also be caught
> again in binary NEW, for those packages that don't have the same runtime
> library package name in experimental?

To have a concrete example of this, I think you are saying:

- NMU of src:foo renames libfoo0 to libfoo0t64
- maintainer ignores NMU and uploads, effectively renaming libfoo0t64
  back to libfoo0
- you want the maintainer's upload to get stuck in NEW

I am not a ftp team member, but if I understand NEW correctly, this
will only trigger a new trip through NEW if the ftp team have already
removed libfoo0 from the overrides file ("decrufting"), which is not
done immediately, only after libfoo0 has not been built by src:foo for
a little while.

If libfoo0 exists in testing and/or stable, I'm not sure whether that
prevents the ftp team's processes from removing it from the overrides file.
If it does, then a new, maintainer upload of libfoo0 will certainly not be
considered NEW, and the safety-catch that you are thinking of will not be
effective.

smcv



Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-08 Thread Steve Langasek
On Fri, Jan 05, 2024 at 09:17:52PM +0100, Paul Gevers wrote:
> Hi Steve,

> On 05-01-2024 17:36, Rene Engelhard wrote:
> > Also a problem is that experimental also might already contain totally
> > unrelated updates like new upstream versions...

> I share this worry. Have you thought about how to handle the cases where you
> don't have experimental to upload to? How big is this problem?

> Another worry, how will you provide the required changes to the maintainers
> of the packages? Via BTS? For those working on salsa: MR? Both? Something
> else? Obviously we should not end in the situation that a new upload goes
> back to the old name (or are the ftp-masters so keen on this transition that
> that won't happen? But what about newer versions with the old name already
> in experimental, conform the former worry?). I've seen NMU's being ignored
> by subsequent uploads by the maintainer, even when they fixed RC issues
> which were then reintroduced.

I would intend to provide diffs via the BTS.  This remains the standard
policy for NMUs in Debian per the Developer's Reference, and as far as I
know has worked effectively for all such previous ABI transitions.

I think it is reasonable to expect maintainers to pay attention to their bug
mail as our defined Debian process.  I don't think it would be reasonable to
expect people working on cross-archive toolchain transitions to cater to
individual maintainer preference in this regard.

If a maintainer ignores the NMU and drops the rename, they'll be introducing
a new library transition again on 32-bit archs.  Won't they also be caught
again in binary NEW, for those packages that don't have the same runtime
library package name in experimental?  It seems to me there's ample
opportunity to catch such mistakes if they happen.

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


Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-08 Thread Steve Langasek
On Mon, Jan 08, 2024 at 04:12:42PM +0100, Julian Andres Klode wrote:
> > - once these packages have all cleared binary NEW, the new dpkg defaults
> >   will be uploaded to unstable

> What happened to the plan to workaround this by doing dak database
> shenanigans prior to uploading to avoid binary-NEW altogether, that
> I chatted about with mhy/#debian-ftp and you? Did that not work out?

That wasn't called out here but is part of the implementation details of the
plan.  The intention is still to go through binary NEW in experimental
before copying to unstable, because it will take time to get all the binary
uploads done (longer than it will take to get the sourceful uploads to
unstable done), so it's better to stage in experimental to minimize the
window in unstable when uploads can be broken.

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


Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-08 Thread Julian Andres Klode

Hey Steve,

On Sat, Jan 06, 2024 at 07:38:42PM -0800, Steve Langasek wrote:
> On Sat, Jan 06, 2024 at 09:25:52AM +0100, Rene Engelhard wrote:
> > Hi,
> 
> > Am 06.01.24 um 06:51 schrieb Steve Langasek:
> > > > > - dpkg will be uploaded to experimental with 64-bit time_t in the 
> > > > > default
> > > > > flags
> > > [...]
> > > What about the suggestion to not push changes to experimental for packages
> > > that already have new versions in experimental, and do the binary package
> > > renames in unstable instead, leaving the package in experimental alone?
> 
> > How does that play together with the needed dpkg only in experimental?
> 
> > You can't build stuff for unstable involving experimental packages (except
> > manually with binary upload, which would block testing migration)
> 
> The ordering here would be:
> 
> - dpkg will be uploaded to experimental with 64-bit time_t in the default
>   flags
> 
> - the source packages which need an ABI change
>   ("source-packages"+"lfs-and-depends-time_t") and do not already have
>   versions in experimental, will have sourceful NMUs to experimental with
>   the new binary package names in order to clear binary NEW, in coordination
> 
> - once these packages have all cleared binary NEW, the new dpkg defaults
>   will be uploaded to unstable

What happened to the plan to workaround this by doing dak database
shenanigans prior to uploading to avoid binary-NEW altogether, that
I chatted about with mhy/#debian-ftp and you? Did that not work out?

-- 
debian developer - deb.li/jak | jak-linux.org - free software dev
ubuntu core developer  i speak de, en


signature.asc
Description: PGP signature


Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-07 Thread Rene Engelhard

Hi,

Am 07.01.24 um 04:38 schrieb Steve Langasek:

The ordering here would be:
- dpkg will be uploaded to experimental with 64-bit time_t in the default
   flags

- the source packages which need an ABI change
   ("source-packages"+"lfs-and-depends-time_t") and do not already have
   versions in experimental, will have sourceful NMUs to experimental with
   the new binary package names in order to clear binary NEW, in coordination

- once these packages have all cleared binary NEW, the new dpkg defaults
   will be uploaded to unstable


And in the meanwhile in experimental it will be built with the old 
time_t on other architectures.


Since the new dpkg won't be picked up.

Not in the experimental builders unstable+experimental chroots which 
only install experimental packages when Build-Depends: need them.


(For an undefined time given how much the packages later in the chain 
wait in NEW)



Especially on armhf which is affected. Or will you do the source NMUs on 
armhf/i386? (For some packages where some features are disabled on 32bit 
this is probably not a good idea)



Regards,


Rene


Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-07 Thread Rene Engelhard

Hi,

Am 07.01.24 um 02:01 schrieb Steve Langasek:
If you say you are going to fix eventual breakage (and not ignoring 
the test

results!) and if that means fixing asm on all affected archs, then it's OK
:)

Well, yes; though I hope we would see some help from e.g. arm porters if
there were actually breakage of this nature.

Hope doesn't help when it got to the actual problem and this doesn't happen.

  Alternatively, maybe it would
be better to stop shipping libreoffice on 32-bit archs, in that case?  I'm


I'd like to avoid this. Getting rid of i386 is fine, noone needs it, 
armhf is a bit different.


(rpis etc - even though they could run arm64, but..)


not sure how usable libreoffice is these days on such archs.
popcon.debian.org doesn't appear to have the granularity to tell us if there
actually *are* users; and with only 615 armhf popcon reports (vs 215,562 on
amd64) we don't exactly have a statistically significant sample there.


Only recently I got 
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1059158. Maybe UI is 
not used much, but I can imagine people using it in paperless-ngx or 
other stuff.


I don't really want to bastardize those uses.


- the source packages which need an ABI change
 ("source-packages"+"lfs-and-depends-time_t" will have sourceful NMUs to

I get that you probably want NMUs for not needing to ping every maintainer,
but this is bad.
That e.g. would cause me to upload libreoffice 24.2 rc2 to sid immediately
when tagged end of next week to not have this caught in the transition. (see
also below for the comment about new upstream versions in experimental.)

What about the suggestion to not push changes to experimental for packages
that already have new versions in experimental, and do the binary package
renames in unstable instead, leaving the package in experimental alone?

If at all - *both*. At the same time.

Most of these packages that are staged in experimental are going to be there
because of library transitions...


And ignore those who use experimental as a testbed of major new 
upstreams? Doesn't sound good.



 experimental with the new binary package names in order to clear binary
 NEW, in coordination

And what about skipped ones?  When will those be tried?

What do you mean here by "skipped ones"?

https://adrien.dcln.fr/misc/armhf-time_t/2023-12-18/results_skipped.txt
(which incidentially contains libreoffice)

Ah!  These are packages that have been omitted from the analysis because
they've been manually identified as packages that don't have C or
C++-compatible header files related to a shared library, and therefore even
if they do need updated for 64-bit time_t, they are not affected by CPPFLAGS
and are not part of this transition.  (I am not 100% sure this is accurate
for ObjC; in any case ObjC headers are impossible to analyze using
abi-compliance-checker so if ObjC libraries are possibly affected, someone
would have to figure out what to do with them.)


I have no idea on how you indentified it In the libreoffice case that is 
not true.



libreoffice-dev-(common) *does* contain C/C++ header files.

And most of them *do* correspond to the libuno* shared packages.

Just that they are not split per library because  that wouldn't really 
make sense since you need any of them anyway.



And I definitely see

e.g. /usr/include/libreoffice/osl/time.h (libuno-sal3)

No idea whether it actually will be broken by the change, but...


I'm not sure precisely why Adrien found it necessary/useful to add
libreoffice-dev to this exclude list,

Probably because he didn't look at the whole but just at  the package

  but I can confirm that it's
reasonable, as this particular package contains only a single header file
with #define's and no function prototypes; so in effect it has been manually
analyzed and determined to be unaffected.


But libreoffice-dev-common not (on which libreoffice-dev depends) which 
contains all the arch-indep headers. Just libreoffice-dev contains one 
header diferent between archs.



Regards,


Rene



Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-06 Thread Steve Langasek
On Sat, Jan 06, 2024 at 09:25:52AM +0100, Rene Engelhard wrote:
> Hi,

> Am 06.01.24 um 06:51 schrieb Steve Langasek:
> > > > - dpkg will be uploaded to experimental with 64-bit time_t in the 
> > > > default
> > > > flags
> > [...]
> > What about the suggestion to not push changes to experimental for packages
> > that already have new versions in experimental, and do the binary package
> > renames in unstable instead, leaving the package in experimental alone?

> How does that play together with the needed dpkg only in experimental?

> You can't build stuff for unstable involving experimental packages (except
> manually with binary upload, which would block testing migration)

The ordering here would be:

- dpkg will be uploaded to experimental with 64-bit time_t in the default
  flags

- the source packages which need an ABI change
  ("source-packages"+"lfs-and-depends-time_t") and do not already have
  versions in experimental, will have sourceful NMUs to experimental with
  the new binary package names in order to clear binary NEW, in coordination

- once these packages have all cleared binary NEW, the new dpkg defaults
  will be uploaded to unstable

- source packages which need an ABI change but already have versions in
  experimental will be uploaded to unstable, with binaries, to clear binary
  NEW

- sourceful NMUs of all the libraries will be reuploaded to unstable
  (without binaries, so that they can be promoted to testing without
  additional uploads).

- perl will also get a sourceful upload, to manually handle 'perlapi'
  Provides.

- binNMUs will be scheduled for all of the reverse-dependencies.


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


Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-06 Thread Steve Langasek
On Sat, Jan 06, 2024 at 09:07:15AM +0100, Rene Engelhard wrote:
> Am 06.01.24 um 06:51 schrieb Steve Langasek:
> > > > - dpkg will be uploaded to experimental with 64-bit time_t in the 
> > > > default
> > > > flags
> > > I  think at that point in time one should know what breaks and whatnot.
> > > Archive rebuild?
> > > (Probably in stages)
> > What kind of breakage are you looking to avoid here?

> build failures/test failures.

> > As mentioned in other points in the thread, regressions as a result of
> > this change should be rare and easy to fix.  I do not think it's a good
> > use of time / CPU power to do test rebuilds for this instead of just
> > landing the transition.

> Here especially LibreOffices bridge code worries me.

> That one is tied to ABI and calling conventions. I don't see time_t
> mentioned there but "just" in the public libraries (sal), but I am not sure
> what making a type bigger will cause.

> (And since already

>  - i386 needs gcc-12 to build since otherwise the test fails

>  - armhf (and other archs like ppc64el and s390x) need Java disabled[1] -
> without any help from any porter to prevent this - I *do* want to avoid
> breakage here.

> If you say you are going to fix eventual breakage (and not ignoring the test
> results!) and if that means fixing asm on all affected archs, then it's OK
> :)

Well, yes; though I hope we would see some help from e.g. arm porters if
there were actually breakage of this nature.  Alternatively, maybe it would
be better to stop shipping libreoffice on 32-bit archs, in that case?  I'm
not sure how usable libreoffice is these days on such archs.
popcon.debian.org doesn't appear to have the granularity to tell us if there
actually *are* users; and with only 615 armhf popcon reports (vs 215,562 on
amd64) we don't exactly have a statistically significant sample there.

> > > > - the source packages which need an ABI change
> > > > ("source-packages"+"lfs-and-depends-time_t" will have sourceful 
> > > > NMUs to
> > > I get that you probably want NMUs for not needing to ping every 
> > > maintainer,
> > > but this is bad.
> > > That e.g. would cause me to upload libreoffice 24.2 rc2 to sid immediately
> > > when tagged end of next week to not have this caught in the transition. 
> > > (see
> > > also below for the comment about new upstream versions in experimental.)
> > What about the suggestion to not push changes to experimental for packages
> > that already have new versions in experimental, and do the binary package
> > renames in unstable instead, leaving the package in experimental alone?

> If at all - *both*. At the same time.

Most of these packages that are staged in experimental are going to be there
because of library transitions... so I think we definitely don't want to be
renaming those binary packages, they should just drop the t64 suffix when
they move to unstable.

> But yes, that could work.

> (In this specific case I an worrying that the transition will take some
> time, and that I am stuck with 7.6.x instead of uploading 24.2 when it is
> released.)

Ok.  I don't think there would be any need for you to wait before uploading
24.2.  It might have to wait for time_t for testing migration, but  I don't think that should really be long.

> > > > experimental with the new binary package names in order to clear 
> > > > binary
> > > > NEW, in coordination

> > > And what about skipped ones?  When will those be tried?

> > What do you mean here by "skipped ones"?

> https://adrien.dcln.fr/misc/armhf-time_t/2023-12-18/results_skipped.txt

> (which incidentially contains libreoffice)

Ah!  These are packages that have been omitted from the analysis because
they've been manually identified as packages that don't have C or
C++-compatible header files related to a shared library, and therefore even
if they do need updated for 64-bit time_t, they are not affected by CPPFLAGS
and are not part of this transition.  (I am not 100% sure this is accurate
for ObjC; in any case ObjC headers are impossible to analyze using
abi-compliance-checker so if ObjC libraries are possibly affected, someone
would have to figure out what to do with them.)

I'm not sure precisely why Adrien found it necessary/useful to add
libreoffice-dev to this exclude list, but I can confirm that it's
reasonable, as this particular package contains only a single header file
with #define's and no function prototypes; so in effect it has been manually
analyzed and determined to be unaffected.

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


Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-06 Thread Rene Engelhard

Hi,

Am 06.01.24 um 06:51 schrieb Steve Langasek:

- dpkg will be uploaded to experimental with 64-bit time_t in the default
flags

[...]
What about the suggestion to not push changes to experimental for packages
that already have new versions in experimental, and do the binary package
renames in unstable instead, leaving the package in experimental alone?


How does that play together with the needed dpkg only in experimental?

You can't build stuff for unstable involving experimental packages 
(except manually with binary upload, which would block testing migration)



Regards,


Rene


Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-06 Thread Rene Engelhard

Hi Steve,

Am 06.01.24 um 06:51 schrieb Steve Langasek:

- dpkg will be uploaded to experimental with 64-bit time_t in the default
flags

I  think at that point in time one should know what breaks and whatnot.
Archive rebuild?
(Probably in stages)

What kind of breakage are you looking to avoid here?  As mentioned in other

build failures/test failures.

points in the thread, regressions as a result of this change should be rare
and easy to fix.  I do not think it's a good use of time / CPU power to do
test rebuilds for this instead of just landing the transition.


Here especially LibreOffices bridge code worries me.

That one is tied to ABI and calling conventions. I don't see time_t 
mentioned there but "just" in the public libraries (sal), but I am not 
sure what making a type bigger will cause.


(And since already

 - i386 needs gcc-12 to build since otherwise the test fails

 - armhf (and other archs like ppc64el and s390x) need Java disabled[1] 
- without any help from any porter to prevent this - I *do* want to 
avoid breakage here.



If you say you are going to fix eventual breakage (and not ignoring the 
test results!) and if that means fixing asm on all affected archs, then 
it's OK :)




- the source packages which need an ABI change
("source-packages"+"lfs-and-depends-time_t" will have sourceful NMUs to

I get that you probably want NMUs for not needing to ping every maintainer,
but this is bad.
That e.g. would cause me to upload libreoffice 24.2 rc2 to sid immediately
when tagged end of next week to not have this caught in the transition. (see
also below for the comment about new upstream versions in experimental.)

What about the suggestion to not push changes to experimental for packages
that already have new versions in experimental, and do the binary package
renames in unstable instead, leaving the package in experimental alone?


If at all - *both*. At the same time.

But yes, that could work.

(In this specific case I an worrying that the transition will take some 
time, and that I am stuck with 7.6.x instead of uploading 24.2 when it 
is released.)



libreoffice libs only have one reverse-dep, zemberek-ooo; so the risk of
entanglement here is small anyway.
Except in poppler etc. transitions.. But yeah, nothing really uses the 
C++ libs nowadays.

I think the above proposal, to skip packages already in experimental from
the set of uploads to experimental, would address your concern.  It's not as
if there is going to be any time that it's ok to tell maintainers they can't
use experimental at all because we're doing this transition.


experimental with the new binary package names in order to clear binary
NEW, in coordination

And what about skipped ones?  When will those be tried?

What do you mean here by "skipped ones"?


https://adrien.dcln.fr/misc/armhf-time_t/2023-12-18/results_skipped.txt

(which incidentially contains libreoffice)


Regards,


Rene


[1] Ubuntu just ignores the test failures. No, not an option.



Bug#1036884: 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:36:10PM +0100, Rene Engelhard wrote:
> > My strawman proposal is to give this thread 2 weeks from today for feedback
> > and further refinement, and also to further reduce the number of
> > false-positives included in the transition.  Then, starting on Jan 18:

> > - dpkg will be uploaded to experimental with 64-bit time_t in the default
> >flags

> I  think at that point in time one should know what breaks and whatnot.
> Archive rebuild?

> (Probably in stages)

What kind of breakage are you looking to avoid here?  As mentioned in other
points in the thread, regressions as a result of this change should be rare
and easy to fix.  I do not think it's a good use of time / CPU power to do
test rebuilds for this instead of just landing the transition.

> > - the source packages which need an ABI change
> >("source-packages"+"lfs-and-depends-time_t" will have sourceful NMUs to

> I get that you probably want NMUs for not needing to ping every maintainer,
> but this is bad.

> That e.g. would cause me to upload libreoffice 24.2 rc2 to sid immediately
> when tagged end of next week to not have this caught in the transition. (see
> also below for the comment about new upstream versions in experimental.)

What about the suggestion to not push changes to experimental for packages
that already have new versions in experimental, and do the binary package
renames in unstable instead, leaving the package in experimental alone?

libreoffice libs only have one reverse-dep, zemberek-ooo; so the risk of
entanglement here is small anyway.

I think the above proposal, to skip packages already in experimental from
the set of uploads to experimental, would address your concern.  It's not as
if there is going to be any time that it's ok to tell maintainers they can't
use experimental at all because we're doing this transition.

> >experimental with the new binary package names in order to clear binary
> >NEW, in coordination

> And what about skipped ones?  When will those be tried?

What do you mean here by "skipped ones"?

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


Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Paul Gevers

Hi Steve,

On 05-01-2024 17:36, Rene Engelhard wrote:
Also a problem is that experimental also might already contain totally 
unrelated updates like new upstream versions...


I share this worry. Have you thought about how to handle the cases where 
you don't have experimental to upload to? How big is this problem?


Another worry, how will you provide the required changes to the 
maintainers of the packages? Via BTS? For those working on salsa: MR? 
Both? Something else? Obviously we should not end in the situation that 
a new upload goes back to the old name (or are the ftp-masters so keen 
on this transition that that won't happen? But what about newer versions 
with the old name already in experimental, conform the former worry?). 
I've seen NMU's being ignored by subsequent uploads by the maintainer, 
even when they fixed RC issues which were then reintroduced.


Paul


OpenPGP_signature.asc
Description: OpenPGP digital signature


Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Sebastian Ramacher
Hi Steve

> - perl will also get a sourceful upload, to manually handle 'perlapi'
>   Provides.

Can we combine this one with the upcoming perl transition? See #1055955.



Here are some more comments on individual packages.

> 22 libobs-dev

That's a change to the plugin ABI only.

> 14 gnuradio

gnuradio bump its SONAME every other month.

> 9 libopenmpt-dev

Seems to be a false positive.

> 9 libogre-1.9-dev
> 9 libgirara-dev

Why is this one on the list?

> 5 gcc-10-plugin-dev

Can be skipped, not part of testing. Should be RMed from the archive
instead.

> 4 llvm-15-dev

llvm-toolchain-15 is scheduled for removal. Reverse dependencies should
get an RC bug instead.

> 4 libspatialaudio-dev

Why is this package on the list?

> 3 libdvbpsi-dev

Seems to be a false positive

> libavutil58

av_timegm is not used by any package in the archive. I'd skip ffmpeg and
it's libraries.

> libpoppler-cpp0v5
> libpoppler-glib8
> libpoppler-qt5-1
> libpoppler-qt6-3
> libpoppler126

Can be combined with the upcoming poppler transiton (see #1060019)

> libvlc5
> libvlccore9

Change to vlc plugin ABI. This does not require a change of the binary
package name.

> g2clib

Can be combined with the upcoming transition (see #1060077).

Cheers
-- 
Sebastian Ramacher



Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Steve Langasek
On Fri, Jan 05, 2024 at 12:05:57PM +, Simon McVittie wrote:
> On Fri, 05 Jan 2024 at 00:17:04 -0800, Steve Langasek wrote:
> > - In multi-library packages, there is no reliable way to map from a set of
> >   headers in a dev package to specific shared libraries in a runtime library
> >   package that's not additionally computationally prohibitive; we therefore
> >   conservatively assume that if any headers from a source package show
> >   time_t ABI changes, all the runtime library packages from the source
> >   package are affected by the transition.

> > 0 dbus-tests

> Please ignore this specific binary package. The only public API/ABI
> of src:dbus is in libdbus-1-3 + libdbus-1-dev, so analyzing those two
> is enough. (dbus-tests accidentally contains one header file, but that's
> a minor bug.)

> libdbus-1-dev is widely depended-on, so I hope that taking src:dbus off
> your list will avoid some unnecessary rebuilds?

> > 0 gobject-introspection

> Similarly the only public API/ABI of src:gobject-introspection is in
> libgirepository1.0-dev, libgirepository-1.0-1, and (in experimental)
> libgirepository-1.0-dev. gobject-introspection contains some source
> and header files that are used by other packages' regression tests,
> but they are not public ABI.

Yes, sorry - the way my scripts are set up to do the analysis right now,
these packages still show up in the `sorted-revdep-count` list but there are
manual overrides mapping both of these to an empty set of runtime libraries. 
So you'll see they don't show up in the `runtime-libs` or `source-packages`
lists, and none of the reverse-dependencies of libdbus or libgirepository
are tagged for rebuild.

https://salsa.debian.org/adrien-n/armhf-time_t/-/blob/c62a594236374469b2181e9c5578ed124b57c48c/packagelist.py#L304

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


Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Rene Engelhard

Hi,

Am 05.01.24 um 09:17 schrieb Steve Langasek:

- Packages that could not be analyzed for whatever reason are still
   assumed to have an ABI that's sensitive to time_t and have to be included
   in the transition.  Happily, due to improvements in this run of the number
   of packages that could successfully be analyzed, the number of libraries
   in this category has dropped from 1541 to 929, of which 69 have no
   reverse-dependencies at all.  The final list of these header packages that
   could not be analyzed is attached, in case anyone still wants to identify
   that a library on this list whose ABI is not affected by time_t and should
   therefore be excluded from the transition.  Note, however, that no effort
   has been made to filter out dev packages from this list that come from
   source packages containing OTHER dev packages that are known to have ABI
   breakage; for a number of the packages listed, further analysis would not
   change the outcome.  (e.g. qt5-qmake failed to be analyzed, but
   qtbase-opensource-src also ships qtbase5-private-dev which shows time_t
   ABI sensitivity.)


[...]


My strawman proposal is to give this thread 2 weeks from today for feedback
and further refinement, and also to further reduce the number of
false-positives included in the transition.  Then, starting on Jan 18:

- dpkg will be uploaded to experimental with 64-bit time_t in the default
   flags


I  think at that point in time one should know what breaks and whatnot. 
Archive rebuild?


(Probably in stages)


- the source packages which need an ABI change
   ("source-packages"+"lfs-and-depends-time_t" will have sourceful NMUs to


I get that you probably want NMUs for not needing to ping every 
maintainer, but this is bad.


That e.g. would cause me to upload libreoffice 24.2 rc2 to sid 
immediately when tagged end of next week to not have this caught in the 
transition. (see also below for the comment about new upstream versions 
in experimental.)



   experimental with the new binary package names in order to clear binary
   NEW, in coordination


And what about skipped ones?  When will those be tried?

Those also will need clear NEW if needed.

(And they might even FTBFS because the ABI did change and ABI-assuming 
test break? Though I don't assume so for time_t, but if time is passed 
around... I don't assume so, but...


At least that would be the case for libreoffice (and 
libreoffice-dev-common is in the affected set, which means some stuff 
relies on it...))


(Maybe even needing asm fixes)


- once these packages have all cleared binary NEW, the new dpkg defaults
   will be uploaded to unstable

- the sourceful NMUs of the libraries will be reuploaded to unstable
   (without binaries, so that they can be promoted to testing without
   additional uploads).
Please let me know of any problems with this plan.


Also a problem is that experimental also might already contain totally 
unrelated updates like new upstream versions...



Regards,


Rene


Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Simon McVittie
On Fri, 05 Jan 2024 at 00:17:04 -0800, Steve Langasek wrote:
> - In multi-library packages, there is no reliable way to map from a set of
>   headers in a dev package to specific shared libraries in a runtime library
>   package that's not additionally computationally prohibitive; we therefore
>   conservatively assume that if any headers from a source package show
>   time_t ABI changes, all the runtime library packages from the source
>   package are affected by the transition.

> 0 dbus-tests

Please ignore this specific binary package. The only public API/ABI
of src:dbus is in libdbus-1-3 + libdbus-1-dev, so analyzing those two
is enough. (dbus-tests accidentally contains one header file, but that's
a minor bug.)

libdbus-1-dev is widely depended-on, so I hope that taking src:dbus off
your list will avoid some unnecessary rebuilds?

> 0 gobject-introspection

Similarly the only public API/ABI of src:gobject-introspection is in
libgirepository1.0-dev, libgirepository-1.0-1, and (in experimental)
libgirepository-1.0-dev. gobject-introspection contains some source
and header files that are used by other packages' regression tests,
but they are not public ABI.

smcv



Bug#1036884: 64-bit time_t: updated archive analysis, proposed transition plan with timeline

2024-01-05 Thread Steve Langasek
Hi folks,

Once again, coming back around to the question of an archive-wide migration
for time_t[0].

We have a clear path forward on the toolchain side
(https://bugs.debian.org/1037136), and we have an updated ABI analysis done
against current Debian unstable as of 2023-12-18, superseding the previous
preliminary analysis we had done on Ubuntu mantic.  This re-analysis took a
while to get done in large part because the earlier mailing list thread
revealed gaps in the identification of "dev" packages[1], so we spent some
time fixing this to ensure we had proper archive coverage.

Output files from the new analysis can be found here:

  https://adrien.dcln.fr/misc/armhf-time_t/2023-12-18/

== Description of methodology ==

Before going into details of the plan I'm proposing for the migration, I
want to surface to the list the methodology used for the analysis, so that
people have an opportunity to identify any errors.

- Packages are identified as "dev" packages if, according to Contents-armhf
  in the archive, they ship files with an extension of .h, .hpp, .hxx, or
  .hh in any directory outside of /usr/share/doc.

- Packages are identified as "library" packages if, according to Contents,
  they ship files with an extension of .so or match the pattern *.so.*.

- Source packages are candidates for ABI analysis as part of this transition
  if at least one of their binary packages is a "dev" package, at least one
  is a "library" package, and at least one ships a shlibs control file.

- This means packages that provide plugin APIs are excluded from the
  transition (they couldn't be automated anyway), but might still have ABI
  breakage that will require handling.  (ex: apache2-dev; but it looks like
  perl did get picked up correctly by way of libperl5.36)

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

- Packages that could not be analyzed for whatever reason are still
  assumed to have an ABI that's sensitive to time_t and have to be included
  in the transition.  Happily, due to improvements in this run of the number
  of packages that could successfully be analyzed, the number of libraries
  in this category has dropped from 1541 to 929, of which 69 have no
  reverse-dependencies at all.  The final list of these header packages that
  could not be analyzed is attached, in case anyone still wants to identify
  that a library on this list whose ABI is not affected by time_t and should
  therefore be excluded from the transition.  Note, however, that no effort
  has been made to filter out dev packages from this list that come from
  source packages containing OTHER dev packages that are known to have ABI
  breakage; for a number of the packages listed, further analysis would not
  change the outcome.  (e.g. qt5-qmake failed to be analyzed, but
  qtbase-opensource-src also ships qtbase5-private-dev which shows time_t
  ABI sensitivity.)


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

My understanding is that this will also result in a perl ABI transition,
separately from the libperl ABI transition; since this dependency isn't
calculated via shlibs it was not automatically included in this analysis.
This seems to be at most about 600 additional packages to be included in the
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