FfsFileList.append(FileName)\r
# Add Apriori file name to Inf file\r
if not Flag:\r
- self.FvInfFile.writelines("EFI_FILE_NAME = " + \\r
+ self.FvInfFile.append("EFI_FILE_NAME = " + \\r
FileName + \\r
TAB_LINE_BREAK)\r
\r
FileName = FfsFile.GenFfs(MacroDict, FvParentAddr=BaseAddress, IsMakefile=Flag, FvName=self.UiFvName)\r
FfsFileList.append(FileName)\r
if not Flag:\r
- self.FvInfFile.writelines("EFI_FILE_NAME = " + \\r
+ self.FvInfFile.append("EFI_FILE_NAME = " + \\r
FileName + \\r
TAB_LINE_BREAK)\r
if not Flag:\r
- SaveFileOnChange(self.InfFileName, self.FvInfFile.getvalue(), False)\r
- self.FvInfFile.close()\r
+ FvInfFile = ''.join(self.FvInfFile)\r
+ SaveFileOnChange(self.InfFileName, FvInfFile, False)\r
#\r
# Call GenFv tool\r
#\r
# PI FvHeader is 0x48 byte\r
FvHeaderBuffer = FvFileObj.read(0x48)\r
Signature = FvHeaderBuffer[0x28:0x32]\r
- if Signature and Signature.startswith('_FVH'):\r
+ if Signature and Signature.startswith(b'_FVH'):\r
GenFdsGlobalVariable.VerboseLogger("\nGenerate %s FV Successfully" % self.UiFvName)\r
GenFdsGlobalVariable.SharpCounter = 0\r
\r
FvFileObj.seek(0)\r
Buffer.write(FvFileObj.read())\r
# FV alignment position.\r
- FvAlignmentValue = 1 << (ord(FvHeaderBuffer[0x2E]) & 0x1F)\r
+ FvAlignmentValue = 1 << (ord(FvHeaderBuffer[0x2E:0x2F]) & 0x1F)\r
if FvAlignmentValue >= 0x400:\r
if FvAlignmentValue >= 0x100000:\r
if FvAlignmentValue >= 0x1000000:\r
#\r
self.InfFileName = os.path.join(GenFdsGlobalVariable.FvDir,\r
self.UiFvName + '.inf')\r
- self.FvInfFile = BytesIO()\r
+ self.FvInfFile = []\r
\r
#\r
# Add [Options]\r
#\r
- self.FvInfFile.writelines("[options]" + TAB_LINE_BREAK)\r
+ self.FvInfFile.append("[options]" + TAB_LINE_BREAK)\r
if BaseAddress is not None:\r
- self.FvInfFile.writelines("EFI_BASE_ADDRESS = " + \\r
+ self.FvInfFile.append("EFI_BASE_ADDRESS = " + \\r
BaseAddress + \\r
TAB_LINE_BREAK)\r
\r
if BlockSize is not None:\r
- self.FvInfFile.writelines("EFI_BLOCK_SIZE = " + \\r
+ self.FvInfFile.append("EFI_BLOCK_SIZE = " + \\r
'0x%X' %BlockSize + \\r
TAB_LINE_BREAK)\r
if BlockNum is not None:\r
- self.FvInfFile.writelines("EFI_NUM_BLOCKS = " + \\r
+ self.FvInfFile.append("EFI_NUM_BLOCKS = " + \\r
' 0x%X' %BlockNum + \\r
TAB_LINE_BREAK)\r
else:\r
if self.BlockSizeList == []:\r
if not self._GetBlockSize():\r
#set default block size is 1\r
- self.FvInfFile.writelines("EFI_BLOCK_SIZE = 0x1" + TAB_LINE_BREAK)\r
+ self.FvInfFile.append("EFI_BLOCK_SIZE = 0x1" + TAB_LINE_BREAK)\r
\r
for BlockSize in self.BlockSizeList:\r
if BlockSize[0] is not None:\r
- self.FvInfFile.writelines("EFI_BLOCK_SIZE = " + \\r
+ self.FvInfFile.append("EFI_BLOCK_SIZE = " + \\r
'0x%X' %BlockSize[0] + \\r
TAB_LINE_BREAK)\r
\r
if BlockSize[1] is not None:\r
- self.FvInfFile.writelines("EFI_NUM_BLOCKS = " + \\r
+ self.FvInfFile.append("EFI_NUM_BLOCKS = " + \\r
' 0x%X' %BlockSize[1] + \\r
TAB_LINE_BREAK)\r
\r
if self.BsBaseAddress is not None:\r
- self.FvInfFile.writelines('EFI_BOOT_DRIVER_BASE_ADDRESS = ' + \\r
+ self.FvInfFile.append('EFI_BOOT_DRIVER_BASE_ADDRESS = ' + \\r
'0x%X' %self.BsBaseAddress)\r
if self.RtBaseAddress is not None:\r
- self.FvInfFile.writelines('EFI_RUNTIME_DRIVER_BASE_ADDRESS = ' + \\r
+ self.FvInfFile.append('EFI_RUNTIME_DRIVER_BASE_ADDRESS = ' + \\r
'0x%X' %self.RtBaseAddress)\r
#\r
# Add attribute\r
#\r
- self.FvInfFile.writelines("[attributes]" + TAB_LINE_BREAK)\r
+ self.FvInfFile.append("[attributes]" + TAB_LINE_BREAK)\r
\r
- self.FvInfFile.writelines("EFI_ERASE_POLARITY = " + \\r
+ self.FvInfFile.append("EFI_ERASE_POLARITY = " + \\r
' %s' %ErasePloarity + \\r
TAB_LINE_BREAK)\r
if not (self.FvAttributeDict is None):\r
if self.FvAttributeDict[FvAttribute].upper() in ('TRUE', '1'):\r
self.UsedSizeEnable = True\r
continue\r
- self.FvInfFile.writelines("EFI_" + \\r
+ self.FvInfFile.append("EFI_" + \\r
FvAttribute + \\r
' = ' + \\r
self.FvAttributeDict[FvAttribute] + \\r
TAB_LINE_BREAK )\r
if self.FvAlignment is not None:\r
- self.FvInfFile.writelines("EFI_FVB2_ALIGNMENT_" + \\r
+ self.FvInfFile.append("EFI_FVB2_ALIGNMENT_" + \\r
self.FvAlignment.strip() + \\r
" = TRUE" + \\r
TAB_LINE_BREAK)\r
GenFdsGlobalVariable.ErrorLogger("FV Extension Header Entries declared for %s with no FvNameGuid declaration." % (self.UiFvName))\r
else:\r
TotalSize = 16 + 4\r
- Buffer = ''\r
+ Buffer = bytearray()\r
if self.UsedSizeEnable:\r
TotalSize += (4 + 4)\r
## define EFI_FV_EXT_TYPE_USED_SIZE_TYPE 0x03\r
#\r
Buffer += (pack('HH', (FvUiLen + 16 + 4), 0x0002)\r
+ PackGUID(Guid)\r
- + self.UiFvName)\r
+ + self.UiFvName.encode('utf-8'))\r
\r
for Index in range (0, len(self.FvExtEntryType)):\r
if self.FvExtEntryType[Index] == 'FILE':\r
if Changed:\r
if os.path.exists (self.InfFileName):\r
os.remove (self.InfFileName)\r
- self.FvInfFile.writelines("EFI_FV_EXT_HEADER_FILE_NAME = " + \\r
+ self.FvInfFile.append("EFI_FV_EXT_HEADER_FILE_NAME = " + \\r
FvExtHeaderFileName + \\r
TAB_LINE_BREAK)\r
\r
#\r
# Add [Files]\r
#\r
- self.FvInfFile.writelines("[files]" + TAB_LINE_BREAK)\r
+ self.FvInfFile.append("[files]" + TAB_LINE_BREAK)\r