From 29d960f90134b84d59b0b8e8574e02358ce13cce Mon Sep 17 00:00:00 2001 From: Yingke Liu Date: Fri, 28 Aug 2015 02:04:37 +0000 Subject: BaseTools: Fixed bug for single FV generating. If -i is specified and this FV has no BlockSize defined, tool did not inherit FD's BlockSize. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Yingke Liu Reviewed-by: Liming Gao git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18339 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Source/Python/GenFds/Fv.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'BaseTools/Source/Python') diff --git a/BaseTools/Source/Python/GenFds/Fv.py b/BaseTools/Source/Python/GenFds/Fv.py index d770582326..163ccd37f1 100644 --- a/BaseTools/Source/Python/GenFds/Fv.py +++ b/BaseTools/Source/Python/GenFds/Fv.py @@ -207,6 +207,30 @@ class FV (FvClassObject): GenFdsGlobalVariable.LargeFileInFvFlags.pop() return FvOutputFile + ## _GetBlockSize() + # + # Calculate FV's block size + # Inherit block size from FD if no block size specified in FV + # + def _GetBlockSize(self): + if self.BlockSizeList: + return True + + for FdName in GenFdsGlobalVariable.FdfParser.Profile.FdDict.keys(): + FdObj = GenFdsGlobalVariable.FdfParser.Profile.FdDict[FdName] + for RegionObj in FdObj.RegionList: + if RegionObj.RegionType != 'FV': + continue + for RegionData in RegionObj.RegionDataList: + # + # Found the FD and region that contain this FV + # + if self.UiFvName.upper() == RegionData.upper(): + RegionObj.BlockInfoOfRegion(FdObj.BlockSizeList, self) + if self.BlockSizeList: + return True + return False + ## __InitializeInf__() # # Initilize the inf file to create FV @@ -245,8 +269,9 @@ class FV (FvClassObject): T_CHAR_LF) else: if self.BlockSizeList == []: - #set default block size is 1 - self.FvInfFile.writelines("EFI_BLOCK_SIZE = 0x1" + T_CHAR_LF) + if not self._GetBlockSize(): + #set default block size is 1 + self.FvInfFile.writelines("EFI_BLOCK_SIZE = 0x1" + T_CHAR_LF) for BlockSize in self.BlockSizeList : if BlockSize[0] != None: -- cgit v1.2.3