xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-bsp/grub/files/determinism.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunFrom b6f9b3f6fa782807c4a7ec16ee8ef868cdfbf468 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Naveen Saini <naveen.kumar.saini@intel.com>
3*4882a593SmuzhiyunDate: Mon, 15 Mar 2021 14:56:18 +0800
4*4882a593SmuzhiyunSubject: [PATCH] The output in moddep.lst generated from syminfo.lst using
5*4882a593Smuzhiyun genmoddep.awk is not deterministic since the order of the dependencies on
6*4882a593Smuzhiyun each line can vary depending on how awk sorts the values in the array.
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunBe deterministic in the output by sorting the dependencies on each line.
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunAlso, the output of the SOURCES lines in grub-core/Makefile.core.am, generated
11*4882a593Smuzhiyunfrom grub-core/Makefile.core.def with gentpl.py is not deterministic due to
12*4882a593Smuzhiyunmissing sorting of the list used to generate it. Add such a sort.
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunAlso ensure the generated unidata.c file is deterministic by sorting the
15*4882a593Smuzhiyunkeys of the dict.
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunUpstream-Status: Pending
18*4882a593SmuzhiyunRichard Purdie <richard.purdie@linuxfoundation.org>
19*4882a593SmuzhiyunSigned-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
20*4882a593Smuzhiyun---
21*4882a593Smuzhiyun gentpl.py               | 1 +
22*4882a593Smuzhiyun grub-core/genmoddep.awk | 4 +++-
23*4882a593Smuzhiyun util/import_unicode.py  | 2 +-
24*4882a593Smuzhiyun 3 files changed, 5 insertions(+), 2 deletions(-)
25*4882a593Smuzhiyun
26*4882a593Smuzhiyundiff --git a/gentpl.py b/gentpl.py
27*4882a593Smuzhiyunindex c86550d4f..589285192 100644
28*4882a593Smuzhiyun--- a/gentpl.py
29*4882a593Smuzhiyun+++ b/gentpl.py
30*4882a593Smuzhiyun@@ -568,6 +568,7 @@ def foreach_platform_value(defn, platform, suffix, closure):
31*4882a593Smuzhiyun     for group in RMAP[platform]:
32*4882a593Smuzhiyun         for value in defn.find_all(group + suffix):
33*4882a593Smuzhiyun             r.append(closure(value))
34*4882a593Smuzhiyun+    r.sort()
35*4882a593Smuzhiyun     return ''.join(r)
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun def platform_conditional(platform, closure):
38*4882a593Smuzhiyundiff --git a/grub-core/genmoddep.awk b/grub-core/genmoddep.awk
39*4882a593Smuzhiyunindex 04c2863e5..247436392 100644
40*4882a593Smuzhiyun--- a/grub-core/genmoddep.awk
41*4882a593Smuzhiyun+++ b/grub-core/genmoddep.awk
42*4882a593Smuzhiyun@@ -59,7 +59,9 @@ END {
43*4882a593Smuzhiyun     }
44*4882a593Smuzhiyun     modlist = ""
45*4882a593Smuzhiyun     depcount[mod] = 0
46*4882a593Smuzhiyun-    for (depmod in uniqmods) {
47*4882a593Smuzhiyun+    n = asorti(uniqmods, w)
48*4882a593Smuzhiyun+    for (i = 1; i <= n; i++) {
49*4882a593Smuzhiyun+      depmod = w[i]
50*4882a593Smuzhiyun       modlist = modlist " " depmod;
51*4882a593Smuzhiyun       inverse_dependencies[depmod] = inverse_dependencies[depmod] " " mod
52*4882a593Smuzhiyun       depcount[mod]++
53*4882a593Smuzhiyundiff --git a/util/import_unicode.py b/util/import_unicode.py
54*4882a593Smuzhiyunindex 08f80591e..1f434a069 100644
55*4882a593Smuzhiyun--- a/util/import_unicode.py
56*4882a593Smuzhiyun+++ b/util/import_unicode.py
57*4882a593Smuzhiyun@@ -174,7 +174,7 @@ infile.close ()
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun outfile.write ("struct grub_unicode_arabic_shape grub_unicode_arabic_shapes[] = {\n ")
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun-for x in arabicsubst:
62*4882a593Smuzhiyun+for x in sorted(arabicsubst):
63*4882a593Smuzhiyun     try:
64*4882a593Smuzhiyun         if arabicsubst[x]['join'] == "DUAL":
65*4882a593Smuzhiyun             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]))
66*4882a593Smuzhiyun--
67*4882a593Smuzhiyun2.17.1
68*4882a593Smuzhiyun
69