Source: grub2
Severity: normal
Tags: patch
User: [email protected]
Usertags: randomness
X-Debbugs-Cc: [email protected]

Both grub-xen-dbg and grub-xen-bin generate their lintian overrides from
debian/rules using find, which may return results in a non-deterministic order:

  
https://reproduce.debian.net/amd64/api/v1/builds/153376/artifacts/383903/diffoscope
  
https://reproduce.debian.net/amd64/api/v1/builds/153376/artifacts/383902/diffoscope

The attached patch sorts each of the find calls used to generate the
lintian overrides, which should result in a deterministic ordering... at
least if the locale is consistent (which it should be with
buildd.debian.org vs. reproduce.debian.net)... the proposed fix for
https://bugs.debian.org/991928 might also help with varying locales.

This does not resolve all reproducibility issues in grub2 (there are a
few other bugs with patches filed that will partly help), but it should
at least fix those two packages!

live well,
  vagrant

From 10c89cf6eaa747211aae7f01409ef7753a9393ec Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian <[email protected]>
Date: Sun, 31 May 2026 20:34:47 -0700
Subject: [PATCH] debian/rules: Sort calls to find when generating lintian
 overrides.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The results of the find command may return files in non-deterministic
order. for example, running diffoscope on two builds of the same package:

--- /srv/rebuilderd/tmp/rebuilderdLk2QMC/inputs/grub-xen-bin_2.14-2_amd64.deb
+++ /srv/rebuilderd/tmp/rebuilderdLk2QMC/out/grub-xen-bin_2.14-2_amd64.deb
...
│ │ ├── ./usr/share/lintian/overrides/grub-xen-bin
│ │ │┄ Ordering differences only
│ │ │ @@ -1,22 +1,22 @@
│ │ │  grub-xen-bin: unstripped-binary-or-object **.mod*
│ │ │ +grub-xen-bin: statically-linked-binary *usr/lib/grub/i386-xen/kernel.img*
│ │ │  grub-xen-bin: statically-linked-binary *usr/lib/grub/i386-xen_pvh/kernel.img*
│ │ │  grub-xen-bin: statically-linked-binary *usr/lib/grub/x86_64-xen/kernel.img*
│ │ │ -grub-xen-bin: statically-linked-binary *usr/lib/grub/i386-xen/kernel.img*
...
│ │ │ +grub-xen-bin: binary-from-other-architecture *usr/lib/grub/i386-xen/kernel.img*
│ │ │  grub-xen-bin: binary-from-other-architecture *usr/lib/grub/i386-xen_pvh/kernel.img*
│ │ │  grub-xen-bin: binary-from-other-architecture *usr/lib/grub/x86_64-xen/kernel.img*
│ │ │ -grub-xen-bin: binary-from-other-architecture *usr/lib/grub/i386-xen/kernel.img*
---
 debian/rules | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/debian/rules b/debian/rules
index e7cefe635..184e8dde8 100755
--- a/debian/rules
+++ b/debian/rules
@@ -439,10 +439,10 @@ install/grub-pc install/grub-efi-ia32 install/grub-efi-amd64 install/grub-efi-ar
 	mkdir -p debian/$(package_bin)/usr/share/lintian/overrides
 	echo "$(package_bin): unstripped-binary-or-object [*.mod]" \
 		>> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin)
-	cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \
+	cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img | sort \
 		| sed -e "s%.*%$(package_bin): statically-linked-binary [&]%g" \
 	>> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin)
-	cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \
+	cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img | sort \
 		| sed -e "s%.*%$(package_bin): unstripped-binary-or-object [&]%g" \
 	>> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin)
 	if ([ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ]) || \
@@ -482,7 +482,7 @@ install/grub-pc install/grub-efi-ia32 install/grub-efi-amd64 install/grub-efi-ar
 		>> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg)
 	echo "$(package_dbg): statically-linked-binary [*.image]" \
 		>> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg)
-	cd debian/tmp-$(package) && find usr/lib/grub -name kernel.exec \
+	cd debian/tmp-$(package) && find usr/lib/grub -name kernel.exec | sort \
 		| sed -e "s%.*%$(package_dbg): statically-linked-binary [&]%g" \
 	>> $(CURDIR)/debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg)
 	if ([ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ]) || \
@@ -490,7 +490,7 @@ install/grub-pc install/grub-efi-ia32 install/grub-efi-amd64 install/grub-efi-ar
 	   [ "$@" = "install/grub-xen" ] ; then \
 		echo "$(package_dbg): binary-from-other-architecture [*.module]" \
 			>> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) ; \
-		cd debian/tmp-$(package) && find usr/lib/grub -name kernel.exec \
+		cd debian/tmp-$(package) && find usr/lib/grub -name kernel.exec | sort \
 			| sed -e "s%.*%$(package_dbg): binary-from-other-architecture [&]%g" \
 		>> $(CURDIR)/debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) ; \
 	fi
-- 
2.47.3

Attachment: signature.asc
Description: PGP signature

Reply via email to