From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.65; helo=mga03.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 907D82119EBF7 for ; Thu, 3 Jan 2019 17:18:49 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Jan 2019 17:18:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,437,1539673200"; d="scan'208";a="115322285" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga003.jf.intel.com with ESMTP; 03 Jan 2019 17:18:49 -0800 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 3 Jan 2019 17:18:48 -0800 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by fmsmsx111.amr.corp.intel.com (10.18.116.5) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 3 Jan 2019 17:18:47 -0800 Received: from shsmsx152.ccr.corp.intel.com ([169.254.6.44]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.150]) with mapi id 14.03.0415.000; Fri, 4 Jan 2019 09:18:46 +0800 From: "Gao, Liming" To: "Feng, Bob C" , "edk2-devel@lists.01.org" Thread-Topic: [edk2] [Patch] BaseTools: Correct PcdArray value assigment statement Thread-Index: AQHUn1KR0DwE+h7y80mXNw8YjzdY+aWeWDTQ Date: Fri, 4 Jan 2019 01:18:44 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E3A7F1E@SHSMSX152.ccr.corp.intel.com> References: <20181229084308.43512-1-bob.c.feng@intel.com> In-Reply-To: <20181229084308.43512-1-bob.c.feng@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch] BaseTools: Correct PcdArray value assigment statement X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Jan 2019 01:18:50 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Liming Gao >-----Original Message----- >From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of >BobCF >Sent: Saturday, December 29, 2018 4:43 PM >To: edk2-devel@lists.01.org >Cc: Gao, Liming >Subject: [edk2] [Patch] BaseTools: Correct PcdArray value assigment >statement > >https://bugzilla.tianocore.org/show_bug.cgi?id=3D1410 >BaseTools should not generate C structure array initial value >if the value is not specified with CODE style. > >This patch is going to remove the incorrect initial value statement >and correct the Pcd Array value assignment statement. > >Contributed-under: TianoCore Contribution Agreement 1.1 >Signed-off-by: Bob Feng >Cc: Liming Gao >--- > .../Python/Workspace/BuildClassObject.py | 1 - > .../Source/Python/Workspace/DscBuildData.py | 117 +++++++++++------- > 2 files changed, 73 insertions(+), 45 deletions(-) > >diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py >b/BaseTools/Source/Python/Workspace/BuildClassObject.py >index 52b3369561..73920c5153 100644 >--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py >+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py >@@ -99,11 +99,10 @@ class PcdClassObject(object): > for demesionattr in self.DefaultValues: > deme =3D ArrayIndex.findall(demesionattr) > for i in range(len(deme)-1): > if int(deme[i].lstrip("[").rstrip("]").strip()) > int= (self._Capacity[i]): > print "error" >- self._Capacity =3D [str(int(d) + 1) for d in self._Capacity] > return self._Capacity > @property > def DatumType(self): > return self._DatumType > >diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py >b/BaseTools/Source/Python/Workspace/DscBuildData.py >index 7f6e966b5f..7e82e8e934 100644 >--- a/BaseTools/Source/Python/Workspace/DscBuildData.py >+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py >@@ -1738,21 +1738,26 @@ class DscBuildData(PlatformBuildClassObject): > > def GenerateSizeFunction(self, Pcd): > CApp =3D "// Default Value in Dec \n" > CApp =3D CApp + "void Cal_%s_%s_Size(UINT32 *Size){\n" % >(Pcd.TokenSpaceGuidCName, Pcd.TokenCName) > if Pcd.IsArray(): >- if (len(Pcd.Capacity) =3D=3D 1 and Pcd.Capacity[0] !=3D '0') = or >(len(Pcd.Capacity) >1 and reduce(lambda x,y:int(x)*int(y), Pcd.Capacity)) = > 0: >- CApp +=3D " *Size =3D (sizeof (%s) * (%s) > *Size) ? siz= eof (%s) * (%s): >*Size; \n" % (Pcd.BaseDatumType, >"*".join(Pcd.Capacity),Pcd.BaseDatumType, "*".join(Pcd.Capacity)) >- if "{CODE(" in Pcd.DefaultValueFromDec: >- CApp +=3D " *Size =3D (sizeof (%s_%s_INIT_Value) > *Size= ? sizeof >(%s_%s_INIT_Value) : *Size);\n" % >(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Pcd.TokenSpaceGuidCName, >Pcd.TokenCName) >- for skuname in Pcd.SkuInfoList: >- skuobj =3D Pcd.SkuInfoList[skuname] >- if skuobj.VariableName: >- for defaultstore in skuobj.DefaultStoreDict: >- CApp +=3D " *Size =3D (sizeof (%s_%s_%s_%s_Value= ) > *Size ? sizeof >(%s_%s_%s_%s_Value) : *Size);\n" % >(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore,Pcd.T >okenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore) >- else: >- CApp +=3D " *Size =3D (sizeof (%s_%s_%s_%s_Value) > = *Size ? sizeof >(%s_%s_%s_%s_Value) : *Size);\n" % >(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STO >RES_DEFAULT,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_ >DEFAULT_STORES_DEFAULT) >+ if Pcd.Type in PCD_DYNAMIC_TYPE_SET | >PCD_DYNAMIC_EX_TYPE_SET: >+ for skuname in Pcd.SkuInfoList: >+ skuobj =3D Pcd.SkuInfoList[skuname] >+ if skuobj.VariableName: >+ for defaultstore in skuobj.DefaultStoreDict: >+ pcddef =3D >self.GetPcdDscRawDefaultValue(Pcd,skuname,defaultstore) >+ if pcddef and "{CODE(" in pcddef: >+ CApp +=3D " *Size =3D (sizeof (%s_%s_%s_= %s_Value) > *Size ? >sizeof (%s_%s_%s_%s_Value) : *Size);\n" % >(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore,Pcd.T >okenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore) >+ else: >+ pcddef =3D >self.GetPcdDscRawDefaultValue(Pcd,skuname,TAB_DEFAULT_STORES_DEFA >ULT) >+ if pcddef and "{CODE(" in pcddef: >+ CApp +=3D " *Size =3D (sizeof (%s_%s_%s_%s_V= alue) > *Size ? >sizeof (%s_%s_%s_%s_Value) : *Size);\n" % >(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STO >RES_DEFAULT,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_ >DEFAULT_STORES_DEFAULT) >+ else: >+ pcddef =3D >self.GetPcdDscRawDefaultValue(Pcd,TAB_DEFAULT,TAB_DEFAULT_STORES_ >DEFAULT) >+ if pcddef and "{CODE(" in pcddef: >+ CApp +=3D " *Size =3D (sizeof (%s_%s_%s_%s_Value) > = *Size ? sizeof >(%s_%s_%s_%s_Value) : *Size);\n" % >(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,TAB_DEFAULT,TAB_DEFAULT >_STORES_DEFAULT,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,TAB_DEFA >ULT,TAB_DEFAULT_STORES_DEFAULT) > for index in Pcd.DefaultValues: > FieldList =3D Pcd.DefaultValues[index] > if not FieldList: > continue > for FieldName in FieldList: >@@ -1860,20 +1865,40 @@ class DscBuildData(PlatformBuildClassObject): > CApp =3D CApp + " *Size =3D (%d > *Size ? %d : *Size); // Th= e Pcd maxsize >is %d \n" % (Pcd.GetPcdMaxSize(), Pcd.GetPcdMaxSize(), >Pcd.GetPcdMaxSize()) > CApp =3D CApp + "}\n" > return CApp > > @staticmethod >- def GenerateSizeStatments(Pcd): >+ def GenerateSizeStatments(Pcd,skuname,defaultstorename): > if Pcd.IsArray(): > r_datatype =3D [Pcd.BaseDatumType] >+ lastoneisEmpty =3D False > for dem in Pcd.Capacity: >- if dem =3D=3D '0': >+ if lastoneisEmpty: >+ EdkLogger.error('Build', FORMAT_INVALID, "Invalid val= ue format >for %s. " % >+ (".".join((Pcd.TokenSpaceGuidCNam= e, >Pcd.TokenCName)))) >+ if dem =3D=3D '0' or dem =3D=3D "-1": > r_datatype.append("[1]") >+ lastoneisEmpty =3D True > else: > r_datatype.append("[" + dem + "]") >- sizebasevalue =3D "(%s / sizeof(%s) + 1)" % >((DscBuildData.GetStructurePcdMaxSize(Pcd), Pcd.BaseDatumType)) >- CApp =3D ' Size =3D sizeof(%s) > %s?sizeof(%s) : %s ;\n' % >( ("".join(r_datatype), sizebasevalue, "".join(r_datatype), sizebasevalue)= ) >+ >+ if Pcd.Type in [MODEL_PCD_DYNAMIC_EX_HII, >MODEL_PCD_DYNAMIC_HII]: >+ PcdDefValue =3D >Pcd.SkuInfoList.get(skuname).DefaultStoreDict.get(defaultstorename) >+ elif Pcd.Type in >[MODEL_PCD_DYNAMIC_EX_DEFAULT,MODEL_PCD_DYNAMIC_VPD,MODEL >_PCD_DYNAMIC_DEFAULT,MODEL_PCD_DYNAMIC_EX_VPD]: >+ PcdDefValue =3D Pcd.SkuInfoList.get(skuname).DefaultValue >+ else: >+ PcdDefValue =3D Pcd.DefaultValue >+ if lastoneisEmpty: >+ if "{CODE(" not in PcdDefValue: >+ sizebasevalue_plus =3D "(%s / sizeof(%s) + 1)" % >((DscBuildData.GetStructurePcdMaxSize(Pcd), "".join(r_datatype))) >+ sizebasevalue =3D "(%s / sizeof(%s))" % >((DscBuildData.GetStructurePcdMaxSize(Pcd), "".join(r_datatype))) >+ sizeof =3D "sizeof(%s)" % Pcd.BaseDatumType >+ CApp =3D ' Size =3D %s %% %s ? %s : %s ;\n' % >( (DscBuildData.GetStructurePcdMaxSize(Pcd), sizeof, sizebasevalue_plus, >sizebasevalue)) >+ else: >+ CApp =3D " Size =3D 0;\n" >+ else: >+ CApp =3D ' Size =3D sizeof(%s);\n' % ("".join(r_datatype= ) ) > else: > CApp =3D ' Size =3D sizeof(%s);\n' % (Pcd.DatumType) > CApp =3D CApp + ' Cal_%s_%s_Size(&Size);\n' % >(Pcd.TokenSpaceGuidCName, Pcd.TokenCName) > return CApp > >@@ -1983,26 +2008,30 @@ class DscBuildData(PlatformBuildClassObject): > @staticmethod > def GenerateDefaultValueAssignStatement(Pcd): > CApp =3D ' Assign_%s_%s_Default_Value(Pcd);\n' % >(Pcd.TokenSpaceGuidCName, Pcd.TokenCName) > return CApp > >+ def GetPcdDscRawDefaultValue(self,Pcd, SkuName,DefaultStoreName): >+ if Pcd.Type in PCD_DYNAMIC_TYPE_SET or Pcd.Type in >PCD_DYNAMIC_EX_TYPE_SET: >+ if (SkuName, DefaultStoreName) =3D=3D (TAB_DEFAULT, >TAB_DEFAULT_STORES_DEFAULT): >+ pcddefaultvalue =3D Pcd.DefaultFromDSC.get(TAB_DEFAULT, >{}).get(TAB_DEFAULT_STORES_DEFAULT) if Pcd.DefaultFromDSC else None >+ else: >+ pcddefaultvalue =3D Pcd.DscRawValue.get(SkuName, >{}).get(DefaultStoreName) >+ else: >+ pcddefaultvalue =3D Pcd.DscRawValue.get(SkuName, >{}).get(TAB_DEFAULT_STORES_DEFAULT) >+ >+ return pcddefaultvalue > def GenerateInitValueFunction(self, Pcd, SkuName, DefaultStoreName): > CApp =3D "// Value in Dsc for Sku: %s, DefaultStore %s\n" % (SkuN= ame, >DefaultStoreName) > CApp =3D CApp + "void Assign_%s_%s_%s_%s_Value(%s *Pcd){\n" % >(Pcd.TokenSpaceGuidCName, Pcd.TokenCName, SkuName, >DefaultStoreName, Pcd.BaseDatumType) > CApp =3D CApp + ' UINT32 FieldSize;\n' > CApp =3D CApp + ' CHAR8 *Value;\n' > > CApp =3D CApp + "// SkuName: %s, DefaultStoreName: %s \n" % >(TAB_DEFAULT, TAB_DEFAULT_STORES_DEFAULT) > inherit_OverrideValues =3D Pcd.SkuOverrideValues[SkuName] >- if Pcd.Type in PCD_DYNAMIC_TYPE_SET or Pcd.Type in >PCD_DYNAMIC_EX_TYPE_SET: >- if (SkuName, DefaultStoreName) =3D=3D (TAB_DEFAULT, >TAB_DEFAULT_STORES_DEFAULT): >- pcddefaultvalue =3D Pcd.DefaultFromDSC.get(TAB_DEFAULT, >{}).get(TAB_DEFAULT_STORES_DEFAULT) if Pcd.DefaultFromDSC else None >- else: >- pcddefaultvalue =3D Pcd.DscRawValue.get(SkuName, >{}).get(DefaultStoreName) >- else: >- pcddefaultvalue =3D Pcd.DscRawValue.get(SkuName, >{}).get(TAB_DEFAULT_STORES_DEFAULT) > >+ pcddefaultvalue =3D self.GetPcdDscRawDefaultValue(Pcd, SkuName, >DefaultStoreName) > if pcddefaultvalue: > FieldList =3D pcddefaultvalue > IsArray =3D IsFieldValueAnArray(FieldList) > if IsArray: > if "{CODE(" not in FieldList: >@@ -2021,11 +2050,11 @@ class DscBuildData(PlatformBuildClassObject): > CApp =3D CApp + ' Pcd =3D %s; // From DSC Defaul= t Value %s\n' % >(Value, Pcd.DefaultFromDSC.get(TAB_DEFAULT, >{}).get(TAB_DEFAULT_STORES_DEFAULT, Pcd.DefaultValue) if >Pcd.DefaultFromDSC else Pcd.DefaultValue) > elif IsArray: > # > # Use memcpy() to copy value into field > # >- if Pcd.IsArray(): >+ if Pcd.IsArray() and "{CODE(" in pcddefaultvalue: > CApp =3D CApp + ' memcpy (Pcd, %s_%s_%s_%s_Value= , >sizeof(%s_%s_%s_%s_Value));\n' % (Pcd.TokenSpaceGuidCName, >Pcd.TokenCName,SkuName, DefaultStoreName,Pcd.TokenSpaceGuidCName, >Pcd.TokenCName,SkuName, DefaultStoreName) > else: > CApp =3D CApp + ' Value =3D %s; // From DSC = Default Value %s\n' % >(DscBuildData.IntToCString(Value, ValueSize), >Pcd.DefaultFromDSC.get(TAB_DEFAULT, >{}).get(TAB_DEFAULT_STORES_DEFAULT, Pcd.DefaultValue) if >Pcd.DefaultFromDSC else Pcd.DefaultValue) > CApp =3D CApp + ' memcpy (Pcd, Value, %d);\n' % = (ValueSize) > else: >@@ -2036,11 +2065,11 @@ class DscBuildData(PlatformBuildClassObject): > CApp =3D CApp + ' Pcd =3D %s; // From DSC Defaul= t Value %s\n' % >(Value, Pcd.DscRawValue.get(SkuName, {}).get(DefaultStoreName)) > elif IsArray: > # > # Use memcpy() to copy value into field > # >- if Pcd.IsArray(): >+ if Pcd.IsArray() and "{CODE(" in pcddefaultvalue: > CApp =3D CApp + ' memcpy (Pcd, %s_%s_%s_%s_Value= , >sizeof(%s_%s_%s_%s_Value));\n' % (Pcd.TokenSpaceGuidCName, >Pcd.TokenCName,SkuName, DefaultStoreName,Pcd.TokenSpaceGuidCName, >Pcd.TokenCName,SkuName, DefaultStoreName) > else: > CApp =3D CApp + ' Value =3D %s; // From DSC = Default Value %s\n' % >(DscBuildData.IntToCString(Value, ValueSize), >Pcd.DscRawValue.get(SkuName, {}).get(DefaultStoreName)) > CApp =3D CApp + ' memcpy (Pcd, Value, %d);\n' % = (ValueSize) > >@@ -2266,11 +2295,11 @@ class DscBuildData(PlatformBuildClassObject): > # array member is detected, and the size is based on the high= est index >used with > # the flexible array member. The flexible array member must = be the >last field > # in a structure. The size formula for this case is: > # OFFSET_OF(FlexbleArrayField) + sizeof(FlexibleArray[0]) * >(HighestIndex + 1) > # >- CApp =3D CApp + DscBuildData.GenerateSizeStatments(Pcd) >+ CApp =3D CApp + >DscBuildData.GenerateSizeStatments(Pcd,SkuName,DefaultStoreName) > > # > # Allocate and zero buffer for the PCD > # Must handle cases where current value is smaller, larger, o= r same size > # Always keep that larger one as the current size >@@ -2326,39 +2355,39 @@ class DscBuildData(PlatformBuildClassObject): > Demesion +=3D "[]" > > Value =3D Pcd.DefaultValueFromDec > if "{CODE(" in Pcd.DefaultValueFromDec: > realvalue =3D Pcd.DefaultValueFromDec.strip()[6:-2] # >"{CODE(").rstrip(")}" >- else: >- realvalue =3D Pcd.DefaultValueFromDec.strip() >- CApp +=3D "static %s %s_%s_INIT_Value%s =3D %s;\n" % >(Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Demesi >on,realvalue) >+ CApp +=3D "static %s %s_%s_INIT_Value%s =3D %s;\n" % >(Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Demesi >on,realvalue) > > if Pcd.Type in PCD_DYNAMIC_TYPE_SET | PCD_DYNAMIC_EX_TYPE_SET: > for skuname in Pcd.SkuInfoList: > skuinfo =3D Pcd.SkuInfoList[skuname] > if skuinfo.VariableName: > for defaultstore in skuinfo.DefaultStoreDict: >- Value =3D skuinfo[defaultstore] >+ pcddscrawdefaultvalue =3D self.GetPcdDscRawDefaul= tValue(Pcd, >skuname, defaultstore) >+ if pcddscrawdefaultvalue: >+ Value =3D skuinfo[defaultstore] >+ if "{CODE(" in Value: >+ realvalue =3D Value.strip()[6:-2] # "{COD= E(").rstrip(")}" >+ CApp +=3D "static %s %s_%s_%s_%s_Value%s = =3D %s;\n" % >(Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skunam >e,defaultstore,Demesion,realvalue) >+ else: >+ pcddscrawdefaultvalue =3D self.GetPcdDscRawDefaultVal= ue(Pcd, >skuname, TAB_DEFAULT_STORES_DEFAULT) >+ if pcddscrawdefaultvalue: >+ Value =3D skuinfo.DefaultValue > if "{CODE(" in Value: > realvalue =3D Value.strip()[6:-2] # "{CODE(")= .rstrip(")}" >- else: >- realvalue =3D Value.strip() >- CApp +=3D "static %s %s_%s_%s_%s_Value%s =3D %s;\= n" % >(Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skunam >e,defaultstore,Demesion,realvalue) >- else: >- Value =3D skuinfo.DefaultValue >- if "{CODE(" in Value: >- realvalue =3D Value.strip()[6:-2] # "{CODE(").rst= rip(")}" >- else: >- realvalue =3D Value.strip() >- CApp +=3D "static %s %s_%s_%s_%s_Value%s =3D %s;\n" % >(Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skunam >e,TAB_DEFAULT_STORES_DEFAULT,Demesion,realvalue) >+ CApp +=3D "static %s %s_%s_%s_%s_Value%s =3D = %s;\n" % >(Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skunam >e,TAB_DEFAULT_STORES_DEFAULT,Demesion,realvalue) > else: >- if "{CODE(" in Pcd.DefaultValue: >- realvalue =3D Pcd.DefaultValue.strip()[6:-2] # "{CODE(").= rstrip(")}" >- else: >- realvalue =3D Pcd.DefaultValue.strip() >- CApp +=3D "static %s %s_%s_DEFAULT_STANDARD_Value%s =3D %s;\n= " % >(Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Demesi >on,realvalue) >+ pcddscrawdefaultvalue =3D self.GetPcdDscRawDefaultValue(Pcd, >TAB_DEFAULT, TAB_DEFAULT_STORES_DEFAULT) >+ if pcddscrawdefaultvalue: >+ if "{CODE(" in Pcd.DefaultValue: >+ realvalue =3D Pcd.DefaultValue.strip()[6:-2] # "{CODE= (").rstrip(")}" >+ CApp +=3D "static %s %s_%s_DEFAULT_STANDARD_Value%s >=3D %s;\n" % >(Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Demesi >on,realvalue) >+ > return CApp >+ > def SkuOverrideValuesEmpty(self,OverrideValues): > if not OverrideValues: > return True > for key in OverrideValues: > if OverrideValues[key]: >-- >2.19.1.windows.1 > >_______________________________________________ >edk2-devel mailing list >edk2-devel@lists.01.org >https://lists.01.org/mailman/listinfo/edk2-devel