Repository: kythe/kythe (language: rust)

Issue:
Errors encountered resolving select() keys for //:node_modules/jasmine-core at BAZEL@HEAD
https://buildkite.com/bazel/bazel-at-head-plus-downstream/builds/3289#018a6841-5b84-4c00-9de6-39a64d23195b

Platform : ubuntu

Logs:

```
(02:23:43) ERROR: /var/lib/buildkite-agent/.cache/bazel/_bazel_buildkite-agent/9239327341757e7da36b6d37787baf34/external/aspect_rules_js/js/private/BUILD.bazel:26:15: in values attribute of config_setting rule @aspect_rules_js//js/private:experimental_allow_unresolved_symlinks: error while parsing configuration settings: unknown option: 'experimental_allow_unresolved_symlinks'
(02:23:43) ERROR: /var/lib/buildkite-agent/.cache/bazel/_bazel_buildkite-agent/9239327341757e7da36b6d37787baf34/external/aspect_rules_js/js/private/BUILD.bazel:26:15: Analysis of target '@aspect_rules_js//js/private:experimental_allow_unresolved_symlinks' failed

ERROR: /var/lib/buildkite-agent/builds/bk-docker-dtsh/bazel-downstream-projects/kythe/BUILD:107:22: errors encountered resolving select() keys for //:node_modules/jasmine-core
(02:23:43) ERROR: Analysis of target '//kythe/typescript:_validate_utf8_test_ts_options' failed; build aborted: Analysis failed
(02:23:43) INFO: Elapsed time: 1.333s
(02:23:43) INFO: 0 processes.
(02:23:43) ERROR: Build did NOT complete successfully
```

Steps:
```
git clone -v https://github.com/kythe/kythe.git && cd kythe
git reset 870b0230a650519cfcaf4e57e48142e2123d109c --hard
export USE_BAZEL_VERSION=f06418470988721c8c3efe38723f910989180ad4
sudo apt update && sudo apt -y install bison flex uuid-dev asciidoc graphviz source-highlight
bazel build //kythe/...
```
We should update to latest rules_js https://github.com/aspect-build/rules_js/issues/1102

CC Greenteam @fweikert


Discussion / hints:
Looks like we also run into an issue with protobuf around the `exec_tools` attribute.
We will also encounter https://github.com/aspect-build/rules_js/issues/1256 after updating rules_ts

Fix patch:
diff --git a/.bazelrc b/.bazelrc
index c7f84a28f7..e03e94766a 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -8,7 +8,8 @@ build --strategy=TsProject=remote,sandboxed,local
 
 # Compatibility flags to avoid regressions.
 common --incompatible_disallow_empty_glob
-build --incompatible_config_setting_private_default_visibility  --incompatible_enforce_config_setting_visibility
+# TODO: https://github.com/aspect-build/rules_js/issues/1256 - reenable when fixed
+#build --incompatible_config_setting_private_default_visibility  --incompatible_enforce_config_setting_visibility
 
 build --workspace_status_command tools/buildstamp/get_workspace_status
 
@@ -32,6 +33,14 @@ build --host_copt=-w
 # Ensure environment variables are static across machines; allows for cross-user caching.
 build --experimental_strict_action_env
 
+# aspect_rules_js configuration
+build --@aspect_rules_ts//ts:skipLibCheck=honor_tsconfig
+fetch --@aspect_rules_ts//ts:skipLibCheck=honor_tsconfig
+query --@aspect_rules_ts//ts:skipLibCheck=honor_tsconfig
+build --@aspect_rules_ts//ts:default_to_tsc_transpiler
+fetch --@aspect_rules_ts//ts:default_to_tsc_transpiler
+query --@aspect_rules_ts//ts:default_to_tsc_transpiler
+
 # By default, compile for Java 11, run on Java 11
 build --java_language_version=11
 build --tool_java_language_version=11
diff --git a/WORKSPACE b/WORKSPACE
index 623192f64e..f88c225560 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -22,6 +22,14 @@ rules_ts_dependencies(
     ts_version_from = "//:package.json",
 )
 
+load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies")
+
+rules_js_dependencies()
+
+load("@bazel_features//:deps.bzl", "bazel_features_deps")
+
+bazel_features_deps()
+
 load("@aspect_rules_jasmine//jasmine:dependencies.bzl", "rules_jasmine_dependencies")
 
 # Fetch dependencies which users need as well
@@ -46,14 +54,6 @@ load("@npm//:repositories.bzl", "npm_repositories")
 
 npm_repositories()
 
-load("@aspect_rules_jasmine//jasmine:repositories.bzl", "jasmine_repositories")
-
-jasmine_repositories(name = "jasmine")
-
-load("@jasmine//:npm_repositories.bzl", jasmine_npm_repositories = "npm_repositories")
-
-jasmine_npm_repositories()
-
 # END rules_ts setup
 ###
 
diff --git a/cargo-bazel-lock.json b/cargo-bazel-lock.json
index 9860c58274..4e4596fa9f 100644
--- a/cargo-bazel-lock.json
+++ b/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "bc6f3508bb24924a07d644f9b0073be5b4cd0f08fb667450d58dad303aa6a98d",
+  "checksum": "9b7a8e3bf89a442fd00b4fcb161dfd0312fe97267bfe0b8af9533e1b7e938f16",
   "crates": {
     "bytes 1.4.0": {
       "name": "bytes",
@@ -204,5 +204,99 @@
   "workspace_members": {
     "direct-cargo-bazel-deps 0.0.1": ""
   },
-  "conditions": {}
+  "conditions": {
+    "aarch64-apple-darwin": [
+      "aarch64-apple-darwin"
+    ],
+    "aarch64-apple-ios": [
+      "aarch64-apple-ios"
+    ],
+    "aarch64-apple-ios-sim": [
+      "aarch64-apple-ios-sim"
+    ],
+    "aarch64-fuchsia": [
+      "aarch64-fuchsia"
+    ],
+    "aarch64-linux-android": [
+      "aarch64-linux-android"
+    ],
+    "aarch64-pc-windows-msvc": [
+      "aarch64-pc-windows-msvc"
+    ],
+    "aarch64-unknown-linux-gnu": [
+      "aarch64-unknown-linux-gnu"
+    ],
+    "arm-unknown-linux-gnueabi": [
+      "arm-unknown-linux-gnueabi"
+    ],
+    "armv7-linux-androideabi": [
+      "armv7-linux-androideabi"
+    ],
+    "armv7-unknown-linux-gnueabi": [
+      "armv7-unknown-linux-gnueabi"
+    ],
+    "i686-apple-darwin": [
+      "i686-apple-darwin"
+    ],
+    "i686-linux-android": [
+      "i686-linux-android"
+    ],
+    "i686-pc-windows-msvc": [
+      "i686-pc-windows-msvc"
+    ],
+    "i686-unknown-freebsd": [
+      "i686-unknown-freebsd"
+    ],
+    "i686-unknown-linux-gnu": [
+      "i686-unknown-linux-gnu"
+    ],
+    "powerpc-unknown-linux-gnu": [
+      "powerpc-unknown-linux-gnu"
+    ],
+    "riscv32imc-unknown-none-elf": [
+      "riscv32imc-unknown-none-elf"
+    ],
+    "riscv64gc-unknown-none-elf": [
+      "riscv64gc-unknown-none-elf"
+    ],
+    "s390x-unknown-linux-gnu": [
+      "s390x-unknown-linux-gnu"
+    ],
+    "thumbv7em-none-eabi": [
+      "thumbv7em-none-eabi"
+    ],
+    "thumbv8m.main-none-eabi": [
+      "thumbv8m.main-none-eabi"
+    ],
+    "wasm32-unknown-unknown": [
+      "wasm32-unknown-unknown"
+    ],
+    "wasm32-wasi": [
+      "wasm32-wasi"
+    ],
+    "x86_64-apple-darwin": [
+      "x86_64-apple-darwin"
+    ],
+    "x86_64-apple-ios": [
+      "x86_64-apple-ios"
+    ],
+    "x86_64-fuchsia": [
+      "x86_64-fuchsia"
+    ],
+    "x86_64-linux-android": [
+      "x86_64-linux-android"
+    ],
+    "x86_64-pc-windows-msvc": [
+      "x86_64-pc-windows-msvc"
+    ],
+    "x86_64-unknown-freebsd": [
+      "x86_64-unknown-freebsd"
+    ],
+    "x86_64-unknown-linux-gnu": [
+      "x86_64-unknown-linux-gnu"
+    ],
+    "x86_64-unknown-none": [
+      "x86_64-unknown-none"
+    ]
+  }
 }
diff --git a/kythe/proto/analysis_go_proto/analysis.pb.go b/kythe/proto/analysis_go_proto/analysis.pb.go
index 0b8b424b03..2bb53216ec 100644
--- a/kythe/proto/analysis_go_proto/analysis.pb.go
+++ b/kythe/proto/analysis_go_proto/analysis.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/analysis.proto
 
 package analysis_go_proto
diff --git a/kythe/proto/analysis_service_go_proto/analysis_service.pb.go b/kythe/proto/analysis_service_go_proto/analysis_service.pb.go
index 9c86413ca6..ecd261f96e 100644
--- a/kythe/proto/analysis_service_go_proto/analysis_service.pb.go
+++ b/kythe/proto/analysis_service_go_proto/analysis_service.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/analysis_service.proto
 
 package analysis_service_go_proto
diff --git a/kythe/proto/bazel_artifact_selector_go_proto/bazel_artifact_selector.pb.go b/kythe/proto/bazel_artifact_selector_go_proto/bazel_artifact_selector.pb.go
index bfdf15bde7..295522fe26 100644
--- a/kythe/proto/bazel_artifact_selector_go_proto/bazel_artifact_selector.pb.go
+++ b/kythe/proto/bazel_artifact_selector_go_proto/bazel_artifact_selector.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/bazel_artifact_selector.proto
 
 package bazel_artifact_selector_go_proto
diff --git a/kythe/proto/bazel_artifact_selector_v2_go_proto/bazel_artifact_selector_v2.pb.go b/kythe/proto/bazel_artifact_selector_v2_go_proto/bazel_artifact_selector_v2.pb.go
index 9f4664b25e..17241785cc 100644
--- a/kythe/proto/bazel_artifact_selector_v2_go_proto/bazel_artifact_selector_v2.pb.go
+++ b/kythe/proto/bazel_artifact_selector_v2_go_proto/bazel_artifact_selector_v2.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/bazel_artifact_selector_v2.proto
 
 package bazel_artifact_selector_v2_go_proto
diff --git a/kythe/proto/buildinfo_go_proto/buildinfo.pb.go b/kythe/proto/buildinfo_go_proto/buildinfo.pb.go
index 0216e2bd10..9176cb9303 100644
--- a/kythe/proto/buildinfo_go_proto/buildinfo.pb.go
+++ b/kythe/proto/buildinfo_go_proto/buildinfo.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/buildinfo.proto
 
 package buildinfo_go_proto
diff --git a/kythe/proto/claim_go_proto/claim.pb.go b/kythe/proto/claim_go_proto/claim.pb.go
index 634cffde65..66222bca56 100644
--- a/kythe/proto/claim_go_proto/claim.pb.go
+++ b/kythe/proto/claim_go_proto/claim.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/claim.proto
 
 package claim_go_proto
diff --git a/kythe/proto/common_go_proto/common.pb.go b/kythe/proto/common_go_proto/common.pb.go
index 3e5a7c0c3f..744a3f01a8 100644
--- a/kythe/proto/common_go_proto/common.pb.go
+++ b/kythe/proto/common_go_proto/common.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/common.proto
 
 package common_go_proto
diff --git a/kythe/proto/cxx_go_proto/cxx.pb.go b/kythe/proto/cxx_go_proto/cxx.pb.go
index b9ede10fd0..809e4091d0 100644
--- a/kythe/proto/cxx_go_proto/cxx.pb.go
+++ b/kythe/proto/cxx_go_proto/cxx.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/cxx.proto
 
 package cxx_go_proto
diff --git a/kythe/proto/driver_go_proto/driver.pb.go b/kythe/proto/driver_go_proto/driver.pb.go
index 111f8fa2d0..8d6541b695 100644
--- a/kythe/proto/driver_go_proto/driver.pb.go
+++ b/kythe/proto/driver_go_proto/driver.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/driver.proto
 
 package driver_go_proto
diff --git a/kythe/proto/entryset_go_proto/entryset.pb.go b/kythe/proto/entryset_go_proto/entryset.pb.go
index 0ac87fd097..f99e1d48a6 100644
--- a/kythe/proto/entryset_go_proto/entryset.pb.go
+++ b/kythe/proto/entryset_go_proto/entryset.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/entryset.proto
 
 package entryset_go_proto
diff --git a/kythe/proto/explore_go_proto/explore.pb.go b/kythe/proto/explore_go_proto/explore.pb.go
index 65bf40e4aa..9b8b47e218 100644
--- a/kythe/proto/explore_go_proto/explore.pb.go
+++ b/kythe/proto/explore_go_proto/explore.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/explore.proto
 
 package explore_go_proto
diff --git a/kythe/proto/extraction_config_go_proto/extraction_config.pb.go b/kythe/proto/extraction_config_go_proto/extraction_config.pb.go
index 2b94088f2d..5d3eb530da 100644
--- a/kythe/proto/extraction_config_go_proto/extraction_config.pb.go
+++ b/kythe/proto/extraction_config_go_proto/extraction_config.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/extraction_config.proto
 
 package extraction_config_go_proto
diff --git a/kythe/proto/filecontext_go_proto/filecontext.pb.go b/kythe/proto/filecontext_go_proto/filecontext.pb.go
index 62bbfcef11..4ac765c7c7 100644
--- a/kythe/proto/filecontext_go_proto/filecontext.pb.go
+++ b/kythe/proto/filecontext_go_proto/filecontext.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/filecontext.proto
 
 package filecontext_go_proto
diff --git a/kythe/proto/filetree_go_proto/filetree.pb.go b/kythe/proto/filetree_go_proto/filetree.pb.go
index f43a7113e3..41c39ae9fe 100644
--- a/kythe/proto/filetree_go_proto/filetree.pb.go
+++ b/kythe/proto/filetree_go_proto/filetree.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/filetree.proto
 
 package filetree_go_proto
diff --git a/kythe/proto/generated_message_info_go_proto/generated_message_info.pb.go b/kythe/proto/generated_message_info_go_proto/generated_message_info.pb.go
index a0a622b034..7662d623c3 100644
--- a/kythe/proto/generated_message_info_go_proto/generated_message_info.pb.go
+++ b/kythe/proto/generated_message_info_go_proto/generated_message_info.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/generated_message_info.proto
 
 package generated_message_info_go_proto
diff --git a/kythe/proto/go_go_proto/go.pb.go b/kythe/proto/go_go_proto/go.pb.go
index 36cf570ac0..721f01fc6d 100644
--- a/kythe/proto/go_go_proto/go.pb.go
+++ b/kythe/proto/go_go_proto/go.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/go.proto
 
 package go_go_proto
diff --git a/kythe/proto/graph_go_proto/graph.pb.go b/kythe/proto/graph_go_proto/graph.pb.go
index 7129056046..cd30788ddd 100644
--- a/kythe/proto/graph_go_proto/graph.pb.go
+++ b/kythe/proto/graph_go_proto/graph.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/graph.proto
 
 package graph_go_proto
diff --git a/kythe/proto/graph_serving_go_proto/graph_serving.pb.go b/kythe/proto/graph_serving_go_proto/graph_serving.pb.go
index dc362104af..00541fddec 100644
--- a/kythe/proto/graph_serving_go_proto/graph_serving.pb.go
+++ b/kythe/proto/graph_serving_go_proto/graph_serving.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/graph_serving.proto
 
 package graph_serving_go_proto
diff --git a/kythe/proto/identifier_go_proto/identifier.pb.go b/kythe/proto/identifier_go_proto/identifier.pb.go
index da6f2d2027..3c880c6764 100644
--- a/kythe/proto/identifier_go_proto/identifier.pb.go
+++ b/kythe/proto/identifier_go_proto/identifier.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/identifier.proto
 
 package identifier_go_proto
diff --git a/kythe/proto/internal_go_proto/internal.pb.go b/kythe/proto/internal_go_proto/internal.pb.go
index d2f8982491..a7709ffaaf 100644
--- a/kythe/proto/internal_go_proto/internal.pb.go
+++ b/kythe/proto/internal_go_proto/internal.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/internal.proto
 
 package internal_go_proto
diff --git a/kythe/proto/java_go_proto/java.pb.go b/kythe/proto/java_go_proto/java.pb.go
index 58a7f35b6d..bf052e4514 100644
--- a/kythe/proto/java_go_proto/java.pb.go
+++ b/kythe/proto/java_go_proto/java.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/java.proto
 
 package java_go_proto
diff --git a/kythe/proto/link_go_proto/link.pb.go b/kythe/proto/link_go_proto/link.pb.go
index 04697ff511..3764dfb432 100644
--- a/kythe/proto/link_go_proto/link.pb.go
+++ b/kythe/proto/link_go_proto/link.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/link.proto
 
 package link_go_proto
diff --git a/kythe/proto/metadata_go_proto/metadata.pb.go b/kythe/proto/metadata_go_proto/metadata.pb.go
index 466974a6ce..7e5f4f91d5 100644
--- a/kythe/proto/metadata_go_proto/metadata.pb.go
+++ b/kythe/proto/metadata_go_proto/metadata.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/metadata.proto
 
 package metadata_go_proto
diff --git a/kythe/proto/pipeline_go_proto/pipeline.pb.go b/kythe/proto/pipeline_go_proto/pipeline.pb.go
index 84731589a1..68bdc6ddc2 100644
--- a/kythe/proto/pipeline_go_proto/pipeline.pb.go
+++ b/kythe/proto/pipeline_go_proto/pipeline.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/pipeline.proto
 
 package pipeline_go_proto
diff --git a/kythe/proto/repo_go_proto/repo.pb.go b/kythe/proto/repo_go_proto/repo.pb.go
index c356b435aa..3fbb196030 100644
--- a/kythe/proto/repo_go_proto/repo.pb.go
+++ b/kythe/proto/repo_go_proto/repo.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/repo.proto
 
 package repo_go_proto
diff --git a/kythe/proto/schema_go_proto/schema.pb.go b/kythe/proto/schema_go_proto/schema.pb.go
index 48bf80c460..a552708e22 100644
--- a/kythe/proto/schema_go_proto/schema.pb.go
+++ b/kythe/proto/schema_go_proto/schema.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/schema.proto
 
 package schema_go_proto
diff --git a/kythe/proto/serving_go_proto/serving.pb.go b/kythe/proto/serving_go_proto/serving.pb.go
index 911b616242..ca59ffcaa1 100644
--- a/kythe/proto/serving_go_proto/serving.pb.go
+++ b/kythe/proto/serving_go_proto/serving.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/serving.proto
 
 package serving_go_proto
diff --git a/kythe/proto/status_service_go_proto/status_service.pb.go b/kythe/proto/status_service_go_proto/status_service.pb.go
index 5dced3e5f9..ae25c570a8 100644
--- a/kythe/proto/status_service_go_proto/status_service.pb.go
+++ b/kythe/proto/status_service_go_proto/status_service.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/status_service.proto
 
 package status_service_go_proto
diff --git a/kythe/proto/storage_go_proto/storage.pb.go b/kythe/proto/storage_go_proto/storage.pb.go
index 067a0349d3..d8d663e0d4 100644
--- a/kythe/proto/storage_go_proto/storage.pb.go
+++ b/kythe/proto/storage_go_proto/storage.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/storage.proto
 
 package storage_go_proto
diff --git a/kythe/proto/storage_service_go_proto/storage_service.pb.go b/kythe/proto/storage_service_go_proto/storage_service.pb.go
index f3c118ec47..4e351289b2 100644
--- a/kythe/proto/storage_service_go_proto/storage_service.pb.go
+++ b/kythe/proto/storage_service_go_proto/storage_service.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/storage_service.proto
 
 package storage_service_go_proto
diff --git a/kythe/proto/xref_go_proto/xref.pb.go b/kythe/proto/xref_go_proto/xref.pb.go
index 80089f08c7..05718b4c3d 100644
--- a/kythe/proto/xref_go_proto/xref.pb.go
+++ b/kythe/proto/xref_go_proto/xref.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/xref.proto
 
 package xref_go_proto
diff --git a/kythe/proto/xref_serving_go_proto/xref_serving.pb.go b/kythe/proto/xref_serving_go_proto/xref_serving.pb.go
index e7fbf1e8ab..a71f670af3 100644
--- a/kythe/proto/xref_serving_go_proto/xref_serving.pb.go
+++ b/kythe/proto/xref_serving_go_proto/xref_serving.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/proto/xref_serving.proto
 
 package xref_serving_go_proto
diff --git a/kythe/typescript/BUILD b/kythe/typescript/BUILD
index 58b33d2911..fa2ba52730 100644
--- a/kythe/typescript/BUILD
+++ b/kythe/typescript/BUILD
@@ -20,7 +20,7 @@ ts_project(
     srcs = ["kythe.ts"],
     declaration = True,
     source_map = True,
-    supports_workers = False,
+    supports_workers = 0,
 )
 
 ts_project(
@@ -32,7 +32,7 @@ ts_project(
     ],
     declaration = True,
     source_map = True,
-    supports_workers = False,
+    supports_workers = 0,
     deps = [
         ":kythe",
         "//:node_modules/@types/node",
@@ -45,7 +45,7 @@ ts_project(
     srcs = ["test.ts"],
     declaration = True,
     source_map = True,
-    supports_workers = False,
+    supports_workers = 0,
     deps = [
         ":indexer",
         ":kythe",
@@ -62,7 +62,7 @@ ts_project(
     srcs = ["utf8_test.ts"],
     declaration = True,
     source_map = True,
-    supports_workers = False,
+    supports_workers = 0,
     deps = [
         ":indexer",
         "//:node_modules/@types/jasmine",
@@ -107,5 +107,6 @@ jasmine_test(
     include_npm_linked_packages = True,
     include_transitive_sources = True,
     log_level = "debug",
+    node_modules = "//:node_modules",
     patch_node_fs = True,
 )
diff --git a/setup.bzl b/setup.bzl
index f1408bc607..04e990d439 100644
--- a/setup.bzl
+++ b/setup.bzl
@@ -24,6 +24,16 @@ def kythe_rule_repositories():
 
     These repositories must be loaded before calling external.bzl%kythe_dependencies.
     """
+    maybe(
+        http_archive,
+        name = "platforms",
+        urls = [
+            "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.7/platforms-0.0.7.tar.gz",
+            "https://github.com/bazelbuild/platforms/releases/download/0.0.7/platforms-0.0.7.tar.gz",
+        ],
+        sha256 = "3a561c99e7bdbe9173aa653fd579fe849f1d8d67395780ab4770b1f381431d51",
+    )
+
     maybe(
         http_archive,
         name = "bazel_skylib",
@@ -103,17 +113,17 @@ def kythe_rule_repositories():
     maybe(
         http_archive,
         name = "aspect_rules_ts",
-        sha256 = "6406905c5f7c5ca6dedcca5dacbffbf32bb2a5deb77f50da73e7195b2b7e8cbc",
-        strip_prefix = "rules_ts-1.0.5",
-        url = "https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.5.tar.gz",
+        sha256 = "6f715bd3d525c1be062d4663caf242ea549981c0dbcc2e410456dc9c8cfd7bd4",
+        strip_prefix = "rules_ts-2.0.0-rc1",
+        url = "https://github.com/aspect-build/rules_ts/releases/download/v2.0.0-rc1/rules_ts-v2.0.0-rc1.tar.gz",
     )
 
     maybe(
         http_archive,
         name = "aspect_rules_jasmine",
-        sha256 = "0357d45b5dba77004931db83ced43c6c432eee658a51d1876a9f2b57838e4080",
-        strip_prefix = "rules_jasmine-0.2.1",
-        url = "https://github.com/aspect-build/rules_jasmine/archive/refs/tags/v0.2.1.tar.gz",
+        sha256 = "4c16ef202d1e53fd880e8ecc9e0796802201ea9c89fa32f52d5d633fff858cac",
+        strip_prefix = "rules_jasmine-1.1.1",
+        url = "https://github.com/aspect-build/rules_jasmine/releases/download/v1.1.1/rules_jasmine-v1.1.1.tar.gz",
     )
 
     maybe(
@@ -130,8 +140,8 @@ def kythe_rule_repositories():
     maybe(
         http_archive,
         name = "rules_rust",
-        sha256 = "9d04e658878d23f4b00163a72da3db03ddb451273eb347df7d7c50838d698f49",
-        urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.26.0/rules_rust-v0.26.0.tar.gz"],
+        sha256 = "db89135f4d1eaa047b9f5518ba4037284b43fc87386d08c1d1fe91708e3730ae",
+        urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.27.0/rules_rust-v0.27.0.tar.gz"],
     )
 
     maybe(
@@ -180,11 +190,19 @@ def kythe_rule_repositories():
     maybe(
         http_archive,
         name = "com_google_protobuf",
-        sha256 = "1ff680568f8e537bb4be9813bac0c1d87848d5be9d000ebe30f0bc2d7aabe045",
-        strip_prefix = "protobuf-22.2",
+        sha256 = "39b52572da90ad54c883a828cb2ca68e5ac918aa75d36c3e55c9c76b94f0a4f7",
+        strip_prefix = "protobuf-24.2",
         urls = [
-            "https://mirror.bazel.build/github.com/protocolbuffers/protobuf/releases/download/v22.2/protobuf-22.2.tar.gz",
-            "https://github.com/protocolbuffers/protobuf/releases/download/v22.2/protobuf-22.2.tar.gz",
+            "https://mirror.bazel.build/github.com/protocolbuffers/protobuf/releases/download/v24.2/protobuf-24.2.tar.gz",
+            "https://github.com/protocolbuffers/protobuf/releases/download/v24.2/protobuf-24.2.tar.gz",
+        ],
+        patches = [
+            # Use the rules_rust provided proto plugin, rather than the native one
+            # which hijacks the --rust_out command line and is incompatible.
+            "//third_party:protobuf-no-rust.patch",
+        ],
+        patch_args = [
+            "-p1",
         ],
         repo_mapping = {"@zlib": "@net_zlib"},
     )
diff --git a/third_party/bazel/build_event_stream_go_proto/build_event_stream.pb.go b/third_party/bazel/build_event_stream_go_proto/build_event_stream.pb.go
index c60341f8ac..5b1e04c436 100644
--- a/third_party/bazel/build_event_stream_go_proto/build_event_stream.pb.go
+++ b/third_party/bazel/build_event_stream_go_proto/build_event_stream.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: third_party/bazel/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
 
 package build_event_stream_go_proto
diff --git a/third_party/bazel/command_line_go_proto/command_line.pb.go b/third_party/bazel/command_line_go_proto/command_line.pb.go
index 788f4c3048..7e65d5e711 100644
--- a/third_party/bazel/command_line_go_proto/command_line.pb.go
+++ b/third_party/bazel/command_line_go_proto/command_line.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: third_party/bazel/src/main/protobuf/command_line.proto
 
 package command_line_go_proto
diff --git a/third_party/bazel/extra_actions_base_go_proto/extra_actions_base.pb.go b/third_party/bazel/extra_actions_base_go_proto/extra_actions_base.pb.go
index 2821367619..1ce4d3b24c 100644
--- a/third_party/bazel/extra_actions_base_go_proto/extra_actions_base.pb.go
+++ b/third_party/bazel/extra_actions_base_go_proto/extra_actions_base.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: third_party/bazel/src/main/protobuf/extra_actions_base.proto
 
 package extra_actions_base_go_proto
diff --git a/third_party/bazel/failure_details_go_proto/failure_details.pb.go b/third_party/bazel/failure_details_go_proto/failure_details.pb.go
index 2181b9d67e..7e40fbfaf9 100644
--- a/third_party/bazel/failure_details_go_proto/failure_details.pb.go
+++ b/third_party/bazel/failure_details_go_proto/failure_details.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: third_party/bazel/src/main/protobuf/failure_details.proto
 
 package failure_details_go_proto
diff --git a/third_party/bazel/invocation_policy_go_proto/invocation_policy.pb.go b/third_party/bazel/invocation_policy_go_proto/invocation_policy.pb.go
index 5449af5dec..0a54d36b65 100644
--- a/third_party/bazel/invocation_policy_go_proto/invocation_policy.pb.go
+++ b/third_party/bazel/invocation_policy_go_proto/invocation_policy.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: third_party/bazel/src/main/protobuf/invocation_policy.proto
 
 package invocation_policy_go_proto
diff --git a/third_party/bazel/option_filters_go_proto/option_filters.pb.go b/third_party/bazel/option_filters_go_proto/option_filters.pb.go
index 5867e0d2e2..e5f09b8e39 100644
--- a/third_party/bazel/option_filters_go_proto/option_filters.pb.go
+++ b/third_party/bazel/option_filters_go_proto/option_filters.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: third_party/bazel/src/main/protobuf/option_filters.proto
 
 package option_filters_go_proto
diff --git a/third_party/bazel/package_load_metrics_go_proto/package_load_metrics.pb.go b/third_party/bazel/package_load_metrics_go_proto/package_load_metrics.pb.go
index c63b04b099..7856ec4b47 100644
--- a/third_party/bazel/package_load_metrics_go_proto/package_load_metrics.pb.go
+++ b/third_party/bazel/package_load_metrics_go_proto/package_load_metrics.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: third_party/bazel/src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto
 
 package package_load_metrics_go_proto
diff --git a/third_party/protobuf-no-rust.patch b/third_party/protobuf-no-rust.patch
new file mode 100644
index 0000000000..3275c3ce47
--- /dev/null
+++ b/third_party/protobuf-no-rust.patch
@@ -0,0 +1,35 @@
+diff --git a/src/google/protobuf/compiler/BUILD.bazel b/src/google/protobuf/compiler/BUILD.bazel
+index b5ee0c1a6..557fa3311 100644
+--- a/src/google/protobuf/compiler/BUILD.bazel
++++ b/src/google/protobuf/compiler/BUILD.bazel
+@@ -135,7 +135,6 @@ cc_library(
+         "//src/google/protobuf/compiler/php",
+         "//src/google/protobuf/compiler/python",
+         "//src/google/protobuf/compiler/ruby",
+-        "//src/google/protobuf/compiler/rust",
+         "@com_google_absl//absl/log:initialize",
+     ],
+ )
+diff --git a/src/google/protobuf/compiler/main.cc b/src/google/protobuf/compiler/main.cc
+index e315555a8..729960d9f 100644
+--- a/src/google/protobuf/compiler/main.cc
++++ b/src/google/protobuf/compiler/main.cc
+@@ -39,7 +39,6 @@
+ #include "google/protobuf/compiler/python/generator.h"
+ #include "google/protobuf/compiler/python/pyi_generator.h"
+ #include "google/protobuf/compiler/ruby/ruby_generator.h"
+-#include "google/protobuf/compiler/rust/generator.h"
+ 
+ // Must be included last.
+ #include "google/protobuf/port_def.inc"
+@@ -113,10 +112,6 @@ int ProtobufMain(int argc, char* argv[]) {
+   cli.RegisterGenerator("--objc_out", "--objc_opt", &objc_generator,
+                         "Generate Objective-C header and source.");
+ 
+-  // Rust
+-  rust::RustGenerator rust_generator;
+-  cli.RegisterGenerator("--rust_out", &rust_generator,
+-                        "Generate Rust sources.");
+   return cli.Run(argc, argv);
+ }
+ 


Test patch:
diff --git a/kythe/go/util/riegeli/riegeli_test_go_proto/riegeli_test.pb.go b/kythe/go/util/riegeli/riegeli_test_go_proto/riegeli_test.pb.go
index 09317efec1..bd0472324a 100644
--- a/kythe/go/util/riegeli/riegeli_test_go_proto/riegeli_test.pb.go
+++ b/kythe/go/util/riegeli/riegeli_test_go_proto/riegeli_test.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: kythe/go/util/riegeli/riegeli_test.proto
 
 package riegeli_test_go_proto
diff --git a/third_party/bazel/test_status_go_proto/test_status.pb.go b/third_party/bazel/test_status_go_proto/test_status.pb.go
index 54c352768c..06f55289da 100644
--- a/third_party/bazel/test_status_go_proto/test_status.pb.go
+++ b/third_party/bazel/test_status_go_proto/test_status.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // 	protoc-gen-go v1.30.0
-// 	protoc        v4.22.2
+// 	protoc        v4.24.2
 // source: third_party/bazel/src/main/protobuf/test_status.proto
 
 package test_status_go_proto