[bazel] Add support for local builds to jsfiddle,shaders,particles,skottie
Change-Id: If06ba1d9c07c5db8ccf4a7239580d18dd714c894
Bug: skia:12776
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/494637
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
diff --git a/.bazelrc b/.bazelrc
index 423c000..e08951a 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -139,4 +139,8 @@
# Alias to build configurations below. This makes configuring things from
# the command line easier.
-build --flag_alias=with_local_debugger=no//debugger-app/wasm_libs:use_debugger_from_container
\ No newline at end of file
+build --flag_alias=with_local_debugger=no//debugger-app/wasm_libs:use_debugger_from_container
+build --flag_alias=with_local_wasm=no//jsfiddle/wasm_libs:use_libraries_from_container
+build --flag_alias=with_local_canvaskit=no//particles/wasm_libs:use_canvaskit_from_container
+build --flag_alias=with_local_canvaskit=no//shaders/wasm_libs:use_canvaskit_from_container
+build --flag_alias=with_local_canvaskit=no//skottie/wasm_libs:use_canvaskit_from_container
diff --git a/jsfiddle/.gitignore b/jsfiddle/.gitignore
index d163863..ed4c4cb 100644
--- a/jsfiddle/.gitignore
+++ b/jsfiddle/.gitignore
@@ -1 +1,2 @@
-build/
\ No newline at end of file
+build/
+wasm_libs/local_build/
\ No newline at end of file
diff --git a/jsfiddle/Makefile b/jsfiddle/Makefile
index f64e2b2..c706e4d 100644
--- a/jsfiddle/Makefile
+++ b/jsfiddle/Makefile
@@ -38,6 +38,13 @@
run-local-instance: build
../_bazel_bin/jsfiddle/go/jsfiddle/jsfiddle_/jsfiddle --local --resources_dir ../_bazel_bin/jsfiddle/pages/development
+.PHONY: run-with-custom
+run-with-custom:
+ echo "Using the wasm files in //jsfiddle/wasm_libs/local_build"
+ $(BAZEL) build //jsfiddle/... --with_local_wasm
+ ../_bazel_bin/jsfiddle/go/jsfiddle/jsfiddle_/jsfiddle \
+ --local --resources_dir ../_bazel_bin/jsfiddle/pages/development
+
.PHONY: build-placeholders
build-placeholders:
rm -rf build
diff --git a/jsfiddle/README.md b/jsfiddle/README.md
index 9e66f9c..8b0f485 100644
--- a/jsfiddle/README.md
+++ b/jsfiddle/README.md
@@ -12,4 +12,11 @@
`gcr.io/skia-public/skia-wasm-release:prod`. See ./wasm_libs/BUILD.bazel for more.
When deploying, we look in ./build and use the files there. The files checked in to build are just
-empty placeholders. The real ones will be provided through our build pipeline.
\ No newline at end of file
+empty placeholders. The real ones will be provided through our build pipeline.
+
+To run jsfiddle locally with a custom build of CanvasKit/PathKit, copy the files to
+//jsfiddle/wasm_libs/local_build and run:
+```
+make run-with-custom
+```
+Do not check in those files you copied.
\ No newline at end of file
diff --git a/jsfiddle/wasm_libs/BUILD.bazel b/jsfiddle/wasm_libs/BUILD.bazel
index 3a995b3..4847704 100644
--- a/jsfiddle/wasm_libs/BUILD.bazel
+++ b/jsfiddle/wasm_libs/BUILD.bazel
@@ -1,4 +1,9 @@
-load("//infra-sk:index.bzl", "extract_files_from_skia_wasm_container")
+load("//infra-sk:index.bzl", "bool_flag", "extract_files_from_skia_wasm_container")
+
+bool_flag(
+ default = True,
+ flag_name = "use_libraries_from_container",
+)
# This target makes the wasm binaries and js files available for tests. This is not the same
# as ../build because we want to be able to control which binaries get used when we deploy a
@@ -7,11 +12,11 @@
name = "fetch_canvaskit_wasm",
testonly = True,
outs = [
- "canvaskit.d.ts",
- "canvaskit.js",
- "canvaskit.wasm",
- "pathkit.js",
- "pathkit.wasm",
+ "from_container/canvaskit.d.ts",
+ "from_container/canvaskit.js",
+ "from_container/canvaskit.wasm",
+ "from_container/pathkit.js",
+ "from_container/pathkit.wasm",
],
container_files = [
"/tmp/canvaskit/canvaskit.d.ts",
@@ -23,6 +28,51 @@
visibility = ["//jsfiddle:__subpackages__"],
)
+filegroup(
+ name = "canvaskit.d.ts",
+ srcs = select({
+ ":use_libraries_from_container_true": ["from_container/canvaskit.d.ts"],
+ ":use_libraries_from_container_false": ["local_build/canvaskit.d.ts"],
+ }),
+ visibility = ["//jsfiddle:__subpackages__"],
+)
+
+filegroup(
+ name = "canvaskit.js",
+ srcs = select({
+ ":use_libraries_from_container_true": ["from_container/canvaskit.js"],
+ ":use_libraries_from_container_false": ["local_build/canvaskit.js"],
+ }),
+ visibility = ["//jsfiddle:__subpackages__"],
+)
+
+filegroup(
+ name = "canvaskit.wasm",
+ srcs = select({
+ ":use_libraries_from_container_true": ["from_container/canvaskit.wasm"],
+ ":use_libraries_from_container_false": ["local_build/canvaskit.wasm"],
+ }),
+ visibility = ["//jsfiddle:__subpackages__"],
+)
+
+filegroup(
+ name = "pathkit.js",
+ srcs = select({
+ ":use_libraries_from_container_true": ["from_container/pathkit.js"],
+ ":use_libraries_from_container_false": ["local_build/pathkit.js"],
+ }),
+ visibility = ["//jsfiddle:__subpackages__"],
+)
+
+filegroup(
+ name = "pathkit.wasm",
+ srcs = select({
+ ":use_libraries_from_container_true": ["from_container/pathkit.wasm"],
+ ":use_libraries_from_container_false": ["local_build/pathkit.wasm"],
+ }),
+ visibility = ["//jsfiddle:__subpackages__"],
+)
+
genrule(
name = "make version file",
outs = ["version.js"],
diff --git a/particles/.gitignore b/particles/.gitignore
index c795b05..ba31a79 100644
--- a/particles/.gitignore
+++ b/particles/.gitignore
@@ -1 +1,2 @@
-build
\ No newline at end of file
+build
+wasm_libs/local_build/
diff --git a/particles/Makefile b/particles/Makefile
index 5d18bee..4baea91 100644
--- a/particles/Makefile
+++ b/particles/Makefile
@@ -43,6 +43,13 @@
--resources_dir ../_bazel_bin/particles/pages/development \
--scrapexchange=http://localhost:9000
+.PHONY: run-with-custom
+run-with-custom:
+ echo "Using the wasm files in //particles/wasm_libs/local_build"
+ $(BAZEL) build //particles/... --with_local_canvaskit
+ ../_bazel_bin/particles/go/particles/particles_/particles --local \
+ --resources_dir ../_bazel_bin/particles/pages/development \
+ --scrapexchange=http://localhost:9000
.PHONY: build-placeholders
build-placeholders:
@@ -50,4 +57,4 @@
mkdir -p build/canvaskit
touch build/canvaskit/canvaskit.js
touch build/canvaskit/canvaskit.wasm
- touch build/version.js
\ No newline at end of file
+ touch build/version.js
diff --git a/particles/README.md b/particles/README.md
index 4dd0688..3e18b80 100644
--- a/particles/README.md
+++ b/particles/README.md
@@ -3,3 +3,9 @@
A web application for demoing the Skia particle system.
+To run particles locally with a custom build of CanvasKit, copy the files to
+//particles/wasm_libs/local_build and run:
+```
+make run-with-custom
+```
+Do not check in those files you copied.
diff --git a/particles/wasm_libs/BUILD.bazel b/particles/wasm_libs/BUILD.bazel
index b5b31e9..ee35001 100644
--- a/particles/wasm_libs/BUILD.bazel
+++ b/particles/wasm_libs/BUILD.bazel
@@ -1,4 +1,9 @@
-load("//infra-sk:index.bzl", "extract_files_from_skia_wasm_container")
+load("//infra-sk:index.bzl", "bool_flag", "extract_files_from_skia_wasm_container")
+
+bool_flag(
+ default = True,
+ flag_name = "use_canvaskit_from_container",
+)
# This target makes the canvaskit js and wasm binaries available for tests. This is not the same
# as ../build because we want to be able to control which binaries get used when we deploy a
@@ -7,8 +12,8 @@
name = "canvaskit_wasm",
testonly = True,
outs = [
- "canvaskit.js",
- "canvaskit.wasm",
+ "from_container/canvaskit.js",
+ "from_container/canvaskit.wasm",
],
container_files = [
"/tmp/canvaskit/canvaskit.js",
@@ -17,6 +22,24 @@
visibility = ["//particles:__subpackages__"],
)
+filegroup(
+ name = "canvaskit.js",
+ srcs = select({
+ ":use_canvaskit_from_container_true": ["from_container/canvaskit.js"],
+ ":use_canvaskit_from_container_false": ["local_build/canvaskit.js"],
+ }),
+ visibility = ["//particles:__subpackages__"],
+)
+
+filegroup(
+ name = "canvaskit.wasm",
+ srcs = select({
+ ":use_canvaskit_from_container_true": ["from_container/canvaskit.wasm"],
+ ":use_canvaskit_from_container_false": ["local_build/canvaskit.wasm"],
+ }),
+ visibility = ["//particles:__subpackages__"],
+)
+
genrule(
name = "make version file",
outs = ["version.js"],
diff --git a/shaders/.gitignore b/shaders/.gitignore
index 567609b..550a6e3 100644
--- a/shaders/.gitignore
+++ b/shaders/.gitignore
@@ -1 +1,2 @@
build/
+wsam_libs/local_build/
diff --git a/shaders/Makefile b/shaders/Makefile
index df62e83..ad138a7 100644
--- a/shaders/Makefile
+++ b/shaders/Makefile
@@ -44,6 +44,16 @@
--port=:8001 \
--prom_port=:20001
+.PHONY: run-with-custom
+run-with-custom:
+ echo "Using the wasm files in //shaders/wasm_libs/local_build"
+ $(BAZEL) build //shaders/... --with_local_canvaskit
+ ../_bazel_bin/shaders/go/shaders/shaders_/shaders --local \
+ --resources_dir ../_bazel_bin/shaders/pages/development \
+ --scrapexchange=http://localhost:9000 \
+ --port=:8001 \
+ --prom_port=:20001
+
.PHONY: build-placeholders
build-placeholders:
rm -rf build
diff --git a/shaders/README.md b/shaders/README.md
index 4a8fc9b..8db7d2e 100644
--- a/shaders/README.md
+++ b/shaders/README.md
@@ -3,6 +3,13 @@
This is the code for https://shaders.skia.org, a site to allow editing and
running SkSL shaders using WASM in the browser.
+To run shaders locally with a custom build of CanvasKit, copy the files to
+//shaders/wasm_libs/local_build and run:
+```
+make run-with-custom
+```
+Do not check in those files you copied.
+
## Images
Source images are stored in `gs://skia-public-shader-images` and should be make
diff --git a/shaders/wasm_libs/BUILD.bazel b/shaders/wasm_libs/BUILD.bazel
index 77a5a6c..8fd69ae 100644
--- a/shaders/wasm_libs/BUILD.bazel
+++ b/shaders/wasm_libs/BUILD.bazel
@@ -1,4 +1,9 @@
-load("//infra-sk:index.bzl", "extract_files_from_skia_wasm_container")
+load("//infra-sk:index.bzl", "bool_flag", "extract_files_from_skia_wasm_container")
+
+bool_flag(
+ default = True,
+ flag_name = "use_canvaskit_from_container",
+)
# This target makes the canvaskit js and wasm binaries available for tests. This is not the same
# as ../build because we want to be able to control which binaries get used when we deploy a
@@ -7,8 +12,8 @@
name = "fetch_canvaskit_wasm",
testonly = True,
outs = [
- "canvaskit.js",
- "canvaskit.wasm",
+ "from_container/canvaskit.js",
+ "from_container/canvaskit.wasm",
],
container_files = [
"/tmp/canvaskit/canvaskit.js",
@@ -17,6 +22,24 @@
visibility = ["//shaders:__subpackages__"],
)
+filegroup(
+ name = "canvaskit.js",
+ srcs = select({
+ ":use_canvaskit_from_container_true": ["from_container/canvaskit.js"],
+ ":use_canvaskit_from_container_false": ["local_build/canvaskit.js"],
+ }),
+ visibility = ["//shaders:__subpackages__"],
+)
+
+filegroup(
+ name = "canvaskit.wasm",
+ srcs = select({
+ ":use_canvaskit_from_container_true": ["from_container/canvaskit.wasm"],
+ ":use_canvaskit_from_container_false": ["local_build/canvaskit.wasm"],
+ }),
+ visibility = ["//shaders:__subpackages__"],
+)
+
genrule(
name = "make version file",
outs = ["version.js"],
diff --git a/skottie/.gitignore b/skottie/.gitignore
index 378eac2..ba31a79 100644
--- a/skottie/.gitignore
+++ b/skottie/.gitignore
@@ -1 +1,2 @@
build
+wasm_libs/local_build/
diff --git a/skottie/Makefile b/skottie/Makefile
index ad1c7e0..887b93e 100644
--- a/skottie/Makefile
+++ b/skottie/Makefile
@@ -40,9 +40,16 @@
../_bazel_bin/skottie/go/skottie/skottie_/skottie \
--config ./local_config.json5
+.PHONY: run-with-custom
+run-with-custom:
+ echo "Using the wasm files in //skottie/wasm_libs/local_build"
+ $(BAZEL) build //skottie/... --with_local_canvaskit
+ ../_bazel_bin/skottie/go/skottie/skottie_/skottie \
+ --config ./local_config.json5
+
build-placeholders:
rm -rf build
mkdir -p build/canvaskit
touch build/canvaskit/canvaskit.js
touch build/canvaskit/canvaskit.wasm
- touch build/version.js
\ No newline at end of file
+ touch build/version.js
diff --git a/skottie/README.md b/skottie/README.md
index f602370..a09dde0 100644
--- a/skottie/README.md
+++ b/skottie/README.md
@@ -13,4 +13,11 @@
`gcr.io/skia-public/skia-wasm-release:prod`. See ./wasm_libs/BUILD.bazel for more.
When deploying, we look in ./build and use the files there. The files checked in to build are just
-empty placeholders. The real ones will be provided through our build pipeline.
\ No newline at end of file
+empty placeholders. The real ones will be provided through our build pipeline.
+
+To run skottie locally with a custom build of CanvasKit, copy the files to
+//skottie/wasm_libs/local_build and run:
+```
+make run-with-custom
+```
+Do not check in those files you copied.
diff --git a/skottie/wasm_libs/BUILD.bazel b/skottie/wasm_libs/BUILD.bazel
index b02ddb5..191067e 100644
--- a/skottie/wasm_libs/BUILD.bazel
+++ b/skottie/wasm_libs/BUILD.bazel
@@ -1,4 +1,9 @@
-load("//infra-sk:index.bzl", "extract_files_from_skia_wasm_container")
+load("//infra-sk:index.bzl", "bool_flag", "extract_files_from_skia_wasm_container")
+
+bool_flag(
+ default = True,
+ flag_name = "use_canvaskit_from_container",
+)
# This target makes the canvaskit js and wasm binaries available for tests. This is not the same
# as ../build because we want to be able to control which binaries get used when we deploy a
@@ -7,9 +12,9 @@
name = "fetch_canvaskit_wasm",
testonly = True,
outs = [
- "canvaskit.d.ts",
- "canvaskit.js",
- "canvaskit.wasm",
+ "from_container/canvaskit.d.ts",
+ "from_container/canvaskit.js",
+ "from_container/canvaskit.wasm",
],
container_files = [
"/tmp/canvaskit/canvaskit.d.ts",
@@ -19,6 +24,33 @@
visibility = ["//skottie:__subpackages__"],
)
+filegroup(
+ name = "canvaskit.d.ts",
+ srcs = select({
+ ":use_canvaskit_from_container_true": ["from_container/canvaskit.d.ts"],
+ ":use_canvaskit_from_container_false": ["local_build/canvaskit.d.ts"],
+ }),
+ visibility = ["//skottie:__subpackages__"],
+)
+
+filegroup(
+ name = "canvaskit.js",
+ srcs = select({
+ ":use_canvaskit_from_container_true": ["from_container/canvaskit.js"],
+ ":use_canvaskit_from_container_false": ["local_build/canvaskit.js"],
+ }),
+ visibility = ["//skottie:__subpackages__"],
+)
+
+filegroup(
+ name = "canvaskit.wasm",
+ srcs = select({
+ ":use_canvaskit_from_container_true": ["from_container/canvaskit.wasm"],
+ ":use_canvaskit_from_container_false": ["local_build/canvaskit.wasm"],
+ }),
+ visibility = ["//skottie:__subpackages__"],
+)
+
genrule(
name = "make version file",
outs = ["version.js"],