]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Workspace/DscBuildData.py
BaseTools: Remove the old python "not-equal"
[mirror_edk2.git] / BaseTools / Source / Python / Workspace / DscBuildData.py
index 335267ebc576bfa7f80422af57cd6b0656af776b..a80c07bc1e55b56930371d326d0ae4b083a964c2 100644 (file)
@@ -17,7 +17,8 @@
 #  This class is used to retrieve information stored in database and convert them\r
 # into PlatformBuildClassObject form for easier use for AutoGen.\r
 #\r
-from Common.String import *\r
+from __future__ import print_function\r
+from Common.StringUtils import *\r
 from Common.DataType import *\r
 from Common.Misc import *\r
 from types import *\r
@@ -120,7 +121,7 @@ def GetDependencyList(FileStack,SearchPathList):
             try:\r
                 Fd = open(F, 'r')\r
                 FileContent = Fd.read()\r
-            except BaseException, X:\r
+            except BaseException as X:\r
                 EdkLogger.error("build", FILE_OPEN_FAILURE, ExtraData=F + "\n\t" + str(X))\r
             finally:\r
                 if "Fd" in dir(locals()):\r
@@ -158,17 +159,17 @@ def GetDependencyList(FileStack,SearchPathList):
 class DscBuildData(PlatformBuildClassObject):\r
     # dict used to convert PCD type in database to string used by build tool\r
     _PCD_TYPE_STRING_ = {\r
-        MODEL_PCD_FIXED_AT_BUILD        :   "FixedAtBuild",\r
-        MODEL_PCD_PATCHABLE_IN_MODULE   :   "PatchableInModule",\r
-        MODEL_PCD_FEATURE_FLAG          :   "FeatureFlag",\r
-        MODEL_PCD_DYNAMIC               :   "Dynamic",\r
-        MODEL_PCD_DYNAMIC_DEFAULT       :   "Dynamic",\r
-        MODEL_PCD_DYNAMIC_HII           :   "DynamicHii",\r
-        MODEL_PCD_DYNAMIC_VPD           :   "DynamicVpd",\r
-        MODEL_PCD_DYNAMIC_EX            :   "DynamicEx",\r
-        MODEL_PCD_DYNAMIC_EX_DEFAULT    :   "DynamicEx",\r
-        MODEL_PCD_DYNAMIC_EX_HII        :   "DynamicExHii",\r
-        MODEL_PCD_DYNAMIC_EX_VPD        :   "DynamicExVpd",\r
+        MODEL_PCD_FIXED_AT_BUILD        :   TAB_PCDS_FIXED_AT_BUILD,\r
+        MODEL_PCD_PATCHABLE_IN_MODULE   :   TAB_PCDS_PATCHABLE_IN_MODULE,\r
+        MODEL_PCD_FEATURE_FLAG          :   TAB_PCDS_FEATURE_FLAG,\r
+        MODEL_PCD_DYNAMIC               :   TAB_PCDS_DYNAMIC,\r
+        MODEL_PCD_DYNAMIC_DEFAULT       :   TAB_PCDS_DYNAMIC,\r
+        MODEL_PCD_DYNAMIC_HII           :   TAB_PCDS_DYNAMIC_HII,\r
+        MODEL_PCD_DYNAMIC_VPD           :   TAB_PCDS_DYNAMIC_VPD,\r
+        MODEL_PCD_DYNAMIC_EX            :   TAB_PCDS_DYNAMIC_EX,\r
+        MODEL_PCD_DYNAMIC_EX_DEFAULT    :   TAB_PCDS_DYNAMIC_EX,\r
+        MODEL_PCD_DYNAMIC_EX_HII        :   TAB_PCDS_DYNAMIC_EX_HII,\r
+        MODEL_PCD_DYNAMIC_EX_VPD        :   TAB_PCDS_DYNAMIC_EX_VPD,\r
     }\r
 \r
     # dict used to convert part of [Defines] to members of DscBuildData directly\r
@@ -635,10 +636,10 @@ class DscBuildData(PlatformBuildClassObject):
             self._SkuIds = OrderedDict()\r
             RecordList = self._RawData[MODEL_EFI_SKU_ID, self._Arch]\r
             for Record in RecordList:\r
-                if Record[0] in [None, '']:\r
+                if not Record[0]:\r
                     EdkLogger.error('build', FORMAT_INVALID, 'No Sku ID number',\r
                                     File=self.MetaFile, Line=Record[-1])\r
-                if Record[1] in [None, '']:\r
+                if not Record[1]:\r
                     EdkLogger.error('build', FORMAT_INVALID, 'No Sku ID name',\r
                                     File=self.MetaFile, Line=Record[-1])\r
                 if not Pattern.match(Record[0]) and not HexPattern.match(Record[0]):\r
@@ -663,10 +664,10 @@ class DscBuildData(PlatformBuildClassObject):
             self.DefaultStores = OrderedDict()\r
             RecordList = self._RawData[MODEL_EFI_DEFAULT_STORES, self._Arch]\r
             for Record in RecordList:\r
-                if Record[0] in [None, '']:\r
+                if not Record[0]:\r
                     EdkLogger.error('build', FORMAT_INVALID, 'No DefaultStores ID number',\r
                                     File=self.MetaFile, Line=Record[-1])\r
-                if Record[1] in [None, '']:\r
+                if not Record[1]:\r
                     EdkLogger.error('build', FORMAT_INVALID, 'No DefaultStores ID name',\r
                                     File=self.MetaFile, Line=Record[-1])\r
                 if not Pattern.match(Record[0]) and not HexPattern.match(Record[0]):\r
@@ -887,11 +888,11 @@ class DscBuildData(PlatformBuildClassObject):
             DatumType = self._DecPcds[PcdCName, TokenSpaceGuid].DatumType\r
             try:\r
                 ValueList[Index] = ValueExpressionEx(ValueList[Index], DatumType, self._GuidDict)(True)\r
-            except BadExpression, Value:\r
+            except BadExpression as Value:\r
                 EdkLogger.error('Parser', FORMAT_INVALID, Value, File=self.MetaFile, Line=LineNo,\r
                                 ExtraData="PCD [%s.%s] Value \"%s\" " % (\r
                                 TokenSpaceGuid, PcdCName, ValueList[Index]))\r
-            except EvaluationException, Excpt:\r
+            except EvaluationException as Excpt:\r
                 if hasattr(Excpt, 'Pcd'):\r
                     if Excpt.Pcd in GlobalData.gPlatformOtherPcds:\r
                         EdkLogger.error('Parser', FORMAT_INVALID, "Cannot use this PCD (%s) in an expression as"\r
@@ -942,7 +943,7 @@ class DscBuildData(PlatformBuildClassObject):
             for skuid in pcd.SkuInfoList:\r
                 skuobj = pcd.SkuInfoList.get(skuid)\r
                 if TAB_DEFAULT_STORES_DEFAULT not in skuobj.DefaultStoreDict:\r
-                    PcdDefaultStoreSet = set([defaultstorename  for defaultstorename in skuobj.DefaultStoreDict])\r
+                    PcdDefaultStoreSet = set(defaultstorename  for defaultstorename in skuobj.DefaultStoreDict)\r
                     mindefaultstorename = DefaultStoreMgr.GetMin(PcdDefaultStoreSet)\r
                     skuobj.DefaultStoreDict[TAB_DEFAULT_STORES_DEFAULT] = copy.deepcopy(skuobj.DefaultStoreDict[mindefaultstorename])\r
         return Pcds\r
@@ -1059,7 +1060,7 @@ class DscBuildData(PlatformBuildClassObject):
                 return PcdValue\r
             try:\r
                 PcdValue = ValueExpressionEx(PcdValue[1:], PcdDatumType, GuidDict)(True)\r
-            except BadExpression, Value:     \r
+            except BadExpression as Value:\r
                 EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s",  %s' %\r
                                 (TokenSpaceGuidCName, TokenCName, PcdValue, Value))\r
         elif PcdValue.startswith("L'") or PcdValue.startswith("'"):\r
@@ -1070,7 +1071,7 @@ class DscBuildData(PlatformBuildClassObject):
                 return PcdValue\r
             try:\r
                 PcdValue = ValueExpressionEx(PcdValue, PcdDatumType, GuidDict)(True)\r
-            except BadExpression, Value:\r
+            except BadExpression as Value:\r
                 EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s",  %s' %\r
                                 (TokenSpaceGuidCName, TokenCName, PcdValue, Value))\r
         elif PcdValue.startswith('L'):\r
@@ -1082,7 +1083,7 @@ class DscBuildData(PlatformBuildClassObject):
                 return PcdValue\r
             try:\r
                 PcdValue = ValueExpressionEx(PcdValue, PcdDatumType, GuidDict)(True)\r
