2009-07-17 11:10:31 +02:00
|
|
|
## @file
|
|
|
|
# process Version section generation
|
|
|
|
#
|
2018-10-23 19:29:19 +02:00
|
|
|
# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
|
2009-07-17 11:10:31 +02:00
|
|
|
#
|
2019-04-04 01:03:11 +02:00
|
|
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
2009-07-17 11:10:31 +02:00
|
|
|
#
|
|
|
|
|
|
|
|
##
|
|
|
|
# Import Modules
|
|
|
|
#
|
2018-10-15 02:27:53 +02:00
|
|
|
from __future__ import absolute_import
|
2018-10-23 19:29:19 +02:00
|
|
|
from .Ffs import SectionSuffix
|
2014-08-15 05:06:48 +02:00
|
|
|
import Common.LongFilePathOs as os
|
2018-07-13 12:18:33 +02:00
|
|
|
from .GenFdsGlobalVariable import GenFdsGlobalVariable
|
2009-07-17 11:10:31 +02:00
|
|
|
from CommonDataClass.FdfClass import VerSectionClassObject
|
2014-08-15 05:06:48 +02:00
|
|
|
from Common.LongFilePathSupport import OpenLongFilePath as open
|
2018-04-26 18:57:53 +02:00
|
|
|
from Common.DataType import SUP_MODULE_SEC
|
2009-07-17 11:10:31 +02:00
|
|
|
|
|
|
|
## generate version section
|
|
|
|
#
|
|
|
|
#
|
|
|
|
class VerSection (VerSectionClassObject):
|
|
|
|
|
|
|
|
## The constructor
|
|
|
|
#
|
|
|
|
# @param self The object pointer
|
|
|
|
#
|
|
|
|
def __init__(self):
|
|
|
|
VerSectionClassObject.__init__(self)
|
|
|
|
|
|
|
|
## GenSection() method
|
|
|
|
#
|
|
|
|
# Generate version section
|
|
|
|
#
|
|
|
|
# @param self The object pointer
|
|
|
|
# @param OutputPath Where to place output file
|
|
|
|
# @param ModuleName Which module this section belongs to
|
|
|
|
# @param SecNum Index of section
|
|
|
|
# @param KeyStringList Filter for inputs of section generation
|
|
|
|
# @param FfsInf FfsInfStatement object that contains this section data
|
|
|
|
# @param Dict dictionary contains macro and its value
|
|
|
|
# @retval tuple (Generated file name, section alignment)
|
|
|
|
#
|
2019-09-12 10:18:27 +02:00
|
|
|
def GenSection(self, OutputPath, ModuleName, SecNum, KeyStringList, FfsInf=None, Dict=None, IsMakefile = False):
|
2009-07-17 11:10:31 +02:00
|
|
|
#
|
|
|
|
# Prepare the parameter of GenSection
|
|
|
|
#
|
2018-10-23 19:29:19 +02:00
|
|
|
if FfsInf:
|
2009-07-17 11:10:31 +02:00
|
|
|
self.Alignment = FfsInf.__ExtendMacro__(self.Alignment)
|
|
|
|
self.BuildNum = FfsInf.__ExtendMacro__(self.BuildNum)
|
|
|
|
self.StringData = FfsInf.__ExtendMacro__(self.StringData)
|
|
|
|
self.FileName = FfsInf.__ExtendMacro__(self.FileName)
|
|
|
|
|
|
|
|
OutputFile = os.path.join(OutputPath,
|
2018-10-23 19:29:19 +02:00
|
|
|
ModuleName + SUP_MODULE_SEC + SecNum + SectionSuffix.get('VERSION'))
|
2009-07-17 11:10:31 +02:00
|
|
|
OutputFile = os.path.normpath(OutputFile)
|
|
|
|
|
|
|
|
# Get String Data
|
|
|
|
StringData = ''
|
2018-10-23 19:29:19 +02:00
|
|
|
if self.StringData:
|
2017-11-22 08:42:25 +01:00
|
|
|
StringData = self.StringData
|
2018-10-23 19:29:19 +02:00
|
|
|
elif self.FileName:
|
2019-09-12 10:18:27 +02:00
|
|
|
if Dict is None:
|
|
|
|
Dict = {}
|
2009-07-17 11:10:31 +02:00
|
|
|
FileNameStr = GenFdsGlobalVariable.ReplaceWorkspaceMacro(self.FileName)
|
|
|
|
FileNameStr = GenFdsGlobalVariable.MacroExtend(FileNameStr, Dict)
|
|
|
|
FileObj = open(FileNameStr, 'r')
|
|
|
|
StringData = FileObj.read()
|
|
|
|
StringData = '"' + StringData + '"'
|
|
|
|
FileObj.close()
|
BaseTools/GenFds: Fix 'NoneType' object is not iterable error.
When adding section VERSION in FDF file, for example:
FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
SECTION RAW = MdeModulePkg/Logo/Logo.bmp
SECTION UI = "Logo"
SECTION VERSION = "0001"
}
GenFds will report the following error:
Traceback (most recent call last):
File "GenFds.py", line 276, in main
File "GenFds.py", line 391, in GenFd
File "Fd.py", line 93, in GenFd
File "Region.py", line 106, in AddToBuffer
File "Fv.py", line 114, in AddToBuffer
File "FfsFileStatement.py", line 117, in GenFfs
File "VerSection.py", line 80, in GenSection
File "GenFdsGlobalVariable.py", line 401, in GenerateSection
TypeError: 'NoneType' object is not iterable.
We found in GenFdsGlobalVariable.py line 401 'list' requires a iteralbe object as parameter while the 'Input' is None.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Qiu Shumin <shumin.qiu@intel.com>
Reviewed-by: Yingke Liu <yingke.d.liu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18205 6f19259b-4bc3-4df7-8a09-765794883524
2015-08-12 03:27:31 +02:00
|
|
|
GenFdsGlobalVariable.GenerateSection(OutputFile, [], 'EFI_SECTION_VERSION',
|
2017-11-22 08:42:25 +01:00
|
|
|
Ver=StringData, BuildNumber=self.BuildNum, IsMakefile=IsMakefile)
|
2009-07-17 11:10:31 +02:00
|
|
|
OutputFileList = []
|
|
|
|
OutputFileList.append(OutputFile)
|
|
|
|
return OutputFileList, self.Alignment
|