]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/AutoGen.py
BaseTools: increment build generate inf file lost .depex file
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / AutoGen.py
index 2b3f93c3bccb3a1d48fd61b3cbe462e680708c1d..c8309d5ed3a698fc435841507bf275c8d9188477 100644 (file)
@@ -295,7 +295,7 @@ class WorkspaceAutoGen(AutoGen):
             SkippedArchList = set(self.ArchList).symmetric_difference(set(self.Platform.SupArchList))\r
             EdkLogger.verbose("\nArch [%s] is ignored because the platform supports [%s] only!"\r
                               % (" ".join(SkippedArchList), " ".join(self.Platform.SupArchList)))\r
-        self.ArchList = tuple(ArchList)\r
+        self.ArchList = tuple(sorted(ArchList))\r
 \r
         # Validate build target\r
         if self.BuildTarget not in self.Platform.BuildTargets:\r
@@ -616,17 +616,17 @@ class WorkspaceAutoGen(AutoGen):
         #\r
         content = 'gCommandLineDefines: '\r
         content += str(GlobalData.gCommandLineDefines)\r
-        content += os.linesep\r
+        content += "\n"\r
         content += 'BuildOptionPcd: '\r
         content += str(GlobalData.BuildOptionPcd)\r
-        content += os.linesep\r
+        content += "\n"\r
         content += 'Active Platform: '\r
         content += str(self.Platform)\r
-        content += os.linesep\r
+        content += "\n"\r
         if self.FdfFile:\r
             content += 'Flash Image Definition: '\r
             content += str(self.FdfFile)\r
-            content += os.linesep\r
+            content += "\n"\r
         SaveFileOnChange(os.path.join(self.BuildDir, 'BuildOptions'), content, False)\r
 \r
         #\r
@@ -636,7 +636,7 @@ class WorkspaceAutoGen(AutoGen):
         if Pa.PcdTokenNumber:\r
             if Pa.DynamicPcdList:\r
                 for Pcd in Pa.DynamicPcdList:\r
-                    PcdTokenNumber += os.linesep\r
+                    PcdTokenNumber += "\n"\r
                     PcdTokenNumber += str((Pcd.TokenCName, Pcd.TokenSpaceGuidCName))\r
                     PcdTokenNumber += ' : '\r
                     PcdTokenNumber += str(Pa.PcdTokenNumber[Pcd.TokenCName, Pcd.TokenSpaceGuidCName])\r
@@ -677,7 +677,7 @@ class WorkspaceAutoGen(AutoGen):
         if not os.path.exists(self.BuildDir):\r
             os.makedirs(self.BuildDir)\r
         with open(os.path.join(self.BuildDir, 'AutoGen'), 'w+') as file:\r
-            for f in AllWorkSpaceMetaFiles:\r
+            for f in sorted(AllWorkSpaceMetaFiles):\r
                 print(f, file=file)\r
         return True\r
 \r
@@ -1598,6 +1598,9 @@ class PlatformAutoGen(AutoGen):
         self._DynamicPcdList.extend(list(UnicodePcdArray))\r
         self._DynamicPcdList.extend(list(HiiPcdArray))\r
         self._DynamicPcdList.extend(list(OtherPcdArray))\r
+        #python3.6 set is not ordered at all\r
+        self._DynamicPcdList = sorted(self._DynamicPcdList, key=lambda x:(x.TokenSpaceGuidCName, x.TokenCName))\r
+        self._NonDynamicPcdList = sorted(self._NonDynamicPcdList, key=lambda x: (x.TokenSpaceGuidCName, x.TokenCName))\r
         allskuset = [(SkuName, Sku.SkuId) for pcd in self._DynamicPcdList for (SkuName, Sku) in pcd.SkuInfoList.items()]\r
         for pcd in self._DynamicPcdList:\r
             if len(pcd.SkuInfoList) == 1:\r
@@ -2374,7 +2377,7 @@ class PlatformAutoGen(AutoGen):
                        list(PlatformModuleOptions.keys()) + list(ModuleTypeOptions.keys()) +\r
                        list(self.ToolDefinition.keys()))\r
         BuildOptions = defaultdict(lambda: defaultdict(str))\r
-        for Tool in AllTools:\r
+        for Tool in sorted(AllTools):\r
             for Options in [self.ToolDefinition, ModuleOptions, PlatformOptions, ModuleTypeOptions, PlatformModuleOptions]:\r
                 if Tool not in Options:\r
                     continue\r
@@ -3156,12 +3159,12 @@ class ModuleAutoGen(AutoGen):
     @cached_property\r
     def IntroTargetList(self):\r
         self.Targets\r
-        return self._IntroBuildTargetList\r
+        return sorted(self._IntroBuildTargetList, key=lambda x: str(x.Target))\r
 \r
     @cached_property\r
     def CodaTargetList(self):\r
         self.Targets\r
-        return self._FinalBuildTargetList\r
+        return sorted(self._FinalBuildTargetList, key=lambda x: str(x.Target))\r
 \r
     @cached_property\r
     def FileTypes(self):\r
@@ -3633,6 +3636,10 @@ class ModuleAutoGen(AutoGen):
                 AsBuiltInfDict['binary_item'].append('PE32|' + self.Name + '.efi')\r
             else:\r
                 AsBuiltInfDict['binary_item'].append('BIN|' + File)\r
+        if not self.DepexGenerated:\r
+            DepexFile = os.path.join(self.OutputDir, self.Name + '.depex')\r
+            if os.path.exists(DepexFile):\r
+                self.DepexGenerated = True\r
         if self.DepexGenerated:\r
             self.OutputFile.add(self.Name + '.depex')\r
             if self.ModuleType in [SUP_MODULE_PEIM]:\r
@@ -3889,7 +3896,7 @@ class ModuleAutoGen(AutoGen):
             if os.path.exists (self.TimeStampPath):\r
                 os.remove (self.TimeStampPath)\r
             with open(self.TimeStampPath, 'w+') as file:\r
-                for f in FileSet:\r
+                for f in sorted(FileSet):\r
                     print(f, file=file)\r
 \r
         # Ignore generating makefile when it is a binary module\r