- # write each of PCD in VPD type\r
- Pcds = self._VpdArray.keys()\r
- Pcds.sort()\r
- for Pcd in Pcds:\r
- i = 0\r
- for Offset in self._VpdArray[Pcd]:\r
- PcdValue = str(Pcd.SkuInfoList[Pcd.SkuInfoList.keys()[i]].DefaultValue).strip()\r
- if PcdValue == "" :\r
- PcdValue = Pcd.DefaultValue\r
- \r
- 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))\r
- i += 1\r
- except:\r
- EdkLogger.error("VpdInfoFile",\r
- BuildToolError.FILE_WRITE_FAILURE,\r
- "Fail to write file %s" % FilePath) \r
- fd.close()\r
+ Content = FILE_COMMENT_TEMPLATE\r
+ Pcds = self._VpdArray.keys()\r
+ Pcds.sort()\r
+ for Pcd in Pcds:\r
+ i = 0\r
+ PcdTokenCName = Pcd.TokenCName\r
+ for PcdItem in GlobalData.MixedPcd:\r
+ if (Pcd.TokenCName, Pcd.TokenSpaceGuidCName) in GlobalData.MixedPcd[PcdItem]:\r
+ PcdTokenCName = PcdItem[0]\r
+ for skuname in self._VpdArray[Pcd]:\r
+ PcdValue = str(Pcd.SkuInfoList[skuname].DefaultValue).strip()\r
+ if PcdValue == "" :\r
+ PcdValue = Pcd.DefaultValue\r
+\r
+ Content += "%s.%s|%s|%s|%s|%s \n" % (Pcd.TokenSpaceGuidCName, PcdTokenCName, skuname,str(self._VpdArray[Pcd][skuname]).strip(), str(Pcd.MaxDatumSize).strip(),PcdValue)\r
+ i += 1\r
+\r
+ return SaveFileOnChange(FilePath, Content, False)\r