-            except BadExpression, Value:\r
+            except BadExpression as Value:\r
                 EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s",  %s' %\r
                                 (TokenSpaceGuidCName, TokenCName, PcdValue, Value))\r
         else:\r
@@ -1109,7 +1110,7 @@ class DscBuildData(PlatformBuildClassObject):
                     return PcdValue\r
             try:\r
                 PcdValue = ValueExpressionEx(PcdValue, PcdDatumType, GuidDict)(True)\r
-            except BadExpression, Value:\r
+            except BadExpression as Value:\r
                 EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s",  %s' %\r
                                 (TokenSpaceGuidCName, TokenCName, PcdValue, Value))\r
         return PcdValue\r
@@ -1347,7 +1348,7 @@ class DscBuildData(PlatformBuildClassObject):
                         nextskuid = self.SkuIdMgr.GetNextSkuId(nextskuid)\r
                     stru_pcd.SkuOverrideValues[skuid] = copy.deepcopy(stru_pcd.SkuOverrideValues[nextskuid]) if not NoDefault else copy.deepcopy({defaultstorename: stru_pcd.DefaultValues for defaultstorename in DefaultStores} if DefaultStores else {TAB_DEFAULT_STORES_DEFAULT:stru_pcd.DefaultValues})\r
                     if not NoDefault:\r
-                        stru_pcd.ValueChain[(skuid,'')]= (nextskuid,'')\r
+                        stru_pcd.ValueChain.add((skuid,''))\r
             if stru_pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]:\r
                 for skuid in SkuIds:\r
                     nextskuid = skuid\r
@@ -1360,20 +1361,20 @@ class DscBuildData(PlatformBuildClassObject):
                             nextskuid = self.SkuIdMgr.GetNextSkuId(nextskuid)\r
                     if NoDefault:\r
                         continue\r
-                    PcdDefaultStoreSet = set([defaultstorename  for defaultstorename in stru_pcd.SkuOverrideValues[nextskuid]])\r
+                    PcdDefaultStoreSet = set(defaultstorename  for defaultstorename in stru_pcd.SkuOverrideValues[nextskuid])\r
                     mindefaultstorename = DefaultStoreMgr.GetMin(PcdDefaultStoreSet)\r
 \r
                     for defaultstoreid in DefaultStores:\r
                         if defaultstoreid not in stru_pcd.SkuOverrideValues[skuid]:\r
                             stru_pcd.SkuOverrideValues[skuid][defaultstoreid] = copy.deepcopy(stru_pcd.SkuOverrideValues[nextskuid][mindefaultstorename])\r
-                            stru_pcd.ValueChain[(skuid,defaultstoreid)]= (nextskuid,mindefaultstorename)\r
+                            stru_pcd.ValueChain.add((skuid,defaultstoreid))\r
         S_pcd_set = DscBuildData.OverrideByFdfComm(S_pcd_set)\r
         Str_Pcd_Values = self.GenerateByteArrayValue(S_pcd_set)\r
         if Str_Pcd_Values:\r
             for (skuname,StoreName,PcdGuid,PcdName,PcdValue) in Str_Pcd_Values:\r
                 str_pcd_obj = S_pcd_set.get((PcdName, PcdGuid))\r
                 if str_pcd_obj is None:\r
-                    print PcdName, PcdGuid\r
+                    print(PcdName, PcdGuid)\r
                     raise\r
                 if str_pcd_obj.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII],\r
                                         self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]:\r
@@ -1404,7 +1405,7 @@ class DscBuildData(PlatformBuildClassObject):
                 if str_pcd_obj.Type not in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII],\r
                                         self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]:\r
                     continue\r
-                PcdDefaultStoreSet = set([defaultstorename  for skuobj in str_pcd_obj.SkuInfoList.values() for defaultstorename in skuobj.DefaultStoreDict])\r
+                PcdDefaultStoreSet = set(defaultstorename for skuobj in str_pcd_obj.SkuInfoList.values() for defaultstorename in skuobj.DefaultStoreDict)\r
                 DefaultStoreObj = DefaultStore(self._GetDefaultStores())\r
                 mindefaultstorename = DefaultStoreObj.GetMin(PcdDefaultStoreSet)\r
                 str_pcd_obj.SkuInfoList[self.SkuIdMgr.SystemSkuId].HiiDefaultValue = str_pcd_obj.SkuInfoList[self.SkuIdMgr.SystemSkuId].DefaultStoreDict[mindefaultstorename]\r
