skia2/infra/wasm-common/docker/README.md
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

4.1 KiB

Docker

Docker files to ease working with PathKit and WASM.

emsdk-base

This image has an Emscripten SDK environment that can be used for compiling projects (e.g. Skia's PathKit) to WASM/asm.js.

This image tracks the official emscripten Docker image and installs python 2 (which some of our scripts still use).

make publish_emsdk_base

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

docker build -t emsdk-base ./emsdk-base/
# Run bash in it to poke around and make sure things are properly installed
docker run -it emsdk-base /bin/bash
# Compile PathKit with the local image
docker run -v $SKIA_ROOT:/SRC -v $SKIA_ROOT/out/dockerpathkit:/OUT emsdk-base /SRC/infra/pathkit/build_pathkit.sh

karma-chrome-tests

This image has Google Chrome and karma/jasmine installed on it, which can be used to run JS tests.

This image is standalone and does not have any extra dependencies that make it Skia-exclusive.

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

make publish_karma_chrome_tests

Of note, some versions (generally before Chrome 60) run out of space on /dev/shm when using the default Docker settings. To be safe, it is recommended to run the container with the flag --shm-size=2gb.

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

docker build -t karma-chrome-tests ./karma-chrome-tests/
# Run bash in it to poke around and make sure things are properly installed
docker run -it --shm-size=2gb karma-chrome-tests /bin/bash
# Run the tests (but not capturing Gold output) with the local source repo
docker run --shm-size=2gb -v $SKIA_ROOT:/SRC karma-chrome-tests karma start /SRC/infra/pathkit/karma-docker.conf.js --single-run

gold-karma-chrome-tests

This image has Google Chrome and karma/jasmine installed on it, which can be used to run JS tests.

This image assumes the runner wants to collect the output images and JSON data specific to Skia Infra's Gold tool (image correctness).

It gets manually pushed anytime there's an update to the Dockerfile or the parent image (karma-chrome-tests).

# Run the following from $SKIA_ROOT/infra/pathkit
make publish_gold_karma_chrome_tests

Of note, some versions (generally before Chrome 60) run out of space on /dev/shm when using the default Docker settings. To be safe, it is recommended to run the container with the flag --shm-size=2gb.

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

# Run the following from $SKIA_ROOT/infra/pathkit
make gold-docker-image
# Run bash in it to poke around and make sure things are properly installed
docker run -it --shm-size=2gb gold-karma-chrome-tests /bin/bash
# Run the tests and collect Gold output with the local source repo
mkdir -p -m 0777 /tmp/dockergold
docker run --shm-size=2gb -v $SKIA_ROOT:/SRC -v /tmp/dockergold:/OUT gold-karma-chrome-tests /SRC/infra/pathkit/test_pathkit.sh

perf-karma-chrome-tests

This image has Google Chrome and karma/jasmine installed on it, which can be used to run JS tests.

This image assumes the runner wants to collect the output images and JSON data specific to Skia Infra's Perf tool.

It gets manually pushed anytime there's an update to the Dockerfile or the parent image (karma-chrome-tests).

# Run the following from $SKIA_ROOT/infra/pathkit
make publish_perf_karma_chrome_tests

Of note, some versions (generally before Chrome 60) run out of space on /dev/shm when using the default Docker settings. To be safe, it is recommended to run the container with the flag --shm-size=2gb.

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

# Run the following from $SKIA_ROOT/infra/pathkit
make perf-docker-image
# Run bash in it to poke around and make sure things are properly installed
docker run -it --shm-size=2gb perf-karma-chrome-tests /bin/bash
# Run the tests and collect Perf output with the local source repo
mkdir -p -m 0777 /tmp/dockerperf
docker run --shm-size=2gb -v $SKIA_ROOT:/SRC -v /tmp/dockerperf:/OUT perf-karma-chrome-tests /SRC/infra/pathkit/perf_pathkit.sh