From afc1a95dcc392bdf149957022efe7d837a937bc2 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Fri, 1 Nov 2019 13:24:00 -0700 Subject: [PATCH] fix: cleanup in node_repositories.bzl --- internal/node/node_repositories.bzl | 43 +++++++++++++++-------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/internal/node/node_repositories.bzl b/internal/node/node_repositories.bzl index a2139ad4c2..390c7c13a9 100644 --- a/internal/node/node_repositories.bzl +++ b/internal/node/node_repositories.bzl @@ -243,8 +243,8 @@ and expect the file to have sha256sum `09bea8f4ec41e9079fa03093d3b2db7ac5c533185 ), } -NODE_DIR = "bin/nodejs" -YARN_DIR = "bin/yarnpkg" +NODE_EXTRACT_DIR = "bin/nodejs" +YARN_EXTRACT_DIR = "bin/yarnpkg" GET_SCRIPT_DIR = """ # From stackoverflow.com @@ -268,24 +268,27 @@ def _download_node(repository_ctx): """ if repository_ctx.attr.vendored_node: return - if repository_ctx.name == "nodejs": - host = os_name(repository_ctx) - else: - host = repository_ctx.name.split("nodejs_", 1)[1] + + # The host is baked into the repository name by design. + # Current these workspaces are: + # @nodejs_darwin_amd64 + # @nodejs_linux_amd64 + # @nodejs_windows_amd64 + host_os = repository_ctx.name.split("nodejs_", 1)[1] + node_version = repository_ctx.attr.node_version node_repositories = repository_ctx.attr.node_repositories node_urls = repository_ctx.attr.node_urls # Download node & npm - node_host_version = "{}-{}".format(node_version, host) - if node_host_version in node_repositories: - filename, strip_prefix, sha256 = node_repositories[node_host_version] - else: - fail("Unknown NodeJS host/version {}".format(node_host_version)) + version_host_os = "%s-%s" % (node_version, host_os) + if not version_host_os in node_repositories: + fail("Unknown NodeJS version-host %s" % version_host_os) + filename, strip_prefix, sha256 = node_repositories[version_host_os] repository_ctx.download_and_extract( url = [url.format(version = node_version, filename = filename) for url in node_urls], - output = NODE_DIR, + output = NODE_EXTRACT_DIR, stripPrefix = strip_prefix, sha256 = sha256, ) @@ -306,11 +309,11 @@ def _download_yarn(repository_ctx): if yarn_version in yarn_repositories: filename, strip_prefix, sha256 = yarn_repositories[yarn_version] else: - fail("Unknown Yarn version {}".format(yarn_version)) + fail("Unknown Yarn version %s" % yarn_version) repository_ctx.download_and_extract( url = [url.format(version = yarn_version, filename = filename) for url in yarn_urls], - output = YARN_DIR, + output = YARN_EXTRACT_DIR, stripPrefix = strip_prefix, sha256 = sha256, ) @@ -353,8 +356,8 @@ def _prepare_node(repository_ctx): "lib/node_modules/npm/bin/npm-cli.js" if not is_windows else "node_modules/npm/bin/npm-cli.js", ] if f]) else: - node_exec = "{}/bin/node".format(NODE_DIR) if not is_windows else "{}/node.exe".format(NODE_DIR) - npm_script = "{}/lib/node_modules/npm/bin/npm-cli.js".format(NODE_DIR) if not is_windows else "{}/node_modules/npm/bin/npm-cli.js".format(NODE_DIR) + node_exec = ("%s/bin/node" % NODE_EXTRACT_DIR) if not is_windows else ("%s/node.exe" % NODE_EXTRACT_DIR) + npm_script = ("%s/lib/node_modules/npm/bin/npm-cli.js" % NODE_EXTRACT_DIR) if not is_windows else ("%s/node_modules/npm/bin/npm-cli.js" % NODE_EXTRACT_DIR) node_exec_label = node_exec if repository_ctx.attr.vendored_yarn: yarn_script = "/".join([f for f in [ @@ -365,7 +368,7 @@ def _prepare_node(repository_ctx): "bin/yarn.js", ] if f]) else: - yarn_script = "{}/bin/yarn.js".format(YARN_DIR) + yarn_script = "%s/bin/yarn.js" % YARN_EXTRACT_DIR node_entry = "bin/node" if not is_windows else "bin/node.cmd" npm_node_repositories_entry = "bin/npm_node_repositories" if not is_windows else "bin/npm_node_repositories.cmd" yarn_node_repositories_entry = "bin/yarn_node_repositories" if not is_windows else "bin/yarn_node_repositories.cmd" @@ -420,8 +423,8 @@ CALL "%SCRIPT_DIR%\\{node}" {args} %* # Immediately exit if any command fails. set -e # Generated by node_repositories.bzl -export NODE_REPOSITORY_ARGS={} -""".format(node_repo_args), executable = True) +export NODE_REPOSITORY_ARGS={args} +""".format(args = node_repo_args), executable = True) # The entry points for npm for osx/linux and windows # Runs npm using appropriate node entry point @@ -622,7 +625,7 @@ def _nodejs_host_os_alias_impl(repository_ctx): else: node_bin_repository = node_repository actual_node_bin = "%s/%s" % ( - NODE_DIR, + NODE_EXTRACT_DIR, "node.exe" if is_windows_host else "bin/node", ) repository_ctx.template(