xref: /aosp_15_r20/external/skia/docker/skia-wasm-release/Dockerfile (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker# Dockerfile for building the WASM libraries used by jsfiddle.skia.org and debugger.skia.org
2*c8dee2aaSAndroid Build Coastguard WorkerFROM gcr.io/skia-public/emsdk-base:prod as builder
3*c8dee2aaSAndroid Build Coastguard Worker
4*c8dee2aaSAndroid Build Coastguard WorkerRUN apt-get update && apt-get upgrade -y && apt-get install -y \
5*c8dee2aaSAndroid Build Coastguard Worker  git \
6*c8dee2aaSAndroid Build Coastguard Worker  libfreetype6-dev
7*c8dee2aaSAndroid Build Coastguard Worker
8*c8dee2aaSAndroid Build Coastguard WorkerRUN cd /tmp \
9*c8dee2aaSAndroid Build Coastguard Worker  && git clone --depth 1 'https://chromium.googlesource.com/chromium/tools/depot_tools.git'
10*c8dee2aaSAndroid Build Coastguard Worker
11*c8dee2aaSAndroid Build Coastguard WorkerENV PATH=${PATH}:/tmp/depot_tools
12*c8dee2aaSAndroid Build Coastguard Worker
13*c8dee2aaSAndroid Build Coastguard Worker# See skbug.com/13128
14*c8dee2aaSAndroid Build Coastguard WorkerENV DEPOT_TOOLS_UPDATE=0
15*c8dee2aaSAndroid Build Coastguard Worker# Checkout Skia using fetch from depot_tools
16*c8dee2aaSAndroid Build Coastguard WorkerRUN mkdir -p /tmp/skia \
17*c8dee2aaSAndroid Build Coastguard Worker  && cd /tmp/skia \
18*c8dee2aaSAndroid Build Coastguard Worker  && fetch skia
19*c8dee2aaSAndroid Build Coastguard Worker
20*c8dee2aaSAndroid Build Coastguard Worker# Set fake identity for git rebase. See thread in
21*c8dee2aaSAndroid Build Coastguard Worker# https://skia-review.googlesource.com/c/buildbot/+/286537/5/docker/Dockerfile#46
22*c8dee2aaSAndroid Build Coastguard WorkerRUN cd /tmp/skia/skia \
23*c8dee2aaSAndroid Build Coastguard Worker    && git config user.email "[email protected]" \
24*c8dee2aaSAndroid Build Coastguard Worker    && git config user.name "Skia"
25*c8dee2aaSAndroid Build Coastguard Worker
26*c8dee2aaSAndroid Build Coastguard Worker# HASH must be specified.
27*c8dee2aaSAndroid Build Coastguard WorkerARG HASH
28*c8dee2aaSAndroid Build Coastguard WorkerRUN if [ -z "${HASH}" ] ; then echo "HASH must be specified as a --build-arg"; exit 1; fi
29*c8dee2aaSAndroid Build Coastguard Worker
30*c8dee2aaSAndroid Build Coastguard WorkerRUN cd /tmp/skia/skia \
31*c8dee2aaSAndroid Build Coastguard Worker  && git fetch \
32*c8dee2aaSAndroid Build Coastguard Worker  && git reset --hard ${HASH}
33*c8dee2aaSAndroid Build Coastguard Worker
34*c8dee2aaSAndroid Build Coastguard Worker# If patch ref is specified then update the ref to patch in a CL.
35*c8dee2aaSAndroid Build Coastguard WorkerARG PATCH_REF
36*c8dee2aaSAndroid Build Coastguard WorkerRUN if [ ! -z "${PATCH_REF}" ] ; then cd /tmp/skia/skia \
37*c8dee2aaSAndroid Build Coastguard Worker    && git fetch https://skia.googlesource.com/skia ${PATCH_REF} \
38*c8dee2aaSAndroid Build Coastguard Worker    && git checkout FETCH_HEAD \
39*c8dee2aaSAndroid Build Coastguard Worker    && git rebase ${HASH}; fi
40*c8dee2aaSAndroid Build Coastguard Worker
41*c8dee2aaSAndroid Build Coastguard WorkerRUN cd /tmp/skia/skia \
42*c8dee2aaSAndroid Build Coastguard Worker  && gclient sync \
43*c8dee2aaSAndroid Build Coastguard Worker  && ./bin/fetch-gn \
44*c8dee2aaSAndroid Build Coastguard Worker  && ./bin/activate-emsdk
45*c8dee2aaSAndroid Build Coastguard Worker
46*c8dee2aaSAndroid Build Coastguard Worker# PathKit should be in /tmp/skia/skia/out/pathkit/
47*c8dee2aaSAndroid Build Coastguard WorkerRUN /tmp/skia/skia/modules/pathkit/compile.sh
48*c8dee2aaSAndroid Build Coastguard Worker
49*c8dee2aaSAndroid Build Coastguard Worker# CanvasKit should be in /tmp/skia/skia/out/canvaskit_wasm
50*c8dee2aaSAndroid Build Coastguard Worker# We also want to include the debugger bindings to run debugger.skia.org
51*c8dee2aaSAndroid Build Coastguard WorkerRUN /tmp/skia/skia/modules/canvaskit/compile.sh enable_debugger
52*c8dee2aaSAndroid Build Coastguard Worker
53*c8dee2aaSAndroid Build Coastguard WorkerRUN cd /tmp/skia/skia && git rev-parse HEAD > /tmp/VERSION
54*c8dee2aaSAndroid Build Coastguard Worker
55*c8dee2aaSAndroid Build Coastguard Worker#############################################################################
56*c8dee2aaSAndroid Build Coastguard Worker# Multi-stage build part 2, in which we only have the compiled results and
57*c8dee2aaSAndroid Build Coastguard Worker# a VERSION in /tmp
58*c8dee2aaSAndroid Build Coastguard Worker# See https://docs.docker.com/develop/develop-images/multistage-build/
59*c8dee2aaSAndroid Build Coastguard Worker#############################################################################
60*c8dee2aaSAndroid Build Coastguard Worker
61*c8dee2aaSAndroid Build Coastguard WorkerFROM alpine:latest
62*c8dee2aaSAndroid Build Coastguard Worker
63*c8dee2aaSAndroid Build Coastguard WorkerWORKDIR /tmp/
64*c8dee2aaSAndroid Build Coastguard Worker
65*c8dee2aaSAndroid Build Coastguard WorkerRUN mkdir /tmp/pathkit /tmp/canvaskit
66*c8dee2aaSAndroid Build Coastguard Worker
67*c8dee2aaSAndroid Build Coastguard WorkerCOPY --from=builder /tmp/VERSION /tmp/VERSION
68*c8dee2aaSAndroid Build Coastguard Worker
69*c8dee2aaSAndroid Build Coastguard WorkerCOPY --from=builder /tmp/skia/skia/out/pathkit/pathkit* /tmp/pathkit/
70*c8dee2aaSAndroid Build Coastguard Worker
71*c8dee2aaSAndroid Build Coastguard WorkerCOPY --from=builder /tmp/skia/skia/out/canvaskit_wasm/canvaskit* /tmp/canvaskit/
72*c8dee2aaSAndroid Build Coastguard Worker
73*c8dee2aaSAndroid Build Coastguard WorkerCOPY --from=builder /tmp/skia/skia/modules/canvaskit/npm_build/types/index.d.ts /tmp/canvaskit/canvaskit.d.ts
74