Control: reassign -1 adns [ Leaving most of the context intact for the adns maintainer. ]
Hi! On Thu, 2026-05-21 at 11:29:39 +0300, Adrian Bunk wrote: > Control: reassign -1 dpkg > Control: retitle -1 Randomness in dependencies when symbols with different > but equal versions are used > > On Thu, May 21, 2026 at 09:40:49AM +0200, Jochen Sprickerhof wrote: > > Package: release.debian.org > > Severity: normal > > X-Debbugs-Cc: [email protected], [email protected] > > Control: affects -1 + src:tetrinetx > > User: [email protected] > > Usertags: armhf > > User: [email protected] > > Usertags: binnmu > > can you please trigger a binNMU of tetrinetx for reproduce.d.n: > > > > nmu tetrinetx_1.13.16-22 . armhf . unstable . -m "Rebuild to fix Depends:" > > > > We currently have this diff: > > > > -Depends: libadns1t64 (>= 1.5.0~0), libc6 (>= 2.38) > > +Depends: libadns1t64 (>= 1.5.0~), libc6 (>= 2.38) > > > > And I can't reproduce the buildd version with the 0 locally in a fresh > > sbuild chroot. I assume it was some bit flip on the buildds. > > The same happened on hppa, which rules out a bit flip. > > The root cause is in dpkg. > > I do not understand the source of non-determinism in the output, > but symbols with different but equal versions are used by tetrinetx: > > $ dpkg --compare-versions "1.5.0~0" "=" "1.5.0~" > $ echo $? > 0 > $ So the cause for this seems to stem from the adns symbols file containing most symbols with 1.5.0~ and a couple with 1.5.0~0 versions. Depending on how the symbols appear in the reverse dependency binaries, then the emitted versions would be either one of those. I think this should be fixed in adns, because this seems to be currently triggering "undefined behavior" from dpkg-dev tools. Then while pondering whether this should also be improved or changed in dpkg-dev tools, I thought there were two potential main avenues (or variations over these): a) The tools could normalize the versions, so that versions that are version-wise equal, but string-wise different would not cause this kind of problem. This would diverge from our current version handling which is "preserving", and could have unintended fallout. I don't think this is the correct way to go. b) The tools could start doing version-wise comparisons, and if the versions are equal, then do a string-wise comparison for sorting purposes. While this would preserve the versions and would solve this kind of problem, it seems rather cumbersome, and then we'd need to make any other tool evaluating versions do the same. So this does not look enticing either. Also similar issues can be triggered for example with versioned dependency simplification when combined with substvars generation (where different substvars could be generated in random order). So, I think just keeping it as "undefined behavior" from dpkg PoV looks fine to me, unless someone has a better idea, and getting adns fixed should solve this specific issue. The attached diff should accomplish this. Thanks, Guillem
diff --git i/debian/libadns1t64.symbols w/debian/libadns1t64.symbols index 97f9470..7d16f5c 100644 --- i/debian/libadns1t64.symbols +++ w/debian/libadns1t64.symbols @@ -24,10 +24,10 @@ libadns.so.1 libadns1t64 #MINVER# adns_processwriteable@Base 1.5.0~ adns_rr_info@Base 1.5.0~ adns_strerror@Base 1.5.0~ - adns_submit@Base 1.5.0~0 + adns_submit@Base 1.5.0~ adns_submit_reverse@Base 1.5.0~ adns_submit_reverse_any@Base 1.5.0~ - adns_synchronous@Base 1.5.0~0 + adns_synchronous@Base 1.5.0~ adns_wait@Base 1.5.0~ adns_wait_poll@Base 1.5.0~ adns_addr2text@Base 1.5.0~

