
Bug: 971742 Change-Id: I1b80eb8990182f6250ce2dec5839f6e816f09eea Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1649212 Reviewed-by: Michael Giuffrida <michaelpg@chromium.org> Commit-Queue: Toby Huang <tobyhuang@chromium.org> Cr-Commit-Position: refs/heads/master@{#668897}
104 lines
4.3 KiB
Markdown
104 lines
4.3 KiB
Markdown
# Chrome OS Build Instructions (Chromium OS on Linux)
|
|
|
|
Chromium on Chromium OS uses Linux Chromium as a base, but adds a large number
|
|
of features to the code. For example, the login UI, window manager and system UI
|
|
are part of the Chromium code base and built into the chrome binary.
|
|
|
|
Fortunately, most Chromium changes that affect Chromium OS can be built and
|
|
tested on a Linux workstation. This build is called "linux-chromeos". In this
|
|
configuration most system services (like the power manager, bluetooth daemon,
|
|
etc.) are stubbed out. The entire system UI runs in a single X11 window on your
|
|
desktop.
|
|
|
|
First, follow the [normal Linux build
|
|
instructions](https://chromium.googlesource.com/chromium/src/+/master/docs/linux_build_instructions.md)
|
|
as usual to get a Chromium checkout.
|
|
|
|
## Updating your gclient config
|
|
|
|
Chromium OS builds of Chromium require some additional build dependencies which
|
|
can be synced by adding `'chromeos'` to the `target_os` list in your `.gclient`
|
|
configuration. This file is located one level up from your Chromium checkout's
|
|
`src`.
|
|
|
|
If you don't already have a `target_os` line present, simply add this to the
|
|
end of the `.gclient` file:
|
|
|
|
target_os = ['chromeos']
|
|
|
|
If you already have a `target_os` line present in your `.gclient file`, you can
|
|
simply append `'chromeos'` to the existing list there. For example:
|
|
|
|
target_os = ['android', 'chromeos']
|
|
|
|
Once your `.gclient` file is updated, you will need to run `gclient sync` once
|
|
before proceeding with the rest of these instructions.
|
|
|
|
## Building and running Chromium with Chromium OS UI on your local machine
|
|
|
|
Run the following in your chromium checkout:
|
|
|
|
$ gn gen out/Default --args='target_os="chromeos"'
|
|
$ autoninja -C out/Default chrome
|
|
$ out/Default/chrome
|
|
|
|
(`autoninja` is a wrapper that automatically provides optimal values for the
|
|
arguments passed to `ninja`).
|
|
|
|
Some additional options you may wish to set by passing in `--args` to `gn gen`
|
|
or running `gn args out/Default`:
|
|
|
|
use_goma = true # Googlers: Use build farm, compiles faster.
|
|
is_component_build = true # Links faster.
|
|
is_debug = false # Release build, runs faster.
|
|
dcheck_always_on = true # Enables DCHECK despite release build.
|
|
enable_nacl = false # Skips native client build, compiles faster.
|
|
|
|
# Set the following true to create a Chrome (instead of Chromium) build.
|
|
# This requires a src-internal checkout.
|
|
is_chrome_branded = false # Adds internal features and branded art assets.
|
|
is_official_build = false # Turns on many optimizations, slower build.
|
|
|
|
NOTE: You may wish to replace 'Default' with something like 'Cros' if
|
|
you switch back and forth between Linux and Chromium OS builds, or 'Debug'
|
|
if you want to differentiate between Debug and Release builds (see below).
|
|
|
|
See [GN Build Configuration](https://www.chromium.org/developers/gn-build-configuration)
|
|
for more information about configuring your build.
|
|
|
|
You can also build and run test targets like `unit_tests`, `browser_tests`, etc.
|
|
|
|
## Login notes
|
|
|
|
By default this build signs in with a stub user. To specify a real user:
|
|
|
|
* For first run, add the following options to chrome's command line:
|
|
`--user-data-dir=/tmp/chrome --login-manager`
|
|
* Go through the out-of-the-box UX and sign in with a real Gmail account.
|
|
* For subsequent runs, add:
|
|
`--user-data-dir=/tmp/chrome --login-user=username@gmail.com
|
|
--login-profile=username@gmail.com-hash`
|
|
* To run in guest mode instantly, add:
|
|
`--user-data-dir=/tmp/chrome --bwsi --incognito --login-user='$guest'
|
|
--login-profile=user`
|
|
|
|
Signing in as a specific user is useful for debugging features like sync
|
|
that require a logged in user.
|
|
|
|
## Graphics notes
|
|
|
|
The Chromium OS build requires a functioning GL so if you plan on
|
|
testing it through Chromium Remote Desktop you might face drawing
|
|
problems (e.g. Aura window not painting anything). Possible remedies:
|
|
|
|
* `--ui-enable-software-compositing --ui-disable-threaded-compositing`
|
|
* `--use-gl=swiftshader`, but it's slow.
|
|
|
|
To more closely match the UI used on devices, you can install fonts used
|
|
by Chrome OS, such as Roboto, on your Linux distro.
|
|
|
|
## Compile Chromium for a Chromium OS device
|
|
|
|
See [Building Chromium for a Chromium OS device](https://chromium.googlesource.com/chromiumos/docs/+/master/simple_chrome_workflow.md)
|
|
for information about building and testing Chromium for Chromium OS.
|