| load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") |
| load("@bazel_gazelle//:def.bzl", "gazelle") |
| |
| # gazelle:prefix go.skia.org/infra |
| gazelle(name = "gazelle") |
| |
| exports_files(["tsconfig.json"], visibility = ["//visibility:public"]) |
| |
| ############################################ |
| # Custom Remote Build Execution toolchain. # |
| ############################################ |
| |
| load( |
| "@io_bazel_rules_docker//docker/toolchain_container:toolchain_container.bzl", |
| "toolchain_container", |
| ) |
| load("@io_bazel_rules_docker//container:container.bzl", "container_push") |
| |
| # Generates a custom toolchain container for Remote Build Execution which extends the default RBE |
| # ubuntu16-04 container with any extra dependencies needed for Skia Infrastructure build targets. |
| # |
| # Reference: |
| # https://cloud.google.com/remote-build-execution/docs/create-custom-toolchain#creating_a_custom_toolchain_container |
| toolchain_container( |
| name = "rbe_container_skia_infra", |
| base = "@rbe_ubuntu1604//image", |
| packages = [ |
| # Install Chrome and fonts to support major charsets. |
| # |
| # This is necessary for the karma_mocha_test rule to work, which runs web tests on a |
| # headless Chrome, and also for the bundled version of Chromium that Puppeteer installs to |
| # render fonts properly. |
| # |
| # Adapted from: |
| # https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md#running-puppeteer-in-docker |
| "google-chrome-stable", |
| "fonts-ipafont-gothic", |
| "fonts-wqy-zenhei", |
| "fonts-thai-tlwg", |
| "fonts-kacst", |
| "fonts-freefont-ttf", |
| # Prevent "error while loading shared libraries: libXss.so.1" in Puppeteer tests. |
| # See https://github.com/puppeteer/puppeteer/issues/6192. |
| "libxss1", |
| ], |
| additional_repos = [ |
| "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main", |
| ], |
| keys = [ |
| "@chrome_gpg//file", |
| ], |
| stamp = True, |
| ) |
| |
| container_push( |
| name = "push_rbe_container_skia_infra", |
| image = ":rbe_container_skia_infra", |
| format = "Docker", |
| registry = "gcr.io", |
| repository = "skia-public/rbe-container-skia-infra", |
| tag = "{STABLE_DOCKER_TAG}" |
| ) |
| |
| #################################################################################################### |
| # Support for "~"-prefixed Sass imports of elements-sk styles, e.g.: # |
| # # |
| # @import '~elements-sk/themes/themes'; # |
| # # |
| # This hack is necessary to maintain compatibility with the Webpack build, which uses the # |
| # css-loader plugin to inline CSS imports. Said plugin adds all NPM packages to the Sass compiler # |
| # import path with the "~" prefix. See https://webpack.js.org/loaders/css-loader/#import for more. # |
| #################################################################################################### |
| |
| ELEMENTS_SK_SCSS = [ |
| # To regenerate this list, please run the following Bash command: |
| # |
| # $ find infra-sk/node_modules/elements-sk -name "*.scss" \ |
| # | sed -E "s/infra-sk\//\/\/infra-sk:/" | sort |
| "//infra-sk:node_modules/elements-sk/checkbox-sk/checkbox-sk.scss", |
| "//infra-sk:node_modules/elements-sk/collapse-sk/collapse-sk.scss", |
| "//infra-sk:node_modules/elements-sk/colors.scss", |
| "//infra-sk:node_modules/elements-sk/icon/icon-sk.scss", |
| "//infra-sk:node_modules/elements-sk/multi-select-sk/multi-select-sk.scss", |
| "//infra-sk:node_modules/elements-sk/nav-links-sk/nav-links-sk.scss", |
| "//infra-sk:node_modules/elements-sk/radio-sk/radio-sk.scss", |
| "//infra-sk:node_modules/elements-sk/select-sk/select-sk.scss", |
| "//infra-sk:node_modules/elements-sk/spinner-sk/spinner-sk.scss", |
| "//infra-sk:node_modules/elements-sk/styles/buttons/buttons.scss", |
| "//infra-sk:node_modules/elements-sk/styles/select/select.scss", |
| "//infra-sk:node_modules/elements-sk/styles/table/table.scss", |
| "//infra-sk:node_modules/elements-sk/tabs-panel-sk/tabs-panel-sk.scss", |
| "//infra-sk:node_modules/elements-sk/tabs-sk/tabs-sk.scss", |
| "//infra-sk:node_modules/elements-sk/themes/color-palette.scss", |
| "//infra-sk:node_modules/elements-sk/themes/themes.scss", |
| "//infra-sk:node_modules/elements-sk/toast-sk/toast-sk.scss", |
| ] |
| |
| TILDE_ELEMENTS_SK_SCSS = [f.replace("//infra-sk:node_modules/", "~") for f in ELEMENTS_SK_SCSS] |
| |
| # Recursively copies all *.scss files from //infra-sk/node_modules/elements-sk to //~elements-sk. |
| genrule( |
| name = "~elements-sk_generator", |
| srcs = ELEMENTS_SK_SCSS, |
| outs = TILDE_ELEMENTS_SK_SCSS, |
| cmd = |
| "for FILENAME in $(SRCS); do " + |
| " TILDE_FILENAME=`echo $$FILENAME | sed -E 's/infra-sk\\/node_modules\\/(.*)/~\\1/'`; " + |
| " TILDE_DIR=$$(dirname $$TILDE_FILENAME); " + |
| " mkdir -p $(RULEDIR)/$$TILDE_DIR; " + |
| " cp $$FILENAME $(RULEDIR)/$$TILDE_FILENAME; " + |
| "done", |
| ) |
| |
| # Do not use directly. Use //infra-sk:elements-sk_scss instead, which includes these files as well. |
| filegroup( |
| name = "~elements-sk", |
| srcs = TILDE_ELEMENTS_SK_SCSS, |
| visibility = ["//infra-sk:__pkg__"], |
| ) |