
The 'touch' command uses the system default timezone if none is supplied. This makes zip files dependent on the timezone of the generating machine. Zip by default stores extended attributes (eg. ctime, atime) on Unix systems. These can be further sources of non-determinism, so switch it off with --no-extra Change-Id: I7e102be7368ef339cbaf47524b90688c32a09238
166 lines
4.2 KiB
Python
166 lines
4.2 KiB
Python
package(
|
|
default_visibility = ["//visibility:public"],
|
|
)
|
|
|
|
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",
|
|
"bower_component_bundle",
|
|
"vulcanize",
|
|
"bower_component",
|
|
"js_component",
|
|
)
|
|
|
|
vulcanize(
|
|
name = "gr-app",
|
|
srcs = glob(
|
|
[
|
|
"**/*.html",
|
|
"**/*.js",
|
|
],
|
|
exclude = [
|
|
"bower_components/**",
|
|
"index.html",
|
|
"test/**",
|
|
"**/*_test.html",
|
|
],
|
|
),
|
|
app = "elements/gr-app.html",
|
|
deps = ["//polygerrit-ui:polygerrit_components.bower_components"],
|
|
)
|
|
|
|
closure_js_library(
|
|
name = "closure_lib",
|
|
srcs = ["gr-app.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",
|
|
],
|
|
)
|
|
|
|
closure_js_binary(
|
|
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 = [":closure_lib"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "top_sources",
|
|
srcs = [
|
|
"favicon.ico",
|
|
"index.html",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "css_sources",
|
|
srcs = glob(["styles/**/*.css"]),
|
|
)
|
|
|
|
filegroup(
|
|
name = "app_sources",
|
|
srcs = [
|
|
"closure_bin.js",
|
|
"gr-app.html",
|
|
],
|
|
)
|
|
|
|
genrule2(
|
|
name = "polygerrit_ui",
|
|
srcs = [
|
|
"//lib/fonts:sourcecodepro",
|
|
"//lib/js:highlightjs_files",
|
|
":top_sources",
|
|
":css_sources",
|
|
":app_sources",
|
|
# we extract from the zip, but depend on the component for license checking.
|
|
"@webcomponentsjs//:zipfile",
|
|
"//lib/js:webcomponentsjs",
|
|
],
|
|
outs = ["polygerrit_ui.zip"],
|
|
cmd = " && ".join([
|
|
"mkdir -p $$TMP/polygerrit_ui/{styles,fonts,bower_components/{highlightjs,webcomponentsjs},elements}",
|
|
"for f in $(locations :app_sources); do ext=$${f##*.}; cp -p $$f $$TMP/polygerrit_ui/elements/gr-app.$$ext; done",
|
|
"cp $(locations //lib/fonts:sourcecodepro) $$TMP/polygerrit_ui/fonts/",
|
|
"for f in $(locations :top_sources); do cp $$f $$TMP/polygerrit_ui/; done",
|
|
"for f in $(locations :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/$@ *",
|
|
]),
|
|
)
|
|
|
|
bower_component_bundle(
|
|
name = "test_components",
|
|
testonly = 1,
|
|
deps = [
|
|
"//lib/js:iron-test-helpers",
|
|
"//lib/js:test-fixture",
|
|
"//lib/js:web-component-tester",
|
|
"//polygerrit-ui:polygerrit_components.bower_components",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "pg_code",
|
|
srcs = glob(
|
|
[
|
|
"**/*.html",
|
|
"**/*.js",
|
|
],
|
|
exclude = [
|
|
"bower_components/**",
|
|
],
|
|
),
|
|
)
|
|
|
|
genrule2(
|
|
name = "pg_code_zip",
|
|
srcs = [":pg_code"],
|
|
outs = ["pg_code.zip"],
|
|
cmd = " && ".join([
|
|
("tar -hcf- $(locations :pg_code) |" +
|
|
" tar --strip-components=2 -C $$TMP/ -xf-"),
|
|
"cd $$TMP",
|
|
"TZ=UTC",
|
|
"export TZ",
|
|
"find . -exec touch -t 198001010000 '{}' ';'",
|
|
"zip -rq $$ROOT/$@ *",
|
|
]),
|
|
)
|
|
|
|
sh_test(
|
|
name = "wct_test",
|
|
size = "large",
|
|
srcs = ["wct_test.sh"],
|
|
data = [
|
|
"test/index.html",
|
|
":pg_code.zip",
|
|
":test_components.zip",
|
|
],
|
|
# Should not run sandboxed.
|
|
tags = [
|
|
"local",
|
|
"manual",
|
|
],
|
|
)
|