summaryrefslogtreecommitdiff
path: root/tools/patman
diff options
context:
space:
mode:
Diffstat (limited to 'tools/patman')
-rw-r--r--tools/patman/tools.py29
-rw-r--r--tools/patman/tout.py22
2 files changed, 37 insertions, 14 deletions
diff --git a/tools/patman/tools.py b/tools/patman/tools.py
index e945b54fa2..0d4705db76 100644
--- a/tools/patman/tools.py
+++ b/tools/patman/tools.py
@@ -9,6 +9,7 @@ import command
import glob
import os
import shutil
+import struct
import sys
import tempfile
@@ -82,6 +83,7 @@ def FinaliseOutputDir():
"""Tidy up: delete output directory if temporary and not preserved."""
if outdir and not preserve_outdir:
_RemoveOutputDir()
+ outdir = None
def GetOutputFilename(fname):
"""Return a filename within the output directory.
@@ -100,6 +102,7 @@ def _FinaliseForTest():
if outdir:
_RemoveOutputDir()
+ outdir = None
def SetInputDirs(dirname):
"""Add a list of input directories, where input files are kept.
@@ -377,7 +380,7 @@ def ToBytes(string):
return string.encode('utf-8')
return string
-def Compress(indata, algo):
+def Compress(indata, algo, with_header=True):
"""Compress some data using a given algorithm
Note that for lzma this uses an old version of the algorithm, not that
@@ -408,9 +411,12 @@ def Compress(indata, algo):
data = Run('gzip', '-c', fname, binary=True)
else:
raise ValueError("Unknown algorithm '%s'" % algo)
+ if with_header:
+ hdr = struct.pack('<I', len(data))
+ data = hdr + data
return data
-def Decompress(indata, algo):
+def Decompress(indata, algo, with_header=True):
"""Decompress some data using a given algorithm
Note that for lzma this uses an old version of the algorithm, not that
@@ -428,6 +434,9 @@ def Decompress(indata, algo):
"""
if algo == 'none':
return indata
+ if with_header:
+ data_len = struct.unpack('<I', indata[:4])[0]
+ indata = indata[4:4 + data_len]
fname = GetOutputFilename('%s.decomp.tmp' % algo)
with open(fname, 'wb') as fd:
fd.write(indata)
@@ -473,3 +482,19 @@ def RunIfwiTool(ifwi_file, cmd, fname=None, subpart=None, entry_name=None):
if entry_name:
args += ['-d', '-e', entry_name]
Run(*args)
+
+def ToHex(val):
+ """Convert an integer value (or None) to a string
+
+ Returns:
+ hex value, or 'None' if the value is None
+ """
+ return 'None' if val is None else '%#x' % val
+
+def ToHexSize(val):
+ """Return the size of an object in hex
+
+ Returns:
+ hex value of size, or 'None' if the value is None
+ """
+ return 'None' if val is None else '%#x' % len(val)
diff --git a/tools/patman/tout.py b/tools/patman/tout.py
index 15acce28cb..2a384851b0 100644
--- a/tools/patman/tout.py
+++ b/tools/patman/tout.py
@@ -4,16 +4,14 @@
# Terminal output logging.
#
+from __future__ import print_function
+
import sys
import terminal
# Output verbosity levels that we support
-ERROR = 0
-WARNING = 1
-NOTICE = 2
-INFO = 3
-DEBUG = 4
+ERROR, WARNING, NOTICE, INFO, DETAIL, DEBUG = range(6)
in_progress = False
@@ -87,7 +85,7 @@ def _Output(level, msg, color=None):
ClearProgress()
if color:
msg = _color.Color(color, msg)
- _stdout.write(msg + '\n')
+ print(msg)
def DoOutput(level, msg):
"""Output a message to the terminal.
@@ -105,7 +103,7 @@ def Error(msg):
Args:
msg; Message to display.
"""
- _Output(0, msg, _color.RED)
+ _Output(ERROR, msg, _color.RED)
def Warning(msg):
"""Display a warning message
@@ -113,7 +111,7 @@ def Warning(msg):
Args:
msg; Message to display.
"""
- _Output(1, msg, _color.YELLOW)
+ _Output(WARNING, msg, _color.YELLOW)
def Notice(msg):
"""Display an important infomation message
@@ -121,7 +119,7 @@ def Notice(msg):
Args:
msg; Message to display.
"""
- _Output(2, msg)
+ _Output(NOTICE, msg)
def Info(msg):
"""Display an infomation message
@@ -129,7 +127,7 @@ def Info(msg):
Args:
msg; Message to display.
"""
- _Output(3, msg)
+ _Output(INFO, msg)
def Detail(msg):
"""Display a detailed message
@@ -137,7 +135,7 @@ def Detail(msg):
Args:
msg; Message to display.
"""
- _Output(4, msg)
+ _Output(DETAIL, msg)
def Debug(msg):
"""Display a debug message
@@ -145,7 +143,7 @@ def Debug(msg):
Args:
msg; Message to display.
"""
- _Output(5, msg)
+ _Output(DEBUG, msg)
def UserOutput(msg):
"""Display a message regardless of the current output level.