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