mirror of
https://git.yoctoproject.org/poky
synced 2026-03-06 23:39:40 +01:00
wic: make engine.py:get_partitions() resilient to parted/dmidecode stderr output
Running wic commands on Debian 10 systems fail in
scripts/lib/wic/engine.py:get_partitions() 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/engine.py:get_partitions() calls misc.py:exec_cmd(),
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: d6936301d7598b7a783beaae95109555faf6cc17)
Signed-off-by: Geoff Parker <geoffhp@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
2848e37111
commit
50f41202cc
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user