skia2/third_party
Kevin Lubick fed97e8f40 [bazel] Add RBE support using hermetic Linux Clang toolchain
A new RBE worker-pool called gce_linux was created in
conjunction with this CL. See
https://docs.google.com/document/d/14xMZCKews69SSTfULhE8HDUzT5XvPwZ4CvRufEvcZ74/edit#
for some details on that.

Note: everything under bazel/rbe/gce_linux was autogenerated
and can be ignored from manual review. It basically specifies
what files are on the RBE image that are necessary for running
Bazel.

Testing it out can be done by authenticating for RBE
gcloud auth application-default login --no-browser

Then, run make -C bazel rbe_known_good_builds
to test it out.

On my 4 core laptop with an empty local cache, but a
warm remote cache, the build took <2 min instead of the
10+ minutes it would have [1].

The folder structure in //bazel/rbe is meant to let us
have multiple remote configurations there, e.g.
//bazel/rbe/gce_windows.

Suggested Review Order:
 - bazel/rbe/README.md
 - bazel/rbe/gce_linux_container/Dockerfile to see the
   bare-bones RBE image.
 - bazel/rbe/BUILD.bazel to see a custom platform defined.
   It is nearly identical to the autogenerated one
   in bazel/rbe/gce_linux/config/BUILD, with one extra
   field to force the gce_linux pool to be used.
 - .bazelrc to see the settings needed to make
   --config=linux-rbe work. The naming convention was
   inspired by SkCMS's setup [2], and allows us to have
   some common RBE settings (i.e. config:remote) and
   some specialized ones for the given host machine
   (e.g. config:linux-rbe) A very important, but subtle
   configuration, is on line 86 of .bazelrc where we say
   to use our hermetic toolchain and not whatever C++
   compiler and headers are on the host machine (aka
   the RBE container).
 - toolchain/build_toolchain.bzl to see some additional
   dependencies needed in the toolchain (to run IWYU) which
   I had installed locally but didn't realize were important.
 - third_party/BUILD.bazel to see an example of how failing
   to specify all files can result in something that works
   locally, but fails remotely.
   --execution_log_json_file=/tmp/execlog.json helped debug
   these issues.
 - All other files.

[1] http://go/scrcast/NjM1ODE4MDI0NzM3MTc3Nnw3ODViZmFkMi1iOA
[2] https://skia.googlesource.com/skcms/+/30c8e303800c256febb03a09fdcda7f75d119b1b/.bazelrc#20


Change-Id: Ia0a9e6a06c1a13071949ab402dc5d897df6b12e1
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/524359
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
2022-03-28 13:56:16 +00:00
..
angle2
brotli
cpu-features
d3d12allocator
dng_sdk Separate general defaults from Skia defaults 2021-03-22 15:30:56 +00:00
etc1
expat Add LICENSE file to third_party/expat/include/expat_config/ 2021-05-27 18:15:18 +00:00
freetype2 Reland "Build CanvasKit using GN/Ninja" 2022-02-15 16:31:10 +00:00
harfbuzz Roll HarfBuzz from a8b7f188 to 8d1b000a (207 commits) 2022-03-02 22:34:16 +00:00
highway Add MVP implementation of JPEGXL decoder. 2022-02-02 15:17:14 +00:00
icu Reland "Build CanvasKit using GN/Ninja" 2022-02-15 16:31:10 +00:00
imgui Revert "Spruce up SkSL slide with a much nicer editor" 2022-01-07 15:56:16 +00:00
libjpeg-turbo Reland "Build CanvasKit using GN/Ninja" 2022-02-15 16:31:10 +00:00
libjxl Add MVP implementation of JPEGXL decoder. 2022-02-02 15:17:14 +00:00
libmicrohttpd
libpng Reland "Build CanvasKit using GN/Ninja" 2022-02-15 16:31:10 +00:00
libwebp Reland "Build CanvasKit using GN/Ninja" 2022-02-15 16:31:10 +00:00
lua
native_app_glue
oboe Separate general defaults from Skia defaults 2021-03-22 15:30:56 +00:00
piex
sfntly
skcms Roll skcms from 3fa993c258a9 to 30c8e303800c (2 revisions) 2022-01-22 00:10:20 +00:00
spirv-cross
vulkanmemoryallocator Add flag that can be used to disable std::shared_mutex use in VMA. 2021-11-12 01:35:08 +00:00
wuffs
zlib Separate general defaults from Skia defaults 2021-03-22 15:30:56 +00:00
BUILD.bazel [bazel] Add RBE support using hermetic Linux Clang toolchain 2022-03-28 13:56:16 +00:00
BUILD.gn
file_map_for_bazel.json [bazel] Support Vulkan 2022-03-08 21:21:17 +00:00
README
third_party.gni Separate general defaults from Skia defaults 2021-03-22 15:30:56 +00:00

The third_party directory contains a set of dependencies from outside sources
that are needed to build various components and tools within Skia.  

Some of these dependencies reside within the Skia repo, while others are pulled 
from other repositories and placed in the third_party/externals directory
during build. These external dependencies are defined in a DEPS file.

Products in third_party are subject to their own respective license terms.  The
license for each project should be included in the source itself via a license
header or file.  If the source itself does not include a license header or file,
create a README that refers to reliable documentation of the project's license
terms on the web.