skia2/third_party
Kevin Lubick 54bd442fad [bazel] Use hermetic Python with jinja2+MarkupSafe
The file generation logic that dawn [1] uses to make some
source files requires jinja2, which also requires MarkupSafe.

The GN build handles this by specifying those repos in
DEPS, checking them out at a certain git hash, and then
providing them via a command line arg [2].

We do not have to do it this way in Bazel to have reproducible
builds. This CL specifies an exact version (verified by sha256)
of those two deps and then uses a hermetic version of
Python 3.9 to run all py_binary commands.

Previously, we would rely on the system Python (and installed
libraries). That happened to work on my machine, but not on
other machines without jinja2 and MarkupSafe installed. After
this CL, it should work on machines that do not have python
even installed.

I chose the same jinja2 version used by Dawn [3], which was
2.11.3. Then I chose the newest version of MarkupSafe that
was compatible with jinja2 (2.0.1).

If we have other python scripts that need external deps, we
should be able to specify them in the py_binary that needs
them and in requirements.txt. Then, the pip_install() step
in WORKSPACE.bazel will download them and make them available.

[1] https://dawn.googlesource.com/dawn.git/+/refs/heads/main/docs/dawn/overview.md
[2] https://dawn.googlesource.com/dawn.git/+/e45ff6a4b3c2f06dade68ec0f01ddc3bfd70c282/generator/generator_lib.gni#77
[3] ee69aa00ee

Change-Id: I3d0074f3003de179400e239e00107c34f35f4901
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/524217
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
2022-03-28 13:56:16 +00:00
..
angle2 Port to ANGLE's GN files 2020-09-11 15:22:34 +00:00
brotli [canvaskit] Add support for woff2 fonts 2020-11-10 15:07:26 +00:00
cpu-features reformat GN files 2020-04-01 23:23:03 +00:00
d3d12allocator Add AMD allocator to D3D12 backend. 2020-09-23 21:22:52 +00:00
dng_sdk Separate general defaults from Skia defaults 2021-03-22 15:30:56 +00:00
etc1 Update etc1.cpp. 2020-12-16 17:57:26 +00:00
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 avoid using tmpnam() in Lua 2018-02-01 22:39:59 +00:00
native_app_glue reformat GN files 2020-04-01 23:23:03 +00:00
oboe Separate general defaults from Skia defaults 2021-03-22 15:30:56 +00:00
piex
sfntly reformat GN files 2020-04-01 23:23:03 +00:00
skcms Roll skcms from 3fa993c258a9 to 30c8e303800c (2 revisions) 2022-01-22 00:10:20 +00:00
spirv-cross Roll Dawn and add dependencies 2020-03-30 18:52:06 +00:00
vulkanmemoryallocator Add flag that can be used to disable std::shared_mutex use in VMA. 2021-11-12 01:35:08 +00:00
wuffs Inclusive language 2020-07-24 13:33:53 +00:00
zlib Separate general defaults from Skia defaults 2021-03-22 15:30:56 +00:00
BUILD.bazel [bazel] Use hermetic Python with jinja2+MarkupSafe 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.