Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9582e1f authored by Junfeng Wu's avatar Junfeng Wu Committed by Gerrit Code Review
Browse files

Merge "Add RBE environment variables config example and documentation."

parents 083d4e07 90ba586f
Loading
Loading
Loading
Loading

docs/rbe.json

0 → 100644
+24 −0
Original line number Diff line number Diff line
{
    "env": {
        "USE_RBE": "1",

        "RBE_R8_EXEC_STRATEGY": "remote_local_fallback",
        "RBE_CXX_EXEC_STRATEGY": "remote_local_fallback",
        "RBE_D8_EXEC_STRATEGY": "remote_local_fallback",
        "RBE_JAVAC_EXEC_STRATEGY": "remote_local_fallback",
        "RBE_JAVAC": "1",
        "RBE_R8": "1",
        "RBE_D8": "1",

        "RBE_instance": "[replace with your RBE instance]",
        "RBE_service": "[replace with your RBE service endpoint]",

        "RBE_DIR": "prebuilts/remoteexecution-client/live",

        "RBE_use_application_default_credentials": "true",

        "RBE_log_dir": "/tmp",
        "RBE_output_dir": "/tmp",
        "RBE_proxy_log_dir": "/tmp"
    }
}

docs/rbe.md

0 → 100644
+70 −0
Original line number Diff line number Diff line
# Build Android Platform on Remote Build Execution

Soong is integrated with Google's Remote Build Execution(RBE) service, which
implements the
[Remote Executaion API](https://github.com/bazelbuild/remote-apis).

With RBE enabled, it can speed up the Android Platform builds by distributing
build actions through a worker pool sharing a central cache of build results.

## Configuration

To enable RBE, you need to set several environment variables before triggering
the build. You can set them through a
[environment variables config file](https://android.googlesource.com/platform/build/soong/+/master/README.md#environment-variables-config-file).
As an example, [build/soong/docs/rbe.json](rbe.json) is a config that enables
RBE in the build. Once the config file is created, you need to let Soong load
the config file by specifying `ANDROID_BUILD_ENVIRONMENT_CONFIG_DIR` environment
variable and `ANDROID_BUILD_ENVIRONMENT_CONFIG` environment variable. The
following command starts Soong with [build/soong/docs/rbe.json](rbe.json)
loaded:

```shell
ANDROID_BUILD_ENVIRONMENT_CONFIG=rbe \
ANDROID_BUILD_ENVIRONMENT_CONFIG_DIR=build/soong/doc \
  build/soong/soong_ui.bash
```

### Configuration Explanation

Below a brief explanation of each field in
[build/soong/docs/rbe.json](rbe.json):

##### USE\_RBE:
If set to 1, enable RBE for the build.

##### RBE\_CXX\_EXEC\_STRATEGY / RBE\_JAVAC\_EXEC\_STRATEGY / RBE\_R8\_EXEC\_STRATEGY / RBE\_D8\_EXEC\_STRATEGY:

Sets strategies for C++/javac/r8/d8 action types. Available options are
(**Note**: all options will update the remote cache if the right permissions to
update cache are given to the user.):

*   **local**: Only execute locally.
*   **remote**: Only execute remotely.
*   **remote_local_fallback**: Try executing remotely and fall back to local
    execution if failed.
*   **racing**: Race remote execution and local execution and use the earlier
    result.

##### RBE\_JAVAC / RBE\_R8 / RBE\_D8

If set to 1, enable javac/r8/d8 support. C++ compilation is enabled by default.

##### RBE\_service / RBE\_instance

The remote execution service endpoint and instance ID to target when calling
remote execution via gRPC to execute actions.

##### RBE\_DIR

Where to find remote client binaries (rewrapper, reproxy)

##### RBE\_use\_application\_default\_credentials

reclient uses
[application default credentials](https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login)
for autentication, as generated by `gcloud auth application-default login`

##### RBE\_log\_dir/RBE\_proxy\_log\_dir/RBE\_output\_dir

Logs generated by rewrapper and reproxy will go here.