skia2/docker
Kevin Lubick 157577b866 [canvaskit,pathkit] Update to emsdk 2.0
There was a break that was solved by adding -lGL to our link
steps. I discovered a few extra flags to aid in debugging builds
and I've left those in (they aren't too noisy IMO).

This changes the base dockerfile to use the official emscripten one.

Code size delta for full build is +5 kb

For future reference, emsdk decides which "library JS" files to
pull in using a83ba99d60/tools/building.py (L1553)
Those JS files live in src (e.g. a83ba99d60/src/library_html5_webgl.js (L222))
and define functions that the C++ code can call.

I'd like to follow-up on what -lEGL is doing.

Also, since the new image no longer has depot_tools, we need
to make docker/skia-wasm-release/Dockerfile install it.

Change-Id: I5a38e61e5080e9c4cb1e0a7e031509bcb107ff86
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/311726
Reviewed-by: Nathaniel Nifong <nifong@google.com>
2020-08-20 14:55:50 +00:00
..
binary-size Build code size treemaps for skottie_tool 2019-02-12 13:54:00 +00:00
cmake-release Fix HOME directory in Docker containers built under cloudbuild. 2019-09-26 02:31:35 +00:00
skia-build-tools Use the new swiftshader bucket. 2020-07-17 20:17:43 +00:00
skia-release Support specifying hash and patch_ref in skia-release & skia-wasm-release Dockerfiles 2020-05-06 20:39:04 +00:00
skia-wasm-release [canvaskit,pathkit] Update to emsdk 2.0 2020-08-20 14:55:50 +00:00
skia-with-swift-shader-base Fix swiftshader Dockerfile. 2020-07-20 17:17:53 +00:00
Makefile Fix usage of depot_tools in containers. 2019-10-14 19:38:40 +00:00
README.md Fix usage of depot_tools in containers. 2019-10-14 19:38:40 +00:00

Docker

Docker files for building different Skia targets.

skia-release

This image is used to build Skia at TOT with SwiftShader.

There is a continuous process that builds this docker image, but if you need to manually push a verison, then run the following commands:

docker build -t skia-release ./docker/skia-release/
docker tag skia-release gcr.io/skia-public/skia-release:prod
docker push gcr.io/skia-public/skia-release:prod

skia-wasm-release

This image is used to build the Web Assembly (WASM) libraries of Skia at TOT.

There is a continuous process that builds this docker image, but if you need to manually push a verison, then run the following commands:

docker build -t skia-wasm-release ./docker/skia-wasm-release/
docker tag skia-wasm-release gcr.io/skia-public/skia-wasm-release:prod
docker push gcr.io/skia-public/skia-wasm-release:prod

skia-with-swift-shader-base

This image is used to build a local checkout of Skia with SwiftShader and run the built executables without requiring the SwiftShader be installed on the host.

For example (see build-with-swift-shader-and-run for more info), to reproduce a fuzzer bug in SwiftShader:

# First, copy the test case into $SKIA_ROOT, say $SKIA_ROOT/skbug_1234
build-with-swift-shader-and-run "out/with-swift-shader/fuzz -t filter_fuzz -b /skia/skbug_1234"

There is a continuous process that builds this docker image (which only really changes if SwiftShader is updated), but if you need to manually push a version, then run the following commands:

docker build -t skia-with-swift-shader-base ./docker/skia-with-swift-shader-base/
docker tag skia-with-swift-shader-base gcr.io/skia-public/skia-with-swift-shader-base:prod
docker push gcr.io/skia-public/skia-with-swift-shader-base:prod

cmake-release

This image is used to build Skia using CMake.

It gets manually pushed anytime there's an update to the Dockerfile or relevant installed libraries. To push:

docker build -t cmake-release ./cmake-release/
docker tag cmake-release gcr.io/skia-public/cmake-release:3.13.1_v2
docker push gcr.io/skia-public/cmake-release:3.13.1_v2

For testing the image locally, the following flow can be helpful:

docker build -t cmake-release ./cmake-release/
# Run bash in it to poke around and make sure things are properly
# installed and configured. Also useful to get version of CMake.
docker run -it cmake-release /bin/bash
# Compile Skia in a local checkout with the local image
docker run -v $SKIA_ROOT:/SRC -v /tmp/output:/OUT cmake-release /SRC/infra/docker/cmake/build_skia.sh

binary-size

This image is used to build code size tree-maps of Skia

It gets manually pushed anytime there's an update to the Dockerfile or relevant installed libraries. To push:

docker build -t binary-size ./binary-size/
docker tag binary-size gcr.io/skia-public/binary-size:v1
docker push gcr.io/skia-public/binary-size:v1

For testing the image locally, the following flow can be helpful:

docker build -t binary-size ./binary-size/
# Run bash in it to poke around and make sure things are properly
# installed and configured.
docker run -it binary-size /bin/sh
# analyze exe "skottie_tool" in build directory out/Release
docker run -v $SKIA_ROOT/out/Release:/IN -v /tmp/output:/OUT binary-size /opt/binary_size/src/run_binary_size_analysis.py --library /IN/skottie_tool --destdir /OUT

skia-build-tools

This image contains all the tools needed to build Skia.

To push a new version run:

make push-skia-build-tools