blob: 3c1f562c717b47eedbb37e0ca1832760345ef17b [file] [log] [blame]
Andrew Geisslerd1e89492021-02-12 15:35:20 -06001The output in moddep.lst generated from syminfo.lst using genmoddep.awk is
2not deterministic since the order of the dependencies on each line can vary
3depending on how awk sorts the values in the array.
4
5Be deterministic in the output by sorting the dependencies on each line.
6
7Also, the output of the SOURCES lines in grub-core/Makefile.core.am, generated
8from grub-core/Makefile.core.def with gentpl.py is not deterministic due to
9missing sorting of the list used to generate it. Add such a sort.
10
11Also ensure the generated unidata.c file is deterministic by sorting the
12keys of the dict.
13
14Upstream-Status: Pending
15Richard Purdie <richard.purdie@linuxfoundation.org>
16
17Index: grub-2.04/grub-core/genmoddep.awk
18===================================================================
19--- grub-2.04.orig/grub-core/genmoddep.awk
20+++ grub-2.04/grub-core/genmoddep.awk
21@@ -59,7 +59,9 @@ END {
22 }
23 modlist = ""
24 depcount[mod] = 0
25- for (depmod in uniqmods) {
26+ n = asorti(uniqmods, w)
27+ for (i = 1; i <= n; i++) {
28+ depmod = w[i]
29 modlist = modlist " " depmod;
30 inverse_dependencies[depmod] = inverse_dependencies[depmod] " " mod
31 depcount[mod]++
32Index: grub-2.04/gentpl.py
33===================================================================
34--- grub-2.04.orig/gentpl.py
35+++ grub-2.04/gentpl.py
36@@ -568,6 +568,7 @@ def foreach_platform_value(defn, platfor
37 for group in RMAP[platform]:
38 for value in defn.find_all(group + suffix):
39 r.append(closure(value))
40+ r.sort()
41 return ''.join(r)
42
43 def platform_conditional(platform, closure):
44Index: grub-2.04/util/import_unicode.py
45===================================================================
46--- grub-2.04.orig/util/import_unicode.py
47+++ grub-2.04/util/import_unicode.py
48@@ -174,7 +174,7 @@ infile.close ()
49
50 outfile.write ("struct grub_unicode_arabic_shape grub_unicode_arabic_shapes[] = {\n ")
51
52-for x in arabicsubst:
53+for x in sorted(arabicsubst):
54 try:
55 if arabicsubst[x]['join'] == "DUAL":
56 outfile.write ("{0x%x, 0x%x, 0x%x, 0x%x, 0x%x},\n " % (arabicsubst[x][0], arabicsubst[x][1], arabicsubst[x][2], arabicsubst[x][3], arabicsubst[x][4]))