[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: 64-bit time_t transition in progress



Thank you for your rigorous scrutiny regarding the proposed plan.

It was a blindspot on my part that dpkg-buildflags was not a policy mandate,
because by this point I'm quite *used* to using dpkg-buildflags to manage
transitions in the default build flags for the compiler.

What I hadn't taken into account is that in those previous transitions, the
consequence of failing to use dpkg-buildflags in a small number of packages
was that those packages did not get certain improvements (in QA,
performance, security, etc) - whereas in this case the consequence of
missing these flags is instead a potentially critical crasher bug due to ABI
skew.

I am delayed in responding to this feedback in part because the realization
pulled me up short and caused me to have to take stock internally of the
overall transition plan.

I think we do need to change the default gcc behavior on our 32-bit archs to
correctly manage this transition.  I believe the correct sequence now should
be:

 - change (the default) gcc to emit the necessary preprocessor flags by
   default.
 - also change dpkg-buildflags to emit them by default (abi=+time64:
   -D[...]; abi=-time64: -U[...]).
 - do the mass uploads to unstable.

(I don't think the critical path here should block on changing the default
behavior of non-default compilers - either non-default gcc versions or llvm. 
Packages that *both* use a non-default C compiler to build *and* don't honor
dpkg-buildflags are a corner case, and we can identify any affected packages
retrospectively rather than having them delay the main event to the
detriment of other development in unstable.)

On Wed, Feb 07, 2024 at 10:12:33AM +0000, Bill Allombert wrote:
> Le Fri, Feb 02, 2024 at 08:23:42PM +0100, Bill Allombert a écrit :
> > > I don't see any practical reason why not.

> > Because packages are not required to use dpkg-buildflags.

> And more generally, does this scheme will require to build third-party
> packages on 32bit Debian system to set
> CFLAGS=D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64
> or will this be made the default in gcc or glibc ?

On Thu, Feb 08, 2024 at 08:07:19PM +0100, Ansgar wrote:
> On Fri, 2024-02-02 at 08:21 -0800, Steve Langasek wrote:
> > Once all of these packages have built in experimental and we have identified
> > and addressed all adverse interactions with the usrmerge transition, the
> > plan is:

> >  - dpkg uploaded to unstable with abi=time64 enabled by default[5]

> How does this work when a user builds their own software using any
> library build with abi=time64? They will still get a 32bit time_t &
> others unless they use dpkg-buildflags as well, won't they?

> If we already change ABI, why not change this in the toolchain (glibc,
> gcc) so also user-build packages use the correct ABI? That was what
> happened for other ABI changes like the C++ ABI change as far as I
> remember.

Right: addressing this in the default behavior of the default compiler sorts
out the non-package build question also.

I (and colleagues on the Ubuntu Foundations team) will work with the gcc
maintainer to establish a timeline for when we can have such a change
landed.

-- 
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/
slangasek@ubuntu.com                                     vorlon@debian.org

Attachment: signature.asc
Description: PGP signature


Reply to: