blob: 1543595466fdb5189c40d60473fceff3dd973ba6 [file] [log] [blame]
raymes49fd5a32013-02-15 04:55:27 +00001#!/usr/bin/python2.6
2#
3# Copyright 2010 Google Inc. All Rights Reserved.
4
5"""Script to checkout the ChromeOS source.
6
7This script sets up the ChromeOS source in the given directory, matching a
8particular release of ChromeOS.
9"""
10
11__author__ = "raymes@google.com (Raymes Khoury)"
12
13import optparse
14import sys
15from utils import command_executer
16from utils import logger
17from utils import utils
18import build_chromeos
19
20cmd_executer = None
21
22
23def Usage(parser, message):
24 print "ERROR: " + message
25 parser.print_help()
26 sys.exit(0)
27
28
29def Main():
30 """Build Chrome browser."""
31 # Common initializations
32 global cmd_executer
33 cmd_executer = command_executer.GetCommandExecuter()
34
35 parser = optparse.OptionParser()
36 parser.add_option("--chromeos_root", dest="chromeos_root",
37 help="Target directory for ChromeOS installation.")
38 parser.add_option("--toolchain_root", dest="toolchain_root",
39 help="The gcctools directory of your P4 checkout.")
40 parser.add_option("--version", dest="version")
41 parser.add_option("--cflags", dest="cflags",
42 help="CFLAGS for the ChromeOS packages")
43 parser.add_option("--cxxflags", dest="cxxflags",
44 help="CXXFLAGS for the ChromeOS packages")
45 parser.add_option("--ldflags", dest="ldflags",
46 help="LDFLAGS for the ChromeOS packages")
47 parser.add_option("--board", dest="board",
48 help="ChromeOS target board, e.g. x86-generic")
49
50 options = parser.parse_args()[0]
51
52 if options.chromeos_root is None:
53 Usage(parser, "--chromeos_root must be set")
54
55 if options.board is None:
56 Usage(parser, "--board must be set")
57
58 if options.toolchain_root is not None:
59 logger.GetLogger().LogOutput("Installing the toolchain.")
60 rootdir = rootdir = utils.GetRoot(sys.argv[0])[0]
61 ret = cmd_executer.RunCommand(rootdir + "/build_tc.py --chromeos_root=%s "
62 "--toolchain_root=%s --board=%s -B"
63 % (options.chromeos_root,
64 options.toolchain_root, options.board))
65 utils.AssertTrue(ret == 0, "build_tc.py failed")
66 else:
67 logger.GetLogger().LogOutput("--toolchain_root not given, "
68 "so just using the existing toolchain")
69
70 if options.version is None:
71 logger.GetLogger().LogOutput("No Chrome version given so "
72 "using the default checked in version.")
73 chrome_version = ""
74 else:
75 chrome_version = "CHROME_VERSION=%s" % options.version
76
raymes49fd5a32013-02-15 04:55:27 +000077 # Emerge the browser
78 ret = (build_chromeos.
79 ExecuteCommandInChroot(options.chromeos_root, options.toolchain_root,
80 "CHROME_ORIGIN=SERVER_SOURCE %s "
raymesaa351762013-02-15 04:56:51 +000081 "CFLAGS=\"$(portageq-%s envvar CFLAGS) %s\" "
82 "LDFLAGS=\"$(portageq-%s envvar LDFLAGS) %s\" "
83 "CXXFLAGS=\"$(portageq-%s envvar CXXFLAGS) %s\" "
raymes49fd5a32013-02-15 04:55:27 +000084 "emerge-%s chromeos-chrome" %
raymesaa351762013-02-15 04:56:51 +000085 (chrome_version, options.board, options.cflags,
86 options.board, options.ldflags, options.board,
87 options.cxxflags, options.board)))
raymes49fd5a32013-02-15 04:55:27 +000088
89 utils.AssertTrue(ret == 0, "build_packages failed")
90
91 # Build image
92 ret = (build_chromeos.
93 ExecuteCommandInChroot(options.chromeos_root, options.toolchain_root,
raymes81d88962013-02-15 04:56:26 +000094 "./build_image --yes --board=%s" % options.board))
raymes49fd5a32013-02-15 04:55:27 +000095
96 utils.AssertTrue(ret == 0, "build_image failed")
97
98 # Mod image for test
99 ret = (build_chromeos.
100 ExecuteCommandInChroot(options.chromeos_root, options.toolchain_root,
101 "./mod_image_for_test.sh --board=%s"
102 % options.board))
103
104 utils.AssertTrue(ret == 0, "mod_image_for_test failed")
105
106if __name__ == "__main__":
107 Main()