1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
#!/usr/bin/python2.6
#
# Copyright 2010 Google Inc. All Rights Reserved.
"""Utilities for toolchain build."""
__author__ = "asharif@google.com (Ahmad Sharif)"
import hashlib
import os
import re
import stat
import command_executer
import logger
import tempfile
from contextlib import contextmanager
def GetRoot(scr_name):
"""Break up pathname into (dir+name)."""
abs_path = os.path.abspath(scr_name)
return (os.path.dirname(abs_path), os.path.basename(abs_path))
def FormatQuotedCommand(command):
return command.replace("\"", "\\\"")
def FormatCommands(commands):
output = str(commands)
output = re.sub("&&", "&&\n", output)
output = re.sub(";", ";\n", output)
output = re.sub("\n+\s*", "\n", output)
return output
def GetBuildPackagesCommand(board):
return "./build_packages --nousepkg --withdev --withtest --withautotest " \
"--skip_toolchain_update --nowithdebug --board=%s" % board
def GetBuildImageCommand(board):
return "./build_image --withdev --board=%s" % board
def GetModImageForTestCommand(board):
return "./mod_image_for_test.sh --yes --board=%s" % board
def GetSetupBoardCommand(board, gcc_version=None, binutils_version=None,
usepkg=None, force=None):
options = []
if gcc_version:
options.append("--gcc_version=%s" % gcc_version)
if binutils_version:
options.append("--binutils_version=%s" % binutils_version)
if usepkg:
options.append("--usepkg")
else:
options.append("--nousepkg")
if force:
options.append("--force")
return "./setup_board --board=%s %s" % (board, " ".join(options))
def CanonicalizePath(path):
path = os.path.expanduser(path)
path = os.path.realpath(path)
return path
def GetCtargetFromBoard(board, chromeos_root):
base_board = board.split("_")[0]
command = ("cat"
" $(cros_overlay_list --board=%s --primary_only)/toolchain.conf" %
(base_board))
ce = command_executer.GetCommandExecuter()
ret, out, err = ce.ChrootRunCommand(chromeos_root,
command,
return_output=True)
if ret != 0:
raise ValueError("Board %s is invalid!" % board)
return out.strip()
def GetChromeSrcDir():
return "var/cache/chromeos-chrome/chrome-src/src"
@contextmanager
def WorkingDirectory(new_dir):
old_dir = os.getcwd()
if old_dir != new_dir:
msg = "cd %s" % new_dir
logger.GetLogger().LogCmd(msg)
os.chdir(new_dir)
yield new_dir
if old_dir != new_dir:
msg = "cd %s" % old_dir
logger.GetLogger().LogCmd(msg)
os.chdir(old_dir)
|