Bug#1061928: avro-c: NMU diff for 64-bit time_t transition

2024-01-30 Thread Steve Langasek
On Tue, Jan 30, 2024 at 04:27:49PM -0500, Robert Edmonds wrote:

> I guess you have to do it that way since there isn't really anything
> universal and machine readable that says: this is the public API header
> file to include to use this library.

Exactly.  Though there are good practices (I hesitate to say "best") that
would make headers no-ops if included directly when they shouldn't be, etc.

> > This shows there are headers that can't be compiled because they're
> > Windows-specific.  So it seems counterproductive to ship these at all in
> > Debian?

> > If this header were removed from the package, or if a quirk were added to
> > https://salsa.debian.org/vorlon/armhf-time_t/-/blob/main/check-armhf-time_t?ref_type=heads
> > to exclude the incorrect headers from the analysis, we could confirm that
> > avro-c is unaffected and avoid unnecessary NMUs / transitions to unstable.

> If there is a way to quirk the avro-c package for this analysis so you
> only include /usr/include/avro.h rather than every header file shipped
> in the -dev package I think it would let your analysis succeed, without
> missing anything, and, I would guess that that analysis would show no
> ABI changes and thus no ABI transition is necessary.

> I'm also open to just dropping those ms*.h files from the -dev package
> which should just work without any other changes without breaking
> anything else, but I haven't tested it.

