Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Unified Diff: chromite/lib/cros_build_lib.py

Issue 6371018: Remove chromite from crosutils.git. It's been moved to chromite.git. (Closed) Base URL: http://git.chromium.org/git/crosutils.git@master
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chromite/lib/binpkg.py ('k') | chromite/lib/cros_build_lib_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromite/lib/cros_build_lib.py
diff --git a/chromite/lib/cros_build_lib.py b/chromite/lib/cros_build_lib.py
deleted file mode 100644
index 87fa133b75cab27180bd1c575ec2fe655fc78e45..0000000000000000000000000000000000000000
--- a/chromite/lib/cros_build_lib.py
+++ /dev/null
@@ -1,251 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Common python commands used by various build scripts."""
-
-import os
-import re
-import subprocess
-import sys
-
-_STDOUT_IS_TTY = hasattr(sys.stdout, 'isatty') and sys.stdout.isatty()
-
-
-class CommandResult(object):
- """An object to store various attributes of a child process."""
-
- def __init__(self):
- self.cmd = None
- self.error = None
- self.output = None
- self.returncode = None
-
-
-class RunCommandError(Exception):
- """Error caught in RunCommand() method."""
- pass
-
-
-def RunCommand(cmd, print_cmd=True, error_ok=False, error_message=None,
- exit_code=False, redirect_stdout=False, redirect_stderr=False,
- cwd=None, input=None, enter_chroot=False, shell=False):
- """Runs a command.
-
- Args:
- cmd: cmd to run. Should be input to subprocess.Popen.
- print_cmd: prints the command before running it.
- error_ok: does not raise an exception on error.
- error_message: prints out this message when an error occurrs.
- exit_code: returns the return code of the shell command.
- redirect_stdout: returns the stdout.
- redirect_stderr: holds stderr output until input is communicated.
- cwd: the working directory to run this cmd.
- input: input to pipe into this command through stdin.
- enter_chroot: this command should be run from within the chroot. If set,
- cwd must point to the scripts directory.
- shell: If shell is True, the specified command will be executed through
- the shell.
-
- Returns:
- A CommandResult object.
-
- Raises:
- Exception: Raises generic exception on error with optional error_message.
- """
- # Set default for variables.
- stdout = None
- stderr = None
- stdin = None
- cmd_result = CommandResult()
-
- # Modify defaults based on parameters.
- if redirect_stdout: stdout = subprocess.PIPE
- if redirect_stderr: stderr = subprocess.PIPE
- # TODO(sosa): gpylint complains about redefining built-in 'input'.
- # Can we rename this variable?
- if input: stdin = subprocess.PIPE
- if isinstance(cmd, basestring):
- if enter_chroot: cmd = './enter_chroot.sh -- ' + cmd
- cmd_str = cmd
- else:
- if enter_chroot: cmd = ['./enter_chroot.sh', '--'] + cmd
- cmd_str = ' '.join(cmd)
-
- # Print out the command before running.
- if print_cmd:
- Info('RunCommand: %s' % cmd_str)
- cmd_result.cmd = cmd_str
-
- try:
- proc = subprocess.Popen(cmd, cwd=cwd, stdin=stdin, stdout=stdout,
- stderr=stderr, shell=shell)
- (cmd_result.output, cmd_result.error) = proc.communicate(input)
- if exit_code:
- cmd_result.returncode = proc.returncode
-
- if not error_ok and proc.returncode:
- msg = ('Command "%s" failed.\n' % cmd_str +
- (error_message or cmd_result.error or cmd_result.output or ''))
- raise RunCommandError(msg)
- # TODO(sosa): is it possible not to use the catch-all Exception here?
- except Exception, e:
- if not error_ok:
- raise
- else:
- Warning(str(e))
-
- return cmd_result
-
-
-class Color(object):
- """Conditionally wraps text in ANSI color escape sequences."""
- BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8)
- BOLD = -1
- COLOR_START = '\033[1;%dm'
- BOLD_START = '\033[1m'
- RESET = '\033[0m'
-
- def __init__(self, enabled=True):
- self._enabled = enabled
-
- def Color(self, color, text):
- """Returns text with conditionally added color escape sequences.
-
- Args:
- color: Text color -- one of the color constants defined in this class.
- text: The text to color.
-
- Returns:
- If self._enabled is False, returns the original text. If it's True,
- returns text with color escape sequences based on the value of color.
- """
- if not self._enabled:
- return text
- if color == self.BOLD:
- start = self.BOLD_START
- else:
- start = self.COLOR_START % (color + 30)
- return start + text + self.RESET
-
-
-def Die(message):
- """Emits a red error message and halts execution.
-
- Args:
- message: The message to be emitted before exiting.
- """
- print >> sys.stderr, (
- Color(_STDOUT_IS_TTY).Color(Color.RED, '\nERROR: ' + message))
- sys.exit(1)
-
-
-# pylint: disable-msg=W0622
-def Warning(message):
- """Emits a yellow warning message and continues execution.
-
- Args:
- message: The message to be emitted.
- """
- print >> sys.stderr, (
- Color(_STDOUT_IS_TTY).Color(Color.YELLOW, '\nWARNING: ' + message))
-
-
-def Info(message):
- """Emits a blue informational message and continues execution.
-
- Args:
- message: The message to be emitted.
- """
- print >> sys.stderr, (
- Color(_STDOUT_IS_TTY).Color(Color.BLUE, '\nINFO: ' + message))
-
-
-def ListFiles(base_dir):
- """Recurively list files in a directory.
-
- Args:
- base_dir: directory to start recursively listing in.
-
- Returns:
- A list of files relative to the base_dir path or
- An empty list of there are no files in the directories.
- """
- directories = [base_dir]
- files_list = []
- while directories:
- directory = directories.pop()
- for name in os.listdir(directory):
- fullpath = os.path.join(directory, name)
- if os.path.isfile(fullpath):
- files_list.append(fullpath)
- elif os.path.isdir(fullpath):
- directories.append(fullpath)
-
- return files_list
-
-
-def IsInsideChroot():
- """Returns True if we are inside chroot."""
- return os.path.exists('/etc/debian_chroot')
-
-
-def GetSrcRoot():
- """Get absolute path to src/scripts/ directory.
-
- Assuming test script will always be run from descendent of src/scripts.
-
- Returns:
- A string, absolute path to src/scripts directory. None if not found.
- """
- src_root = None
- match_str = '/src/scripts/'
- test_script_path = os.path.abspath('.')
-
- path_list = re.split(match_str, test_script_path)
- if path_list:
- src_root = os.path.join(path_list[0], match_str.strip('/'))
- Info ('src_root = %r' % src_root)
- else:
- Info ('No %r found in %r' % (match_str, test_script_path))
-
- return src_root
-
-
-def GetChromeosVersion(str_obj):
- """Helper method to parse output for CHROMEOS_VERSION_STRING.
-
- Args:
- str_obj: a string, which may contain Chrome OS version info.
-
- Returns:
- A string, value of CHROMEOS_VERSION_STRING environment variable set by
- chromeos_version.sh. Or None if not found.
- """
- if str_obj is not None:
- match = re.search('CHROMEOS_VERSION_STRING=([0-9_.]+)', str_obj)
- if match and match.group(1):
- Info ('CHROMEOS_VERSION_STRING = %s' % match.group(1))
- return match.group(1)
-
- Info ('CHROMEOS_VERSION_STRING NOT found')
- return None
-
-
-def GetOutputImageDir(board, cros_version):
- """Construct absolute path to output image directory.
-
- Args:
- board: a string.
- cros_version: a string, Chrome OS version.
-
- Returns:
- a string: absolute path to output directory.
- """
- src_root = GetSrcRoot()
- rel_path = 'build/images/%s' % board
- # ASSUME: --build_attempt always sets to 1
- version_str = '-'.join([cros_version, 'a1'])
- output_dir = os.path.join(os.path.dirname(src_root), rel_path, version_str)
- Info ('output_dir = %s' % output_dir)
- return output_dir
« no previous file with comments | « chromite/lib/binpkg.py ('k') | chromite/lib/cros_build_lib_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698