From ea0f478cfa9b225fb7db5928a99ee23b77c51062 Mon Sep 17 00:00:00 2001 From: Krzesimir Nowak Date: Tue, 17 Aug 2021 11:33:07 +0200 Subject: [PATCH] build_library: Fix some string vs bytes issues This is some fallout from converting scripts from python2 to python3. Output received from the functions in subprocess module now return bytearrays, but we operate on them as if they were a text. So decode the bytearrays to strings. Otherwise we are either getting some junk values passed to the command line utilities (for example: `b'/dev/loop2'` instead of `/dev/loop2`), or exceptions are thrown, because a function expected a string. --- build_library/disk_util | 7 ++++--- build_library/generate_au_zip.py | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/build_library/disk_util b/build_library/disk_util index 8505c0db77..643b159667 100755 --- a/build_library/disk_util +++ b/build_library/disk_util @@ -198,7 +198,7 @@ def GetPartitionTableFromImage(options, config, partitions): """ block_size = config['metadata']['block_size'] cgpt_show = subprocess.check_output( - ['cgpt', 'show', '-q', options.disk_image]) + ['cgpt', 'show', '-q', options.disk_image]).decode('utf8') for line in cgpt_show.split('\n'): if not line.strip(): continue @@ -235,7 +235,7 @@ def GetPartitionTableFromImage(options, config, partitions): with PartitionLoop(options, part) as loop_dev: try: part['image_fs_type'] = subprocess.check_output( - ['sudo', 'blkid', '-o', 'value', '-s', 'TYPE', loop_dev]).strip() + ['sudo', 'blkid', '-o', 'value', '-s', 'TYPE', loop_dev]).strip().decode('utf8') except subprocess.CalledProcessError: part['image_fs_type'] = None @@ -452,6 +452,7 @@ def PartitionLoop(options, partition): '--sizelimit', str(partition['bytes']), '--find', '--show', options.disk_image]) loop_dev = loop_dev.strip() + loop_dev = loop_dev.decode('utf8') err = None break except subprocess.CalledProcessError as error: @@ -785,7 +786,7 @@ def Verity(options): '--hash-block-size', part['fs_block_size'], '--data-blocks', part['fs_blocks'], '--hash-offset', part['fs_bytes'], - loop_dev, loop_dev]) + loop_dev, loop_dev]).decode('utf8') print(verityout.strip()) m = re.search("Root hash:\s+([a-f0-9]{64})$", verityout, re.IGNORECASE|re.MULTILINE) if not m: diff --git a/build_library/generate_au_zip.py b/build_library/generate_au_zip.py index 437ccce112..2a660a91ef 100755 --- a/build_library/generate_au_zip.py +++ b/build_library/generate_au_zip.py @@ -128,6 +128,8 @@ def DepsToCopy(ldd_files, allow_list): if not stdout_data: continue + stdout_data = stdout_data.decode('utf8') + stderr_data = stderr_data.decode('utf8') logging.debug('ldd for %s = stdout = %s stderr =%s', file_name, stdout_data, stderr_data)