From 709026140366149e29fadf593860a6b6e65ee7e1 Mon Sep 17 00:00:00 2001 From: Derek Cormier Date: Wed, 15 Nov 2023 23:09:29 -0800 Subject: [PATCH] feat: import toolchains to use for copy actions --- .github/workflows/ci.yaml | 4 ++-- .github/workflows/release_prep.sh | 11 ++++++++++ MODULE.bazel | 14 +++++++------ e2e/bzlmod/MODULE.bazel | 2 +- e2e/js_run_devserver/MODULE.bazel | 2 +- e2e/npm_translate_lock/MODULE.bazel | 2 +- e2e/npm_translate_lock_empty/MODULE.bazel | 2 +- .../MODULE.bazel | 2 +- e2e/pnpm_workspace/MODULE.bazel | 2 +- examples/js_library/two/BUILD.bazel | 21 +++++++++++-------- examples/macro/BUILD.bazel | 21 +++++++++++-------- js/private/js_binary.bzl | 3 ++- js/private/js_library.bzl | 2 ++ js/repositories.bzl | 7 ++++--- 14 files changed, 59 insertions(+), 36 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 250b263bf..a50b7fc2d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -224,12 +224,12 @@ jobs: include: - os: windows-latest config: local - bazelversion: 6.2.0 + bazelversion: 6.3.2 folder: e2e/bzlmod bzlmodEnabled: true - os: macos-latest config: local - bazelversion: 6.2.0 + bazelversion: 6.3.2 folder: e2e/bzlmod bzlmodEnabled: true - os: ubuntu-latest diff --git a/.github/workflows/release_prep.sh b/.github/workflows/release_prep.sh index 5442335d5..3178c7ffa 100755 --- a/.github/workflows/release_prep.sh +++ b/.github/workflows/release_prep.sh @@ -66,3 +66,14 @@ EOF awk 'f;/--SNIP--/{f=1}' e2e/workspace/WORKSPACE echo "\`\`\`" + +cat << EOF + +To use rules_js with bazel-lib 2.0, you must additionally register the coreutils toolchain. + +\`\`\`starlark +load("@aspect_bazel_lib//lib:repositories.bzl", "register_coreutils_toolchains") + +register_coreutils_toolchains() +\`\`\` +EOF diff --git a/MODULE.bazel b/MODULE.bazel index b94a1a7d4..bd9c04c65 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -8,7 +8,7 @@ module( # Lower-bounds for runtime dependencies. # Do not bump these unless rules_js requires a newer version to function. -bazel_dep(name = "aspect_bazel_lib", version = "1.31.2") +bazel_dep(name = "aspect_bazel_lib", version = "1.38.1") bazel_dep(name = "bazel_features", version = "0.1.0") bazel_dep(name = "bazel_skylib", version = "1.4.1") bazel_dep(name = "rules_nodejs", version = "5.8.2") @@ -37,14 +37,16 @@ bazel_dep(name = "gazelle", version = "0.33.0", dev_dependency = True, repo_name bazel_dep(name = "buildifier_prebuilt", version = "6.3.3", dev_dependency = True) bazel_dep(name = "bazel_skylib_gazelle_plugin", version = "1.4.1", dev_dependency = True) -ext = use_extension( +host = use_extension( "@aspect_bazel_lib//lib:extensions.bzl", - "ext", + "host", dev_dependency = True, ) -ext.host() -use_repo(ext, "aspect_bazel_lib_host") -use_repo(ext, "coreutils_toolchains") +host.host() +use_repo(host, "aspect_bazel_lib_host") + +bazel_lib_toolchains = use_extension("@aspect_bazel_lib//lib:extensions.bzl", "toolchains") +use_repo(bazel_lib_toolchains, "coreutils_toolchains") node_dev = use_extension( "@rules_nodejs//nodejs:extensions.bzl", diff --git a/e2e/bzlmod/MODULE.bazel b/e2e/bzlmod/MODULE.bazel index 44b5e22ca..800bca781 100644 --- a/e2e/bzlmod/MODULE.bazel +++ b/e2e/bzlmod/MODULE.bazel @@ -5,7 +5,7 @@ module( ) bazel_dep(name = "aspect_rules_js", version = "0.0.0") -bazel_dep(name = "aspect_bazel_lib", version = "2.0.0-rc0") +bazel_dep(name = "aspect_bazel_lib", version = "2.0.1") bazel_dep(name = "bazel_skylib", version = "1.4.1") local_path_override( diff --git a/e2e/js_run_devserver/MODULE.bazel b/e2e/js_run_devserver/MODULE.bazel index 37d2061ed..ed6bae18e 100644 --- a/e2e/js_run_devserver/MODULE.bazel +++ b/e2e/js_run_devserver/MODULE.bazel @@ -5,7 +5,7 @@ module( ) bazel_dep(name = "bazel_skylib", version = "1.4.1") -bazel_dep(name = "aspect_bazel_lib", version = "1.32.1") +bazel_dep(name = "aspect_bazel_lib", version = "1.38.1") bazel_dep(name = "rules_go", version = "0.41.0") bazel_dep(name = "aspect_rules_js", version = "0.0.0") local_path_override( diff --git a/e2e/npm_translate_lock/MODULE.bazel b/e2e/npm_translate_lock/MODULE.bazel index cd05288c3..a3d6b7053 100644 --- a/e2e/npm_translate_lock/MODULE.bazel +++ b/e2e/npm_translate_lock/MODULE.bazel @@ -5,7 +5,7 @@ module( ) bazel_dep(name = "bazel_skylib", version = "1.4.1") -bazel_dep(name = "aspect_bazel_lib", version = "1.32.1") +bazel_dep(name = "aspect_bazel_lib", version = "1.38.1") bazel_dep(name = "aspect_rules_js", version = "0.0.0") local_path_override( module_name = "aspect_rules_js", diff --git a/e2e/npm_translate_lock_empty/MODULE.bazel b/e2e/npm_translate_lock_empty/MODULE.bazel index 9fc2d33d0..89c18712f 100644 --- a/e2e/npm_translate_lock_empty/MODULE.bazel +++ b/e2e/npm_translate_lock_empty/MODULE.bazel @@ -5,7 +5,7 @@ module( ) bazel_dep(name = "bazel_skylib", version = "1.4.1") -bazel_dep(name = "aspect_bazel_lib", version = "1.32.1") +bazel_dep(name = "aspect_bazel_lib", version = "1.38.1") bazel_dep(name = "aspect_rules_js", version = "0.0.0") local_path_override( module_name = "aspect_rules_js", diff --git a/e2e/npm_translate_lock_partial_clone/MODULE.bazel b/e2e/npm_translate_lock_partial_clone/MODULE.bazel index 75074e2ca..72407f86e 100644 --- a/e2e/npm_translate_lock_partial_clone/MODULE.bazel +++ b/e2e/npm_translate_lock_partial_clone/MODULE.bazel @@ -5,7 +5,7 @@ module( ) bazel_dep(name = "bazel_skylib", version = "1.4.1") -bazel_dep(name = "aspect_bazel_lib", version = "1.32.1") +bazel_dep(name = "aspect_bazel_lib", version = "1.38.1") bazel_dep(name = "aspect_rules_js", version = "0.0.0") local_path_override( module_name = "aspect_rules_js", diff --git a/e2e/pnpm_workspace/MODULE.bazel b/e2e/pnpm_workspace/MODULE.bazel index cf2754c5f..13b8b69fd 100644 --- a/e2e/pnpm_workspace/MODULE.bazel +++ b/e2e/pnpm_workspace/MODULE.bazel @@ -6,7 +6,7 @@ module( bazel_dep(name = "bazel_skylib", version = "1.4.1") bazel_dep(name = "rules_nodejs", version = "5.8.2") -bazel_dep(name = "aspect_bazel_lib", version = "1.32.1") +bazel_dep(name = "aspect_bazel_lib", version = "1.38.1") bazel_dep(name = "aspect_rules_js", version = "0.0.0") local_path_override( module_name = "aspect_rules_js", diff --git a/examples/js_library/two/BUILD.bazel b/examples/js_library/two/BUILD.bazel index 8aad15147..342af2246 100644 --- a/examples/js_library/two/BUILD.bazel +++ b/examples/js_library/two/BUILD.bazel @@ -1,5 +1,4 @@ load(":tsc.bzl", "tsc") -load("@aspect_bazel_lib//lib:docs.bzl", "stardoc_with_diff_test", "update_docs") load("@aspect_rules_js//js:defs.bzl", "js_test") load("@bazel_skylib//:bzl_library.bzl", "bzl_library") @@ -32,11 +31,15 @@ bzl_library( ], ) -stardoc_with_diff_test( - name = "tsc-docs", - bzl_library_target = ":tsc", -) - -update_docs( - name = "docs", -) +# TODO(derek): stardoc doesn't work under bzlmod with these +# targets when working against an overridden version of bazel-lib. +# Remove comments of the released version of bazel-lib succeeds. +# +# stardoc_with_diff_test( +# name = "tsc-docs", +# bzl_library_target = ":tsc", +# ) +# +# update_docs( +# name = "docs", +# ) diff --git a/examples/macro/BUILD.bazel b/examples/macro/BUILD.bazel index ea3ffc72b..8bae5c3a8 100644 --- a/examples/macro/BUILD.bazel +++ b/examples/macro/BUILD.bazel @@ -1,5 +1,4 @@ load("//examples/macro:mocha.bzl", "mocha_test") -load("@aspect_bazel_lib//lib:docs.bzl", "stardoc_with_diff_test", "update_docs") load("@bazel_skylib//:bzl_library.bzl", "bzl_library") load("@npm//:defs.bzl", "npm_link_all_packages") @@ -22,11 +21,15 @@ bzl_library( ], ) -stardoc_with_diff_test( - name = "mocha-docs", - bzl_library_target = ":mocha", -) - -update_docs( - name = "docs", -) +# TODO(derek): stardoc doesn't work under bzlmod with these +# targets when working against an overridden version of bazel-lib. +# Remove comments of the released version of bazel-lib succeeds. +# +# stardoc_with_diff_test( +# name = "mocha-docs", +# bzl_library_target = ":mocha", +# ) +# +# update_docs( +# name = "docs", +# ) diff --git a/js/private/js_binary.bzl b/js/private/js_binary.bzl index 7f5d561fe..b683ecadf 100644 --- a/js/private/js_binary.bzl +++ b/js/private/js_binary.bzl @@ -19,6 +19,7 @@ load("@aspect_bazel_lib//lib:windows_utils.bzl", "create_windows_native_launcher load("@aspect_bazel_lib//lib:expand_make_vars.bzl", "expand_locations", "expand_variables") load("@aspect_bazel_lib//lib:directory_path.bzl", "DirectoryPathInfo") load("@aspect_bazel_lib//lib:utils.bzl", "is_bazel_6_or_greater") +load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "COPY_FILE_TO_BIN_TOOLCHAINS") load("@bazel_skylib//lib:dicts.bzl", "dicts") load(":js_helpers.bzl", "LOG_LEVELS", "envs_for_log_level", "gather_runfiles") load(":bash.bzl", "BASH_INITIALIZE_RUNFILES") @@ -604,7 +605,7 @@ js_binary_lib = struct( # TODO: on Windows this toolchain is never referenced "@bazel_tools//tools/sh:toolchain_type", "@rules_nodejs//nodejs:toolchain_type", - ], + ] + COPY_FILE_TO_BIN_TOOLCHAINS, ) js_binary = rule( diff --git a/js/private/js_library.bzl b/js/private/js_library.bzl index 671ea11e7..7fd82131c 100644 --- a/js/private/js_library.bzl +++ b/js/private/js_library.bzl @@ -25,6 +25,7 @@ js_library( load(":js_info.bzl", "JsInfo", "js_info") load(":js_helpers.bzl", "DOWNSTREAM_LINKED_NPM_DEPS_DOCSTRING", "JS_LIBRARY_DATA_ATTR", "copy_js_file_to_bin_action", "gather_npm_linked_packages", "gather_npm_package_store_deps", "gather_runfiles", "gather_transitive_declarations", "gather_transitive_sources") +load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "COPY_FILE_TO_BIN_TOOLCHAINS") _DOC = """A library of JavaScript sources. Provides JsInfo, the primary provider used in rules_js and derivative rule sets. @@ -244,4 +245,5 @@ js_library = rule( implementation = js_library_lib.implementation, attrs = js_library_lib.attrs, provides = js_library_lib.provides, + toolchains = COPY_FILE_TO_BIN_TOOLCHAINS, ) diff --git a/js/repositories.bzl b/js/repositories.bzl index 976c44e72..4c4a52cdb 100644 --- a/js/repositories.bzl +++ b/js/repositories.bzl @@ -6,6 +6,7 @@ See https://docs.bazel.build/versions/main/skylark/deploying.html#dependencies load("//js/private:maybe.bzl", http_archive = "maybe_http_archive") +# buildifier: disable=function-docstring def rules_js_dependencies(): http_archive( name = "bazel_skylib", @@ -21,9 +22,9 @@ def rules_js_dependencies(): http_archive( name = "aspect_bazel_lib", - sha256 = "44f4f6d1ea1fc5a79ed6ca83f875038fee0a0c47db4f9c9beed097e56f8fad03", - strip_prefix = "bazel-lib-1.34.0", - url = "https://github.com/aspect-build/bazel-lib/releases/download/v1.34.0/bazel-lib-v1.34.0.tar.gz", + sha256 = "262e3d6693cdc16dd43880785cdae13c64e6a3f63f75b1993c716295093d117f", + strip_prefix = "bazel-lib-1.38.1", + url = "https://github.com/aspect-build/bazel-lib/releases/download/v1.38.1/bazel-lib-v1.38.1.tar.gz", ) http_archive(