@@ -1500,7 +1501,7 @@ class DscBuildData(PlatformBuildClassObject):
         def get_length(value):\r
             Value = value.strip()\r
             if len(value) > 1:\r
-                if Value.startswith('GUID') and Value.endswith(')'):\r
+                if Value.startswith(TAB_GUID) and Value.endswith(')'):\r
                     return 16\r
                 if Value.startswith('L"') and Value.endswith('"'):\r
                     return len(Value[2:-1])\r
@@ -1514,7 +1515,7 @@ class DscBuildData(PlatformBuildClassObject):
                     return len(Value) - 2\r
             return len(Value)\r
 \r
-        return str(max([pcd_size for pcd_size in [get_length(item) for item in sku_values]]))\r
+        return str(max(get_length(item) for item in sku_values))\r
 \r
     @staticmethod\r
     def ExecuteCommand (Command):\r
@@ -1535,23 +1536,6 @@ class DscBuildData(PlatformBuildClassObject):
         Result = Result + '"'\r
         return Result\r
 \r
-    @staticmethod\r
-    def GetPcdMaxSize(Pcd):\r
-        if Pcd.DatumType in TAB_PCD_NUMERIC_TYPES:\r
-            return MAX_SIZE_TYPE[Pcd.DatumType]\r
-\r
-        MaxSize = int(Pcd.MaxDatumSize,10) if Pcd.MaxDatumSize else 0\r
-        if Pcd.PcdValueFromComm:\r
-            if Pcd.PcdValueFromComm.startswith("{") and Pcd.PcdValueFromComm.endswith("}"):\r
-                return max([len(Pcd.PcdValueFromComm.split(",")),MaxSize])\r
-            elif Pcd.PcdValueFromComm.startswith("\"") or Pcd.PcdValueFromComm.startswith("\'"):\r
-                return max([len(Pcd.PcdValueFromComm)-2+1,MaxSize])\r
-            elif Pcd.PcdValueFromComm.startswith("L\""):\r
-                return max([2*(len(Pcd.PcdValueFromComm)-3+1),MaxSize])\r
-            else:\r
-                return max([len(Pcd.PcdValueFromComm),MaxSize])\r
-        return MaxSize\r
-\r
     def GenerateSizeFunction(self,Pcd):\r
         CApp = "// Default Value in Dec \n"\r
         CApp = CApp + "void Cal_%s_%s_Size(UINT32 *Size){\n" % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName)\r
@@ -1634,7 +1618,7 @@ class DscBuildData(PlatformBuildClassObject):
                 while '[' in FieldName:\r
                     FieldName = FieldName.rsplit('[', 1)[0]\r
                     CApp = CApp + '  __FLEXIBLE_SIZE(*Size, %s, %s, %d); // From %s Line %d Value %s \n' % (Pcd.DatumType, FieldName.strip("."), ArrayIndex + 1, Pcd.PcdFieldValueFromComm[FieldName_ori][1], Pcd.PcdFieldValueFromComm[FieldName_ori][2], Pcd.PcdFieldValueFromComm[FieldName_ori][0])\r
-        CApp = CApp + "  *Size = (%d > *Size ? %d : *Size); // The Pcd maxsize is %d \n" % (DscBuildData.GetPcdMaxSize(Pcd),DscBuildData.GetPcdMaxSize(Pcd),DscBuildData.GetPcdMaxSize(Pcd))\r
+        CApp = CApp + "  *Size = (%d > *Size ? %d : *Size); // The Pcd maxsize is %d \n" % (Pcd.GetPcdMaxSize(),Pcd.GetPcdMaxSize(),Pcd.GetPcdMaxSize())\r
         CApp = CApp + "}\n"\r
         return CApp\r
 \r
@@ -1825,7 +1809,7 @@ class DscBuildData(PlatformBuildClassObject):
                         EdkLogger.error('Build', FORMAT_INVALID, "Invalid value format for %s. From %s Line %d " %\r
                                         (".".join((Pcd.TokenSpaceGuidCName, Pcd.TokenCName, FieldName)), FieldList[FieldName][1], FieldList[FieldName][2]))\r
                     except:\r
-                        print "error"\r
+                        print("error")\r
                 try:\r
                     Value, ValueSize = ParseFieldValue (FieldList[FieldName][0])\r
                 except Exception:\r
@@ -2074,11 +2058,11 @@ class DscBuildData(PlatformBuildClassObject):
                         ValueList = Value.split()\r
                         if ValueList:\r
                             for Id, Item in enumerate(ValueList):\r
