refactor: use new toolchain for nodejs_binary
diff --git a/WORKSPACE b/WORKSPACE index ca8cee2..277372a 100644 --- a/WORKSPACE +++ b/WORKSPACE
@@ -40,16 +40,6 @@ ) # -# Setup node repositories -# - -load("//:index.bzl", "BAZEL_VERSION", "SUPPORTED_BAZEL_VERSIONS", "node_repositories") - -node_repositories( - node_version = "16.5.0", -) - -# # Install rules_nodejs dev dependencies # @@ -75,6 +65,12 @@ node_version = "15.14.0", ) +load("//:index.bzl", "BAZEL_VERSION", "SUPPORTED_BAZEL_VERSIONS", "node_repositories") + +node_repositories( + node_version = "16.5.0", +) + load("@build_bazel_rules_nodejs//:npm_deps.bzl", "npm_deps") npm_deps()
diff --git a/e2e/BUILD.bazel b/e2e/BUILD.bazel index e842c04..cb34a9f 100644 --- a/e2e/BUILD.bazel +++ b/e2e/BUILD.bazel
@@ -82,6 +82,12 @@ e2e_integration_test( name = "e2e_nodejs_repository", + # Only run on buildkite linux as we hard-coded the platform in the test + tags = [ + "no-bazelci-mac", + "no-bazelci-windows", + "no-circleci", + ], ) e2e_integration_test(
diff --git a/e2e/nodejs_image/BUILD.bazel b/e2e/nodejs_image/BUILD.bazel index 2ddc6e8..f15e5c4 100644 --- a/e2e/nodejs_image/BUILD.bazel +++ b/e2e/nodejs_image/BUILD.bazel
@@ -17,6 +17,7 @@ name = "nodejs_image", binary = ":main", include_node_repo_args = False, + node_repository_name = "nodejs_linux_amd64", ) container_test(
diff --git a/e2e/nodejs_repository/BUILD.bazel b/e2e/nodejs_repository/BUILD.bazel index cb42cd1..cc3a88e 100644 --- a/e2e/nodejs_repository/BUILD.bazel +++ b/e2e/nodejs_repository/BUILD.bazel
@@ -7,18 +7,18 @@ name = "test", data = [ "index.spec.js", - "@nodejs//:node", - "@nodejs//:node_bin", - "@nodejs//:node_files", - "@nodejs//:npm", - "@nodejs//:npm_bin", - "@nodejs//:npm_files", - "@nodejs//:npm_node_repositories", - "@nodejs//:npx_bin", - "@nodejs//:yarn", - "@nodejs//:yarn_bin", - "@nodejs//:yarn_files", - "@nodejs//:yarn_node_repositories", + "@nodejs_linux_amd64//:node", + "@nodejs_linux_amd64//:node_bin", + "@nodejs_linux_amd64//:node_files", + "@nodejs_linux_amd64//:npm", + "@nodejs_linux_amd64//:npm_bin", + "@nodejs_linux_amd64//:npm_files", + "@nodejs_linux_amd64//:npm_node_repositories", + "@nodejs_linux_amd64//:npx_bin", + "@nodejs_linux_amd64//:yarn", + "@nodejs_linux_amd64//:yarn_bin", + "@nodejs_linux_amd64//:yarn_files", + "@nodejs_linux_amd64//:yarn_node_repositories", ], entry_point = ":index.spec.js", )
diff --git a/e2e/symlinked_node_modules_npm/WORKSPACE b/e2e/symlinked_node_modules_npm/WORKSPACE index 0cbf420..eecafed 100644 --- a/e2e/symlinked_node_modules_npm/WORKSPACE +++ b/e2e/symlinked_node_modules_npm/WORKSPACE
@@ -16,6 +16,10 @@ path = "../..", ) +load("@rules_nodejs//nodejs:repositories.bzl", "nodejs_register_toolchains") + +nodejs_register_toolchains(name = "node") + # rules_nodejs_dev_dependencies() required since we're using local_repository for # build_bazel_rules_nodejs above. load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dev_dependencies")
diff --git a/e2e/symlinked_node_modules_yarn/WORKSPACE b/e2e/symlinked_node_modules_yarn/WORKSPACE index 31a53a6..92947db 100644 --- a/e2e/symlinked_node_modules_yarn/WORKSPACE +++ b/e2e/symlinked_node_modules_yarn/WORKSPACE
@@ -16,6 +16,10 @@ path = "../..", ) +load("@rules_nodejs//nodejs:repositories.bzl", "nodejs_register_toolchains") + +nodejs_register_toolchains(name = "node") + # rules_nodejs_dev_dependencies() required since we're using local_repository for # build_bazel_rules_nodejs above. load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dev_dependencies")
diff --git a/examples/angular/WORKSPACE b/examples/angular/WORKSPACE index 4492738..9d2270c 100644 --- a/examples/angular/WORKSPACE +++ b/examples/angular/WORKSPACE
@@ -19,10 +19,15 @@ urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/4.4.0/rules_nodejs-4.4.0.tar.gz"], ) -load("@build_bazel_rules_nodejs//nodejs:repositories.bzl", "rules_nodejs_dependencies") +load("@build_bazel_rules_nodejs//nodejs:repositories.bzl", "nodejs_register_toolchains", "rules_nodejs_dependencies") rules_nodejs_dependencies() +nodejs_register_toolchains( + name = "nodejs", + node_version = "12.14.1", +) + load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") bazel_skylib_workspace() @@ -44,11 +49,7 @@ ) # Check the bazel version and download npm dependencies -load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") - -node_repositories( - node_version = "12.14.1", -) +load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") # Setup the Node.js toolchain & install our npm dependencies into @npm yarn_install(
diff --git a/examples/angular/src/BUILD.bazel b/examples/angular/src/BUILD.bazel index e5f7945..b63af3f 100644 --- a/examples/angular/src/BUILD.bazel +++ b/examples/angular/src/BUILD.bazel
@@ -224,6 +224,7 @@ name = "nodejs_image", binary = ":prodserver", include_node_repo_args = False, + node_repository_name = "nodejs_linux_amd64", # Actions created by this rule are I/O-bound, # so there is no benefit to running them remotely tags = ["local"],
diff --git a/examples/nestjs/src/BUILD.bazel b/examples/nestjs/src/BUILD.bazel index 2b4d32d..0081353 100644 --- a/examples/nestjs/src/BUILD.bazel +++ b/examples/nestjs/src/BUILD.bazel
@@ -78,4 +78,5 @@ name = "docker", binary = ":server", include_node_repo_args = False, + node_repository_name = "nodejs_linux_amd64", )
diff --git a/examples/parcel/BUILD.bazel b/examples/parcel/BUILD.bazel index 04596b8..5a729bf 100644 --- a/examples/parcel/BUILD.bazel +++ b/examples/parcel/BUILD.bazel
@@ -1,6 +1,13 @@ -load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test") +load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test", "nodejs_test") load(":parcel.bzl", "parcel") +# Double-check that we're on the right nodejs version +# since CircleCI fails with a python error if we are too new +nodejs_test( + name = "test_version", + entry_point = "node_version.js", +) + parcel( name = "bundle", srcs = [
diff --git a/examples/parcel/WORKSPACE b/examples/parcel/WORKSPACE index 105875b..2943e26 100644 --- a/examples/parcel/WORKSPACE +++ b/examples/parcel/WORKSPACE
@@ -25,13 +25,12 @@ urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/4.4.0/rules_nodejs-4.4.0.tar.gz"], ) -load("@build_bazel_rules_nodejs//nodejs:repositories.bzl", "rules_nodejs_dependencies") +load("@build_bazel_rules_nodejs//nodejs:repositories.bzl", "nodejs_register_toolchains", "rules_nodejs_dependencies") rules_nodejs_dependencies() -load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install") - -node_repositories( +nodejs_register_toolchains( + name = "nodejs", # with node 16, this example fails on circleCI, because # parcel has a gyp build on install that fails due to wrong # version of the python interpreter: @@ -53,6 +52,8 @@ node_version = "14.17.5", ) +load("@build_bazel_rules_nodejs//:index.bzl", "npm_install") + npm_install( name = "npm", exports_directories_only = True,
diff --git a/examples/parcel/node_version.js b/examples/parcel/node_version.js new file mode 100644 index 0000000..92c50d5 --- /dev/null +++ b/examples/parcel/node_version.js
@@ -0,0 +1 @@ +require('assert').equal(process.version, 'v14.17.5')
diff --git a/examples/vendored_node/BUILD.bazel b/examples/vendored_node/BUILD.bazel index d1cca41..4c5e79b 100644 --- a/examples/vendored_node/BUILD.bazel +++ b/examples/vendored_node/BUILD.bazel
@@ -1,4 +1,20 @@ load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") +load("@rules_nodejs//nodejs:toolchain.bzl", "node_toolchain") + +node_toolchain( + name = "node_toolchain", + target_tool = "@vendored_node_15_0_1//:node-v15.0.1-linux-x64/bin/node", +) + +toolchain( + name = "node15_toolchain", + exec_compatible_with = [ + "@platforms//os:linux", + "@platforms//cpu:x86_64", + ], + toolchain = ":node_toolchain", + toolchain_type = "@rules_nodejs//nodejs:toolchain_type", +) jasmine_node_test( name = "test",
diff --git a/examples/vendored_node/WORKSPACE b/examples/vendored_node/WORKSPACE index 075a9c5..18375dc 100644 --- a/examples/vendored_node/WORKSPACE +++ b/examples/vendored_node/WORKSPACE
@@ -36,14 +36,11 @@ urls = ["https://nodejs.org/dist/v15.0.1/node-v15.0.1-linux-x64.tar.xz"], ) -load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install") +load("@build_bazel_rules_nodejs//:index.bzl", "npm_install") # This example only works on linux as it downloads the linux node distribution # TODO(gregmagolan): make node_repositories acccept different archives for different platforms -node_repositories( - node_version = "15.0.1", - vendored_node = "@vendored_node_15_0_1//:node-v15.0.1-linux-x64", -) +register_toolchains("//:node15_toolchain") npm_install( name = "npm",
diff --git a/examples/vendored_node_and_yarn/BUILD.bazel b/examples/vendored_node_and_yarn/BUILD.bazel index d1cca41..f29ef40 100644 --- a/examples/vendored_node_and_yarn/BUILD.bazel +++ b/examples/vendored_node_and_yarn/BUILD.bazel
@@ -1,4 +1,20 @@ load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") +load("@rules_nodejs//nodejs:toolchain.bzl", "node_toolchain") + +node_toolchain( + name = "node_toolchain", + target_tool = "@vendored_node_10_12_0//:node-v10.12.0-linux-x64/bin/node", +) + +toolchain( + name = "node10_toolchain", + exec_compatible_with = [ + "@platforms//os:linux", + "@platforms//cpu:x86_64", + ], + toolchain = ":node_toolchain", + toolchain_type = "@rules_nodejs//nodejs:toolchain_type", +) jasmine_node_test( name = "test",
diff --git a/examples/vendored_node_and_yarn/WORKSPACE b/examples/vendored_node_and_yarn/WORKSPACE index 31b3d5c..1c6b739 100644 --- a/examples/vendored_node_and_yarn/WORKSPACE +++ b/examples/vendored_node_and_yarn/WORKSPACE
@@ -42,6 +42,8 @@ urls = ["https://github.com/yarnpkg/yarn/releases/download/v1.10.0/yarn-v1.10.0.tar.gz"], ) +register_toolchains("//:node10_toolchain") + load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") # This example only works on linux as it downloads the linux node distribution
diff --git a/internal/node/BUILD.bazel b/internal/node/BUILD.bazel index 684a60d..30d499e 100644 --- a/internal/node/BUILD.bazel +++ b/internal/node/BUILD.bazel
@@ -32,6 +32,7 @@ "//nodejs:bzl", "//third_party/github.com/bazelbuild/bazel-skylib:bzl", "//toolchains/node:bzl", + "@rules_nodejs//nodejs:bzl", ], )
diff --git a/internal/node/node.bzl b/internal/node/node.bzl index a42dcfb..ec70f02 100644 --- a/internal/node/node.bzl +++ b/internal/node/node.bzl
@@ -241,18 +241,18 @@ # Add both the node executable for the user's local machine which is in ctx.files._node and comes # from @nodejs//:node_bin and the node executable from the selected node --platform which comes from - # ctx.toolchains["@build_bazel_rules_nodejs//toolchains/node:toolchain_type"].nodeinfo. + # ctx.toolchains["@rules_nodejs//nodejs:toolchain_type"].nodeinfo. # In most cases these are the same files but for RBE and when explitely setting --platform for cross-compilation # any given nodejs_binary should be able to run on both the user's local machine and on the RBE or selected # platform. # - # Rules such as nodejs_image should use only ctx.toolchains["@build_bazel_rules_nodejs//toolchains/node:toolchain_type"].nodeinfo + # Rules such as nodejs_image should use only ctx.toolchains["@rules_nodejs//nodejs:toolchain_type"].nodeinfo # when building the image as that will reflect the selected --platform. if ctx.attr.toolchain: node_toolchain = ctx.attr.toolchain[platform_common.ToolchainInfo] else: - node_toolchain = ctx.toolchains["@build_bazel_rules_nodejs//toolchains/node:toolchain_type"] + node_toolchain = ctx.toolchains["@rules_nodejs//nodejs:toolchain_type"] node_tool_files = [] node_tool_files.extend(node_toolchain.nodeinfo.tool_files) @@ -636,7 +636,7 @@ "implementation": _nodejs_binary_impl, "outputs": _NODEJS_EXECUTABLE_OUTPUTS, "toolchains": [ - "@build_bazel_rules_nodejs//toolchains/node:toolchain_type", + "@rules_nodejs//nodejs:toolchain_type", "@bazel_tools//tools/sh:toolchain_type", ], }
diff --git a/internal/node/node_repositories.bzl b/internal/node/node_repositories.bzl index b20bb73..0a6c72e 100644 --- a/internal/node/node_repositories.bzl +++ b/internal/node/node_repositories.bzl
@@ -20,10 +20,10 @@ load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") load("//internal/common:check_bazel_version.bzl", "check_bazel_version") -load("//nodejs/private:nodejs_repo_host_os_alias.bzl", "nodejs_repo_host_os_alias") load("//nodejs/private:os_name.bzl", "OS_ARCH_NAMES", "node_exists_for_os", "os_name") load("//nodejs:repositories.bzl", "DEFAULT_NODE_VERSION", node_repositories_rule = "node_repositories") load("//toolchains/node:node_toolchain_configure.bzl", "node_toolchain_configure") +load("@rules_nodejs//nodejs:repositories.bzl", "nodejs_register_toolchains") def node_repositories(**kwargs): """ @@ -64,10 +64,5 @@ target_tool = target_tool, ) - # This "nodejs" repo is just for convenience so one does not have to target @nodejs_<os_name>//... - # All it does is create aliases to the @nodejs_<host_os>_<host_arch> repository - maybe( - nodejs_repo_host_os_alias, - name = "nodejs", - node_version = node_version, - ) + # Install new toolchain under "nodejs" repository name prefix + nodejs_register_toolchains(name = "nodejs")
diff --git a/packages/concatjs/BUILD.bazel b/packages/concatjs/BUILD.bazel index b53290c..e00704c 100644 --- a/packages/concatjs/BUILD.bazel +++ b/packages/concatjs/BUILD.bazel
@@ -47,11 +47,7 @@ bzl_library( name = "bzl", testonly = True, - srcs = glob(["*.bzl"]) + [ - # Work-around since we don't have and don't wnat a bzl_library in the generated - # @nodejs//:BUILD.bazel file - "@nodejs//:index.bzl", - ], + srcs = glob(["*.bzl"]), deps = [ "//packages/concatjs/devserver:bzl", "//packages/concatjs/internal:bzl",
diff --git a/packages/typescript/BUILD.bazel b/packages/typescript/BUILD.bazel index b944950..e441ce1 100644 --- a/packages/typescript/BUILD.bazel +++ b/packages/typescript/BUILD.bazel
@@ -23,11 +23,7 @@ bzl_library( name = "bzl", - srcs = glob(["*.bzl"]) + [ - # Work-around since we don't have and don't want a bzl_library in the generated - # @nodejs//:BUILD.bazel file - "@nodejs//:index.bzl", - ], + srcs = glob(["*.bzl"]), deps = [ "//packages/typescript/internal:bzl", "@build_bazel_rules_nodejs//:bzl",