releasetools: Fix the error message.
This avoids showing a message as below:
raise BuildImageError("Failed to get tune2fs usage:\n{}".format(output))
UnboundLocalError: local variable 'output' referenced before assignment
The `output` won't be set under such a case, which unfortunately hides
the real cause. This CL addresses the issue by letting it throw
implicitly, which contains the command and outputs.
Test: `m dist`
Test: `python -m unittest test_build_image`
Change-Id: Icf015bab8869d150516246ed73552f6502127cdf
diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py
index d731842..b88171f 100755
--- a/tools/releasetools/build_image.py
+++ b/tools/releasetools/build_image.py
@@ -58,15 +58,9 @@
Returns:
The number of bytes based on a 1K block_size.
-
- Raises:
- BuildImageError: On error.
"""
cmd = ["du", "-k", "-s", path]
- try:
- output = common.RunAndCheckOutput(cmd, verbose=False)
- except common.ExternalError:
- raise BuildImageError("Failed to get disk usage:\n{}".format(output))
+ output = common.RunAndCheckOutput(cmd, verbose=False)
return int(output.split()[0]) * 1024
@@ -78,15 +72,9 @@
Returns:
The number of inodes used.
-
- Raises:
- BuildImageError: On error.
"""
cmd = ["find", path, "-print"]
- try:
- output = common.RunAndCheckOutput(cmd, verbose=False)
- except common.ExternalError:
- raise BuildImageError("Failed to get disk inode usage:\n{}".format(output))
+ output = common.RunAndCheckOutput(cmd, verbose=False)
# increase by > 4% as number of files and directories is not whole picture.
return output.count('\n') * 25 // 24
@@ -99,19 +87,15 @@
Returns:
The characteristics dictionary.
-
- Raises:
- BuildImageError: On error.
"""
unsparse_image_path = UnsparseImage(sparse_image_path, replace=False)
cmd = ["tune2fs", "-l", unsparse_image_path]
try:
output = common.RunAndCheckOutput(cmd, verbose=False)
- except common.ExternalError:
- raise BuildImageError("Failed to get tune2fs usage:\n{}".format(output))
- os.remove(unsparse_image_path)
- fs_dict = { }
+ finally:
+ os.remove(unsparse_image_path)
+ fs_dict = {}
for line in output.splitlines():
fields = line.split(":")
if len(fields) == 2: