1 ## @file 2 # process Version section generation 3 # 4 # Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR> 5 # 6 # This program and the accompanying materials 7 # are licensed and made available under the terms and conditions of the BSD License 8 # which accompanies this distribution. The full text of the license may be found at 9 # http://opensource.org/licenses/bsd-license.php 10 # 11 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 # 14 15 ## 16 # Import Modules 17 # 18 from Ffs import Ffs 19 import Section 20 import Common.LongFilePathOs as os 21 import subprocess 22 from GenFdsGlobalVariable import GenFdsGlobalVariable 23 from CommonDataClass.FdfClass import VerSectionClassObject 24 from Common.LongFilePathSupport import OpenLongFilePath as open 25 26 ## generate version section 27 # 28 # 29 class VerSection (VerSectionClassObject): 30 31 ## The constructor 32 # 33 # @param self The object pointer 34 # 35 def __init__(self): 36 VerSectionClassObject.__init__(self) 37 38 ## GenSection() method 39 # 40 # Generate version section 41 # 42 # @param self The object pointer 43 # @param OutputPath Where to place output file 44 # @param ModuleName Which module this section belongs to 45 # @param SecNum Index of section 46 # @param KeyStringList Filter for inputs of section generation 47 # @param FfsInf FfsInfStatement object that contains this section data 48 # @param Dict dictionary contains macro and its value 49 # @retval tuple (Generated file name, section alignment) 50 # 51 def GenSection(self, OutputPath, ModuleName, SecNum, KeyStringList, FfsInf=None, Dict={}): 52 # 53 # Prepare the parameter of GenSection 54 # 55 if FfsInf != None: 56 self.Alignment = FfsInf.__ExtendMacro__(self.Alignment) 57 self.BuildNum = FfsInf.__ExtendMacro__(self.BuildNum) 58 self.StringData = FfsInf.__ExtendMacro__(self.StringData) 59 self.FileName = FfsInf.__ExtendMacro__(self.FileName) 60 61 OutputFile = os.path.join(OutputPath, 62 ModuleName + 'SEC' + SecNum + Ffs.SectionSuffix.get('VERSION')) 63 OutputFile = os.path.normpath(OutputFile) 64 65 # Get String Data 66 StringData = '' 67 if self.StringData != None: 68 StringData = self.StringData 69 elif self.FileName != None: 70 FileNameStr = GenFdsGlobalVariable.ReplaceWorkspaceMacro(self.FileName) 71 FileNameStr = GenFdsGlobalVariable.MacroExtend(FileNameStr, Dict) 72 FileObj = open(FileNameStr, 'r') 73 StringData = FileObj.read() 74 StringData = '"' + StringData + '"' 75 FileObj.close() 76 else: 77 StringData = '' 78 79 GenFdsGlobalVariable.GenerateSection(OutputFile, [], 'EFI_SECTION_VERSION', 80 Ver=StringData, BuildNumber=self.BuildNum) 81 OutputFileList = [] 82 OutputFileList.append(OutputFile) 83 return OutputFileList, self.Alignment 84