Add CanvasKit build
Building CanvasKit uses very similar logic to PathKit, so there was a fair amount of copy/paste/customize. Fixes the name of skia.js/wasm -> canvaskit.js/wasm and adds a package.json to formally track versions. Also move PathKit helper scripts to align better. Docs-Preview: https://skia.org/?cl=160463 Bug: skia: Change-Id: Ie75b30592dcc4d520dca41f6f5579006aaa8849b Reviewed-on: https://skia-review.googlesource.com/c/160463 Reviewed-by: Eric Boren <borenet@google.com>
This commit is contained in:
parent
915b80bf39
commit
8e9750d3c5
@ -7,15 +7,15 @@ release:
|
||||
# Does an incremental build where possible.
|
||||
./compile.sh
|
||||
mkdir -p ./canvas-kit/bin
|
||||
cp ../../out/canvaskit_wasm/skia.js ./canvas-kit/bin
|
||||
cp ../../out/canvaskit_wasm/skia.wasm ./canvas-kit/bin
|
||||
cp ../../out/canvaskit_wasm/canvaskit.js ./canvas-kit/bin
|
||||
cp ../../out/canvaskit_wasm/canvaskit.wasm ./canvas-kit/bin
|
||||
|
||||
debug:
|
||||
# Does an incremental build where possible.
|
||||
./compile.sh debug
|
||||
mkdir -p ./canvas-kit/bin
|
||||
cp ../../out/canvaskit_wasm/skia.js ./canvas-kit/bin
|
||||
cp ../../out/canvaskit_wasm/skia.wasm ./canvas-kit/bin
|
||||
cp ../../out/canvaskit_wasm/canvaskit.js ./canvas-kit/bin
|
||||
cp ../../out/canvaskit_wasm/canvaskit.wasm ./canvas-kit/bin
|
||||
|
||||
local-example:
|
||||
rm -rf node_modules/canvas-kit
|
||||
|
@ -30,7 +30,7 @@
|
||||
<!-- Doesn't work yet. -->
|
||||
<button id=lego_btn>Take a picture of the legos</button>
|
||||
|
||||
<script type="text/javascript" src="/node_modules/canvas-kit/bin/skia.js"></script>
|
||||
<script type="text/javascript" src="/node_modules/canvas-kit/bin/canvaskit.js"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
|
||||
|
11
experimental/canvaskit/canvas-kit/package.json
Normal file
11
experimental/canvaskit/canvas-kit/package.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "canvaskit-wasm",
|
||||
"version": "0.1.0",
|
||||
"description": "A WASM version of Skia's Canvas API",
|
||||
"main": "bin/canvaskit.js",
|
||||
"homepage": "https://github.com/google/skia/tree/master/experimental/canvaskit",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"license": "Apache-2.0"
|
||||
}
|
@ -14,11 +14,13 @@ if [[ ! -d $EMSDK ]]; then
|
||||
fi
|
||||
|
||||
BUILD_DIR=${BUILD_DIR:="out/canvaskit_wasm"}
|
||||
|
||||
mkdir -p $BUILD_DIR
|
||||
# Navigate to SKIA_HOME from where this file is located.
|
||||
pushd $BASE_DIR/../..
|
||||
|
||||
source $EMSDK/emsdk_env.sh
|
||||
EMCC=`which emcc`
|
||||
EMCXX=`which em++`
|
||||
|
||||
RELEASE_CONF="-Oz --closure 1 --llvm-lto 3 -DSK_RELEASE"
|
||||
EXTRA_CFLAGS="\"-DSK_RELEASE\""
|
||||
@ -28,12 +30,18 @@ if [[ $@ == *debug* ]]; then
|
||||
RELEASE_CONF="-O0 --js-opts 0 -s SAFE_HEAP=1 -s ASSERTIONS=1 -g3 -DPATHKIT_TESTING -DSK_DEBUG"
|
||||
fi
|
||||
|
||||
# Turn off exiting while we check for ninja (which may not be on PATH)
|
||||
set +e
|
||||
NINJA=`which ninja`
|
||||
if [[ -z $NINJA ]]; then
|
||||
git clone "https://chromium.googlesource.com/chromium/tools/depot_tools.git" --depth 1 $BUILD_DIR/depot_tools
|
||||
NINJA=$BUILD_DIR/depot_tools/ninja
|
||||
fi
|
||||
# Re-enable error checking
|
||||
set -e
|
||||
|
||||
echo "Compiling bitcode"
|
||||
|
||||
EMCC=`which emcc`
|
||||
EMCXX=`which em++`
|
||||
|
||||
# Inspired by https://github.com/Zubnix/skia-wasm-port/blob/master/build_bindings.sh
|
||||
./bin/gn gen ${BUILD_DIR} \
|
||||
--args="cc=\"${EMCC}\" \
|
||||
@ -68,7 +76,7 @@ EMCXX=`which em++`
|
||||
skia_enable_fontmgr_empty=false \
|
||||
skia_enable_pdf=false"
|
||||
|
||||
ninja -C ${BUILD_DIR} libskia.a
|
||||
${NINJA} -C ${BUILD_DIR} libskia.a
|
||||
|
||||
export EMCC_CLOSURE_ARGS="--externs $BASE_DIR/externs.js "
|
||||
|
||||
@ -132,4 +140,4 @@ ${EMCC} \
|
||||
-s USE_FREETYPE=1 \
|
||||
-s USE_LIBPNG=1 \
|
||||
-s WASM=1 \
|
||||
-o $BUILD_DIR/skia.js
|
||||
-o $BUILD_DIR/canvaskit.js
|
||||
|
22
experimental/canvaskit/package.json
Normal file
22
experimental/canvaskit/package.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "canvaskit-local",
|
||||
"version": "0.0.0",
|
||||
"description": "private",
|
||||
"private": true,
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
},
|
||||
"devDependencies": {
|
||||
"is-docker": "^1.1.0",
|
||||
"jasmine-core": "^3.1.0",
|
||||
"karma": "^2.0.5",
|
||||
"karma-chrome-launcher": "^2.2.0",
|
||||
"karma-jasmine": "^1.1.2",
|
||||
"requirejs": "^2.3.5"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC"
|
||||
}
|
@ -312,7 +312,7 @@ func kitchenTask(name, recipe, isolate, serviceAccount string, dimensions []stri
|
||||
Dependencies: []string{BUNDLE_RECIPES_NAME},
|
||||
Dimensions: dimensions,
|
||||
EnvPrefixes: map[string][]string{
|
||||
"PATH": []string{"cipd_bin_packages", "cipd_bin_packages/bin"},
|
||||
"PATH": []string{"cipd_bin_packages", "cipd_bin_packages/bin"},
|
||||
"VPYTHON_VIRTUALENV_ROOT": []string{"cache/vpython"},
|
||||
},
|
||||
ExtraTags: map[string]string{
|
||||
@ -401,6 +401,9 @@ func deriveCompileTaskName(jobName string, parts map[string]string) string {
|
||||
if strings.Contains(jobName, "PathKit") {
|
||||
ec = []string{"PathKit"}
|
||||
}
|
||||
if strings.Contains(jobName, "CanvasKit") {
|
||||
ec = []string{"CanvasKit"}
|
||||
}
|
||||
if len(ec) > 0 {
|
||||
jobNameMap["extra_config"] = strings.Join(ec, "_")
|
||||
}
|
||||
@ -608,7 +611,7 @@ func defaultSwarmDimensions(parts map[string]string) []string {
|
||||
} else {
|
||||
d["gpu"] = "none"
|
||||
if d["os"] == DEFAULT_OS_DEBIAN {
|
||||
if strings.Contains(parts["extra_config"], "PathKit") {
|
||||
if strings.Contains(parts["extra_config"], "PathKit") || strings.Contains(parts["extra_config"], "CanvasKit") {
|
||||
// The build isn't really parallelized for pathkit, so
|
||||
// the bulky machines don't buy us much. All we really need is
|
||||
// docker, which was manually installed on the MEDIUM and LARGE
|
||||
@ -1077,6 +1080,8 @@ func test(b *specs.TasksCfgBuilder, name string, parts map[string]string, compil
|
||||
recipe = "compute_test"
|
||||
} else if strings.Contains(name, "PathKit") {
|
||||
recipe = "test_pathkit"
|
||||
} else if strings.Contains(name, "CanvasKit") {
|
||||
recipe = "test_canvaskit"
|
||||
} else if strings.Contains(name, "LottieWeb") {
|
||||
recipe = "test_lottie_web"
|
||||
}
|
||||
@ -1088,7 +1093,7 @@ func test(b *specs.TasksCfgBuilder, name string, parts map[string]string, compil
|
||||
extraProps["internal_hardware_label"] = strconv.Itoa(*iid)
|
||||
}
|
||||
isolate := "test_skia_bundled.isolate"
|
||||
if strings.Contains(name, "PathKit") || strings.Contains(name, "LottieWeb") || strings.Contains(name, "Emulator") {
|
||||
if strings.Contains(name, "CanvasKit") || strings.Contains(name, "Emulator") || strings.Contains(name, "LottieWeb") || strings.Contains(name, "PathKit") {
|
||||
isolate = "swarm_recipe.isolate"
|
||||
}
|
||||
task := kitchenTask(name, recipe, isolate, "", swarmDimensions(parts), extraProps, OUTPUT_TEST)
|
||||
@ -1363,7 +1368,7 @@ func process(b *specs.TasksCfgBuilder, name string) {
|
||||
if strings.Contains(name, "ProcDump") {
|
||||
pkgs = append(pkgs, b.MustGetCipdPackageFromAsset("procdump_win"))
|
||||
}
|
||||
if strings.Contains(name, "PathKit") || strings.Contains(name, "LottieWeb") {
|
||||
if strings.Contains(name, "CanvasKit") || strings.Contains(name, "LottieWeb") || strings.Contains(name, "PathKit") {
|
||||
// Docker-based tests that don't need the standard CIPD assets
|
||||
pkgs = []*specs.CipdPackage{}
|
||||
}
|
||||
|
@ -56,7 +56,9 @@
|
||||
"Build-Debian9-Clang-x86_64-Release-Vulkan",
|
||||
"Build-Debian9-EMCC-asmjs-Debug-PathKit",
|
||||
"Build-Debian9-EMCC-asmjs-Release-PathKit",
|
||||
"Build-Debian9-EMCC-wasm-Debug-CanvasKit",
|
||||
"Build-Debian9-EMCC-wasm-Debug-PathKit",
|
||||
"Build-Debian9-EMCC-wasm-Release-CanvasKit",
|
||||
"Build-Debian9-EMCC-wasm-Release-PathKit",
|
||||
"Build-Debian9-GCC-loongson3a-Debug",
|
||||
"Build-Debian9-GCC-loongson3a-Release",
|
||||
@ -108,6 +110,7 @@
|
||||
"Build-Win-MSVC-x86_64-Release",
|
||||
"Build-Win-MSVC-x86_64-Release-Vulkan",
|
||||
"BuildStats-Debian9-EMCC-asmjs-Release-PathKit",
|
||||
"BuildStats-Debian9-EMCC-wasm-Release-CanvasKit",
|
||||
"BuildStats-Debian9-EMCC-wasm-Release-PathKit",
|
||||
"Calmbench-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All",
|
||||
"Calmbench-Ubuntu17-Clang-Golo-GPU-QuadroP400-x86_64-Release-All",
|
||||
|
@ -9,6 +9,7 @@
|
||||
from recipe_engine import recipe_api
|
||||
|
||||
from . import android
|
||||
from . import canvaskit
|
||||
from . import chromebook
|
||||
from . import chromecast
|
||||
from . import default
|
||||
@ -37,8 +38,12 @@ class BuildApi(recipe_api.RecipeApi):
|
||||
self.compile_fn = flutter.compile_fn
|
||||
self.copy_fn = flutter.copy_extra_build_products
|
||||
elif 'EMCC' in b:
|
||||
self.compile_fn = pathkit.compile_fn
|
||||
self.copy_fn = pathkit.copy_extra_build_products
|
||||
if 'PathKit' in b:
|
||||
self.compile_fn = pathkit.compile_fn
|
||||
self.copy_fn = pathkit.copy_extra_build_products
|
||||
else:
|
||||
self.compile_fn = canvaskit.compile_fn
|
||||
self.copy_fn = canvaskit.copy_extra_build_products
|
||||
else:
|
||||
self.compile_fn = default.compile_fn
|
||||
self.copy_fn = default.copy_extra_build_products
|
||||
|
86
infra/bots/recipe_modules/build/canvaskit.py
Normal file
86
infra/bots/recipe_modules/build/canvaskit.py
Normal file
@ -0,0 +1,86 @@
|
||||
# Copyright 2018 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
DOCKER_IMAGE = 'gcr.io/skia-public/emsdk-release:1.38.6_jre'
|
||||
INNER_BUILD_SCRIPT = '/SRC/skia/infra/canvaskit/build_canvaskit.sh'
|
||||
|
||||
BUILD_PRODUCTS_ISOLATE_WHITELIST_WASM = [
|
||||
'canvaskit.*'
|
||||
]
|
||||
|
||||
|
||||
def compile_fn(api, checkout_root, _ignore):
|
||||
out_dir = api.vars.cache_dir.join('docker', 'canvaskit')
|
||||
configuration = api.vars.builder_cfg.get('configuration', '')
|
||||
|
||||
# We want to make sure the directories exist and were created by chrome-bot,
|
||||
# because if that isn't the case, docker will make them and they will be
|
||||
# owned by root, which causes mysterious failures. To mitigate this risk
|
||||
# further, we don't use the same out_dir as everyone else (thus the _ignore)
|
||||
# param. Instead, we use a "wasm" subdirectory in the "docker" named_cache.
|
||||
api.file.ensure_directory('mkdirs out_dir', out_dir, mode=0777)
|
||||
|
||||
# This uses the emscriptem sdk docker image and says "run the
|
||||
# build_pathkit.sh helper script in there". Additionally, it binds two
|
||||
# folders: the Skia checkout to /SRC and the output directory to /OUT
|
||||
# The called helper script will make the compile happen and put the
|
||||
# output in the right spot. The neat thing is that since the Skia checkout
|
||||
# (and, by extension, the build script) is not a part of the image, but
|
||||
# bound in at runtime, we don't have to re-build the image, except when the
|
||||
# toolchain changes.
|
||||
# Of note, the wasm build doesn't re-use any intermediate steps from the
|
||||
# previous builds, so it's essentially a build from scratch every time.
|
||||
cmd = ['docker', 'run', '--rm', '-v', '%s:/SRC' % checkout_root,
|
||||
'-v', '%s:/OUT' % out_dir,
|
||||
DOCKER_IMAGE, INNER_BUILD_SCRIPT]
|
||||
if configuration == 'Debug':
|
||||
cmd.append('debug') # It defaults to Release
|
||||
api.run(
|
||||
api.step,
|
||||
'Build CanvasKit with Docker',
|
||||
cmd=cmd)
|
||||
|
||||
|
||||
def copy_extra_build_products(api, _ignore, dst):
|
||||
out_dir = api.vars.cache_dir.join('docker', 'canvaskit')
|
||||
# We don't use the normal copy_build_products because it uses
|
||||
# shutil.move, which attempts to delete the previous file, which
|
||||
# doesn't work because the docker created outputs are read-only and
|
||||
# owned by root (aka only docker images). It's likely safe to change
|
||||
# the shutil.move in the original script to a non-deleting thing
|
||||
# (like copy or copyfile), but there's some subtle behavior differences
|
||||
# especially with directories, that kjlubick felt it best not to risk it.
|
||||
api.python.inline(
|
||||
name='copy wasm output',
|
||||
program='''import errno
|
||||
import glob
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
src = sys.argv[1]
|
||||
dst = sys.argv[2]
|
||||
build_products_whitelist = %s
|
||||
|
||||
try:
|
||||
os.makedirs(dst)
|
||||
except OSError as e:
|
||||
if e.errno != errno.EEXIST:
|
||||
raise
|
||||
|
||||
for pattern in build_products_whitelist:
|
||||
path = os.path.join(src, pattern)
|
||||
for f in glob.glob(path):
|
||||
dst_path = os.path.join(dst, os.path.relpath(f, src))
|
||||
if not os.path.isdir(os.path.dirname(dst_path)):
|
||||
os.makedirs(os.path.dirname(dst_path))
|
||||
print 'Copying build product %%s to %%s' %% (f, dst_path)
|
||||
# Because Docker usually has some strange permissions (like root
|
||||
# ownership), we'd rather not keep those around. copyfile doesn't
|
||||
# keep the metadata around, so that helps us.
|
||||
shutil.copyfile(f, dst_path)
|
||||
''' % str(BUILD_PRODUCTS_ISOLATE_WHITELIST_WASM),
|
||||
args=[out_dir, dst],
|
||||
infra_step=True)
|
||||
|
@ -9,7 +9,7 @@
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/cache/docker/wasm"
|
||||
"[START_DIR]/cache/docker/pathkit"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "mkdirs out_dir"
|
||||
@ -22,9 +22,9 @@
|
||||
"-v",
|
||||
"[START_DIR]/cache/work:/SRC",
|
||||
"-v",
|
||||
"[START_DIR]/cache/docker/wasm:/OUT",
|
||||
"[START_DIR]/cache/docker/pathkit:/OUT",
|
||||
"gcr.io/skia-public/emsdk-release:1.38.6_jre",
|
||||
"/SRC/skia/infra/pathkit/docker/build_pathkit.sh",
|
||||
"/SRC/skia/infra/pathkit/build_pathkit.sh",
|
||||
"debug",
|
||||
"asm.js"
|
||||
],
|
||||
@ -77,7 +77,7 @@
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['pathkit.*']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n # Because Docker usually has some strange permissions (like root\n # ownership), we'd rather not keep those around. copyfile doesn't\n # keep the metadata around, so that helps us.\n shutil.copyfile(f, dst_path)\n",
|
||||
"[START_DIR]/cache/docker/wasm",
|
||||
"[START_DIR]/cache/docker/pathkit",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/Debug"
|
||||
],
|
||||
"infra_step": true,
|
||||
|
@ -9,7 +9,7 @@
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/cache/docker/wasm"
|
||||
"[START_DIR]/cache/docker/pathkit"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "mkdirs out_dir"
|
||||
@ -22,9 +22,9 @@
|
||||
"-v",
|
||||
"[START_DIR]/cache/work:/SRC",
|
||||
"-v",
|
||||
"[START_DIR]/cache/docker/wasm:/OUT",
|
||||
"[START_DIR]/cache/docker/pathkit:/OUT",
|
||||
"gcr.io/skia-public/emsdk-release:1.38.6_jre",
|
||||
"/SRC/skia/infra/pathkit/docker/build_pathkit.sh",
|
||||
"/SRC/skia/infra/pathkit/build_pathkit.sh",
|
||||
"asm.js"
|
||||
],
|
||||
"env": {
|
||||
@ -76,7 +76,7 @@
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['pathkit.*']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n # Because Docker usually has some strange permissions (like root\n # ownership), we'd rather not keep those around. copyfile doesn't\n # keep the metadata around, so that helps us.\n shutil.copyfile(f, dst_path)\n",
|
||||
"[START_DIR]/cache/docker/wasm",
|
||||
"[START_DIR]/cache/docker/pathkit",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/Release"
|
||||
],
|
||||
"infra_step": true,
|
||||
|
@ -0,0 +1,120 @@
|
||||
[
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/cache/docker/canvaskit"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "mkdirs out_dir"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"docker",
|
||||
"run",
|
||||
"--rm",
|
||||
"-v",
|
||||
"[START_DIR]/cache/work:/SRC",
|
||||
"-v",
|
||||
"[START_DIR]/cache/docker/canvaskit:/OUT",
|
||||
"gcr.io/skia-public/emsdk-release:1.38.6_jre",
|
||||
"/SRC/skia/infra/canvaskit/build_canvaskit.sh",
|
||||
"debug"
|
||||
],
|
||||
"env": {
|
||||
"CHROME_HEADLESS": "1",
|
||||
"PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"name": "Build CanvasKit with Docker"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['bookmaker', 'dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'hello-opencl', 'hello-opencl.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skiaserve', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n",
|
||||
"[START_DIR]/cache/work/skia/out/Build-Debian9-EMCC-wasm-Debug-CanvasKit/Debug",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/Debug"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "copy build products",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_LOG_LINE@python.inline@import errno@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import glob@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import shutil@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@build_products_whitelist = ['bookmaker', 'dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'hello-opencl', 'hello-opencl.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skiaserve', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@try:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ raise@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@for pattern in build_products_whitelist:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@",
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['canvaskit.*']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n # Because Docker usually has some strange permissions (like root\n # ownership), we'd rather not keep those around. copyfile doesn't\n # keep the metadata around, so that helps us.\n shutil.copyfile(f, dst_path)\n",
|
||||
"[START_DIR]/cache/docker/canvaskit",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/Debug"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "copy wasm output",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_LOG_LINE@python.inline@import errno@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import glob@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import shutil@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@build_products_whitelist = ['canvaskit.*']@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@try:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ raise@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@for pattern in build_products_whitelist:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ # Because Docker usually has some strange permissions (like root@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ # ownership), we'd rather not keep those around. copyfile doesn't@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ # keep the metadata around, so that helps us.@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ shutil.copyfile(f, dst_path)@@@",
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -9,7 +9,7 @@
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/cache/docker/wasm"
|
||||
"[START_DIR]/cache/docker/pathkit"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "mkdirs out_dir"
|
||||
@ -22,9 +22,9 @@
|
||||
"-v",
|
||||
"[START_DIR]/cache/work:/SRC",
|
||||
"-v",
|
||||
"[START_DIR]/cache/docker/wasm:/OUT",
|
||||
"[START_DIR]/cache/docker/pathkit:/OUT",
|
||||
"gcr.io/skia-public/emsdk-release:1.38.6_jre",
|
||||
"/SRC/skia/infra/pathkit/docker/build_pathkit.sh",
|
||||
"/SRC/skia/infra/pathkit/build_pathkit.sh",
|
||||
"debug"
|
||||
],
|
||||
"env": {
|
||||
@ -76,7 +76,7 @@
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['pathkit.*']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n # Because Docker usually has some strange permissions (like root\n # ownership), we'd rather not keep those around. copyfile doesn't\n # keep the metadata around, so that helps us.\n shutil.copyfile(f, dst_path)\n",
|
||||
"[START_DIR]/cache/docker/wasm",
|
||||
"[START_DIR]/cache/docker/pathkit",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/Debug"
|
||||
],
|
||||
"infra_step": true,
|
||||
|
@ -0,0 +1,119 @@
|
||||
[
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
||||
"--json-output",
|
||||
"/path/to/tmp/json",
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/cache/docker/canvaskit"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "mkdirs out_dir"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"docker",
|
||||
"run",
|
||||
"--rm",
|
||||
"-v",
|
||||
"[START_DIR]/cache/work:/SRC",
|
||||
"-v",
|
||||
"[START_DIR]/cache/docker/canvaskit:/OUT",
|
||||
"gcr.io/skia-public/emsdk-release:1.38.6_jre",
|
||||
"/SRC/skia/infra/canvaskit/build_canvaskit.sh"
|
||||
],
|
||||
"env": {
|
||||
"CHROME_HEADLESS": "1",
|
||||
"PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]"
|
||||
},
|
||||
"name": "Build CanvasKit with Docker"
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['bookmaker', 'dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'hello-opencl', 'hello-opencl.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skiaserve', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n",
|
||||
"[START_DIR]/cache/work/skia/out/Build-Debian9-EMCC-wasm-Release-CanvasKit/Release",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/Release"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "copy build products",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_LOG_LINE@python.inline@import errno@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import glob@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import shutil@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@build_products_whitelist = ['bookmaker', 'dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'hello-opencl', 'hello-opencl.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skiaserve', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@try:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ raise@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@for pattern in build_products_whitelist:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@",
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cmd": [
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['canvaskit.*']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n # Because Docker usually has some strange permissions (like root\n # ownership), we'd rather not keep those around. copyfile doesn't\n # keep the metadata around, so that helps us.\n shutil.copyfile(f, dst_path)\n",
|
||||
"[START_DIR]/cache/docker/canvaskit",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/Release"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "copy wasm output",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_LOG_LINE@python.inline@import errno@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import glob@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import shutil@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@build_products_whitelist = ['canvaskit.*']@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@try:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ raise@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@for pattern in build_products_whitelist:@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ # Because Docker usually has some strange permissions (like root@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ # ownership), we'd rather not keep those around. copyfile doesn't@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ # keep the metadata around, so that helps us.@@@",
|
||||
"@@@STEP_LOG_LINE@python.inline@ shutil.copyfile(f, dst_path)@@@",
|
||||
"@@@STEP_LOG_END@python.inline@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -9,7 +9,7 @@
|
||||
"ensure-directory",
|
||||
"--mode",
|
||||
"0777",
|
||||
"[START_DIR]/cache/docker/wasm"
|
||||
"[START_DIR]/cache/docker/pathkit"
|
||||
],
|
||||
"infra_step": true,
|
||||
"name": "mkdirs out_dir"
|
||||
@ -22,9 +22,9 @@
|
||||
"-v",
|
||||
"[START_DIR]/cache/work:/SRC",
|
||||
"-v",
|
||||
"[START_DIR]/cache/docker/wasm:/OUT",
|
||||
"[START_DIR]/cache/docker/pathkit:/OUT",
|
||||
"gcr.io/skia-public/emsdk-release:1.38.6_jre",
|
||||
"/SRC/skia/infra/pathkit/docker/build_pathkit.sh"
|
||||
"/SRC/skia/infra/pathkit/build_pathkit.sh"
|
||||
],
|
||||
"env": {
|
||||
"CHROME_HEADLESS": "1",
|
||||
@ -75,7 +75,7 @@
|
||||
"python",
|
||||
"-u",
|
||||
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['pathkit.*']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n # Because Docker usually has some strange permissions (like root\n # ownership), we'd rather not keep those around. copyfile doesn't\n # keep the metadata around, so that helps us.\n shutil.copyfile(f, dst_path)\n",
|
||||
"[START_DIR]/cache/docker/wasm",
|
||||
"[START_DIR]/cache/docker/pathkit",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]/out/Release"
|
||||
],
|
||||
"infra_step": true,
|
||||
|
@ -44,7 +44,9 @@ TEST_BUILDERS = [
|
||||
'Build-Debian9-Clang-x86_64-Release-Vulkan',
|
||||
'Build-Debian9-EMCC-asmjs-Debug-PathKit',
|
||||
'Build-Debian9-EMCC-asmjs-Release-PathKit',
|
||||
'Build-Debian9-EMCC-wasm-Debug-CanvasKit',
|
||||
'Build-Debian9-EMCC-wasm-Debug-PathKit',
|
||||
'Build-Debian9-EMCC-wasm-Release-CanvasKit',
|
||||
'Build-Debian9-EMCC-wasm-Release-PathKit',
|
||||
'Build-Debian9-GCC-arm-Release-Chromecast',
|
||||
'Build-Debian9-GCC-loongson3a-Release',
|
||||
|
@ -3,7 +3,7 @@
|
||||
# found in the LICENSE file.
|
||||
|
||||
DOCKER_IMAGE = 'gcr.io/skia-public/emsdk-release:1.38.6_jre'
|
||||
INNER_BUILD_SCRIPT = '/SRC/skia/infra/pathkit/docker/build_pathkit.sh'
|
||||
INNER_BUILD_SCRIPT = '/SRC/skia/infra/pathkit/build_pathkit.sh'
|
||||
|
||||
BUILD_PRODUCTS_ISOLATE_WHITELIST_WASM = [
|
||||
'pathkit.*'
|
||||
@ -11,7 +11,7 @@ BUILD_PRODUCTS_ISOLATE_WHITELIST_WASM = [
|
||||
|
||||
|
||||
def compile_fn(api, checkout_root, _ignore):
|
||||
out_dir = api.vars.cache_dir.join('docker', 'wasm')
|
||||
out_dir = api.vars.cache_dir.join('docker', 'pathkit')
|
||||
configuration = api.vars.builder_cfg.get('configuration', '')
|
||||
target_arch = api.vars.builder_cfg.get('target_arch', '')
|
||||
|
||||
@ -19,12 +19,12 @@ def compile_fn(api, checkout_root, _ignore):
|
||||
# because if that isn't the case, docker will make them and they will be
|
||||
# owned by root, which causes mysterious failures. To mitigate this risk
|
||||
# further, we don't use the same out_dir as everyone else (thus the _ignore)
|
||||
# param. Instead, we use a "wasm" subdirectory in the "docker" named_cache.
|
||||
# param. Instead, we use a "pathkit" subdirectory in the "docker" named_cache.
|
||||
api.file.ensure_directory('mkdirs out_dir', out_dir, mode=0777)
|
||||
|
||||
# This uses the emscriptem sdk docker image and says "run the
|
||||
# build_pathkit.sh helper script in there". Additionally, it binds two
|
||||
# folders: the skia checkout to /SRC and the output directory to /OUT
|
||||
# folders: the Skia checkout to /SRC and the output directory to /OUT
|
||||
# The called helper script will make the compile happen and put the
|
||||
# output in the right spot. The neat thing is that since the Skia checkout
|
||||
# (and, by extension, the build script) is not a part of the image, but
|
||||
@ -36,7 +36,7 @@ def compile_fn(api, checkout_root, _ignore):
|
||||
'-v', '%s:/OUT' % out_dir,
|
||||
DOCKER_IMAGE, INNER_BUILD_SCRIPT]
|
||||
if configuration == 'Debug':
|
||||
cmd.append('debug') # It defaults to Relesae
|
||||
cmd.append('debug') # It defaults to Release
|
||||
if target_arch == 'asmjs':
|
||||
cmd.append('asm.js') # It defaults to WASM
|
||||
api.run(
|
||||
@ -46,7 +46,7 @@ def compile_fn(api, checkout_root, _ignore):
|
||||
|
||||
|
||||
def copy_extra_build_products(api, _ignore, dst):
|
||||
out_dir = api.vars.cache_dir.join('docker', 'wasm')
|
||||
out_dir = api.vars.cache_dir.join('docker', 'pathkit')
|
||||
# We don't use the normal copy_build_products because it uses
|
||||
# shutil.move, which attempts to delete the previous file, which
|
||||
# doesn't work because the docker created outputs are read-only and
|
||||
|
@ -203,7 +203,7 @@
|
||||
"-e",
|
||||
"ASM_JS=1",
|
||||
"gcr.io/skia-public/gold-karma-chrome-tests:68.0.3440.106_v4",
|
||||
"/SRC/skia/infra/pathkit/docker/test_pathkit.sh",
|
||||
"/SRC/skia/infra/pathkit/test_pathkit.sh",
|
||||
"--builder",
|
||||
"Test-Debian9-EMCC-GCE-CPU-AVX2-asmjs-Debug-All-PathKit",
|
||||
"--git_hash",
|
||||
|
@ -203,7 +203,7 @@
|
||||
"-e",
|
||||
"ASM_JS=1",
|
||||
"gcr.io/skia-public/gold-karma-chrome-tests:68.0.3440.106_v4",
|
||||
"/SRC/skia/infra/pathkit/docker/test_pathkit.sh",
|
||||
"/SRC/skia/infra/pathkit/test_pathkit.sh",
|
||||
"--builder",
|
||||
"Test-Debian9-EMCC-GCE-CPU-AVX2-asmjs-Release-All-PathKit",
|
||||
"--git_hash",
|
||||
|
@ -201,7 +201,7 @@
|
||||
"-v",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]:/OUT",
|
||||
"gcr.io/skia-public/gold-karma-chrome-tests:68.0.3440.106_v4",
|
||||
"/SRC/skia/infra/pathkit/docker/test_pathkit.sh",
|
||||
"/SRC/skia/infra/pathkit/test_pathkit.sh",
|
||||
"--builder",
|
||||
"Test-Debian9-EMCC-GCE-CPU-AVX2-wasm-Debug-All-PathKit",
|
||||
"--git_hash",
|
||||
|
@ -203,7 +203,7 @@
|
||||
"-v",
|
||||
"[START_DIR]/[SWARM_OUT_DIR]:/OUT",
|
||||
"gcr.io/skia-public/gold-karma-chrome-tests:68.0.3440.106_v4",
|
||||
"/SRC/skia/infra/pathkit/docker/test_pathkit.sh",
|
||||
"/SRC/skia/infra/pathkit/test_pathkit.sh",
|
||||
"--builder",
|
||||
"Test-Debian9-EMCC-GCE-CPU-AVX2-wasm-Debug-All-PathKit",
|
||||
"--git_hash",
|
||||
|
@ -18,7 +18,7 @@ DEPS = [
|
||||
|
||||
|
||||
DOCKER_IMAGE = 'gcr.io/skia-public/gold-karma-chrome-tests:68.0.3440.106_v4'
|
||||
INNER_KARMA_SCRIPT = '/SRC/skia/infra/pathkit/docker/test_pathkit.sh'
|
||||
INNER_KARMA_SCRIPT = '/SRC/skia/infra/pathkit/test_pathkit.sh'
|
||||
|
||||
|
||||
def RunSteps(api):
|
||||
|
@ -286,11 +286,21 @@
|
||||
"Build-Debian9-EMCC-asmjs-Release-PathKit"
|
||||
]
|
||||
},
|
||||
"Build-Debian9-EMCC-wasm-Debug-CanvasKit": {
|
||||
"tasks": [
|
||||
"Build-Debian9-EMCC-wasm-Debug-CanvasKit"
|
||||
]
|
||||
},
|
||||
"Build-Debian9-EMCC-wasm-Debug-PathKit": {
|
||||
"tasks": [
|
||||
"Build-Debian9-EMCC-wasm-Debug-PathKit"
|
||||
]
|
||||
},
|
||||
"Build-Debian9-EMCC-wasm-Release-CanvasKit": {
|
||||
"tasks": [
|
||||
"Build-Debian9-EMCC-wasm-Release-CanvasKit"
|
||||
]
|
||||
},
|
||||
"Build-Debian9-EMCC-wasm-Release-PathKit": {
|
||||
"tasks": [
|
||||
"Build-Debian9-EMCC-wasm-Release-PathKit"
|
||||
@ -549,6 +559,11 @@
|
||||
"Upload-BuildStats-Debian9-EMCC-asmjs-Release-PathKit"
|
||||
]
|
||||
},
|
||||
"BuildStats-Debian9-EMCC-wasm-Release-CanvasKit": {
|
||||
"tasks": [
|
||||
"Upload-BuildStats-Debian9-EMCC-wasm-Release-CanvasKit"
|
||||
]
|
||||
},
|
||||
"BuildStats-Debian9-EMCC-wasm-Release-PathKit": {
|
||||
"tasks": [
|
||||
"Upload-BuildStats-Debian9-EMCC-wasm-Release-PathKit"
|
||||
@ -10232,6 +10247,134 @@
|
||||
],
|
||||
"service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com"
|
||||
},
|
||||
"Build-Debian9-EMCC-wasm-Debug-CanvasKit": {
|
||||
"caches": [
|
||||
{
|
||||
"name": "vpython",
|
||||
"path": "cache/vpython"
|
||||
},
|
||||
{
|
||||
"name": "git",
|
||||
"path": "cache/git"
|
||||
},
|
||||
{
|
||||
"name": "git_cache",
|
||||
"path": "cache/git_cache"
|
||||
},
|
||||
{
|
||||
"name": "work",
|
||||
"path": "cache/work"
|
||||
},
|
||||
{
|
||||
"name": "docker",
|
||||
"path": "cache/docker"
|
||||
}
|
||||
],
|
||||
"cipd_packages": [
|
||||
{
|
||||
"name": "infra/tools/luci/kitchen/${platform}",
|
||||
"path": ".",
|
||||
"version": "git_revision:546aae39f1fb9dce9add528e2011afa574535ecd"
|
||||
},
|
||||
{
|
||||
"name": "infra/tools/luci-auth/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "git_revision:e1abc57be62d198b5c2f487bfb2fa2d2eb0e867c"
|
||||
},
|
||||
{
|
||||
"name": "infra/tools/luci/vpython/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "git_revision:b6cdec8586c9f8d3d728b1bc0bd4331330ba66fc"
|
||||
},
|
||||
{
|
||||
"name": "infra/git/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "version:2.17.1.chromium15"
|
||||
},
|
||||
{
|
||||
"name": "infra/tools/git/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "git_revision:0ae21738597e5601ba90372315145fec18582fc4"
|
||||
},
|
||||
{
|
||||
"name": "infra/tools/luci/git-credential-luci/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "git_revision:e1abc57be62d198b5c2f487bfb2fa2d2eb0e867c"
|
||||
}
|
||||
],
|
||||
"command": [
|
||||
"./kitchen${EXECUTABLE_SUFFIX}",
|
||||
"cook",
|
||||
"-checkout-dir",
|
||||
"recipe_bundle",
|
||||
"-mode",
|
||||
"swarming",
|
||||
"-luci-system-account",
|
||||
"system",
|
||||
"-cache-dir",
|
||||
"cache",
|
||||
"-temp-dir",
|
||||
"tmp",
|
||||
"-known-gerrit-host",
|
||||
"android.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"boringssl.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"chromium.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"dart.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"fuchsia.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"go.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"llvm.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"skia.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"webrtc.googlesource.com",
|
||||
"-output-result-json",
|
||||
"${ISOLATED_OUTDIR}/build_result_filename",
|
||||
"-workdir",
|
||||
".",
|
||||
"-recipe",
|
||||
"compile",
|
||||
"-properties",
|
||||
"{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Build-Debian9-EMCC-wasm-Debug-CanvasKit\",\"patch_issue\":\"<(ISSUE)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"revision\":\"<(REVISION)\",\"swarm_out_dir\":\"build\"}",
|
||||
"-logdog-annotation-url",
|
||||
"logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
|
||||
],
|
||||
"dependencies": [
|
||||
"Housekeeper-PerCommit-BundleRecipes"
|
||||
],
|
||||
"dimensions": [
|
||||
"cpu:x86-64-Haswell_GCE",
|
||||
"gpu:none",
|
||||
"machine_type:n1-standard-16",
|
||||
"os:Debian-9.4",
|
||||
"pool:Skia"
|
||||
],
|
||||
"env_prefixes": {
|
||||
"PATH": [
|
||||
"cipd_bin_packages",
|
||||
"cipd_bin_packages/bin"
|
||||
],
|
||||
"VPYTHON_VIRTUALENV_ROOT": [
|
||||
"cache/vpython"
|
||||
]
|
||||
},
|
||||
"execution_timeout_ns": 3600000000000,
|
||||
"extra_tags": {
|
||||
"log_location": "logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
|
||||
},
|
||||
"io_timeout_ns": 3600000000000,
|
||||
"isolate": "swarm_recipe.isolate",
|
||||
"max_attempts": 1,
|
||||
"outputs": [
|
||||
"build"
|
||||
],
|
||||
"service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com"
|
||||
},
|
||||
"Build-Debian9-EMCC-wasm-Debug-PathKit": {
|
||||
"caches": [
|
||||
{
|
||||
@ -10360,6 +10503,134 @@
|
||||
],
|
||||
"service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com"
|
||||
},
|
||||
"Build-Debian9-EMCC-wasm-Release-CanvasKit": {
|
||||
"caches": [
|
||||
{
|
||||
"name": "vpython",
|
||||
"path": "cache/vpython"
|
||||
},
|
||||
{
|
||||
"name": "git",
|
||||
"path": "cache/git"
|
||||
},
|
||||
{
|
||||
"name": "git_cache",
|
||||
"path": "cache/git_cache"
|
||||
},
|
||||
{
|
||||
"name": "work",
|
||||
"path": "cache/work"
|
||||
},
|
||||
{
|
||||
"name": "docker",
|
||||
"path": "cache/docker"
|
||||
}
|
||||
],
|
||||
"cipd_packages": [
|
||||
{
|
||||
"name": "infra/tools/luci/kitchen/${platform}",
|
||||
"path": ".",
|
||||
"version": "git_revision:546aae39f1fb9dce9add528e2011afa574535ecd"
|
||||
},
|
||||
{
|
||||
"name": "infra/tools/luci-auth/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "git_revision:e1abc57be62d198b5c2f487bfb2fa2d2eb0e867c"
|
||||
},
|
||||
{
|
||||
"name": "infra/tools/luci/vpython/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "git_revision:b6cdec8586c9f8d3d728b1bc0bd4331330ba66fc"
|
||||
},
|
||||
{
|
||||
"name": "infra/git/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "version:2.17.1.chromium15"
|
||||
},
|
||||
{
|
||||
"name": "infra/tools/git/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "git_revision:0ae21738597e5601ba90372315145fec18582fc4"
|
||||
},
|
||||
{
|
||||
"name": "infra/tools/luci/git-credential-luci/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "git_revision:e1abc57be62d198b5c2f487bfb2fa2d2eb0e867c"
|
||||
}
|
||||
],
|
||||
"command": [
|
||||
"./kitchen${EXECUTABLE_SUFFIX}",
|
||||
"cook",
|
||||
"-checkout-dir",
|
||||
"recipe_bundle",
|
||||
"-mode",
|
||||
"swarming",
|
||||
"-luci-system-account",
|
||||
"system",
|
||||
"-cache-dir",
|
||||
"cache",
|
||||
"-temp-dir",
|
||||
"tmp",
|
||||
"-known-gerrit-host",
|
||||
"android.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"boringssl.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"chromium.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"dart.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"fuchsia.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"go.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"llvm.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"skia.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"webrtc.googlesource.com",
|
||||
"-output-result-json",
|
||||
"${ISOLATED_OUTDIR}/build_result_filename",
|
||||
"-workdir",
|
||||
".",
|
||||
"-recipe",
|
||||
"compile",
|
||||
"-properties",
|
||||
"{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Build-Debian9-EMCC-wasm-Release-CanvasKit\",\"patch_issue\":\"<(ISSUE)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"revision\":\"<(REVISION)\",\"swarm_out_dir\":\"build\"}",
|
||||
"-logdog-annotation-url",
|
||||
"logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
|
||||
],
|
||||
"dependencies": [
|
||||
"Housekeeper-PerCommit-BundleRecipes"
|
||||
],
|
||||
"dimensions": [
|
||||
"cpu:x86-64-Haswell_GCE",
|
||||
"gpu:none",
|
||||
"machine_type:n1-standard-16",
|
||||
"os:Debian-9.4",
|
||||
"pool:Skia"
|
||||
],
|
||||
"env_prefixes": {
|
||||
"PATH": [
|
||||
"cipd_bin_packages",
|
||||
"cipd_bin_packages/bin"
|
||||
],
|
||||
"VPYTHON_VIRTUALENV_ROOT": [
|
||||
"cache/vpython"
|
||||
]
|
||||
},
|
||||
"execution_timeout_ns": 3600000000000,
|
||||
"extra_tags": {
|
||||
"log_location": "logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
|
||||
},
|
||||
"io_timeout_ns": 3600000000000,
|
||||
"isolate": "swarm_recipe.isolate",
|
||||
"max_attempts": 1,
|
||||
"outputs": [
|
||||
"build"
|
||||
],
|
||||
"service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com"
|
||||
},
|
||||
"Build-Debian9-EMCC-wasm-Release-PathKit": {
|
||||
"caches": [
|
||||
{
|
||||
@ -17029,6 +17300,102 @@
|
||||
"perf"
|
||||
]
|
||||
},
|
||||
"BuildStats-Debian9-EMCC-wasm-Release-CanvasKit": {
|
||||
"caches": [
|
||||
{
|
||||
"name": "vpython",
|
||||
"path": "cache/vpython"
|
||||
}
|
||||
],
|
||||
"cipd_packages": [
|
||||
{
|
||||
"name": "infra/tools/luci/kitchen/${platform}",
|
||||
"path": ".",
|
||||
"version": "git_revision:546aae39f1fb9dce9add528e2011afa574535ecd"
|
||||
},
|
||||
{
|
||||
"name": "infra/tools/luci-auth/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "git_revision:e1abc57be62d198b5c2f487bfb2fa2d2eb0e867c"
|
||||
},
|
||||
{
|
||||
"name": "infra/tools/luci/vpython/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "git_revision:b6cdec8586c9f8d3d728b1bc0bd4331330ba66fc"
|
||||
}
|
||||
],
|
||||
"command": [
|
||||
"./kitchen${EXECUTABLE_SUFFIX}",
|
||||
"cook",
|
||||
"-checkout-dir",
|
||||
"recipe_bundle",
|
||||
"-mode",
|
||||
"swarming",
|
||||
"-luci-system-account",
|
||||
"system",
|
||||
"-cache-dir",
|
||||
"cache",
|
||||
"-temp-dir",
|
||||
"tmp",
|
||||
"-known-gerrit-host",
|
||||
"android.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"boringssl.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"chromium.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"dart.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"fuchsia.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"go.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"llvm.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"skia.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"webrtc.googlesource.com",
|
||||
"-output-result-json",
|
||||
"${ISOLATED_OUTDIR}/build_result_filename",
|
||||
"-workdir",
|
||||
".",
|
||||
"-recipe",
|
||||
"compute_buildstats",
|
||||
"-properties",
|
||||
"{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"BuildStats-Debian9-EMCC-wasm-Release-CanvasKit\",\"patch_issue\":\"<(ISSUE)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"revision\":\"<(REVISION)\",\"swarm_out_dir\":\"perf\"}",
|
||||
"-logdog-annotation-url",
|
||||
"logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
|
||||
],
|
||||
"dependencies": [
|
||||
"Housekeeper-PerCommit-BundleRecipes",
|
||||
"Build-Debian9-EMCC-wasm-Release-CanvasKit"
|
||||
],
|
||||
"dimensions": [
|
||||
"cpu:x86-64-Haswell_GCE",
|
||||
"gpu:none",
|
||||
"machine_type:n1-standard-16",
|
||||
"os:Debian-9.4",
|
||||
"pool:Skia"
|
||||
],
|
||||
"env_prefixes": {
|
||||
"PATH": [
|
||||
"cipd_bin_packages",
|
||||
"cipd_bin_packages/bin"
|
||||
],
|
||||
"VPYTHON_VIRTUALENV_ROOT": [
|
||||
"cache/vpython"
|
||||
]
|
||||
},
|
||||
"execution_timeout_ns": 3600000000000,
|
||||
"extra_tags": {
|
||||
"log_location": "logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
|
||||
},
|
||||
"io_timeout_ns": 3600000000000,
|
||||
"isolate": "swarm_recipe.isolate",
|
||||
"outputs": [
|
||||
"perf"
|
||||
]
|
||||
},
|
||||
"BuildStats-Debian9-EMCC-wasm-Release-PathKit": {
|
||||
"caches": [
|
||||
{
|
||||
@ -68797,6 +69164,105 @@
|
||||
"isolate": "swarm_recipe.isolate",
|
||||
"service_account": "skia-external-nano-uploader@skia-swarming-bots.iam.gserviceaccount.com"
|
||||
},
|
||||
"Upload-BuildStats-Debian9-EMCC-wasm-Release-CanvasKit": {
|
||||
"caches": [
|
||||
{
|
||||
"name": "vpython",
|
||||
"path": "cache/vpython"
|
||||
}
|
||||
],
|
||||
"cipd_packages": [
|
||||
{
|
||||
"name": "infra/tools/luci/kitchen/${platform}",
|
||||
"path": ".",
|
||||
"version": "git_revision:546aae39f1fb9dce9add528e2011afa574535ecd"
|
||||
},
|
||||
{
|
||||
"name": "infra/tools/luci-auth/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "git_revision:e1abc57be62d198b5c2f487bfb2fa2d2eb0e867c"
|
||||
},
|
||||
{
|
||||
"name": "infra/tools/luci/vpython/${platform}",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "git_revision:b6cdec8586c9f8d3d728b1bc0bd4331330ba66fc"
|
||||
},
|
||||
{
|
||||
"name": "infra/gsutil",
|
||||
"path": "cipd_bin_packages",
|
||||
"version": "version:4.28"
|
||||
}
|
||||
],
|
||||
"command": [
|
||||
"./kitchen${EXECUTABLE_SUFFIX}",
|
||||
"cook",
|
||||
"-checkout-dir",
|
||||
"recipe_bundle",
|
||||
"-mode",
|
||||
"swarming",
|
||||
"-luci-system-account",
|
||||
"system",
|
||||
"-cache-dir",
|
||||
"cache",
|
||||
"-temp-dir",
|
||||
"tmp",
|
||||
"-known-gerrit-host",
|
||||
"android.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"boringssl.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"chromium.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"dart.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"fuchsia.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"go.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"llvm.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"skia.googlesource.com",
|
||||
"-known-gerrit-host",
|
||||
"webrtc.googlesource.com",
|
||||
"-output-result-json",
|
||||
"${ISOLATED_OUTDIR}/build_result_filename",
|
||||
"-workdir",
|
||||
".",
|
||||
"-recipe",
|
||||
"upload_buildstats_results",
|
||||
"-properties",
|
||||
"{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"BuildStats-Debian9-EMCC-wasm-Release-CanvasKit\",\"gs_bucket\":\"skia-perf\",\"patch_issue\":\"<(ISSUE)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"revision\":\"<(REVISION)\",\"swarm_out_dir\":\"output_ignored\"}",
|
||||
"-logdog-annotation-url",
|
||||
"logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
|
||||
],
|
||||
"dependencies": [
|
||||
"Housekeeper-PerCommit-BundleRecipes",
|
||||
"BuildStats-Debian9-EMCC-wasm-Release-CanvasKit"
|
||||
],
|
||||
"dimensions": [
|
||||
"cpu:x86-64-Haswell_GCE",
|
||||
"gpu:none",
|
||||
"machine_type:n1-highmem-2",
|
||||
"os:Debian-9.4",
|
||||
"pool:Skia"
|
||||
],
|
||||
"env_prefixes": {
|
||||
"PATH": [
|
||||
"cipd_bin_packages",
|
||||
"cipd_bin_packages/bin"
|
||||
],
|
||||
"VPYTHON_VIRTUALENV_ROOT": [
|
||||
"cache/vpython"
|
||||
]
|
||||
},
|
||||
"execution_timeout_ns": 3600000000000,
|
||||
"extra_tags": {
|
||||
"log_location": "logdog://logs.chromium.org/skia/<(TASK_ID)/+/annotations"
|
||||
},
|
||||
"io_timeout_ns": 3600000000000,
|
||||
"isolate": "swarm_recipe.isolate",
|
||||
"service_account": "skia-external-nano-uploader@skia-swarming-bots.iam.gserviceaccount.com"
|
||||
},
|
||||
"Upload-BuildStats-Debian9-EMCC-wasm-Release-PathKit": {
|
||||
"caches": [
|
||||
{
|
||||
|
25
infra/canvaskit/build_canvaskit.sh
Executable file
25
infra/canvaskit/build_canvaskit.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2018 Google LLC
|
||||
#
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
# This assumes it is being run inside a docker container of emsdk-base
|
||||
# and a Skia checkout has been mounted at /SRC and the output directory
|
||||
# is mounted at /OUT
|
||||
|
||||
# For example:
|
||||
# docker run -v $SKIA_ROOT:/SRC -v $SKIA_ROOT/out/canvaskit:/OUT gcr.io/skia-public/emsdk-release:1.38.6_jre /SRC/infra/canvaskit/build_canvaskit.sh
|
||||
|
||||
set +e
|
||||
set -x
|
||||
# Clean out previous builds (ignoring any errors for things like folders)
|
||||
# (e.g. we don't want to delete /OUT/depot_tools/)
|
||||
rm -f /OUT/*
|
||||
set -e
|
||||
|
||||
#BASE_DIR is the dir this script is in ($SKIA_ROOT/infra/canvaskit)
|
||||
BASE_DIR=`cd $(dirname ${BASH_SOURCE[0]}) && pwd`
|
||||
CANVASKIT_DIR=$BASE_DIR/../../experimental/canvaskit
|
||||
|
||||
BUILD_DIR=/OUT $CANVASKIT_DIR/compile.sh $@
|
@ -9,13 +9,17 @@
|
||||
# is mounted at /OUT
|
||||
|
||||
# For example:
|
||||
# docker run -v $SKIA_ROOT:/SRC -v $SKIA_ROOT/out/dockerpathkit:/OUT gcr.io/skia-public/emsdk-release:1.38.6_jre /SRC/infra/pathkit/docker/build_pathkit.sh
|
||||
# docker run -v $SKIA_ROOT:/SRC -v $SKIA_ROOT/out/dockerpathkit:/OUT gcr.io/skia-public/emsdk-release:1.38.6_jre /SRC/infra/pathkit/build_pathkit.sh
|
||||
|
||||
#BASE_DIR is the dir this script is in ($SKIA_ROOT/infra/pathkit/docker)
|
||||
set +e
|
||||
set -x
|
||||
# Clean out previous builds (ignoring any errors for things like folders)
|
||||
# (e.g. we don't want to delete /OUT/depot_tools/)
|
||||
rm -f /OUT/*
|
||||
set -e
|
||||
|
||||
#BASE_DIR is the dir this script is in ($SKIA_ROOT/infra/pathkit)
|
||||
BASE_DIR=`cd $(dirname ${BASH_SOURCE[0]}) && pwd`
|
||||
PATHKIT_DIR=$BASE_DIR/../../../modules/pathkit
|
||||
|
||||
# Clean out previous builds
|
||||
rm /OUT/*
|
||||
PATHKIT_DIR=$BASE_DIR/../../modules/pathkit
|
||||
|
||||
BUILD_DIR=/OUT $PATHKIT_DIR/compile.sh $@
|
@ -26,7 +26,7 @@ For testing the image locally, the following flow can be helpful:
|
||||
# Run bash in it to poke around and make sure things are properly installed
|
||||
docker run -it emsdk-release /bin/bash
|
||||
# Compile PathKit with the local image
|
||||
docker run -v $SKIA_ROOT:/SRC -v $SKIA_ROOT/out/dockerpathkit:/OUT emsdk-base /SRC/infra/pathkit/docker/build_pathkit.sh
|
||||
docker run -v $SKIA_ROOT:/SRC -v $SKIA_ROOT/out/dockerpathkit:/OUT emsdk-base /SRC/infra/pathkit/build_pathkit.sh
|
||||
|
||||
karma-chrome-tests
|
||||
------------------
|
||||
@ -91,4 +91,4 @@ For testing the image locally, the following can be helpful:
|
||||
docker run -it --shm-size=2gb gold-karma-chrome-tests /bin/bash
|
||||
# Run the tests and collect Gold output with the local source repo
|
||||
mkdir -p -m 0777 /tmp/dockergold
|
||||
docker run --shm-size=2gb -v $SKIA_ROOT:/SRC -v /tmp/dockergold:/OUT gold-karma-chrome-tests /SRC/infra/pathkit/docker/test_pathkit.sh
|
||||
docker run --shm-size=2gb -v $SKIA_ROOT:/SRC -v /tmp/dockergold:/OUT gold-karma-chrome-tests /SRC/infra/pathkit/test_pathkit.sh
|
||||
|
@ -9,13 +9,13 @@
|
||||
# is mounted at /OUT
|
||||
|
||||
# For example:
|
||||
# docker run -v $SKIA_ROOT:/SRC -v /tmp/dockerout:/OUT gcr.io/skia-public/gold-karma-chrome-tests:68.0.3440.106_v1 /SRC/infra/pathkit/docker/test_pathkit.sh
|
||||
# docker run -v $SKIA_ROOT:/SRC -v /tmp/dockerout:/OUT gcr.io/skia-public/gold-karma-chrome-tests:68.0.3440.106_v1 /SRC/infra/pathkit/test_pathkit.sh
|
||||
|
||||
set -ex
|
||||
|
||||
#BASE_DIR is the dir this script is in ($SKIA_ROOT/infra/pathkit/docker)
|
||||
#BASE_DIR is the dir this script is in ($SKIA_ROOT/infra/pathkit)
|
||||
BASE_DIR=`cd $(dirname ${BASH_SOURCE[0]}) && pwd`
|
||||
PATHKIT_DIR=$BASE_DIR/../../../modules/pathkit
|
||||
PATHKIT_DIR=$BASE_DIR/../../modules/pathkit
|
||||
|
||||
# Start the aggregator in the background
|
||||
/opt/gold-aggregator $@ &
|
@ -57,12 +57,12 @@ test-docker:
|
||||
mkdir -p $$SKIA_ROOT/out/dockerbuild
|
||||
|
||||
docker run --rm -v $$SKIA_ROOT:/SRC -v $$SKIA_ROOT/out/dockerbuild:/OUT \
|
||||
gcr.io/skia-public/emsdk-release:1.38.6_jre /SRC/infra/pathkit/docker/build_pathkit.sh
|
||||
gcr.io/skia-public/emsdk-release:1.38.6_jre /SRC/infra/pathkit/build_pathkit.sh
|
||||
cp ../../out/dockerbuild/pathkit.js ./npm-wasm/bin/test/pathkit.js
|
||||
cp ../../out/dockerbuild/pathkit.wasm ./npm-wasm/bin/test/pathkit.wasm
|
||||
|
||||
docker run --rm -v $$SKIA_ROOT:/SRC -v $$SKIA_ROOT/out/dockerbuild:/OUT \
|
||||
gcr.io/skia-public/emsdk-release:1.38.6_jre /SRC/infra/pathkit/docker/build_pathkit.sh asm.js
|
||||
gcr.io/skia-public/emsdk-release:1.38.6_jre /SRC/infra/pathkit/build_pathkit.sh asm.js
|
||||
cp ../../out/dockerbuild/pathkit.js ./npm-asmjs/bin/test/pathkit.js
|
||||
cp ../../out/dockerbuild/pathkit.js.mem ./npm-asmjs/bin/test/pathkit.js.mem
|
||||
|
||||
|
@ -4,10 +4,12 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
set -ex
|
||||
|
||||
BASE_DIR=`cd $(dirname ${BASH_SOURCE[0]}) && pwd`
|
||||
HTML_SHELL=$BASE_DIR/shell.html
|
||||
BUILD_DIR=${BUILD_DIR:="out/pathkit"}
|
||||
mkdir -p $BUILD_DIR
|
||||
|
||||
# This expects the environment variable EMSDK to be set
|
||||
if [[ ! -d $EMSDK ]]; then
|
||||
@ -67,20 +69,21 @@ if [[ $@ == *asm.js* ]]; then
|
||||
fi
|
||||
|
||||
OUTPUT="-o $BUILD_DIR/pathkit.js"
|
||||
|
||||
source $EMSDK/emsdk_env.sh
|
||||
NINJA=`which ninja`
|
||||
EMCC=`which emcc`
|
||||
EMCXX=`which em++`
|
||||
|
||||
|
||||
mkdir -p $BUILD_DIR
|
||||
|
||||
# Turn off exiting while we check for ninja (which may not be on PATH)
|
||||
set +e
|
||||
NINJA=`which ninja`
|
||||
if [[ -z $NINJA ]]; then
|
||||
git clone "https://chromium.googlesource.com/chromium/tools/depot_tools.git" --depth 1 $BUILD_DIR/depot_tools
|
||||
NINJA=$BUILD_DIR/depot_tools/ninja
|
||||
fi
|
||||
|
||||
set -ex
|
||||
# Re-enable error checking
|
||||
set -e
|
||||
|
||||
echo "Compiling bitcode"
|
||||
|
||||
@ -119,7 +122,7 @@ ${NINJA} -C ${BUILD_DIR} libpathkit.a
|
||||
|
||||
echo "Generating WASM"
|
||||
|
||||
em++ $RELEASE_CONF -std=c++14 \
|
||||
${EMCXX} $RELEASE_CONF -std=c++14 \
|
||||
-Iinclude/config \
|
||||
-Iinclude/core \
|
||||
-Iinclude/effects \
|
||||
|
@ -96,13 +96,13 @@ Samples
|
||||
var locate_file = '';
|
||||
if (window.WebAssembly && typeof window.WebAssembly.compile === 'function') {
|
||||
console.log('WebAssembly is supported!');
|
||||
locate_file = 'https://storage.googleapis.com/skia-cdn/canvaskit-wasm/0.0.3/bin/';
|
||||
locate_file = 'https://storage.googleapis.com/skia-cdn/canvaskit-wasm/0.1.0/bin/';
|
||||
} else {
|
||||
console.log('WebAssembly is not supported (yet) on this browser.');
|
||||
document.getElementById('demo').innerHTML = "<div>WASM not supported by your browser. Try a recent version of Chrome, Firefox, Edge, or Safari.</div>";
|
||||
return;
|
||||
}
|
||||
s.src = locate_file + 'skia.js';
|
||||
s.src = locate_file + 'canvaskit.js';
|
||||
s.onload = () => {
|
||||
var CanvasKit = null;
|
||||
var legoJSON = null;
|
||||
|
Loading…
Reference in New Issue
Block a user