blob: fb62436e316afef26fc58f116778062f2ae5faa0 [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
bjanakiraman7f4a4852013-02-15 04:35:28 +000014import optparse
15import sys
raymes01959ae2013-02-15 04:50:07 +000016from utils import command_executer
raymes69c8d722013-02-15 17:55:36 +000017from utils import logger
bjanakiraman7f4a4852013-02-15 04:35:28 +000018
raymesbfb57992013-02-15 04:35:45 +000019GCLIENT_FILE = """solutions = [
20 { "name" : "CHROME_DEPS",
21 "url" :
22 "svn://svn.chromium.org/chrome-internal/trunk/tools/buildspec/releases/%s",
23 "custom_deps" : {
24 "src/third_party/WebKit/LayoutTests": None,
25 "src-pdf": None,
26 "src/pdf": None,
27 },
28 "safesync_url": "",
29 },
30]
31"""
32
bjanakiraman7f4a4852013-02-15 04:35:28 +000033def Usage(parser):
34 parser.print_help()
35 sys.exit(0)
36
37
asharif0d3535a2013-02-15 04:50:33 +000038def Main(argv):
bjanakiraman7f4a4852013-02-15 04:35:28 +000039 """Checkout the ChromeOS source."""
40 parser = optparse.OptionParser()
41 parser.add_option("--dir", dest="directory",
42 help="Target directory for ChromeOS installation.")
raymesd1eed802013-02-15 04:36:08 +000043 parser.add_option("--version", dest="version", default="latest",
bjanakiraman7f4a4852013-02-15 04:35:28 +000044 help="""ChromeOS version. Can be: (1) A release version
45in the format: 'X.X.X.X' (2) 'latest' for the latest release version or (3)
46'top' for top of trunk. Default is 'latest'""")
raymes01959ae2013-02-15 04:50:07 +000047 parser.add_option("--minilayout", dest="minilayout", default=False,
asharifdff61342013-02-15 04:50:46 +000048 action="store_true",
raymes01959ae2013-02-15 04:50:07 +000049 help="""Whether to checkout the minilayout
50(smaller checkout).'""")
raymes69c8d722013-02-15 17:55:36 +000051 parser.add_option("--jobs", "-j", dest="jobs", default="1",
52 help="Number of repo sync threads to use.")
asharifbf6899d2013-02-15 21:42:35 +000053 parser.add_option("--public", "-p", dest="public", default=False,
54 action="store_true",
55 help="Use the public checkout instead of the private one.")
bjanakiraman7f4a4852013-02-15 04:35:28 +000056
asharif0d3535a2013-02-15 04:50:33 +000057 options = parser.parse_args(argv)[0]
bjanakiraman7f4a4852013-02-15 04:35:28 +000058
asharifbf6899d2013-02-15 21:42:35 +000059 if not options.version:
60 parser.print_help()
61 logger.GetLogger().LogFatal("No version specified.")
bjanakiraman7f4a4852013-02-15 04:35:28 +000062 else:
63 version = options.version.strip()
64
asharifbf6899d2013-02-15 21:42:35 +000065 if not options.directory:
66 parser.print_help()
67 logger.GetLogger().LogFatal("No directory specified.")
bjanakiraman7f4a4852013-02-15 04:35:28 +000068
69 directory = options.directory.strip()
70
asharifbf6899d2013-02-15 21:42:35 +000071 if options.public:
72 manifest_repo = "http://git.chromium.org/chromiumos/manifest.git"
73 versions_repo = "http://git.chromium.org/chromiumos/manifest-versions.git"
74 else:
75 manifest_repo = (
76 "ssh://gerrit-int.chromium.org:29419/chromeos/manifest-internal.git")
77 versions_repo = (
78 "ssh://gerrit-int.chromium.org:29419/chromeos/manifest-versions.git")
79
80 if version in ["top", "latest"]:
81 init = "repo init -u %s" % manifest_repo
82 if options.minilayout:
raymes485a70d2013-02-15 17:55:37 +000083 init += " -m minilayout.xml"
raymes69c8d722013-02-15 17:55:36 +000084 else:
shenhan9c39a842013-02-16 03:14:07 +000085 version, manifest = version.split(".", 1)
llozano54bef9a2013-02-19 19:42:41 +000086 init = ("repo init -u %s -m paladin/buildspecs/%s/%s.xml" % (
shenhan9c39a842013-02-16 03:14:07 +000087 versions_repo, version, manifest))
asharif731e2932013-02-15 21:20:10 +000088 init += " --repo-url=http://git.chromium.org/external/repo.git"
bjanakiraman7f4a4852013-02-15 04:35:28 +000089
asharifbf6899d2013-02-15 21:42:35 +000090 commands = ["mkdir -p %s" % directory,
91 "cd %s" % directory,
92 init,
93 "repo sync -j %s" % options.jobs]
94 cmd_executer = command_executer.GetCommandExecuter()
95 ret = cmd_executer.RunCommands(commands)
96 if ret:
97 return ret
bjanakiraman7f4a4852013-02-15 04:35:28 +000098
raymese91a6e62013-02-15 04:35:51 +000099 # Setup svn credentials for use inside the chroot
asharifca35b772013-02-15 04:56:41 +0000100 if getpass.getuser() == "mobiletc-prebuild":
101 chromium_username = "raymes"
102 else:
103 chromium_username = "$USER"
raymesbfb57992013-02-15 04:35:45 +0000104
asharifbf6899d2013-02-15 21:42:35 +0000105 return cmd_executer.RunCommand(
106 "svn ls --config-option config:auth:password-stores= "
107 "--config-option "
108 "servers:global:store-plaintext-passwords=yes "
109 "--username " + chromium_username + "@google.com "
110 "svn://svn.chromium.org/leapfrog-internal "
111 "svn://svn.chromium.org/chrome "
112 "svn://svn.chromium.org/chrome-internal > /dev/null")
bjanakiraman7f4a4852013-02-15 04:35:28 +0000113
114
115if __name__ == "__main__":
asharif2198c512013-02-15 09:21:35 +0000116 retval = Main(sys.argv)
117 sys.exit(retval)