mirror of
https://git.yoctoproject.org/poky
synced 2026-03-19 13:49:41 +01:00
wic/runner.py: move runtool API to misc.py
Moved remaining API to misc.py. Removed runner.py. Now misc.py is ready to be moved to the scripts/lib/wic and utils directory can be removed. (From OE-Core rev: 327e340a29d330f24117e24d0649fa156017208f) 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:
committed by
Richard Purdie
parent
44023e6c41
commit
a0536e61dc
@@ -29,12 +29,12 @@
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
|
||||
from collections import defaultdict
|
||||
from distutils import spawn
|
||||
|
||||
from wic import WicError
|
||||
from wic.utils import runner
|
||||
|
||||
logger = logging.getLogger('wic')
|
||||
|
||||
@@ -59,6 +59,39 @@ NATIVE_RECIPES = {"bmaptool": "bmap-tools",
|
||||
"syslinux": "syslinux"
|
||||
}
|
||||
|
||||
def runtool(cmdln_or_args):
|
||||
""" wrapper for most of the subprocess calls
|
||||
input:
|
||||
cmdln_or_args: can be both args and cmdln str (shell=True)
|
||||
return:
|
||||
rc, output
|
||||
"""
|
||||
if isinstance(cmdln_or_args, list):
|
||||
cmd = cmdln_or_args[0]
|
||||
shell = False
|
||||
else:
|
||||
import shlex
|
||||
cmd = shlex.split(cmdln_or_args)[0]
|
||||
shell = True
|
||||
|
||||
sout = subprocess.PIPE
|
||||
serr = subprocess.STDOUT
|
||||
|
||||
try:
|
||||
process = subprocess.Popen(cmdln_or_args, stdout=sout,
|
||||
stderr=serr, shell=shell)
|
||||
sout, serr = process.communicate()
|
||||
# combine stdout and stderr, filter None out and decode
|
||||
out = ''.join([out.decode('utf-8') for out in [sout, serr] if out])
|
||||
except OSError as err:
|
||||
if err.errno == 2:
|
||||
# [Errno 2] No such file or directory
|
||||
raise WicError('Cannot run command: %s, lost dependency?' % cmd)
|
||||
else:
|
||||
raise # relay
|
||||
|
||||
return process.returncode, out
|
||||
|
||||
def _exec_cmd(cmd_and_args, as_shell=False):
|
||||
"""
|
||||
Execute command, catching stderr, stdout
|
||||
@@ -70,9 +103,9 @@ def _exec_cmd(cmd_and_args, as_shell=False):
|
||||
logger.debug(args)
|
||||
|
||||
if as_shell:
|
||||
ret, out = runner.runtool(cmd_and_args)
|
||||
ret, out = runtool(cmd_and_args)
|
||||
else:
|
||||
ret, out = runner.runtool(args)
|
||||
ret, out = runtool(args)
|
||||
out = out.strip()
|
||||
if ret != 0:
|
||||
raise WicError("_exec_cmd: %s returned '%s' instead of 0\noutput: %s" % \
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
#!/usr/bin/env python -tt
|
||||
#
|
||||
# Copyright (c) 2011 Intel, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; version 2 of the License
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59
|
||||
# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
import subprocess
|
||||
|
||||
from wic import WicError
|
||||
|
||||
def runtool(cmdln_or_args):
|
||||
""" wrapper for most of the subprocess calls
|
||||
input:
|
||||
cmdln_or_args: can be both args and cmdln str (shell=True)
|
||||
return:
|
||||
rc, output
|
||||
"""
|
||||
if isinstance(cmdln_or_args, list):
|
||||
cmd = cmdln_or_args[0]
|
||||
shell = False
|
||||
else:
|
||||
import shlex
|
||||
cmd = shlex.split(cmdln_or_args)[0]
|
||||
shell = True
|
||||
|
||||
sout = subprocess.PIPE
|
||||
serr = subprocess.STDOUT
|
||||
|
||||
try:
|
||||
process = subprocess.Popen(cmdln_or_args, stdout=sout,
|
||||
stderr=serr, shell=shell)
|
||||
sout, serr = process.communicate()
|
||||
# combine stdout and stderr, filter None out and decode
|
||||
out = ''.join([out.decode('utf-8') for out in [sout, serr] if out])
|
||||
except OSError as err:
|
||||
if err.errno == 2:
|
||||
# [Errno 2] No such file or directory
|
||||
raise WicError('Cannot run command: %s, lost dependency?' % cmd)
|
||||
else:
|
||||
raise # relay
|
||||
|
||||
return process.returncode, out
|
||||
Reference in New Issue
Block a user