
The latest rules_closure changes updated closure compiler version and remove stale bazel version check, that broke Bazel CI for gerrit: [1]. It turns out that the current code cannot be compiled by the latest closure compiler, so that it must be adjusted first. We add two more suppressions to the closure compiler invocation: * JSC_UNNECESSARY_ESCAPE * JSC_JSDOC_MISSING_TYPE_WARNING Some of the warnings flagged by the closure compiler are related to the moment library. The PR to fix them is pending for review: [2]. * [1] https://github.com/bazelbuild/bazel/issues/4425 * [2] https://github.com/moment/moment/pull/4350 Change-Id: I0354ceddc7f615d93b5d23cf2652b8552e53cc91
98 lines
3.0 KiB
Python
98 lines
3.0 KiB
Python
load("//tools/bzl:genrule2.bzl", "genrule2")
|
|
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library", "closure_js_binary")
|
|
load(
|
|
"//tools/bzl:js.bzl",
|
|
"vulcanize",
|
|
"bower_component",
|
|
"js_component",
|
|
)
|
|
|
|
def polygerrit_bundle(name, srcs, outs, app):
|
|
appName = app.split(".html")[0].split("/").pop() # eg: gr-app
|
|
|
|
closure_js_binary(
|
|
name = name + "_closure_bin",
|
|
# Known issue: Closure compilation not compatible with Polymer behaviors.
|
|
# See: https://github.com/google/closure-compiler/issues/2042
|
|
compilation_level = "WHITESPACE_ONLY",
|
|
defs = [
|
|
"--polymer_pass",
|
|
"--jscomp_off=duplicate",
|
|
"--force_inject_library=es6_runtime",
|
|
],
|
|
language = "ECMASCRIPT5",
|
|
deps = [name + "_closure_lib"],
|
|
)
|
|
|
|
closure_js_library(
|
|
name = name + "_closure_lib",
|
|
srcs = [appName + ".js"],
|
|
convention = "GOOGLE",
|
|
# TODO(davido): Clean up these issues: http://paste.openstack.org/show/608548
|
|
# and remove this supression
|
|
suppress = [
|
|
"JSC_JSDOC_MISSING_TYPE_WARNING",
|
|
"JSC_UNNECESSARY_ESCAPE",
|
|
"JSC_UNUSED_LOCAL_ASSIGNMENT",
|
|
],
|
|
deps = [
|
|
"//lib/polymer_externs:polymer_closure",
|
|
"@io_bazel_rules_closure//closure/library",
|
|
],
|
|
)
|
|
|
|
vulcanize(
|
|
name = appName,
|
|
srcs = srcs,
|
|
app = app,
|
|
deps = ["//polygerrit-ui:polygerrit_components.bower_components"],
|
|
)
|
|
|
|
native.filegroup(
|
|
name = name + "_app_sources",
|
|
srcs = [
|
|
name + "_closure_bin.js",
|
|
appName + ".html",
|
|
],
|
|
)
|
|
|
|
native.filegroup(
|
|
name = name + "_css_sources",
|
|
srcs = native.glob(["styles/**/*.css"]),
|
|
)
|
|
|
|
native.filegroup(
|
|
name = name + "_top_sources",
|
|
srcs = [
|
|
"favicon.ico",
|
|
"index.html",
|
|
],
|
|
)
|
|
|
|
genrule2(
|
|
name = name,
|
|
srcs = [
|
|
name + "_app_sources",
|
|
name + "_css_sources",
|
|
name + "_top_sources",
|
|
"//lib/fonts:robotofonts",
|
|
"//lib/js:highlightjs_files",
|
|
# we extract from the zip, but depend on the component for license checking.
|
|
"@webcomponentsjs//:zipfile",
|
|
"//lib/js:webcomponentsjs"
|
|
],
|
|
outs = outs,
|
|
cmd = " && ".join([
|
|
"mkdir -p $$TMP/polygerrit_ui/{styles,fonts,bower_components/{highlightjs,webcomponentsjs},elements}",
|
|
"for f in $(locations " + name + "_app_sources); do ext=$${f##*.}; cp -p $$f $$TMP/polygerrit_ui/elements/" + appName + ".$$ext; done",
|
|
"cp $(locations //lib/fonts:robotofonts) $$TMP/polygerrit_ui/fonts/",
|
|
"for f in $(locations " + name + "_top_sources); do cp $$f $$TMP/polygerrit_ui/; done",
|
|
"for f in $(locations "+ name + "_css_sources); do cp $$f $$TMP/polygerrit_ui/styles; done",
|
|
"for f in $(locations //lib/js:highlightjs_files); do cp $$f $$TMP/polygerrit_ui/bower_components/highlightjs/ ; done",
|
|
"unzip -qd $$TMP/polygerrit_ui/bower_components $(location @webcomponentsjs//:zipfile) webcomponentsjs/webcomponents-lite.js",
|
|
"cd $$TMP",
|
|
"find . -exec touch -t 198001010000 '{}' ';'",
|
|
"zip -qr $$ROOT/$@ *",
|
|
]),
|
|
)
|