diff options
-rw-r--r-- | BUILD.gn | 192 | ||||
-rw-r--r-- | gn/BUILD.gn | 7 | ||||
-rw-r--r-- | gn/BUILDCONFIG.gn | 7 | ||||
-rw-r--r-- | gn/core.gni | 3 | ||||
-rw-r--r-- | infra/bots/assets/asset_utils.py | 1 | ||||
-rw-r--r-- | infra/bots/assets/emscripten_sdk/README.md | 7 | ||||
-rw-r--r-- | infra/bots/assets/emscripten_sdk/VERSION | 1 | ||||
-rwxr-xr-x | infra/bots/assets/emscripten_sdk/common.py | 26 | ||||
-rwxr-xr-x | infra/bots/assets/emscripten_sdk/create_and_upload.py | 43 | ||||
-rwxr-xr-x | infra/bots/assets/emscripten_sdk/download.py | 16 | ||||
-rwxr-xr-x | infra/bots/assets/emscripten_sdk/upload.py | 16 | ||||
-rw-r--r-- | infra/bots/gen_tasks.go | 3 | ||||
-rw-r--r-- | infra/bots/jobs.json | 1 | ||||
-rw-r--r-- | infra/bots/recipe_modules/flavor/examples/full.expected/Build-Ubuntu-EMCC-wasm-Release.json | 54 | ||||
-rw-r--r-- | infra/bots/recipe_modules/flavor/examples/full.py | 1 | ||||
-rw-r--r-- | infra/bots/recipe_modules/flavor/gn_flavor.py | 18 | ||||
-rw-r--r-- | infra/bots/recipes/compile.expected/Build-Ubuntu-EMCC-wasm-Release.json | 175 | ||||
-rw-r--r-- | infra/bots/recipes/compile.py | 1 | ||||
-rw-r--r-- | infra/bots/tasks.json | 36 |
19 files changed, 510 insertions, 98 deletions
@@ -1190,51 +1190,53 @@ if (skia_enable_tools) { ] } - test_lib("views") { - public_include_dirs = [ "include/views" ] - sources = [ - "src/views/SkEvent.cpp", - "src/views/SkEventSink.cpp", - "src/views/SkOSMenu.cpp", - "src/views/SkTagList.cpp", - "src/views/SkTouchGesture.cpp", - "src/views/SkView.cpp", - "src/views/SkViewPriv.cpp", - ] - libs = [] - deps = [] - if (!is_android) { - sources += [ "src/views/SkWindow.cpp" ] - } - if (is_linux) { - public_include_dirs += [ "src/views/unix" ] - sources += [ - "src/views/unix/SkOSWindow_Unix.cpp", - "src/views/unix/keysym2ucs.c", - ] - libs += [ - "GL", - "X11", - ] - } else if (is_mac) { - sources += [ - "src/views/mac/SkEventNotifier.mm", - "src/views/mac/SkNSView.mm", - "src/views/mac/SkOSWindow_Mac.mm", - "src/views/mac/SkTextFieldCell.m", - ] - libs += [ - "QuartzCore.framework", - "Cocoa.framework", - "Foundation.framework", + if (target_cpu != "wasm") { + test_lib("views") { + public_include_dirs = [ "include/views" ] + sources = [ + "src/views/SkEvent.cpp", + "src/views/SkEventSink.cpp", + "src/views/SkOSMenu.cpp", + "src/views/SkTagList.cpp", + "src/views/SkTouchGesture.cpp", + "src/views/SkView.cpp", + "src/views/SkViewPriv.cpp", ] - } else if (is_win) { - sources += [ "src/views/win/SkOSWindow_win.cpp" ] - } else if (is_ios) { - sources += [ "src/views/mac/SkEventNotifier.mm" ] - } - if (skia_use_angle) { - deps += [ "//third_party/angle2" ] + libs = [] + deps = [] + if (!is_android) { + sources += [ "src/views/SkWindow.cpp" ] + } + if (is_linux) { + public_include_dirs += [ "src/views/unix" ] + sources += [ + "src/views/unix/SkOSWindow_Unix.cpp", + "src/views/unix/keysym2ucs.c", + ] + libs += [ + "GL", + "X11", + ] + } else if (is_mac) { + sources += [ + "src/views/mac/SkEventNotifier.mm", + "src/views/mac/SkNSView.mm", + "src/views/mac/SkOSWindow_Mac.mm", + "src/views/mac/SkTextFieldCell.m", + ] + libs += [ + "QuartzCore.framework", + "Cocoa.framework", + "Foundation.framework", + ] + } else if (is_win) { + sources += [ "src/views/win/SkOSWindow_win.cpp" ] + } else if (is_ios) { + sources += [ "src/views/mac/SkEventNotifier.mm" ] + } + if (skia_use_angle) { + deps += [ "//third_party/angle2" ] + } } } @@ -1292,60 +1294,61 @@ if (skia_enable_tools) { ] } - import("gn/samples.gni") - test_lib("samples") { - public_include_dirs = [ "samplecode" ] - include_dirs = [ "experimental" ] - sources = samples_sources + [ - "experimental/SkSetPoly3To3.cpp", - "experimental/SkSetPoly3To3_A.cpp", - "experimental/SkSetPoly3To3_D.cpp", + if (target_cpu != "wasm") { + import("gn/samples.gni") + test_lib("samples") { + public_include_dirs = [ "samplecode" ] + include_dirs = [ "experimental" ] + sources = samples_sources + [ + "experimental/SkSetPoly3To3.cpp", + "experimental/SkSetPoly3To3_A.cpp", + "experimental/SkSetPoly3To3_D.cpp", - # Relocating these files here, so that clients don't try to build them while they're - # still in active development. Clang's thread safety analysis gets tripped up by - # conditional locks. - "src/core/SkThreadedBMPDevice.cpp", - "src/core/SkThreadedBMPDevice.h", - ] - deps = [ - ":experimental_svg_model", - ":flags", - ":gm", - ":tool_utils", - ":views", - ":xml", - ] + # Relocating these files here, so that clients don't try to build them while they're + # still in active development. Clang's thread safety analysis gets tripped up by + # conditional locks. + "src/core/SkThreadedBMPDevice.cpp", + "src/core/SkThreadedBMPDevice.h", + ] + deps = [ + ":experimental_svg_model", + ":flags", + ":gm", + ":tool_utils", + ":views", + ":xml", + ] - if (skia_use_lua) { - sources += [ "samplecode/SampleLua.cpp" ] - deps += [ - ":lua", - "//third_party/lua", + if (skia_use_lua) { + sources += [ "samplecode/SampleLua.cpp" ] + deps += [ + ":lua", + "//third_party/lua", + ] + } + } + test_app("dm") { + sources = [ + "dm/DM.cpp", + "dm/DMJsonWriter.cpp", + "dm/DMSrcSink.cpp", + ] + include_dirs = [ "tests" ] + deps = [ + ":common_flags", + ":experimental_svg_model", + ":flags", + ":gm", + ":gpu_tool_utils", + ":skia", + ":tests", + ":tool_utils", + "//third_party/jsoncpp", + "//third_party/libpng", ] } } - test_app("dm") { - sources = [ - "dm/DM.cpp", - "dm/DMJsonWriter.cpp", - "dm/DMSrcSink.cpp", - ] - include_dirs = [ "tests" ] - deps = [ - ":common_flags", - ":experimental_svg_model", - ":flags", - ":gm", - ":gpu_tool_utils", - ":skia", - ":tests", - ":tool_utils", - "//third_party/jsoncpp", - "//third_party/libpng", - ] - } - test_app("ok") { sources = [ "tools/ok.cpp", @@ -1363,7 +1366,6 @@ if (skia_enable_tools) { ":tool_utils", ] } - test_app("nanobench") { sources = [ "bench/nanobench.cpp", @@ -1434,7 +1436,7 @@ if (skia_enable_tools) { } # We can't yet build ICU on iOS or Windows. - if (!is_ios && !is_win) { + if (!is_ios && !is_win && target_cpu != "wasm") { test_app("sktexttopdf-hb") { sources = [ "tools/shape/SkShaper_harfbuzz.cpp", @@ -1502,7 +1504,7 @@ if (skia_enable_tools) { ] } - if (!is_ios) { + if (!is_ios && target_cpu != "wasm") { test_app("skiaserve") { sources = [ "tools/skiaserve/Request.cpp", diff --git a/gn/BUILD.gn b/gn/BUILD.gn index b91c8770e7..5d17cade50 100644 --- a/gn/BUILD.gn +++ b/gn/BUILD.gn @@ -438,6 +438,13 @@ config("release") { } else { ldflags = [ "-Wl,--gc-sections" ] } + if (target_cpu == "wasm") { + # The compiler asks us to add an optimization flag to both cflags + # and ldflags to cut down on the local variables, + # for performance reasons. + # The "linking" step is the conversion to javascript. + ldflags += [ "-O3" ] + } } defines = [ "NDEBUG" ] } diff --git a/gn/BUILDCONFIG.gn b/gn/BUILDCONFIG.gn index ca91c1bcb3..057bea1faf 100644 --- a/gn/BUILDCONFIG.gn +++ b/gn/BUILDCONFIG.gn @@ -37,6 +37,10 @@ declare_args() { assert(!(is_debug && is_official_build)) +if (target_cpu == "wasm") { + target_os = "wasm" +} + # Platform detection if (target_os == "") { target_os = host_os @@ -69,7 +73,8 @@ if (current_cpu == "") { current_cpu = target_cpu } -is_clang = is_android || is_ios || is_mac || (cc == "clang" && cxx == "clang++") || clang_win != "" +is_clang = is_android || is_ios || is_mac || + (cc == "clang" && cxx == "clang++") || clang_win != "" if (!is_clang && !is_win) { is_clang = exec_script("gn/is_clang.py", [ diff --git a/gn/core.gni b/gn/core.gni index eb0d0d2eaf..79498b460b 100644 --- a/gn/core.gni +++ b/gn/core.gni @@ -530,6 +530,7 @@ if (is_win) { # assembler situation is figured out, https://crbug.com/762167 skia_core_defines += [ "SK_JUMPER_USE_ASSEMBLY=0" ] } -} else { +} else if (target_cpu == "arm" || target_cpu == "arm64" || + target_cpu == "x86" || target_cpu == "x64") { skia_core_sources += [ "$_src/jumper/SkJumper_generated.S" ] } diff --git a/infra/bots/assets/asset_utils.py b/infra/bots/assets/asset_utils.py index df29aece14..10dc547123 100644 --- a/infra/bots/assets/asset_utils.py +++ b/infra/bots/assets/asset_utils.py @@ -123,6 +123,7 @@ class CIPDStore(object): '--tag', TAG_PROJECT_SKIA, '--tag', TAG_VERSION_TMPL % version, '--compression-level', '1', + '-verification-timeout', '30m0s', ]) def download(self, name, version, target_dir): diff --git a/infra/bots/assets/emscripten_sdk/README.md b/infra/bots/assets/emscripten_sdk/README.md new file mode 100644 index 0000000000..7ec14d9f92 --- /dev/null +++ b/infra/bots/assets/emscripten_sdk/README.md @@ -0,0 +1,7 @@ +Checkout and build the emscripten_sdk following the instructions here: +http://webassembly.org/getting-started/developers-guide/ + +Then, run +infra/bots/assets/emscripten_sdk/create_and_upload.py -s /path/to/dir/emsdk + +It will take a while because the emsdk dir is > 26GB.
\ No newline at end of file diff --git a/infra/bots/assets/emscripten_sdk/VERSION b/infra/bots/assets/emscripten_sdk/VERSION new file mode 100644 index 0000000000..56a6051ca2 --- /dev/null +++ b/infra/bots/assets/emscripten_sdk/VERSION @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/infra/bots/assets/emscripten_sdk/common.py b/infra/bots/assets/emscripten_sdk/common.py new file mode 100755 index 0000000000..caa0ad899c --- /dev/null +++ b/infra/bots/assets/emscripten_sdk/common.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# +# Copyright 2017 Google Inc. +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +"""Common vars used by scripts in this directory.""" + + +import os +import sys + +FILE_DIR = os.path.dirname(os.path.abspath(__file__)) +INFRA_BOTS_DIR = os.path.realpath(os.path.join(FILE_DIR, os.pardir, os.pardir)) + +sys.path.insert(0, INFRA_BOTS_DIR) +from assets import assets + +ASSET_NAME = os.path.basename(FILE_DIR) + + +def run(cmd): + """Run a command, eg. "upload" or "download". """ + assets.main([cmd, ASSET_NAME] + sys.argv[1:]) diff --git a/infra/bots/assets/emscripten_sdk/create_and_upload.py b/infra/bots/assets/emscripten_sdk/create_and_upload.py new file mode 100755 index 0000000000..56e41a232b --- /dev/null +++ b/infra/bots/assets/emscripten_sdk/create_and_upload.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python +# +# Copyright 2017 Google Inc. +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +"""Create the asset and upload it.""" + + +import argparse +import common +import os +import subprocess +import sys +import utils + + +def main(): + if 'linux' not in sys.platform: + print >> sys.stderr, 'This script only runs on Linux.' + sys.exit(1) + parser = argparse.ArgumentParser() + parser.add_argument('--gsutil') + parser.add_argument('--sdk_path', '-s', required=True) + args = parser.parse_args() + + with utils.tmp_dir(): + upload_script = os.path.join(common.FILE_DIR, 'upload.py') + + try: + cmd = ['python', upload_script, '-t', args.sdk_path] + if args.gsutil: + cmd.extend(['--gsutil', args.gsutil]) + subprocess.check_call(cmd) + except subprocess.CalledProcessError: + # Trap exceptions to avoid printing two stacktraces. + sys.exit(1) + + +if __name__ == '__main__': + main() diff --git a/infra/bots/assets/emscripten_sdk/download.py b/infra/bots/assets/emscripten_sdk/download.py new file mode 100755 index 0000000000..ca999e0378 --- /dev/null +++ b/infra/bots/assets/emscripten_sdk/download.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +# +# Copyright 2017 Google Inc. +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +"""Download the current version of the asset.""" + + +import common + + +if __name__ == '__main__': + common.run('download') diff --git a/infra/bots/assets/emscripten_sdk/upload.py b/infra/bots/assets/emscripten_sdk/upload.py new file mode 100755 index 0000000000..bdfbda783e --- /dev/null +++ b/infra/bots/assets/emscripten_sdk/upload.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +# +# Copyright 2017 Google Inc. +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +"""Upload a new version of the asset.""" + + +import common + + +if __name__ == '__main__': + common.run('upload') diff --git a/infra/bots/gen_tasks.go b/infra/bots/gen_tasks.go index 077c709a8a..8fc69e5a50 100644 --- a/infra/bots/gen_tasks.go +++ b/infra/bots/gen_tasks.go @@ -479,6 +479,9 @@ func compile(b *specs.TasksCfgBuilder, name string, parts map[string]string) str if strings.Contains(name, "Vulkan") { pkgs = append(pkgs, b.MustGetCipdPackageFromAsset("linux_vulkan_sdk")) } + if strings.Contains(name, "EMCC") { + pkgs = append(pkgs, b.MustGetCipdPackageFromAsset("emscripten_sdk")) + } } else if strings.Contains(name, "Win") { pkgs = append(pkgs, b.MustGetCipdPackageFromAsset("win_toolchain")) if strings.Contains(name, "Clang") { diff --git a/infra/bots/jobs.json b/infra/bots/jobs.json index def410c77e..d31cfbdaf2 100644 --- a/infra/bots/jobs.json +++ b/infra/bots/jobs.json @@ -33,6 +33,7 @@ "Build-Debian9-Clang-x86_64-Release-TSAN", "Build-Debian9-Clang-x86_64-Release-UBSAN_float_cast_overflow", "Build-Debian9-Clang-x86_64-Release-Vulkan", + "Build-Debian9-EMCC-wasm-Release", "Build-Debian9-GCC-arm-Debug-Chromecast", "Build-Debian9-GCC-arm-Release-Chromecast", "Build-Debian9-GCC-x86-Debug", diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Build-Ubuntu-EMCC-wasm-Release.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Build-Ubuntu-EMCC-wasm-Release.json new file mode 100644 index 0000000000..0d98a7690e --- /dev/null +++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Build-Ubuntu-EMCC-wasm-Release.json @@ -0,0 +1,54 @@ +[ + { + "cmd": [ + "python", + "-u", + "[CUSTOM_/_B_WORK]/skia/bin/fetch-gn" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-EMCC-wasm-Release" + }, + "infra_step": true, + "name": "fetch-gn" + }, + { + "cmd": [ + "[CUSTOM_/_B_WORK]/skia/bin/gn", + "gen", + "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-EMCC-wasm-Release/Release", + "--args=cc=\"[START_DIR]/emscripten_sdk/emscripten/incoming/emcc\" cxx=\"[START_DIR]/emscripten_sdk/emscripten/incoming/em++\" extra_cflags=[\"-Wno-unknown-warning-option\"] is_debug=false skia_enable_gpu=false skia_use_dng_sdk=false skia_use_fontconfig=false skia_use_freetype=false skia_use_icu=false target_cpu=\"wasm\"" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "[START_DIR]/emscripten_sdk/clang/fastcomp/build_incoming_64/bin:<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-EMCC-wasm-Release" + }, + "name": "gn gen" + }, + { + "cmd": [ + "ninja", + "-C", + "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-EMCC-wasm-Release/Release" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "[START_DIR]/emscripten_sdk/clang/fastcomp/build_incoming_64/bin:<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-EMCC-wasm-Release" + }, + "name": "ninja" + }, + { + "name": "$result", + "recipe_result": null, + "status_code": 0 + } +]
\ No newline at end of file diff --git a/infra/bots/recipe_modules/flavor/examples/full.py b/infra/bots/recipe_modules/flavor/examples/full.py index abe7478fd2..71b0affbc9 100644 --- a/infra/bots/recipe_modules/flavor/examples/full.py +++ b/infra/bots/recipe_modules/flavor/examples/full.py @@ -61,6 +61,7 @@ TEST_BUILDERS = [ 'Build-Ubuntu-Clang-x86_64-Release-Mini', 'Build-Ubuntu-Clang-x86_64-Release-Shared', 'Build-Ubuntu-Clang-x86_64-Release-Vulkan', + 'Build-Ubuntu-EMCC-wasm-Release', 'Build-Ubuntu-GCC-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE', 'Build-Ubuntu-GCC-x86_64-Release-ANGLE', 'Build-Ubuntu-GCC-x86_64-Release-Fast', diff --git a/infra/bots/recipe_modules/flavor/gn_flavor.py b/infra/bots/recipe_modules/flavor/gn_flavor.py index a6591b92c5..88a164a91d 100644 --- a/infra/bots/recipe_modules/flavor/gn_flavor.py +++ b/infra/bots/recipe_modules/flavor/gn_flavor.py @@ -30,7 +30,8 @@ class GNFlavorUtils(default_flavor.DefaultFlavorUtils): os = self.m.vars.builder_cfg.get('os', '') target_arch = self.m.vars.builder_cfg.get('target_arch', '') - clang_linux = str(self.m.vars.slave_dir.join('clang_linux')) + clang_linux = str(self.m.vars.slave_dir.join('clang_linux')) + emscripten_sdk = str(self.m.vars.slave_dir.join('emscripten_sdk')) linux_vulkan_sdk = str(self.m.vars.slave_dir.join('linux_vulkan_sdk')) win_toolchain = str(self.m.vars.slave_dir.join( 't', 'depot_tools', 'win_toolchain', 'vs_files', @@ -53,6 +54,10 @@ class GNFlavorUtils(default_flavor.DefaultFlavorUtils): cc, cxx = 'gcc-4.8', 'g++-4.8' elif compiler == 'GCC': cc, cxx = 'gcc', 'g++' + elif compiler == 'EMCC': + cc = emscripten_sdk + '/emscripten/incoming/emcc' + cxx = emscripten_sdk + '/emscripten/incoming/em++' + extra_cflags.append('-Wno-unknown-warning-option') if compiler != 'MSVC' and configuration == 'Debug': extra_cflags.append('-O1') @@ -113,6 +118,14 @@ class GNFlavorUtils(default_flavor.DefaultFlavorUtils): args['skia_compile_processors'] = 'true' if compiler == 'Clang' and 'Win' in os: args['clang_win'] = '"%s"' % self.m.vars.slave_dir.join('clang_win') + if target_arch == 'wasm': + args.update({ + 'skia_use_freetype': 'false', + 'skia_use_fontconfig': 'false', + 'skia_use_dng_sdk': 'false', + 'skia_use_icu': 'false', + 'skia_enable_gpu': 'false', + }) sanitize = '' if extra_config == 'UBSAN_float_cast_overflow': @@ -149,6 +162,9 @@ class GNFlavorUtils(default_flavor.DefaultFlavorUtils): self._py( 'fetch-clang-format', self.m.vars.skia_dir.join('bin', 'fetch-clang-format')) + if target_arch == 'wasm': + fastcomp = emscripten_sdk + '/clang/fastcomp/build_incoming_64/bin' + env['PATH'] = '%s:%%(PATH)s' % fastcomp with self.m.env(env): self._run('gn gen', [gn, 'gen', self.out_dir, '--args=' + gn_args]) diff --git a/infra/bots/recipes/compile.expected/Build-Ubuntu-EMCC-wasm-Release.json b/infra/bots/recipes/compile.expected/Build-Ubuntu-EMCC-wasm-Release.json new file mode 100644 index 0000000000..116a436dcc --- /dev/null +++ b/infra/bots/recipes/compile.expected/Build-Ubuntu-EMCC-wasm-Release.json @@ -0,0 +1,175 @@ +[ + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "ensure-directory", + "--mode", + "0777", + "[CUSTOM_/_B_WORK]" + ], + "infra_step": true, + "name": "makedirs checkout_path" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "remove", + "[CUSTOM_/_B_WORK]/.gclient_entries" + ], + "infra_step": true, + "name": "remove [CUSTOM_/_B_WORK]/.gclient_entries" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py", + "--spec", + "cache_dir = '[CUSTOM_/_B_CACHE]'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]", + "--patch_root", + "skia", + "--revision_mapping_file", + "{\"got_revision\": \"skia\"}", + "--git-cache-dir", + "[CUSTOM_/_B_CACHE]", + "--cleanup-dir", + "[CLEANUP]/bot_update", + "--output_json", + "/path/to/tmp/json", + "--revision", + "skia@abc123" + ], + "cwd": "[CUSTOM_/_B_WORK]", + "env": { + "GIT_HTTP_LOW_SPEED_LIMIT": "1000", + "GIT_HTTP_LOW_SPEED_TIME": "300", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" + }, + "infra_step": true, + "name": "bot_update", + "~followup_annotations": [ + "@@@STEP_TEXT@Some step text@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@", + "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"skia\": \"abc123\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"manifest\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"skia\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/skia.git\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"skia\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"got_revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"got_revision_cp\": \"refs/heads/master@{#164710}\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"root\": \"skia\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@", + "@@@SET_BUILD_PROPERTY@got_revision@\"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@", + "@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#164710}\"@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "[CUSTOM_/_B_WORK]/skia/bin/fetch-gn" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-EMCC-wasm-Release" + }, + "infra_step": true, + "name": "fetch-gn" + }, + { + "cmd": [ + "[CUSTOM_/_B_WORK]/skia/bin/gn", + "gen", + "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-EMCC-wasm-Release/Release", + "--args=cc=\"[START_DIR]/emscripten_sdk/emscripten/incoming/emcc\" cxx=\"[START_DIR]/emscripten_sdk/emscripten/incoming/em++\" extra_cflags=[\"-Wno-unknown-warning-option\"] is_debug=false skia_enable_gpu=false skia_use_dng_sdk=false skia_use_fontconfig=false skia_use_freetype=false skia_use_icu=false target_cpu=\"wasm\"" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "[START_DIR]/emscripten_sdk/clang/fastcomp/build_incoming_64/bin:<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-EMCC-wasm-Release" + }, + "name": "gn gen" + }, + { + "cmd": [ + "ninja", + "-C", + "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-EMCC-wasm-Release/Release" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "[START_DIR]/emscripten_sdk/clang/fastcomp/build_incoming_64/bin:<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-EMCC-wasm-Release" + }, + "name": "ninja" + }, + { + "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 = ['dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']\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", + "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-EMCC-wasm-Release/Release", + "[CUSTOM_[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 = ['dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']@@@", + "@@@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@@@" + ] + }, + { + "name": "$result", + "recipe_result": null, + "status_code": 0 + } +]
\ No newline at end of file diff --git a/infra/bots/recipes/compile.py b/infra/bots/recipes/compile.py index 622c6c3511..41569c88e4 100644 --- a/infra/bots/recipes/compile.py +++ b/infra/bots/recipes/compile.py @@ -90,6 +90,7 @@ TEST_BUILDERS = [ 'Build-Ubuntu-Clang-x86_64-Debug-MSAN', 'Build-Ubuntu-Clang-x86_64-Release-Mini', 'Build-Ubuntu-Clang-x86_64-Release-Vulkan', + 'Build-Ubuntu-EMCC-wasm-Release', 'Build-Ubuntu-GCC-arm-Release-Chromecast', 'Build-Ubuntu-GCC-x86-Debug', 'Build-Ubuntu-GCC-x86_64-Debug-GN', diff --git a/infra/bots/tasks.json b/infra/bots/tasks.json index d92a5d6f82..4c4089183c 100644 --- a/infra/bots/tasks.json +++ b/infra/bots/tasks.json @@ -204,6 +204,12 @@ "Build-Debian9-Clang-x86_64-Release-Vulkan" ] }, + "Build-Debian9-EMCC-wasm-Release": { + "priority": 0.8, + "tasks": [ + "Build-Debian9-EMCC-wasm-Release" + ] + }, "Build-Debian9-GCC-arm-Debug-Chromecast": { "priority": 0.8, "tasks": [ @@ -3727,6 +3733,36 @@ "isolate": "compile_skia.isolate", "priority": 0.8 }, + "Build-Debian9-EMCC-wasm-Release": { + "cipd_packages": [ + { + "name": "skia/bots/emscripten_sdk", + "path": "emscripten_sdk", + "version": "version:1" + } + ], + "dimensions": [ + "cpu:x86-64-avx2", + "gpu:none", + "os:Debian-9.1", + "pool:Skia" + ], + "extra_args": [ + "--workdir", + "../../..", + "compile", + "repository=<(REPO)", + "buildername=Build-Debian9-EMCC-wasm-Release", + "swarm_out_dir=${ISOLATED_OUTDIR}", + "revision=<(REVISION)", + "patch_repo=<(PATCH_REPO)", + "patch_storage=<(PATCH_STORAGE)", + "patch_issue=<(ISSUE)", + "patch_set=<(PATCHSET)" + ], + "isolate": "compile_skia.isolate", + "priority": 0.8 + }, "Build-Debian9-GCC-arm-Debug-Chromecast": { "cipd_packages": [ { |