skia2/modules/canvaskit/README.md

64 lines
3.1 KiB
Markdown
Raw Normal View History

# Prerequisites
To compile CanvasKit, you will first need to [install `emscripten`][1]. This
will set the environment `EMSDK` (among others) which is required for
compilation.
# Compile and Test Locally
```
make release # make debug is much faster and has better error messages
make local-example
```
This will print a local endpoint for viewing the example. You can experiment
with the CanvasKit API by modifying `./canvaskit/example.html` and refreshing
the page. For some more experimental APIs, there's also `./canvaskit/extra.html`.
For other available build targets, see `Makefile` and `compile.sh`.
For example, building a stripped-down version of CanvasKit with no text support or
any of the "extras", one might run:
./compile.sh no_skottie no_particles no_font
Such a stripped-down version is about half the size of the default release build.
[1]: https://emscripten.org/docs/getting_started/downloads.html
# Infrastructure Playbook
When dealing with CanvasKit (or PathKit) on our bots, we use Docker. Check out
$SKIA_ROOT/infra/wasm-common/docker/README.md for more on building/editing the
images used for building and testing.
## Updating the version of Emscripten we build/test with
This presumes you have updated emscripten locally to a newer version of the
sdk and verified/fixed any build issues that have arisen.
1. Edit `$SKIA_ROOT/infra/wasm-common/docker/emsdk-base/Dockerfile` to install
and activate the desired version of Emscripten.
2. Edit `$SKIA_ROOT/infra/wasm-common/docker/Makefile` to have `EMSDK_VERSION` be
set to that desired version. If there is a suffix that is not `_v1`, reset
it to be `_v1`. If testing the image later does not work and edits are made
to the emsdk-base Dockerfile to correct that, increment to `_v2`,`_v3`, etc
to force the bots to pick up the new image.
3. In `$SKIA_ROOT/infra/wasm-common/docker/`, run `make publish_emsdk_base`
4. Edit `$SKIA_ROOT/infra/canvaskit/docker/canvaskit-emsdk/Dockerfile` to be based
off the new version from step 2. CanvasKit has its own docker image because
it needs a few extra dependencies to build with font support.
5. Edit `$SKIA_ROOT/infra/canvaskit/docker/Makefile` to have the same version
from step 2. It's easiest to keep the `emsdk-base` and `canvaskit-emsdk` versions
be in lock-step.
6. In `$SKIA_ROOT/infra/canvaskit/docker/`, make `publish_canvaskit_emsdk`.
7. In `$SKIA_ROOT/infra/bots/recipe_modules/build/`, update `canvaskit.py`
and `pathkit.py` to have `DOCKER_IMAAGE` point to the desired tagged Docker
containers from steps 2 and 5 (which should be the same).
9. In `$SKIA_ROOT/infra/bots/`, run `make train` to re-train the recipes.
10. Optional: Run something like `git grep 1\\.38\\.` in `$SKIA_ROOT` to see if
there are any other references that need updating.
11. Upload a CL with all the changes. Run all Test.+CanvasKit, Perf.+CanvasKit,
Test.+PathKit, Perf.+PathKit jobs to make sure the new builds pass all
tests and don't crash the perf harnesses.
12. Send out CL for review. Feel free to point the reviewer at these steps.