wic: exec_native_cmd: implement support for pseudo
Wic runs some tools through pseudo, which makes exec_native_cmd to fail and throw cryptic error message when tool is not baked: For example: Error: exec_cmd: 'export PSEUDO_PREFIX=/media/ssd/poky-build/tmp/sysroots/x86_64-linux/usr;export PSEUDO_LOCALSTATEDIR=/media/ssd/poky-build/tmp/work/qemux86-poky-linux/ ... PSEUDO_PASSWD=/media/ssd/poky-build/tmp/work/qemux86-poky-linux/ ... PSEUDO_NOSYMLINKEXP=1;/media/ssd/poky-build/tmp/sysroots/ ... mkfs.ext4 -F -i 8192 /var/tmp/wic/build/rootfs_platform.7.ext4 -L platform -d /media/ssd/poky-build/tmp/work/qemux86-poky-linux/core-image-minimal/... returned '1' instead of 0 Made exec_native_cmd aware of pseudo and properly report errors when command is not found. (From OE-Core rev: 04bab58809c63c9114feb0aadc9b6115be10fcc4) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
8ffba255a8
commit
67af6d6402
|
@ -297,7 +297,7 @@ class Wic_PartData(FC4_PartData):
|
|||
|
||||
mkfs_cmd = "mkfs.%s -F %s %s %s -d %s" % \
|
||||
(self.fstype, extra_imagecmd, rootfs, label_str, rootfs_dir)
|
||||
exec_native_cmd(pseudo + mkfs_cmd, native_sysroot)
|
||||
exec_native_cmd(mkfs_cmd, native_sysroot, pseudo=pseudo)
|
||||
|
||||
def prepare_rootfs_btrfs(self, rootfs, oe_builddir, rootfs_dir,
|
||||
native_sysroot, pseudo):
|
||||
|
@ -330,7 +330,7 @@ class Wic_PartData(FC4_PartData):
|
|||
|
||||
mkfs_cmd = "mkfs.%s -b %d -r %s %s %s" % \
|
||||
(self.fstype, rootfs_size * 1024, rootfs_dir, label_str, rootfs)
|
||||
exec_native_cmd(pseudo + mkfs_cmd, native_sysroot)
|
||||
exec_native_cmd(mkfs_cmd, native_sysroot, pseudo=pseudo)
|
||||
|
||||
def prepare_rootfs_vfat(self, rootfs, oe_builddir, rootfs_dir,
|
||||
native_sysroot, pseudo):
|
||||
|
@ -378,7 +378,7 @@ class Wic_PartData(FC4_PartData):
|
|||
"""
|
||||
squashfs_cmd = "mksquashfs %s %s -noappend" % \
|
||||
(rootfs_dir, rootfs)
|
||||
exec_native_cmd(pseudo + squashfs_cmd, native_sysroot)
|
||||
exec_native_cmd(squashfs_cmd, native_sysroot, pseudo=pseudo)
|
||||
|
||||
def prepare_empty_partition_ext(self, rootfs, oe_builddir,
|
||||
native_sysroot):
|
||||
|
|
|
@ -89,7 +89,7 @@ def cmd_in_path(cmd, path):
|
|||
|
||||
return bb.utils.which(path, cmd) != "" or False
|
||||
|
||||
def exec_native_cmd(cmd_and_args, native_sysroot, catch=3):
|
||||
def exec_native_cmd(cmd_and_args, native_sysroot, catch=3, pseudo=""):
|
||||
"""
|
||||
Execute native command, catching stderr, stdout
|
||||
|
||||
|
@ -97,6 +97,12 @@ def exec_native_cmd(cmd_and_args, native_sysroot, catch=3):
|
|||
|
||||
Always need to execute native commands as_shell
|
||||
"""
|
||||
# The reason -1 is used is because there may be "export" commands.
|
||||
args = cmd_and_args.split(';')[-1].split()
|
||||
msger.debug(args)
|
||||
|
||||
if pseudo:
|
||||
cmd_and_args = pseudo + cmd_and_args
|
||||
native_paths = \
|
||||
"%s/sbin:%s/usr/sbin:%s/usr/bin" % \
|
||||
(native_sysroot, native_sysroot, native_sysroot)
|
||||
|
@ -104,18 +110,16 @@ def exec_native_cmd(cmd_and_args, native_sysroot, catch=3):
|
|||
(native_paths, cmd_and_args)
|
||||
msger.debug("exec_native_cmd: %s" % cmd_and_args)
|
||||
|
||||
# The reason -1 is used is because there may be "export" commands.
|
||||
args = cmd_and_args.split(';')[-1].split()
|
||||
msger.debug(args)
|
||||
|
||||
# If the command isn't in the native sysroot say we failed.
|
||||
if cmd_in_path(args[0], native_paths):
|
||||
ret, out = _exec_cmd(native_cmd_and_args, True, catch)
|
||||
else:
|
||||
ret = 127
|
||||
|
||||
if ret == 127: # shell command-not-found
|
||||
prog = args[0]
|
||||
prog = args[0]
|
||||
# shell command-not-found
|
||||
if ret == 127 \
|
||||
or (pseudo and ret == 1 and out == "Can't find '%s' in $PATH." % prog):
|
||||
msg = "A native program %s required to build the image "\
|
||||
"was not found (see details above).\n\n" % prog
|
||||
recipe = NATIVE_RECIPES.get(prog)
|
||||
|
|
Loading…
Reference in New Issue