diff options
authorGeoff Parker <>2018-10-11 09:31:26 -0700
committerRichard Purdie <>2019-04-25 15:01:21 +0100
commitbc7a89f5ecf1cb01275409ff798b8e2e831d1a72 (patch)
parent87c218c00682c250c27cacd813a5ab9bb9aa1843 (diff)
wic: make resilient to parted/dmidecode stderr output
Running wic commands on Debian 10 systems fail in scripts/lib/wic/ due to new stderr output captured when trying to parse the output from /sbin/parted as a non-root user. The parted command calls the dmidecode utility, which produces this error as a non-root user: /sys/firmware/dmi/tables/smbios_entry_point: Permission denied /dev/mem: Permission denied scripts/lib/wic/ calls, a subprocess wrapper which returns a combined stderr and sdtdout. These messages to stderr confuse the partition table parser in get_partitions(). This patch has the partition table parser ignore lines before the expected "BYT;" header string. Running wic in Debian 9 does not have this issue. (From OE-Core rev: 6b5681533eed4e6c00e1cc7ee442c93076f1c976) Signed-off-by: Geoff Parker <> Signed-off-by: Richard Purdie <> Signed-off-by: Armin Kuster <> Signed-off-by: Richard Purdie <>
1 files changed, 7 insertions, 2 deletions
diff --git a/scripts/lib/wic/ b/scripts/lib/wic/
index 4996bfffe7..4eefc94b84 100644
--- a/scripts/lib/wic/
+++ b/scripts/lib/wic/
@@ -266,10 +266,15 @@ class Disk:
out = exec_cmd("%s -sm %s unit B print" % (self.parted, self.imagepath))
parttype = namedtuple("Part", "pnum start end size fstype")
splitted = out.splitlines()
- lsector_size, psector_size, self._ptable_format = splitted[1].split(":")[3:6]
+ # skip over possible errors in exec_cmd output
+ try:
+ idx =splitted.index("BYT;")
+ except ValueError:
+ raise WicError("Error getting partition information from %s" % (self.parted))
+ lsector_size, psector_size, self._ptable_format = splitted[idx + 1].split(":")[3:6]
self._lsector_size = int(lsector_size)
self._psector_size = int(psector_size)
- for line in splitted[2:]:
+ for line in splitted[idx + 2:]:
pnum, start, end, size, fstype = line.split(':')[:5]
partition = parttype(int(pnum), int(start[:-1]), int(end[:-1]),
int(size[:-1]), fstype)