Source: nut
Severity: normal
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: randomness
X-Debbugs-Cc: reproducible-b...@lists.alioth.debian.org

The comments for various udev rules list different drivers for some
devices.

  
https://tests.reproducible-builds.org/debian/rb-pkg/unstable/i386/diffoscope-results/nut.html

  /lib/udev/rules.d/62-nut-usbups.rules

  Krauler·UP-M500VA··-·blazer_usb
  vs.
  Krauler·UP-M500VA··-·nutdrv_qx

The udev rules are generated from tools/nut-usbinfo.pl reading the files
in ../drivers/, using perl's File::Find, which does not reliably return
the same file ordering. In some cases, multiple drivers claim support
for a given device, and which driver gets embedded into the udev
comments depends on the order in which the directory contents were
returned.

The attached patch fixes this by sorting the directory output.

With this patch applied, nut should become reproducible on
tests.reproducible-builds.org.

Our test infrastructure seems to only reliably catch this issue on i386
and armhf (e.g. 32-bit architectures).


Thanks for maintaining nut!


live well,
  vagrant
From c18bf3799a6b8dafcfe42c1a0e595ae54b7d3f82 Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian <vagr...@reproducible-builds.org>
Date: Sun, 26 Sep 2021 19:21:00 +0000
Subject: [PATCH] nut-usbinfo.pl: Sort the directory scan results.

The order of the files processed depends on readdir order. As some
devices are supported by multiple drivers, which one gets embedded in
the output (e.g. udev rules) depends on the order of the processed
files.

https://reproducible-builds.org/docs/stable-inputs/
---
 tools/nut-usbinfo.pl | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/nut-usbinfo.pl b/tools/nut-usbinfo.pl
index 2c0dd05..56dd331 100755
--- a/tools/nut-usbinfo.pl
+++ b/tools/nut-usbinfo.pl
@@ -76,7 +76,9 @@ my %vendorName;
 
 ################# MAIN #################
 
-find(\&find_usbdevs,$scanPath);
+find({wanted => \&find_usbdevs,
+      preprocess => sub { sort(@_)}}
+     ,$scanPath);
 &gen_usb_files;
 
 ################# SUB METHOD #################
-- 
2.33.0

Attachment: signature.asc
Description: PGP signature

Reply via email to