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