summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/Python/Eot/Parser.py
diff options
context:
space:
mode:
authorHess Chen <hesheng.chen@intel.com>2018-10-15 16:29:09 +0800
committerYonghong Zhu <yonghong.zhu@intel.com>2018-10-16 14:52:02 +0800
commit47f15da16053f031bcf7c50f6960bd0f6c83d2db (patch)
treee2b4eecc108526f121bf110bd00dd12e314e09ce /BaseTools/Source/Python/Eot/Parser.py
parentff4d0f851d43a0ad70a87e8b74b7303fc215361f (diff)
downloadedk2-47f15da16053f031bcf7c50f6960bd0f6c83d2db.tar.gz
edk2-47f15da16053f031bcf7c50f6960bd0f6c83d2db.tar.bz2
edk2-47f15da16053f031bcf7c50f6960bd0f6c83d2db.zip
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>
Diffstat (limited to 'BaseTools/Source/Python/Eot/Parser.py')
-rw-r--r--BaseTools/Source/Python/Eot/Parser.py28
1 files changed, 27 insertions, 1 deletions
diff --git a/BaseTools/Source/Python/Eot/Parser.py b/BaseTools/Source/Python/Eot/Parser.py
index e01a9770be..673088d41d 100644
--- a/BaseTools/Source/Python/Eot/Parser.py
+++ b/BaseTools/Source/Python/Eot/Parser.py
@@ -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