Checkout Chromium
Some development tasks may require working in the chromium
repository, the
chromiumos
repository, or both. If you only need to work in the chromiumos
repository, you can jump ahead to the ChromiumOS Developer
Guide
page.
This page details the steps to create the initial checkout of the chromium
repository, including configuring the checkout and providing authentication if
you are syncing from the internal repository.
Create a directory to host the Chromium checkout
$ mkdir chromium && cd chromium
All commands relevant to the Chromium checkout from here assume the present working directory is the directory you created above and have this prefix:
chromium$ <command>
Checkout the chromium
repository
fetch
is a binary provided by depot_tools. --nohooks
tells fetch not to run
any post-fetch executions steps which are not necessary at this stage. This step
can take around 30 minutes depending on your connection speed.
chromium$ fetch --nohooks chromium
Checkout the chrome-internal
repository
If you have access to the chrome-internal
repository (e.g., Googlers and
other authorized partners) in order to build a ChromeOS-branded binary, follow
the steps below to configure the checkout and provide authentication.
Configure gclient args
gclient is the tool used to download code and resources from
the various repositories (e.g., the chromium Git repository) necessary to build ChromiumOS.
The .gclient
configuration file provides variables which affect which
repositories are synced and how they are set up.
To configure your gclient checkout to include the chrome-internal
repository,
edit your chromium/.gclient
file to include the checkout_src_internal
variable. The cros_boards
variable pulls down board-specific code. Finally,
the target_os
variable pulls down ChromeOS-specific code.
solutions = [
{
"url": "https://chromium.googlesource.com/chromium/src.git",
"managed": False,
"name": "src",
"custom_deps": {},
"custom_vars": {
"checkout_src_internal": True,
"cros_boards": "eve:puff:scarlet",
},
},
]
target_os = ['chromeos']
Note that in this example we've specified the boards eve
, puff
, and
scarlet
separated by colons. Whenever you get a new test device be sure to add
or set the board name here and re-sync.
Authenticate to the internal repository
Navigate to the Chrome internal review page and login with your access-enabled account (@google.com for Googlers). Then authenticate to the internal repository by navigating to the googlesource.com authentication portal, authenticating with your access-enabled account, and executing the provided command in your shell. This command creates an authentication cookie for Git such that you do not need to continually provide authentication to access these resources.
Authenticate to CIPD
CIPD (Chrome Infrastructure Package Deployment) is a repository which hosts versioned binaries. The ChromeOS source checkout includes several dependencies hosted on CIPD. Authenticate to CIPD using the following command (provided by depot_tools):
$ cipd auth-login
Initial gclient sync
gclient sync
downloads the external dependencies that chromium (public and
internal) need but don't host (e.g., external libraries like Abseil). These
external dependencies are hosted in third_party/.
The first gclient sync
command you'll run uses the --nohooks
flag; you
shouldn't need this flag for subsequent uses of gclient sync. You'll need to run
gclient sync
again each time you pull down from the chromium main git branch
(because new dependencies will have been introduced). Read more about this
subsequent gclient sync
usage in the (Development workflow with git page -
TODO(jhawkins)).
chromium$ gclient sync --nohooks
The initial sync of a checkout can take a significant amount of time (up to an hour).
Up next
Now that you have the code, the next step is to build the Chromium binary.