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