Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: docs/linux_build_instructions.md

Issue 2536723008: Make some small tweaks to the build instructions. (Closed)
Patch Set: Nits Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « docs/linux_arch_build_instructions.md ('k') | docs/linux_debian_build_instructions.md » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: docs/linux_build_instructions.md
diff --git a/docs/linux_build_instructions.md b/docs/linux_build_instructions.md
index 1731c7930fd17395028c1488cefd5db1b0d44f4a..88c4dcef9a0bd6292b2d53c653bac4d37fda916b 100644
--- a/docs/linux_build_instructions.md
+++ b/docs/linux_build_instructions.md
@@ -13,49 +13,59 @@ Google employee? See [go/building-chrome](https://goto.google.com/building-chrom
* At least 100GB of free disk space.
* You must have Git and Python installed already.
-Most development is done on Ubuntu (currently 14.04, Trusty Tahr). There are
+Most development is done on Ubuntu (currently 14.04, Trusty Tahr). There are
some instructions for other distros below, but they are mostly unsupported.
## Install `depot_tools`
-Clone the depot_tools repository:
+Clone the `depot_tools` repository:
- $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
+```shell
+$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
+```
-Add depot_tools to the end of your PATH (you will probably want to put this
-in your ~/.bashrc or ~/.zshrc). Assuming you cloned depot_tools
-to /path/to/depot_tools:
+Add `depot_tools` to the end of your PATH (you will probably want to put this
+in your `~/.bashrc` or `~/.zshrc`). Assuming you cloned `depot_tools` to
+`/path/to/depot_tools`:
- $ export PATH=$PATH:/path/to/depot_tools
+```shell
+$ export PATH="$PATH:/path/to/depot_tools"
+```
## Get the code
-Create a chromium directory for the checkout and change to it (you can call
-this whatever you like and put it wherever you like, as
-long as the full path has no spaces):
-
- $ mkdir chromium
- $ cd chromium
+Create a `chromium` directory for the checkout and change to it (you can call
+this whatever you like and put it wherever you like, as long as the full path
+has no spaces):
+
+```shell
+$ mkdir ~/chromium && cd ~/chromium
+```
Run the `fetch` tool from depot_tools to check out the code and its
dependencies.
- $ fetch --nohooks chromium
+```shell
+$ fetch --nohooks chromium
+```
If you don't want the full repo history, you can save a lot of time by
-adding the `--no-history` flag to fetch.
+adding the `--no-history` flag to `fetch`.
Expect the command to take 30 minutes on even a fast connection, and many
hours on slower ones.
If you've already installed the build dependencies on the machine (from another
-checkout, for example), you can omit the `--nohooks` flag and fetch
+checkout, for example), you can omit the `--nohooks` flag and `fetch`
will automatically execute `gclient runhooks` at the end.
-When fetch completes, it will have created a directory called `src`.
-The remaining instructions assume you are now in that directory:
+When `fetch` completes, it will have created a hidden `.gclient` file and a
+directory called `src` in the working directory. The remaining instructions
+assume you have switched to the `src` directory:
- $ cd src
+```shell
+$ cd src
+```
### Install additional build dependencies
@@ -75,29 +85,35 @@ For Gentoo, you can just run `emerge www-client/chromium`.
### Run the hooks
Once you've run `install-build-deps` at least once, you can now run the
-chromium-specific hooks, which will download additional binaries and other
+Chromium-specific hooks, which will download additional binaries and other
things you might need:
- $ gclient runhooks
+```shell
+$ gclient runhooks
+```
-*Optional*: You can also [install API keys](https://www.chromium.org/developers/how-tos/api-keys)
-if you want to talk to some of the Google services, but this is not necessary
-for most development and testing purposes.
+*Optional*: You can also [install API
+keys](https://www.chromium.org/developers/how-tos/api-keys) if you want your
+build to talk to some Google services, but this is not necessary for most
+development and testing purposes.
-## Seting up the Build
+## Setting up the Build
-Chromium uses [Ninja](https://ninja-build.org) as its main build tool, and
-a tool called [GN](../tools/gn/docs/quick_start.md) to generate
-the .ninja files to do the build. To create a build directory, run:
+Chromium uses [Ninja](https://ninja-build.org) as its main build tool along
+with a tool called [GN](../tools/gn/docs/quick_start.md) to generate `.ninja`
+files. You can create any number of *build directories* with different
+configurations. To create a build directory, run:
- $ gn gen out/Default
+```shell
+$ gn gen out/Default
+```
-* You only have to do run this command once, it will self-update the build
- files as needed after that.
-* You can replace `out/Default` with another directory name, but we recommend
- it should still be a subdirectory of `out`.
-* To specify build parameters for GN builds, including release settings,
- see [GN build configuration](https://www.chromium.org/developers/gn-build-configuration).
+* You only have to run this once for each new build directory, Ninja will
+ update the build files as needed.
+* You can replace `Default` with another name, but
+ it should be a subdirectory of `out`.
+* For other build arguments, including release settings, see [GN build
+ configuration](https://www.chromium.org/developers/gn-build-configuration).
The default will be a debug component build matching the current host
operating system and CPU.
* For more info on GN, run `gn help` on the command line or read the
@@ -112,25 +128,31 @@ settings that may speed up your build.
Build Chromium (the "chrome" target) with Ninja using the command:
- $ ninja -C out/Default chrome
+```shell
+$ ninja -C out/Default chrome
+```
-You can get a list of all of the other build targets from GN by running
-`gn ls out/Default` from the command line. To compile one, pass to Ninja
-the GN label with no preceding "//" (so for `//chrome/test:unit_tests`
-use ninja -C out/Default chrome/test:unit_tests`).
+You can get a list of all of the other build targets from GN by running `gn ls
+out/Default` from the command line. To compile one, pass the GN label to Ninja
+with no preceding "//" (so, for `//chrome/test:unit_tests` use `ninja -C
+out/Default chrome/test:unit_tests`).
## Run Chromium
Once it is built, you can simply run the browser:
- $ out/Default/chrome
+```shell
+$ out/Default/chrome
+```
## Running test targets
You can run the tests in the same way. You can also limit which tests are
run using the `--gtest_filter` arg, e.g.:
- $ ninja -C out/Default unit_tests --gtest_filter="PushClientTest.*"
+```shell
+$ ninja -C out/Default unit_tests --gtest_filter="PushClientTest.*"
+```
You can find out more about GoogleTest at its
[GitHub page](https://github.com/google/googletest).
@@ -139,16 +161,18 @@ You can find out more about GoogleTest at its
To update an existing checkout, you can run
- $ git rebase-update
- $ gclient sync
+```shell
+$ git rebase-update
+$ gclient sync
+```
The first command updates the primary Chromium source repository and rebases
-any of your local branches on top of tip-of-tree (aka the Git branch `origin/master`).
-If you don't want to use this script, you can also just use `git pull` or
-other common Git commands to update the repo.
+any of your local branches on top of tip-of-tree (aka the Git branch
+`origin/master`). If you don't want to use this script, you can also just use
+`git pull` or other common Git commands to update the repo.
-The second command syncs the subrepositories to the appropriate versions and
-re-runs the hooks as needed.
+The second command syncs dependencies to the appropriate versions and re-runs
+hooks as needed.
## Tips, tricks, and troubleshooting
@@ -156,25 +180,27 @@ re-runs the hooks as needed.
If, during the final link stage:
- LINK out/Debug/chrome
+```
+LINK out/Debug/chrome
+```
You get an error like:
- collect2: ld terminated with signal 6 Aborted terminate called after throwing an
- instance of 'std::bad_alloc'
-
- collect2: ld terminated with signal 11 [Segmentation fault], core dumped
+```
+collect2: ld terminated with signal 6 Aborted terminate called after throwing an instance of 'std::bad_alloc'
+collect2: ld terminated with signal 11 [Segmentation fault], core dumped
+```
you are probably running out of memory when linking. You *must* use a 64-bit
system to build. Try the following build settings (see [GN build
configuration](https://www.chromium.org/developers/gn-build-configuration) for
-setting):
+other settings):
-* Build in release mode (debugging symbols require more memory).
+* Build in release mode (debugging symbols require more memory):
`is_debug = false`
-* Turn off symbols. `symbol_level = 0`
-* Build in component mode (this is for developers only, it will be slower and
- may have broken functionality). `is_component_build = true`
+* Turn off symbols: `symbol_level = 0`
+* Build in component mode (this is for development only, it will be slower and
+ may have broken functionality): `is_component_build = true`
### More links
« no previous file with comments | « docs/linux_arch_build_instructions.md ('k') | docs/linux_debian_build_instructions.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698