## @file\r
# process FV generation\r
#\r
-# Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
#\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
from GenFdsGlobalVariable import GenFdsGlobalVariable\r
from GenFds import GenFds\r
from CommonDataClass.FdfClass import FvClassObject\r
-from Common.Misc import SaveFileOnChange\r
+from Common.Misc import SaveFileOnChange, PackGUID\r
from Common.LongFilePathSupport import CopyLongFilePath\r
from Common.LongFilePathSupport import OpenLongFilePath as open\r
+from Common.DataType import *\r
\r
-T_CHAR_LF = '\n'\r
FV_UI_EXT_ENTY_GUID = 'A67DF1FA-8DE8-4E98-AF09-4BDF2EFFBC7C'\r
\r
## generate FV\r
#\r
def AddToBuffer (self, Buffer, BaseAddress=None, BlockSize= None, BlockNum=None, ErasePloarity='1', VtfDict=None, MacroDict = {}, Flag=False) :\r
\r
- if BaseAddress == None and self.UiFvName.upper() + 'fv' in GenFds.ImageBinDict.keys():\r
+ if BaseAddress is None and self.UiFvName.upper() + 'fv' in GenFds.ImageBinDict:\r
return GenFds.ImageBinDict[self.UiFvName.upper() + 'fv']\r
\r
#\r
# Check whether FV in Capsule is in FD flash region.\r
# If yes, return error. Doesn't support FV in Capsule image is also in FD flash region.\r
#\r
- if self.CapsuleName != None:\r
- for FdName in GenFdsGlobalVariable.FdfParser.Profile.FdDict.keys():\r
- FdObj = GenFdsGlobalVariable.FdfParser.Profile.FdDict[FdName]\r
+ if self.CapsuleName is not None:\r
+ for FdObj in GenFdsGlobalVariable.FdfParser.Profile.FdDict.values():\r
for RegionObj in FdObj.RegionList:\r
- if RegionObj.RegionType == 'FV':\r
+ if RegionObj.RegionType == BINARY_FILE_TYPE_FV:\r
for RegionData in RegionObj.RegionDataList:\r
if RegionData.endswith(".fv"):\r
continue\r
- elif RegionData.upper() + 'fv' in GenFds.ImageBinDict.keys():\r
+ elif RegionData.upper() + 'fv' in GenFds.ImageBinDict:\r
continue\r
elif self.UiFvName.upper() == RegionData.upper():\r
GenFdsGlobalVariable.ErrorLogger("Capsule %s in FD region can't contain a FV %s in FD region." % (self.CapsuleName, self.UiFvName.upper()))\r
GenFdsGlobalVariable.LargeFileInFvFlags.append(False)\r
FFSGuid = None\r
\r
- if self.FvBaseAddress != None:\r
+ if self.FvBaseAddress is not None:\r
BaseAddress = self.FvBaseAddress\r
if not Flag:\r
self.__InitializeInf__(BaseAddress, BlockSize, BlockNum, ErasePloarity, VtfDict)\r
if not Flag:\r
self.FvInfFile.writelines("EFI_FILE_NAME = " + \\r
FileName + \\r
- T_CHAR_LF)\r
+ TAB_LINE_BREAK)\r
\r
# Process Modules in FfsList\r
for FfsFile in self.FfsList :\r
continue\r
if GenFdsGlobalVariable.EnableGenfdsMultiThread and GenFdsGlobalVariable.ModuleFile and GenFdsGlobalVariable.ModuleFile.Path.find(os.path.normpath(FfsFile.InfFileName)) == -1:\r
continue\r
- FileName = FfsFile.GenFfs(MacroDict, FvParentAddr=BaseAddress, IsMakefile=Flag)\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
FileName + \\r
- T_CHAR_LF)\r
+ TAB_LINE_BREAK)\r
if not Flag:\r
SaveFileOnChange(self.InfFileName, self.FvInfFile.getvalue(), False)\r
self.FvInfFile.close()\r
FvOutputFile = os.path.join(GenFdsGlobalVariable.FvDir, self.UiFvName)\r
FvOutputFile = FvOutputFile + '.Fv'\r
# BUGBUG: FvOutputFile could be specified from FDF file (FV section, CreateFile statement)\r
- if self.CreateFileName != None:\r
+ if self.CreateFileName is not None:\r
FvOutputFile = self.CreateFileName\r
\r
if Flag:\r
NewFvInfo = None\r
if os.path.exists (FvInfoFileName):\r
NewFvInfo = open(FvInfoFileName, 'r').read()\r
- if NewFvInfo != None and NewFvInfo != OrigFvInfo:\r
+ if NewFvInfo is not None and NewFvInfo != OrigFvInfo:\r
FvChildAddr = []\r
AddFileObj = open(FvInfoFileName, 'r')\r
AddrStrings = AddFileObj.readlines()\r
if FvChildAddr != []:\r
# Update Ffs again\r
for FfsFile in self.FfsList :\r
- FileName = FfsFile.GenFfs(MacroDict, FvChildAddr, BaseAddress, IsMakefile=Flag)\r
+ FileName = FfsFile.GenFfs(MacroDict, FvChildAddr, BaseAddress, IsMakefile=Flag, FvName=self.UiFvName)\r
\r
if GenFdsGlobalVariable.LargeFileInFvFlags[-1]:\r
FFSGuid = GenFdsGlobalVariable.EFI_FIRMWARE_FILE_SYSTEM3_GUID;\r
if self.BlockSizeList:\r
return True\r
\r
- for FdName in GenFdsGlobalVariable.FdfParser.Profile.FdDict.keys():\r
- FdObj = GenFdsGlobalVariable.FdfParser.Profile.FdDict[FdName]\r
+ for FdObj in GenFdsGlobalVariable.FdfParser.Profile.FdDict.values():\r
for RegionObj in FdObj.RegionList:\r
- if RegionObj.RegionType != 'FV':\r
+ if RegionObj.RegionType != BINARY_FILE_TYPE_FV:\r
continue\r
for RegionData in RegionObj.RegionDataList:\r
#\r
#\r
# Add [Options]\r
#\r
- self.FvInfFile.writelines("[options]" + T_CHAR_LF)\r
- if BaseAddress != None :\r
+ self.FvInfFile.writelines("[options]" + TAB_LINE_BREAK)\r
+ if BaseAddress is not None :\r
self.FvInfFile.writelines("EFI_BASE_ADDRESS = " + \\r
BaseAddress + \\r
- T_CHAR_LF)\r
+ TAB_LINE_BREAK)\r
\r
- if BlockSize != None:\r
+ if BlockSize is not None:\r
self.FvInfFile.writelines("EFI_BLOCK_SIZE = " + \\r
'0x%X' %BlockSize + \\r
- T_CHAR_LF)\r
- if BlockNum != None:\r
+ TAB_LINE_BREAK)\r
+ if BlockNum is not None:\r
self.FvInfFile.writelines("EFI_NUM_BLOCKS = " + \\r
' 0x%X' %BlockNum + \\r
- T_CHAR_LF)\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" + T_CHAR_LF)\r
+ self.FvInfFile.writelines("EFI_BLOCK_SIZE = 0x1" + TAB_LINE_BREAK)\r
\r
for BlockSize in self.BlockSizeList :\r
- if BlockSize[0] != None:\r
+ if BlockSize[0] is not None:\r
self.FvInfFile.writelines("EFI_BLOCK_SIZE = " + \\r
'0x%X' %BlockSize[0] + \\r
- T_CHAR_LF)\r
+ TAB_LINE_BREAK)\r
\r
- if BlockSize[1] != None:\r
+ if BlockSize[1] is not None:\r
self.FvInfFile.writelines("EFI_NUM_BLOCKS = " + \\r
' 0x%X' %BlockSize[1] + \\r
- T_CHAR_LF)\r
+ TAB_LINE_BREAK)\r
\r
- if self.BsBaseAddress != None:\r
+ if self.BsBaseAddress is not None:\r
self.FvInfFile.writelines('EFI_BOOT_DRIVER_BASE_ADDRESS = ' + \\r
'0x%X' %self.BsBaseAddress)\r
- if self.RtBaseAddress != None:\r
+ if self.RtBaseAddress is not None:\r
self.FvInfFile.writelines('EFI_RUNTIME_DRIVER_BASE_ADDRESS = ' + \\r
'0x%X' %self.RtBaseAddress)\r
#\r
# Add attribute\r
#\r
- self.FvInfFile.writelines("[attributes]" + T_CHAR_LF)\r
+ self.FvInfFile.writelines("[attributes]" + TAB_LINE_BREAK)\r
\r
self.FvInfFile.writelines("EFI_ERASE_POLARITY = " + \\r
' %s' %ErasePloarity + \\r
- T_CHAR_LF)\r
- if not (self.FvAttributeDict == None):\r
+ TAB_LINE_BREAK)\r
+ if not (self.FvAttributeDict is None):\r
for FvAttribute in self.FvAttributeDict.keys() :\r
if FvAttribute == "FvUsedSizeEnable":\r
if self.FvAttributeDict[FvAttribute].upper() in ('TRUE', '1') :\r
FvAttribute + \\r
' = ' + \\r
self.FvAttributeDict[FvAttribute] + \\r
- T_CHAR_LF )\r
- if self.FvAlignment != None:\r
+ TAB_LINE_BREAK )\r
+ if self.FvAlignment is not None:\r
self.FvInfFile.writelines("EFI_FVB2_ALIGNMENT_" + \\r
self.FvAlignment.strip() + \\r
" = TRUE" + \\r
- T_CHAR_LF)\r
+ TAB_LINE_BREAK)\r
\r
#\r
# Generate FV extension header file\r
#\r
- if self.FvNameGuid == None or self.FvNameGuid == '':\r
+ if not self.FvNameGuid:\r
if len(self.FvExtEntryType) > 0 or self.UsedSizeEnable:\r
GenFdsGlobalVariable.ErrorLogger("FV Extension Header Entries declared for %s with no FvNameGuid declaration." % (self.UiFvName))\r
- \r
- if self.FvNameGuid <> None and self.FvNameGuid <> '':\r
+ else:\r
TotalSize = 16 + 4\r
Buffer = ''\r
if self.UsedSizeEnable:\r
# FV UI name\r
#\r
Buffer += (pack('HH', (FvUiLen + 16 + 4), 0x0002)\r
- + pack('=LHHBBBBBBBB', int(Guid[0], 16), int(Guid[1], 16), int(Guid[2], 16),\r
- int(Guid[3][-4:-2], 16), int(Guid[3][-2:], 16), int(Guid[4][-12:-10], 16),\r
- int(Guid[4][-10:-8], 16), int(Guid[4][-8:-6], 16), int(Guid[4][-6:-4], 16),\r
- int(Guid[4][-4:-2], 16), int(Guid[4][-2:], 16))\r
+ + PackGUID(Guid)\r
+ self.UiFvName)\r
\r
for Index in range (0, len(self.FvExtEntryType)):\r
Buffer += pack('B', int(ByteList[Index1], 16))\r
\r
Guid = self.FvNameGuid.split('-')\r
- Buffer = pack('=LHHBBBBBBBBL', \r
- int(Guid[0], 16), \r
- int(Guid[1], 16), \r
- int(Guid[2], 16), \r
- int(Guid[3][-4:-2], 16), \r
- int(Guid[3][-2:], 16), \r
- int(Guid[4][-12:-10], 16),\r
- int(Guid[4][-10:-8], 16),\r
- int(Guid[4][-8:-6], 16),\r
- int(Guid[4][-6:-4], 16),\r
- int(Guid[4][-4:-2], 16),\r
- int(Guid[4][-2:], 16),\r
- TotalSize\r
- ) + Buffer\r
+ Buffer = PackGUID(Guid) + pack('=L', TotalSize) + Buffer\r
\r
#\r
# Generate FV extension header file if the total size is not zero\r
os.remove (self.InfFileName)\r
self.FvInfFile.writelines("EFI_FV_EXT_HEADER_FILE_NAME = " + \\r
FvExtHeaderFileName + \\r
- T_CHAR_LF)\r
+ TAB_LINE_BREAK)\r
\r
\r
#\r
# Add [Files]\r
#\r
- self.FvInfFile.writelines("[files]" + T_CHAR_LF)\r
- if VtfDict != None and self.UiFvName in VtfDict.keys():\r
+ self.FvInfFile.writelines("[files]" + TAB_LINE_BREAK)\r
+ if VtfDict and self.UiFvName in VtfDict:\r
self.FvInfFile.writelines("EFI_FILE_NAME = " + \\r
- VtfDict.get(self.UiFvName) + \\r
- T_CHAR_LF)\r
+ VtfDict[self.UiFvName] + \\r
+ TAB_LINE_BREAK)\r