blob: 3cfc6a69b87c086852466070a279b9a5cc5fafb4 [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
77 cflags = ""
78 if options.cflags is not None:
79 cflags = "CFLAGS=" + options.cflags
80
81 cxxflags = ""
82 if options.cxxflags is not None:
83 cxxflags = "CXXFLAGS=" + options.cxxflags
84
85 ldflags = ""
86 if options.ldflags is not None:
87 ldflags = "LDFLAGS=" + options.ldflags
88
89 # Emerge the browser
90 ret = (build_chromeos.
91 ExecuteCommandInChroot(options.chromeos_root, options.toolchain_root,
92 "CHROME_ORIGIN=SERVER_SOURCE %s "
93 "%s %s %s "
94 "emerge-%s chromeos-chrome" %
95 (chrome_version, cflags, cxxflags, ldflags,
96 options.board)))
97
98 utils.AssertTrue(ret == 0, "build_packages failed")
99
100 # Build image
101 ret = (build_chromeos.
102 ExecuteCommandInChroot(options.chromeos_root, options.toolchain_root,
103 "./build_image --board=%s" % options.board))
104
105 utils.AssertTrue(ret == 0, "build_image failed")
106
107 # Mod image for test
108 ret = (build_chromeos.
109 ExecuteCommandInChroot(options.chromeos_root, options.toolchain_root,
110 "./mod_image_for_test.sh --board=%s"
111 % options.board))
112
113 utils.AssertTrue(ret == 0, "mod_image_for_test failed")
114
115if __name__ == "__main__":
116 Main()