| Index: build/docs/mac_hermetic_toolchain.md
|
| diff --git a/build/docs/mac_hermetic_toolchain.md b/build/docs/mac_hermetic_toolchain.md
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..97caee99296811ce67b1e0b375bb48d6ac969204
|
| --- /dev/null
|
| +++ b/build/docs/mac_hermetic_toolchain.md
|
| @@ -0,0 +1,44 @@
|
| +# Mac and iOS hermetic toolchain instructions
|
| +
|
| +The following is a short explanation of why we use a the hermetic toolchain
|
| +and instructions on how to roll a new toolchain.
|
| +
|
| +## How to roll a new hermetic toolchain.
|
| +
|
| +1. Download a new version of Xcode, and confirm either mac or ios builds
|
| + properly with this new version.
|
| +
|
| +2. Run the following command:
|
| +
|
| + ```
|
| + src/build/package_mac_toolchain.py /path/to/Xcode.app/ [ios|mac]
|
| + ```
|
| +
|
| + The script will create a subset of the toolchain necessary for a build, and
|
| + upload them to be used by hermetic builds.
|
| +
|
| + If for some reason this toolchain version has already been uploaded, the
|
| + script will ask if we should create sub revision. This can be necessary when
|
| + the package script has been updated to compress additional files.
|
| +
|
| +2. Create a CL with updated [MAC|IOS]_TOOLCHAIN_VERSION and _SUB_REVISION in
|
| + src/build/mac_toolchain.py with the version created by the previous command.
|
| +
|
| +3. Run the CL thru the trybots to confirm the roll works.
|
| +
|
| +## Why we use a hermetic toolchain.
|
| +
|
| +Building Chrome Mac currently requires many binaries that come bundled with
|
| +Xcode, as well the macOS and iphoneOS SDK [also bundled with Xcode]. Note that
|
| +Chrome ships its own version of clang [compiler], but is dependent on Xcode
|
| +for these other binaries.
|
| +
|
| +Chrome should be built against the latest SDK available, but historically,
|
| +updating the SDK has been nontrivially difficult. Additionally, bot system
|
| +installs can range from Xcode 5 on some bots, to the latest and
|
| +greatest. Using a hermetic toolchain has two main benefits:
|
| +
|
| +1. Build Chrome with a well-defined toolchain [rather than whatever happens to
|
| +be installed on the machine].
|
| +
|
| +2. Easily roll/update the toolchain.
|
|
|