-                                if Item == '-D' or Item == '/D':\r
+                                if Item in ['-D', '/D', '-U', '/U']:\r
                                     CC_FLAGS += ' ' + Item\r
                                     if Id + 1 < len(ValueList):\r
                                         CC_FLAGS += ' ' + ValueList[Id + 1]\r
-                                elif Item.startswith('/D') or Item.startswith('-D'):\r
+                                elif Item.startswith(('-D', '/D', '-U', '/U')):\r
                                     CC_FLAGS += ' ' + Item\r
         MakeApp += CC_FLAGS\r
 \r
@@ -2095,7 +2079,7 @@ class DscBuildData(PlatformBuildClassObject):
         SearchPathList = []\r
         SearchPathList.append(os.path.normpath(mws.join(GlobalData.gWorkspace, "BaseTools/Source/C/Include")))\r
         SearchPathList.append(os.path.normpath(mws.join(GlobalData.gWorkspace, "BaseTools/Source/C/Common")))\r
-        SearchPathList.extend([str(item) for item in IncSearchList])\r
+        SearchPathList.extend(str(item) for item in IncSearchList)\r
         IncFileList = GetDependencyList(IncludeFileFullPaths,SearchPathList)\r
         for include_file in IncFileList:\r
             MakeApp += "$(OBJECTS) : %s\n" % include_file\r
@@ -2169,7 +2153,7 @@ class DscBuildData(PlatformBuildClassObject):
         if DscBuildData.NeedUpdateOutput(OutputValueFile, PcdValueInitExe ,InputValueFile):\r
             Command = PcdValueInitExe + ' -i %s -o %s' % (InputValueFile, OutputValueFile)\r
             returncode, StdOut, StdErr = DscBuildData.ExecuteCommand (Command)\r
-            if returncode <> 0:\r
+            if returncode != 0:\r
                 EdkLogger.warn('Build', COMMAND_FAILURE, 'Can not collect output from command: %s' % Command)\r
 \r
         File = open (OutputValueFile, 'r')\r
@@ -2325,7 +2309,7 @@ class DscBuildData(PlatformBuildClassObject):
         Pcds = {}\r
         DefaultStoreObj = DefaultStore(self._GetDefaultStores())\r
         SkuIds = {skuname:skuid for skuname,skuid in self.SkuIdMgr.AvailableSkuIdSet.items() if skuname != TAB_COMMON}\r
-        DefaultStores = set([storename for pcdobj in PcdSet.values() for skuobj in pcdobj.SkuInfoList.values() for storename in skuobj.DefaultStoreDict])\r
+        DefaultStores = set(storename for pcdobj in PcdSet.values() for skuobj in pcdobj.SkuInfoList.values() for storename in skuobj.DefaultStoreDict)\r
         for PcdCName, TokenSpaceGuid in PcdSet:\r
             PcdObj = PcdSet[(PcdCName, TokenSpaceGuid)]\r
             self.CopyDscRawValue(PcdObj)\r
@@ -2341,7 +2325,7 @@ class DscBuildData(PlatformBuildClassObject):
             if PcdType in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]:\r
                 for skuid in PcdObj.SkuInfoList:\r
                     skuobj = PcdObj.SkuInfoList[skuid]\r
-                    mindefaultstorename = DefaultStoreObj.GetMin(set([defaultstorename  for defaultstorename in skuobj.DefaultStoreDict]))\r
+                    mindefaultstorename = DefaultStoreObj.GetMin(set(defaultstorename for defaultstorename in skuobj.DefaultStoreDict))\r
                     for defaultstorename in DefaultStores:\r
                         if defaultstorename not in skuobj.DefaultStoreDict:\r
                             skuobj.DefaultStoreDict[defaultstorename] = copy.deepcopy(skuobj.DefaultStoreDict[mindefaultstorename])\r
@@ -2515,7 +2499,7 @@ class DscBuildData(PlatformBuildClassObject):
         invalidhii = []\r
         for pcdname in Pcds:\r
             pcd = Pcds[pcdname]\r
-            varnameset = set([sku.VariableName for (skuid,sku) in pcd.SkuInfoList.items()])\r
+            varnameset = set(sku.VariableName for (skuid,sku) in pcd.SkuInfoList.items())\r
             if len(varnameset) > 1:\r
                 invalidhii.append(".".join((pcdname[1],pcdname[0])))\r
         if len(invalidhii):\r