]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: AutoGen refactor to iterate less
authorJaben Carsey <jaben.carsey@intel.com>
Fri, 3 Aug 2018 15:11:08 +0000 (23:11 +0800)
committerYonghong Zhu <yonghong.zhu@intel.com>
Mon, 20 Aug 2018 02:53:06 +0000 (10:53 +0800)
Don't iterate over new dictionaries with one item

Create the data and then add to dictionary.

Note: if you diff ignoring whitespace changes you
can more easily see the relevant changes.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
BaseTools/Source/Python/AutoGen/AutoGen.py

index de28bfdfa117c4a5a759ae3f5e131939c7836991..c5bf60ffb128fc5736927db914cc2eee292c4cdf 100644 (file)
@@ -2855,45 +2855,42 @@ class ModuleAutoGen(AutoGen):
         if self.DxsFile or self.IsLibrary or TAB_DEPENDENCY_EXPRESSION_FILE in self.FileTypes:\r
             return {}\r
 \r
-        RetVal = {self.ModuleType:[]}\r
-\r
-        for ModuleType in RetVal:\r
-            DepexList = RetVal[ModuleType]\r
-            #\r
-            # Append depex from dependent libraries, if not "BEFORE", "AFTER" expresion\r
-            #\r
-            for M in [self.Module] + self.DependentLibraryList:\r
-                Inherited = False\r
-                for D in M.Depex[self.Arch, ModuleType]:\r
-                    if DepexList != []:\r
-                        DepexList.append('AND')\r
-                    DepexList.append('(')\r
-                    #replace D with value if D is FixedAtBuild PCD\r
-                    NewList = []\r
-                    for item in D:\r
-                        if '.' not in item:\r
-                            NewList.append(item)\r
+        DepexList = []\r
+        #\r
+        # Append depex from dependent libraries, if not "BEFORE", "AFTER" expresion\r
+        #\r
+        for M in [self.Module] + self.DependentLibraryList:\r
+            Inherited = False\r
+            for D in M.Depex[self.Arch, self.ModuleType]:\r
+                if DepexList != []:\r
+                    DepexList.append('AND')\r
+                DepexList.append('(')\r
+                #replace D with value if D is FixedAtBuild PCD\r
+                NewList = []\r
+                for item in D:\r
+                    if '.' not in item:\r
+                        NewList.append(item)\r
+                    else:\r
+                        if item not in self._FixedPcdVoidTypeDict:\r
+                            EdkLogger.error("build", FORMAT_INVALID, "{} used in [Depex] section should be used as FixedAtBuild type and VOID* datum type in the module.".format(item))\r
                         else:\r
-                            if item not in self._FixedPcdVoidTypeDict:\r
-                                EdkLogger.error("build", FORMAT_INVALID, "{} used in [Depex] section should be used as FixedAtBuild type and VOID* datum type in the module.".format(item))\r
-                            else:\r
-                                Value = self._FixedPcdVoidTypeDict[item]\r
-                                if len(Value.split(',')) != 16:\r
-                                    EdkLogger.error("build", FORMAT_INVALID,\r
-                                                    "{} used in [Depex] section should be used as FixedAtBuild type and VOID* datum type and 16 bytes in the module.".format(item))\r
-                                NewList.append(Value)\r
-                    DepexList.extend(NewList)\r
-                    if DepexList[-1] == 'END':  # no need of a END at this time\r
-                        DepexList.pop()\r
-                    DepexList.append(')')\r
-                    Inherited = True\r
-                if Inherited:\r
-                    EdkLogger.verbose("DEPEX[%s] (+%s) = %s" % (self.Name, M.BaseName, DepexList))\r
-                if 'BEFORE' in DepexList or 'AFTER' in DepexList:\r
-                    break\r
-                if len(DepexList) > 0:\r
-                    EdkLogger.verbose('')\r
-        return RetVal\r
+                            Value = self._FixedPcdVoidTypeDict[item]\r
+                            if len(Value.split(',')) != 16:\r
+                                EdkLogger.error("build", FORMAT_INVALID,\r
+                                                "{} used in [Depex] section should be used as FixedAtBuild type and VOID* datum type and 16 bytes in the module.".format(item))\r
+                            NewList.append(Value)\r
+                DepexList.extend(NewList)\r
+                if DepexList[-1] == 'END':  # no need of a END at this time\r
+                    DepexList.pop()\r
+                DepexList.append(')')\r
+                Inherited = True\r
+            if Inherited:\r
+                EdkLogger.verbose("DEPEX[%s] (+%s) = %s" % (self.Name, M.BaseName, DepexList))\r
+            if 'BEFORE' in DepexList or 'AFTER' in DepexList:\r
+                break\r
+            if len(DepexList) > 0:\r
+                EdkLogger.verbose('')\r
+        return {self.ModuleType:DepexList}\r
 \r
     ## Merge dependency expression\r
     #\r
@@ -2904,31 +2901,28 @@ class ModuleAutoGen(AutoGen):
         if self.DxsFile or self.IsLibrary or TAB_DEPENDENCY_EXPRESSION_FILE in self.FileTypes:\r
             return {}\r
 \r
-        RetVal = {self.ModuleType:''}\r
+        DepexExpressionString = ''\r
+        #\r
+        # Append depex from dependent libraries, if not "BEFORE", "AFTER" expresion\r
+        #\r
+        for M in [self.Module] + self.DependentLibraryList:\r
+            Inherited = False\r
+            for D in M.DepexExpression[self.Arch, self.ModuleType]:\r
+                if DepexExpressionString != '':\r
+                    DepexExpressionString += ' AND '\r
+                DepexExpressionString += '('\r
+                DepexExpressionString += D\r
+                DepexExpressionString = DepexExpressionString.rstrip('END').strip()\r
+                DepexExpressionString += ')'\r
+                Inherited = True\r
+            if Inherited:\r
+                EdkLogger.verbose("DEPEX[%s] (+%s) = %s" % (self.Name, M.BaseName, DepexExpressionString))\r
+            if 'BEFORE' in DepexExpressionString or 'AFTER' in DepexExpressionString:\r
+                break\r
+        if len(DepexExpressionString) > 0:\r
+            EdkLogger.verbose('')\r
 \r
-        for ModuleType in RetVal:\r
-            DepexExpressionString = RetVal[ModuleType]\r
-            #\r
-            # Append depex from dependent libraries, if not "BEFORE", "AFTER" expresion\r
-            #\r
-            for M in [self.Module] + self.DependentLibraryList:\r
-                Inherited = False\r
-                for D in M.DepexExpression[self.Arch, ModuleType]:\r
-                    if DepexExpressionString != '':\r
-                        DepexExpressionString += ' AND '\r
-                    DepexExpressionString += '('\r
-                    DepexExpressionString += D\r
-                    DepexExpressionString = DepexExpressionString.rstrip('END').strip()\r
-                    DepexExpressionString += ')'\r
-                    Inherited = True\r
-                if Inherited:\r
-                    EdkLogger.verbose("DEPEX[%s] (+%s) = %s" % (self.Name, M.BaseName, DepexExpressionString))\r
-                if 'BEFORE' in DepexExpressionString or 'AFTER' in DepexExpressionString:\r
-                    break\r
-            if len(DepexExpressionString) > 0:\r
-                EdkLogger.verbose('')\r
-            RetVal[ModuleType] = DepexExpressionString\r
-        return RetVal\r
+        return {self.ModuleType:DepexExpressionString}\r
 \r
     # Get the tiano core user extension, it is contain dependent library.\r
     # @retval: a list contain tiano core userextension.\r