aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/lib/wic/utils/oe/misc.py
diff options
context:
space:
mode:
authorTom Zanussi <tom.zanussi@linux.intel.com>2014-08-08 15:53:52 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-08-11 10:52:19 +0100
commit598b120406dc1d2b7e377bd1ab6f0acbef034b22 (patch)
tree25b51e30cf73935cdf80bd2f9766def49ddbc808 /scripts/lib/wic/utils/oe/misc.py
parentd39c76f24a50c9359840c0959fb50fc6da0960cd (diff)
downloadopenembedded-core-contrib-598b120406dc1d2b7e377bd1ab6f0acbef034b22.tar.gz
wic: Rename /mic to /wic
As well as any other stray instances of mic in the codebase that can be removed. We don't really need to carry around legacy naming, and the history is in git. Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Diffstat (limited to 'scripts/lib/wic/utils/oe/misc.py')
-rw-r--r--scripts/lib/wic/utils/oe/misc.py181
1 files changed, 181 insertions, 0 deletions
diff --git a/scripts/lib/wic/utils/oe/misc.py b/scripts/lib/wic/utils/oe/misc.py
new file mode 100644
index 0000000000..87e30411b0
--- /dev/null
+++ b/scripts/lib/wic/utils/oe/misc.py
@@ -0,0 +1,181 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# Copyright (c) 2013, Intel Corporation.
+# All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# DESCRIPTION
+# This module provides a place to collect various wic-related utils
+# for the OpenEmbedded Image Tools.
+#
+# AUTHORS
+# Tom Zanussi <tom.zanussi (at] linux.intel.com>
+#
+
+from wic import msger
+from wic.utils import runner
+
+def __exec_cmd(cmd_and_args, as_shell = False, catch = 3):
+ """
+ Execute command, catching stderr, stdout
+
+ Need to execute as_shell if the command uses wildcards
+ """
+ msger.debug("__exec_cmd: %s" % cmd_and_args)
+ args = cmd_and_args.split()
+ msger.debug(args)
+
+ if (as_shell):
+ rc, out = runner.runtool(cmd_and_args, catch)
+ else:
+ rc, out = runner.runtool(args, catch)
+ out = out.strip()
+ msger.debug("__exec_cmd: output for %s (rc = %d): %s" % \
+ (cmd_and_args, rc, out))
+
+ return (rc, out)
+
+
+def exec_cmd(cmd_and_args, as_shell = False, catch = 3):
+ """
+ Execute command, catching stderr, stdout
+
+ Exits if rc non-zero
+ """
+ rc, out = __exec_cmd(cmd_and_args, as_shell, catch)
+
+ if rc != 0:
+ msger.error("exec_cmd: %s returned '%s' instead of 0" % (cmd_and_args, rc))
+
+ return out
+
+
+def exec_cmd_quiet(cmd_and_args, as_shell = False):
+ """
+ Execute command, catching nothing in the output
+
+ Exits if rc non-zero
+ """
+ return exec_cmd(cmd_and_args, as_shell, 0)
+
+
+def exec_native_cmd(cmd_and_args, native_sysroot, catch = 3):
+ """
+ Execute native command, catching stderr, stdout
+
+ Need to execute as_shell if the command uses wildcards
+
+ Always need to execute native commands as_shell
+ """
+ native_paths = \
+ "export PATH=%s/sbin:%s/usr/sbin:%s/usr/bin:$PATH" % \
+ (native_sysroot, native_sysroot, native_sysroot)
+ native_cmd_and_args = "%s;%s" % (native_paths, cmd_and_args)
+ msger.debug("exec_native_cmd: %s" % cmd_and_args)
+
+ args = cmd_and_args.split()
+ msger.debug(args)
+
+ rc, out = __exec_cmd(native_cmd_and_args, True, catch)
+
+ if rc == 127: # shell command-not-found
+ msger.error("A native (host) program required to build the image "
+ "was not found (see details above). Please make sure "
+ "it's installed and try again.")
+
+ return (rc, out)
+
+
+def exec_native_cmd_quiet(cmd_and_args, native_sysroot):
+ """
+ Execute native command, catching nothing in the output
+
+ Need to execute as_shell if the command uses wildcards
+
+ Always need to execute native commands as_shell
+ """
+ return exec_native_cmd(cmd_and_args, native_sysroot, 0)
+
+
+# kickstart doesn't support variable substution in commands, so this
+# is our current simplistic scheme for supporting that
+
+wks_vars = dict()
+
+def get_wks_var(key):
+ return wks_vars[key]
+
+def add_wks_var(key, val):
+ wks_vars[key] = val
+
+BOOTDD_EXTRA_SPACE = 16384
+IMAGE_EXTRA_SPACE = 10240
+
+__bitbake_env_lines = ""
+
+def set_bitbake_env_lines(bitbake_env_lines):
+ global __bitbake_env_lines
+ __bitbake_env_lines = bitbake_env_lines
+
+def get_bitbake_env_lines():
+ return __bitbake_env_lines
+
+def find_bitbake_env_lines(image_name):
+ """
+ If image_name is empty, plugins might still be able to use the
+ environment, so set it regardless.
+ """
+ if image_name:
+ bitbake_env_cmd = "bitbake -e %s" % image_name
+ else:
+ bitbake_env_cmd = "bitbake -e"
+ rc, bitbake_env_lines = __exec_cmd(bitbake_env_cmd)
+ if rc != 0:
+ print "Couldn't get '%s' output." % bitbake_env_cmd
+ return None
+
+ return bitbake_env_lines
+
+def find_artifact(bitbake_env_lines, variable):
+ """
+ Gather the build artifact for the current image (the image_name
+ e.g. core-image-minimal) for the current MACHINE set in local.conf
+ """
+ retval = ""
+
+ for line in bitbake_env_lines.split('\n'):
+ if (get_line_val(line, variable)):
+ retval = get_line_val(line, variable)
+ break
+
+ return retval
+
+def get_line_val(line, key):
+ """
+ Extract the value from the VAR="val" string
+ """
+ if line.startswith(key + "="):
+ stripped_line = line.split('=')[1]
+ stripped_line = stripped_line.replace('\"', '')
+ return stripped_line
+ return None
+
+def get_bitbake_var(key):
+ for line in __bitbake_env_lines.split('\n'):
+ if (get_line_val(line, key)):
+ val = get_line_val(line, key)
+ return val
+ return None