It looks like my colleague has already re-tested (with a local change, not
yet published to either of https://salsa.debian.org/vorlon/armhf-time_t/ or
https://salsa.debian.org/adrien-n/armhf-time_t/) and confirmed that avro-c's
ABI is unaffected.  (It's important to confirm with a full compile test
because there are a number of types besides bare time_t that could be
affected and overlooked with a bare grep or so.)

We will make sure that this gets fully integrated into the published test
results and that avro-c does not get NMUed to unstable for this.

In the meantime I suggest leaving this bug report open for tracking.

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


Bug#1061928: avro-c: NMU diff for 64-bit time_t transition

2024-01-30 Thread Robert Edmonds
Steve Langasek wrote:
> Hi Robert,
> 
> On Tue, Jan 30, 2024 at 02:05:11PM -0500, Robert Edmonds wrote:
> > Steve Langasek wrote:
> > > As part of the 64-bit time_t transition required to support 32-bit
> > > architectures in 2038 and beyond
> > > (https://wiki.debian.org/ReleaseGoals/64bit-time), we have identified
> > > avro-c as a source package shipping runtime libraries whose ABI
> > > either is affected by the change in size of time_t, or could not be
> > > analyzed via abi-compliance-checker (and therefore to be on the safe
> > > side we assume is affected).
> 
> > Hi, Steve:
> 
> > I'm not aware of anything in avro-c that embeds time_t, or really any
> > platform-provided structs, into the API/ABI. Can you point me to the
> > actual changes in the avro-c ABI due to this change?
> 
> > Thanks!
> 
> avro-c falls into the second of these categories, "or could not be analyzed
> and therefore we assume is affected".
> 
> Output of the attempt to analyze the package with abi-compliance-checker:
> https://adrien.dcln.fr/misc/armhf-time_t/2024-01-17/logs/libavro-dev/base/log.txt

Ah, I see, so basically every header in the -dev package is getting
included:

  // add includes
  #include "/usr/include/avro/allocation.h"
  #include "/usr/include/avro/basics.h"
  #include "/usr/include/avro/consumer.h"
  #include "/usr/include/avro/data.h"
  #include "/usr/include/avro/errors.h"
  #include "/usr/include/avro/generic.h"
  #include "/usr/include/avro/io.h"
  #include "/usr/include/avro/legacy.h"
  #include "/usr/include/avro/msinttypes.h"
  #include "/usr/include/avro/msstdint.h"
  #include "/usr/include/avro/platform.h"
  #include "/usr/include/avro/refcount.h"
  #include "/usr/include/avro/resolver.h"
  #include "/usr/include/avro/schema.h"
  #include "/usr/include/avro/value.h"
  #include "/usr/include/avro.h"

I guess you have to do it that way since there isn't really anything
universal and machine readable that says: this is the public API header
file to include to use this library.

For avro-c in particular the documentation of the library is here:

https://avro.apache.org/docs/1.11.1/api/c/

And they only mention including  to users of the library. So
those headers that work around problems on Microsoft platforms don't end
up getting included on other systems since the #include's of those
headers are conditionalized.

> This shows there are headers that can't be compiled because they're
> Windows-specific.  So it seems counterproductive to ship these at all in
> Debian?
> 
> If this header were removed from the package, or if a quirk were added to
> https://salsa.debian.org/vorlon/armhf-time_t/-/blob/main/check-armhf-time_t?ref_type=heads
> to exclude the incorrect headers from the analysis, we could confirm that
> avro-c is unaffected and avoid unnecessary NMUs / transitions to unstable.

If there is a way to quirk the avro-c package for this analysis so you
only include /usr/include/avro.h rather than every header file shipped
in the -dev package I think it would let your analysis succeed, without
missing anything, and, I would guess that that analysis would show no
ABI changes and thus no ABI transition is necessary.

I'm also open to just dropping those ms*.h files from the -dev package
which should just work without any other changes without breaking
anything else, but I haven't tested it.

Thanks!

-- 
Robert Edmonds
edmo...@debian.org



Bug#1061928: avro-c: NMU diff for 64-bit time_t transition

2024-01-30 Thread Steve Langasek
Hi Robert,

On Tue, Jan 30, 2024 at 02:05:11PM -0500, Robert Edmonds wrote:
> Steve Langasek wrote:
> > As part of the 64-bit time_t transition required to support 32-bit
> > architectures in 2038 and beyond
> > (https://wiki.debian.org/ReleaseGoals/64bit-time), we have identified
> > avro-c as a source package shipping runtime libraries whose ABI
> > either is affected by the change in size of time_t, or could not be
> > analyzed via abi-compliance-checker (and therefore to be on the safe
> > side we assume is affected).

> Hi, Steve:

> I'm not aware of anything in avro-c that embeds time_t, or really any
> platform-provided structs, into the API/ABI. Can you point me to the
> actual changes in the avro-c ABI due to this change?

> Thanks!

avro-c falls into the second of these categories, "or could not be analyzed
and therefore we assume is affected".

Output of the attempt to analyze the package with abi-compliance-checker:
https://adrien.dcln.fr/misc/armhf-time_t/2024-01-17/logs/libavro-dev/base/log.txt

This shows there are headers that can't be compiled because they're
Windows-specific.  So it seems counterproductive to ship these at all in
Debian?

If this header were removed from the package, or if a quirk were added to
https://salsa.debian.org/vorlon/armhf-time_t/-/blob/main/check-armhf-time_t?ref_type=heads
to exclude the incorrect headers from the analysis, we could confirm that
avro-c is unaffected and avoid unnecessary NMUs / transitions to unstable.

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


Bug#1061928: avro-c: NMU diff for 64-bit time_t transition

2024-01-30 Thread Robert Edmonds
Steve Langasek wrote:
> As part of the 64-bit time_t transition required to support 32-bit
> architectures in 2038 and beyond
> (https://wiki.debian.org/ReleaseGoals/64bit-time), we have identified
> avro-c as a source package shipping runtime libraries whose ABI
> either is affected by the change in size of time_t, or could not be
> analyzed via abi-compliance-checker (and therefore to be on the safe
> side we assume is affected).

Hi, Steve:

I'm not aware of anything in avro-c that embeds time_t, or really any
platform-provided structs, into the API/ABI. Can you point me to the
actual changes in the avro-c ABI due to this change?

Thanks!

-- 
Robert Edmonds
edmo...@debian.org



Bug#1061928: avro-c: NMU diff for 64-bit time_t transition

2024-01-29 Thread Steve Langasek
Source: avro-c
Version: 1.11.1-1
Severity: serious
Tags: patch pending
Justification: library ABI skew on upgrade
User: debian-...@lists.debian.org
Usertags: time-t

Dear maintainer,

As part of the 64-bit time_t transition required to support 32-bit
architectures in 2038 and beyond
(https://wiki.debian.org/ReleaseGoals/64bit-time), we have identified
avro-c as a source package shipping runtime libraries whose ABI
either is affected by the change in size of time_t, or could not be
analyzed via abi-compliance-checker (and therefore to be on the safe
side we assume is affected).

To ensure that inconsistent combinations of libraries with their
reverse-dependencies are never installed together, it is necessary to
have a library transition, which is most easily done by renaming the
runtime library package.

Since turning on 64-bit time_t is being handled centrally through a change
to the default dpkg-buildflags (https://bugs.debian.org/1037136), it is
important that libraries affected by this ABI change all be uploaded close
together in time.  Therefore I have prepared a 0-day NMU for avro-c
which will initially be uploaded to experimental if possible, then to
unstable after packages have cleared binary NEW.

Please find the patch for this NMU attached.

If you have any concerns about this patch, please reach out ASAP.  Although
this package will be uploaded to experimental immediately, there will be a
period of several days before we begin uploads to unstable; so if information
becomes available that your package should not be included in the transition,
there is time for us to amend the planned uploads.



-- System Information:
Debian Release: trixie/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 6.5.0-14-generic (SMP w/12 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
diff -Nru avro-c-1.11.1/debian/changelog avro-c-1.11.1/debian/changelog
--- avro-c-1.11.1/debian/changelog  2022-12-21 22:39:31.0 +
+++ avro-c-1.11.1/debian/changelog  2024-01-30 04:28:32.0 +
@@ -1,3 +1,10 @@
+avro-c (1.11.1-1.1) experimental; urgency=medium
+
+  * Non-maintainer upload.
+  * Rename libraries for 64-bit time_t transition.
+
+ -- Steve Langasek   Tue, 30 Jan 2024 04:28:32 +
+
 avro-c (1.11.1-1) unstable; urgency=medium
 
   * New upstream version 1.11.1
diff -Nru avro-c-1.11.1/debian/control avro-c-1.11.1/debian/control
--- avro-c-1.11.1/debian/control2022-12-21 22:39:31.0 +
+++ avro-c-1.11.1/debian/control2024-01-30 04:28:32.0 +
@@ -36,7 +36,10 @@
  .
  This package contains the development files.
 
-Package: libavro23
+Package: libavro23t64
+Provides: ${t64:Provides}
+Replaces: libavro23
+Breaks: libavro23 (<< ${source:Version})
 Section: libs
 Architecture: any
 Multi-Arch: same
diff -Nru avro-c-1.11.1/debian/libavro23.install 
avro-c-1.11.1/debian/libavro23.install
--- avro-c-1.11.1/debian/libavro23.install  2022-12-21 22:39:31.0 
+
+++ avro-c-1.11.1/debian/libavro23.install  1970-01-01 00:00:00.0 
+
@@ -1 +0,0 @@
-usr/lib/*/lib*.so.*
diff -Nru avro-c-1.11.1/debian/libavro23.shlibs 
avro-c-1.11.1/debian/libavro23.shlibs
--- avro-c-1.11.1/debian/libavro23.shlibs   2022-12-21 22:39:31.0 
+
+++ avro-c-1.11.1/debian/libavro23.shlibs   1970-01-01 00:00:00.0 
+
@@ -1 +0,0 @@
-libavro 23 libavro23
diff -Nru avro-c-1.11.1/debian/libavro23t64.install 
avro-c-1.11.1/debian/libavro23t64.install
--- avro-c-1.11.1/debian/libavro23t64.install   1970-01-01 00:00:00.0 
+
+++ avro-c-1.11.1/debian/libavro23t64.install   2022-12-21 22:39:31.0 
+
@@ -0,0 +1 @@
+usr/lib/*/lib*.so.*
diff -Nru avro-c-1.11.1/debian/libavro23t64.lintian-overrides 
avro-c-1.11.1/debian/libavro23t64.lintian-overrides
--- avro-c-1.11.1/debian/libavro23t64.lintian-overrides 1970-01-01 
00:00:00.0 +
+++ avro-c-1.11.1/debian/libavro23t64.lintian-overrides 2024-01-30 
04:28:32.0 +
@@ -0,0 +1 @@
+libavro23t64: package-name-doesnt-match-sonames libavro23
diff -Nru avro-c-1.11.1/debian/libavro23t64.shlibs 
avro-c-1.11.1/debian/libavro23t64.shlibs
--- avro-c-1.11.1/debian/libavro23t64.shlibs1970-01-01 00:00:00.0 
+
+++ avro-c-1.11.1/debian/libavro23t64.shlibs2024-01-30 04:28:32.0 
+
@@ -0,0 +1 @@
+libavro 23 libavro23t64