Package: gtk+2.0 / 2.24.32-3

gtk-queryimmodules.c-Make-the-output-deterministic.patch Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
From: Chris Lamb <chris@chris-lamb.co.uk>
Date: Fri, 25 Aug 2017 16:24:38 +0100
Subject: gtk/queryimmodules.c: Make the output deterministic.

Whilst working on the Reproducible Builds effort [0], we noticed that
queryimmodules generates non-reproducible output as it iterates over the
filesystem without sorting.

Patch attached.

 [0] https://reproducible-builds.org/

Signed-off-by: Chris Lamb <lamby@debian.org>

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=786528
Bug-Debian: https://bugs.debian.org/872729
Applied-upstream: 2.24.33, commit:78c34e11c3021cdf1f2f6beadad9c40c6da76464
---
 gtk/queryimmodules.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/gtk/queryimmodules.c b/gtk/queryimmodules.c
index a91ea47..e87391b 100644
--- a/gtk/queryimmodules.c
+++ b/gtk/queryimmodules.c
@@ -204,13 +204,19 @@ int main (int argc, char **argv)
             if (dir)
               {
                 const char *dent;
+                GList *list = NULL, *iterator = NULL;
 
                 while ((dent = g_dir_read_name (dir)))
+                  list = g_list_prepend (list, g_strdup (dent));
+
+                list = g_list_sort (list, (GCompareFunc) strcmp);
+                for (iterator = list; iterator; iterator = iterator->next)
                   {
-                    if (g_str_has_suffix (dent, SOEXT))
-                      error |= query_module (dirs[i], dent, contents);
+                    if (g_str_has_suffix (iterator->data, SOEXT))
+                      error |= query_module (dirs[i], iterator->data, contents);
                   }
 
+                g_list_free_full (list, g_free);
                 g_dir_close (dir);
               }