BaseTools/EOT: Change to call a program instead of calling Python API.
Update the EOT tool to call the program itself instead of calling the Python API when parsing FV images. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hess Chen <hesheng.chen@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com> Acked-by: Jaben Carsey <jaben.carsey@intel.com>
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
# This file is used to define common parsing related functions used in parsing
|
||||
# Inf/Dsc/Makefile process
|
||||
#
|
||||
# Copyright (c) 2008 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||
# This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
# which accompanies this distribution. The full text of the license may be found at
|
||||
@ -25,6 +25,32 @@ from . import EotGlobalData
|
||||
from Common.StringUtils import GetSplitList
|
||||
from Common.LongFilePathSupport import OpenLongFilePath as open
|
||||
|
||||
import subprocess
|
||||
|
||||
## DeCompress
|
||||
#
|
||||
# Call external decompress tool to decompress the fv section
|
||||
#
|
||||
def DeCompress(Method, Input):
|
||||
# Write the input to a temp file
|
||||
open('_Temp.bin', 'wb').write(Input)
|
||||
cmd = ''
|
||||
if Method == 'Lzma':
|
||||
cmd = r'LzmaCompress -o _New.bin -d _Temp.bin'
|
||||
if Method == 'Efi':
|
||||
cmd = r'TianoCompress -d --uefi -o _New.bin _Temp.bin'
|
||||
if Method == 'Framework':
|
||||
cmd = r'TianoCompress -d -o _New.bin _Temp.bin'
|
||||
|
||||
# Call tool to create the decompressed output file
|
||||
Process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
Process.communicate()[0]
|
||||
|
||||
# Return the beffer of New.bin
|
||||
if os.path.exists('_New.bin'):
|
||||
return open('_New.bin', 'rb').read()
|
||||
|
||||
|
||||
## PreProcess() method
|
||||
#
|
||||
# Pre process a file
|
||||
|
Reference in New Issue
Block a user