| --- |
| layout: doc |
| title: "Set up your environment - Linux" |
| --- |
| |
| These instructions explain how Linux users set up their Cobalt development |
| environment, fetch a copy of the Cobalt code repository, and build a Cobalt |
| binary. Note that the binary has a graphical client and must be run locally |
| on the machine that you are using to view the client. For example, you cannot |
| SSH into another machine and run the binary on that machine. |
| |
| 1. Choose where you want to put the `depot_tools` directory, which is used |
| by the Cobalt code. An easy option is to put them in `~/depot_tools`. |
| Clone the tools by running the following command: |
| |
| ``` |
| $ cd ~/ |
| $ git clone https://cobalt.googlesource.com/depot_tools |
| ``` |
| |
| 1. Add your `depot_tools` directory to the end of your `PATH` variable. |
| We recommend adding something like this to your `.bashrc` or `.profile` |
| file: |
| |
| ``` |
| $ PATH=${PATH}:/path/to/depot_tools |
| ``` |
| |
| 1. Run the following command to install packages needed to build and run |
| Cobalt on Linux: |
| |
| ``` |
| $ sudo apt-get install bison build-essential coreutils git gperf \ |
| libasound2-dev libavformat-dev libavresample-dev \ |
| libdirectfb-dev libdirectfb-extra libpulse-dev \ |
| libgl1-mesa-dev libgles2-mesa-dev libx11-dev \ |
| libxcomposite-dev libxcomposite1 libxrender-dev libxrender1 \ |
| libxpm-dev m4 ruby tar xserver-xephyr xz-utils yasm |
| ``` |
| |
| 1. Install the latest version of the standard C++ header files (`libstdc++`). |
| For example: |
| |
| ``` |
| sudo apt-get install libstdc++-4.8-dev |
| ``` |
| |
| 1. Clone the Cobalt code repository. The following `git` command creates a |
| `cobalt` directory that contains the repository: |
| |
| ``` |
| $ git clone https://cobalt.googlesource.com/cobalt |
| ``` |
| |
| 1. Modify your path to include the version of Clang that is downloaded |
| in the next step of the instructions. The next step will return an |
| error if this version of Clang is not in your path before it runs. |
| |
| ``` |
| $PATH="/path/to/cobalt/src/third_party/llvm-build/Release+Asserts/bin:${PATH}" |
| ``` |
| |
| 1. Build the code by navigating to the `src` directory in your new |
| `cobalt` directory and running the following command. You must |
| specify a platform when running this command. On goobuntu, the |
| canonical platform is `linux-x64x11`. |
| |
| You can also use the `-C` command-line flag to specify a `build_type`. |
| Valid build types are `debug`, `devel`, `qa`, and `gold`. If you |
| specify a build type, the command finishes sooner. Otherwise, all types |
| are built. |
| |
| ``` |
| $ cobalt/build/gyp_cobalt [-C <build_type>] <platform> |
| ``` |
| |
| <aside class="note"><b>Important:</b> You need to rerun gyp_cobalt every |
| time a change is made to a `.gyp` file.</aside> |
| |
| 1. Compile the code from the `src/` directory: |
| |
| ``` |
| $ ninja -C out/<platform>_<build_type> <target_name> |
| ``` |
| |
| The previous command contains three variables: |
| |
| 1. `<platform>` is the [platform |
| configuration](/starboard/porting.html#1-enumerate-and-name-your-platform-configurations) |
| that identifies the platform. As described in the Starboard porting |
| guide, it contains a `family name` (like `linux`) and a |
| `binary variant` (like `x64x11`), separated by a hyphen. |
| 1. `<build_type>` is the build you are compiling. Possible values are |
| `debug`, `devel`, `qa`, and `gold`. These values are also described in |
| the Starboard porting guide under the [required file modifications]( |
| /starboard/porting.html#4-make-required-file-modifications) for the |
| `gyp_configuration.gypi` file. |
| 1. `<target_name>` is the name assigned to the compiled code and it is |
| used to run the code compiled in this step. The most common names are |
| `cobalt`, `nplb`, and `all`: |
| * `cobalt` builds the Cobalt app. |
| * `nplb` builds Starboard's platform verification test suite to |
| ensure that your platform's code passes all tests for running |
| Cobalt. |
| * `all` builds all targets. |
| |
| For example: |
| |
| ``` |
| ninja -C out/linux-x64x11_debug cobalt |
| ``` |
| |
| This command compiles the Cobalt `debug` configuration for the |
| `linux-x64x11` platform and creates a target named `cobalt` that |
| you can then use to run the compiled code. |
| |
| 1. Run the compiled code to launch the Cobalt client: |
| |
| ``` |
| # Note that 'cobalt' was the <target_name> from the previous step. |
| $ out/linux-x64x11_debug/cobalt [--url=<url>] |
| ``` |
| |
| The flags in the following table are frequently used, and the full set |
| of flags that this command supports are in <code><a |
| href="https://cobalt.googlesource.com/cobalt/+/master/src/cobalt/browser/switches.cc">cobalt/browser/switches.cc</a></code>. |
| |
| <table class="details responsive"> |
| <tr> |
| <th colspan="2">Flags</th> |
| </tr> |
| <tr> |
| <td><code>allow_http</code></td> |
| <td>Indicates that you want to use `http` instead of `https`.</td> |
| </tr> |
| <tr> |
| <td><code>ignore_certificate_errors</code></td> |
| <td>Indicates that you want to connect to an <code>https</code> host |
| that doesn't have a certificate that can be validated by our set |
| of root CAs.</td> |
| </tr> |
| <tr> |
| <td><code>url</code></td> |
| <td>Defines the startup URL that Cobalt will use. If no value is set, |
| then Cobalt uses a default URL. This option lets you point at a |
| different app than the YouTube app.</td> |
| </tr> |
| </table> |
| |
| <!-- |
| <aside class="note"> |
| <b>Note:</b> If you plan to upload reviews to the Cobalt repository, you |
| also need to <a href="/development/setup-gitcookies.html">follow these |
| instructions</a> to set up a <code>.gitcookies</code> file. |
| </aside> |
| --> |