This directory consumes tools from other repositories for use on the
bots. For a similarly-configured local checkout for testing, run:

   mkdir boringssl-gclient
   cd boringssl-gclient
   gclient config --unmanaged --deps-file=util/bot/DEPS https://boringssl.googlesource.com/boringssl/
   gclient sync

To update to newer revisions, follow these instructions:

DEPS: Set all revisions to those used in Chromium, found at
   https://chromium.googlesource.com/chromium/src/+/master/DEPS (Search for the
   corresponding repository name.)

go/bootstrap.py: Set TOOLSET_VERSION to the latest release of Go, found at
    https://golang.org/dl/.

update_clang.py: Set CLANG_REVISION and CLANG_SUB_REVISION to the values used in
    Chromium, found at
    https://chromium.googlesource.com/chromium/src/+/master/tools/clang/scripts/update.py

vs_toolchain.py: Update _GetDesiredVsToolchainHashes from Chromium, found at
    https://chromium.googlesource.com/chromium/src/+/master/build/vs_toolchain.py
    This may require taking other updates to that file. (Don't remove MSVC
    versions if BoringSSL still needs to support them.)

The .sha1 files correspond to files downloaded from Google Cloud Storage. To
update, place the updated files in their intended location and run:

    upload_to_google_storage.py -b chromium-tools FILE

cmake-linux64.tar.gz: Download the latest CMake source tarball, found at
    https://cmake.org/download/. Build it with:

        ./bootstrap --prefix=$PWD/cmake-linux64 && make && make install
        tar -czf cmake-linux64.tar.gz cmake-linux64/

    The current revision was built against cmake-3.10.0.tar.gz.

cmake-mac.tar.gz: Follow the same instructions as above on a Mac, but replace
    cmake-linux64 with cmake-mac.

    The current revision was built against cmake-3.10.0.tar.gz.

cmake-win32.zip: Update to the latest prebuilt release of CMake, found at
    https://cmake.org/download/. Use the file labeled "Windows win64-x64
    ZIP". The download will be named cmake-VERSION-win64-x64.zip.

    The current revision is cmake-3.11.4-win64-x64.zip

nasm-win32.exe: Update to the appropriate release of NASM, found at
    https://www.nasm.us/. Use the same version as Chromium, found at
    https://chromium.googlesource.com/chromium/src/+/master/third_party/nasm/README.chromium
    Extract nasm.exe from the download named nasm-VERSION-win64.zip.

    The current revision is nasm-2.13.03-win64.zip.

    TODO(davidben): The Chromium link currently does not work. It will get
    filled in in the future. See https://crbug.com/766721.

perl-win32.zip: Update to the latest 64-bit prebuilt "Portable" edition of
    Strawberry Perl, found at http://strawberryperl.com/releases.html. The
    download will be named strawberry-perl-VERSION-64bit-portable.zip.

    The current revision is strawberry-perl-5.26.2.1-64bit-portable.zip.

yasm-win32.exe: Update to the appropriate release of Yasm. Use the same version
    as Chromium, found at
    https://chromium.googlesource.com/chromium/src/+/master/third_party/yasm/README.chromium
    Use the release at http://yasm.tortall.net/Download.html labeled
    "Win32 .exe". The download will be named yasm-VERSION-win32.exe.

    The current revision is yasm-1.3.0-win32.exe.

Finally, update sde-linux64.tar.bz2 and sde-win32.tar.bz2 by downloading the
latet release from Intel at
https://software.intel.com/en-us/articles/intel-software-development-emulator,
but upload it with the following command. (Note the bucket is different.)

    upload_to_google_storage.py -b chrome-boringssl-sde sde-linux64.tar.bz2 sde-win32.tar.bz2

The current revision is sde-external-8.16.0-2018-01-30-*.tar.bz2.

When adding new files, remember to update .gitignore.
