blob: 2b17ac423b1b3ab40e5f9ef4903b48ba9b66e23a [file] [log] [blame]
bjanakiraman7f4a4852013-02-15 04:35:28 +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
asharifca35b772013-02-15 04:56:41 +000013import getpass
asharif911bd272013-02-15 09:04:48 +000014import multiprocessing
bjanakiraman7f4a4852013-02-15 04:35:28 +000015import optparse
raymesbfb57992013-02-15 04:35:45 +000016import os
bjanakiraman7f4a4852013-02-15 04:35:28 +000017import sys
raymes01959ae2013-02-15 04:50:07 +000018from utils import command_executer
raymes69c8d722013-02-15 17:55:36 +000019from utils import logger
bjanakiraman7f4a4852013-02-15 04:35:28 +000020
raymesbfb57992013-02-15 04:35:45 +000021GCLIENT_FILE = """solutions = [
22 { "name" : "CHROME_DEPS",
23 "url" :
24 "svn://svn.chromium.org/chrome-internal/trunk/tools/buildspec/releases/%s",
25 "custom_deps" : {
26 "src/third_party/WebKit/LayoutTests": None,
27 "src-pdf": None,
28 "src/pdf": None,
29 },
30 "safesync_url": "",
31 },
32]
33"""
34
bjanakiraman7f4a4852013-02-15 04:35:28 +000035# Common initializations
asharif5a9bb462013-02-15 04:50:57 +000036cmd_executer = None
bjanakiraman7f4a4852013-02-15 04:35:28 +000037
raymesbfb57992013-02-15 04:35:45 +000038def StoreFile(filename, contents):
39 f = open(filename, "w")
40 f.write(contents)
41 f.close()
42
43
bjanakiraman7f4a4852013-02-15 04:35:28 +000044def Usage(parser):
45 parser.print_help()
46 sys.exit(0)
47
48
asharif0d3535a2013-02-15 04:50:33 +000049def Main(argv):
bjanakiraman7f4a4852013-02-15 04:35:28 +000050 """Checkout the ChromeOS source."""
asharif5a9bb462013-02-15 04:50:57 +000051 global cmd_executer
52 cmd_executer = command_executer.GetCommandExecuter()
bjanakiraman7f4a4852013-02-15 04:35:28 +000053 parser = optparse.OptionParser()
54 parser.add_option("--dir", dest="directory",
55 help="Target directory for ChromeOS installation.")
raymesd1eed802013-02-15 04:36:08 +000056 parser.add_option("--version", dest="version", default="latest",
bjanakiraman7f4a4852013-02-15 04:35:28 +000057 help="""ChromeOS version. Can be: (1) A release version
58in the format: 'X.X.X.X' (2) 'latest' for the latest release version or (3)
59'top' for top of trunk. Default is 'latest'""")
raymes01959ae2013-02-15 04:50:07 +000060 parser.add_option("--minilayout", dest="minilayout", default=False,
asharifdff61342013-02-15 04:50:46 +000061 action="store_true",
raymes01959ae2013-02-15 04:50:07 +000062 help="""Whether to checkout the minilayout
63(smaller checkout).'""")
raymes69c8d722013-02-15 17:55:36 +000064 parser.add_option("--jobs", "-j", dest="jobs", default="1",
65 help="Number of repo sync threads to use.")
bjanakiraman7f4a4852013-02-15 04:35:28 +000066
asharif0d3535a2013-02-15 04:50:33 +000067 options = parser.parse_args(argv)[0]
bjanakiraman7f4a4852013-02-15 04:35:28 +000068
69 if options.version == "latest":
raymes69c8d722013-02-15 17:55:36 +000070 version = "latest"
bjanakiraman7f4a4852013-02-15 04:35:28 +000071 elif options.version == "top":
raymes04164a12013-02-15 04:36:03 +000072 version = "top"
bjanakiraman7f4a4852013-02-15 04:35:28 +000073 elif options.version is None:
raymes69c8d722013-02-15 17:55:36 +000074 logger.GetLogger().LogError("No version specified.")
bjanakiraman7f4a4852013-02-15 04:35:28 +000075 Usage(parser)
76 else:
77 version = options.version.strip()
78
bjanakiraman7f4a4852013-02-15 04:35:28 +000079 if options.directory is None:
raymes69c8d722013-02-15 17:55:36 +000080 logger.GetLogger().LogError("No directory specified.")
bjanakiraman7f4a4852013-02-15 04:35:28 +000081 Usage(parser)
82
83 directory = options.directory.strip()
84
raymes69c8d722013-02-15 17:55:36 +000085 if version == "top" or version == "latest":
86 init = "repo init -u ssh://git@gitrw.chromium.org:9222/manifest-internal"
87 if options.minilayout == True:
88 init += "-m minilayout.xml"
89 else:
90 init = ("repo init -u ssh://git@gitrw.chromium.org:9222/manifest-versions "
91 "-m buildspecs/%s/%s.xml" % (version[0:4], version))
bjanakiraman7f4a4852013-02-15 04:35:28 +000092
93 commands = []
94 commands.append("mkdir -p " + directory)
95 commands.append("cd " + directory)
raymes69c8d722013-02-15 17:55:36 +000096 commands.append(init)
97 commands.append("repo sync -j %s" % options.jobs)
raymes01959ae2013-02-15 04:50:07 +000098 cmd_executer.RunCommands(commands)
bjanakiraman7f4a4852013-02-15 04:35:28 +000099
raymese91a6e62013-02-15 04:35:51 +0000100 # Setup svn credentials for use inside the chroot
asharifca35b772013-02-15 04:56:41 +0000101 if getpass.getuser() == "mobiletc-prebuild":
102 chromium_username = "raymes"
103 else:
104 chromium_username = "$USER"
raymes01959ae2013-02-15 04:50:07 +0000105 cmd_executer.RunCommand("svn ls --config-option config:auth:password-stores= "
106 "--config-option "
107 "servers:global:store-plaintext-passwords=yes "
asharifca35b772013-02-15 04:56:41 +0000108 "--username " + chromium_username + "@google.com "
raymes01959ae2013-02-15 04:50:07 +0000109 "svn://svn.chromium.org/leapfrog-internal "
110 "svn://svn.chromium.org/chrome "
111 "svn://svn.chromium.org/chrome-internal > /dev/null")
raymesbfb57992013-02-15 04:35:45 +0000112
asharif2198c512013-02-15 09:21:35 +0000113 return 0
bjanakiraman7f4a4852013-02-15 04:35:28 +0000114
115
116if __name__ == "__main__":
asharif2198c512013-02-15 09:21:35 +0000117 retval = Main(sys.argv)
118 sys.exit(retval)