diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py index 55a59dabc0..776743a710 100644 --- a/BaseTools/Source/Python/AutoGen/AutoGen.py +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py @@ -1256,7 +1256,6 @@ class PlatformAutoGen(AutoGen): "Fail to get FLASH_DEFINITION definition in DSC file %s which is required when DSC contains VPD PCD." % str(self.Platform.MetaFile)) if VpdFile.GetCount() != 0: - DscTimeStamp = self.Platform.MetaFile.TimeStamp FvPath = os.path.join(self.BuildDir, "FV") if not os.path.exists(FvPath): try: @@ -1264,13 +1263,9 @@ class PlatformAutoGen(AutoGen): except: EdkLogger.error("build", FILE_WRITE_FAILURE, "Fail to create FV folder under %s" % self.BuildDir) - VpdFilePath = os.path.join(FvPath, "%s.txt" % self.Platform.VpdToolGuid) - - if not os.path.exists(VpdFilePath) or os.path.getmtime(VpdFilePath) < DscTimeStamp: - VpdFile.Write(VpdFilePath) - + if VpdFile.Write(VpdFilePath): # retrieve BPDG tool's path from tool_def.txt according to VPD_TOOL_GUID defined in DSC file. BPDGToolName = None for ToolDef in self.ToolDefinition.values(): diff --git a/BaseTools/Source/Python/Common/VpdInfoFile.py b/BaseTools/Source/Python/Common/VpdInfoFile.py index 1a68e9bee1..dc8ece9608 100644 --- a/BaseTools/Source/Python/Common/VpdInfoFile.py +++ b/BaseTools/Source/Python/Common/VpdInfoFile.py @@ -6,7 +6,7 @@ # is pointed by *_*_*_VPD_TOOL_GUID in conf/tools_def.txt # # -# Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
+# Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -21,6 +21,7 @@ import Common.EdkLogger as EdkLogger import Common.BuildToolError as BuildToolError import subprocess from Common.LongFilePathSupport import OpenLongFilePath as open +from Common.Misc import SaveFileOnChange FILE_COMMENT_TEMPLATE = \ """ @@ -124,34 +125,21 @@ class VpdInfoFile: if not (FilePath != None or len(FilePath) != 0): EdkLogger.error("VpdInfoFile", BuildToolError.PARAMETER_INVALID, "Invalid parameter FilePath: %s." % FilePath) - try: - fd = open(FilePath, "w") - except: - EdkLogger.error("VpdInfoFile", - BuildToolError.FILE_OPEN_FAILURE, - "Fail to open file %s for written." % FilePath) - - try: - # write file header - fd.write(FILE_COMMENT_TEMPLATE) - # write each of PCD in VPD type - Pcds = self._VpdArray.keys() - Pcds.sort() - for Pcd in Pcds: - i = 0 - for Offset in self._VpdArray[Pcd]: - PcdValue = str(Pcd.SkuInfoList[Pcd.SkuInfoList.keys()[i]].DefaultValue).strip() - if PcdValue == "" : - PcdValue = Pcd.DefaultValue - - fd.write("%s.%s|%s|%s|%s|%s \n" % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName, str(Pcd.SkuInfoList.keys()[i]),str(Offset).strip(), str(Pcd.MaxDatumSize).strip(),PcdValue)) - i += 1 - except: - EdkLogger.error("VpdInfoFile", - BuildToolError.FILE_WRITE_FAILURE, - "Fail to write file %s" % FilePath) - fd.close() + Content = FILE_COMMENT_TEMPLATE + Pcds = self._VpdArray.keys() + Pcds.sort() + for Pcd in Pcds: + i = 0 + for Offset in self._VpdArray[Pcd]: + PcdValue = str(Pcd.SkuInfoList[Pcd.SkuInfoList.keys()[i]].DefaultValue).strip() + if PcdValue == "" : + PcdValue = Pcd.DefaultValue + + Content += "%s.%s|%s|%s|%s|%s \n" % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName, str(Pcd.SkuInfoList.keys()[i]),str(Offset).strip(), str(Pcd.MaxDatumSize).strip(),PcdValue) + i += 1 + + return SaveFileOnChange(FilePath, Content, False) ## Read an existing VPD PCD info file. #