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