Snap for 11573087 from 1520b49835be9122c2424231357d4db80069cc38 to sdk-release

Change-Id: I631f96a43ca31b57da7c0fd3578b3018011d8254
diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index fee72e9..e44ec15 100644
--- a/.bazelci/presubmit.yml
+++ b/.bazelci/presubmit.yml
@@ -667,6 +667,16 @@
       - "@rules_rust//tools/rust_analyzer:gen_rust_project"
     test_targets:
       - "//..."
+  windows_bzlmod_bcr:
+    name: bzlmod BCR presubmit
+    platform: windows
+    working_directory: examples/bzlmod/hello_world
+    run_targets:
+      - "//third-party:vendor"
+    build_targets:
+      - "@rules_rust//tools/rust_analyzer:gen_rust_project"
+    test_targets:
+      - "//..."
 
 buildifier:
   version: latest
diff --git a/.bcr/presubmit.yml b/.bcr/presubmit.yml
index a7618d0..7030f6e 100644
--- a/.bcr/presubmit.yml
+++ b/.bcr/presubmit.yml
@@ -14,3 +14,20 @@
         - "@rules_rust//tools/rust_analyzer:gen_rust_project"
       test_targets:
         - "//..."
+# Windows is run separately because currently gen_rust_project doesn't run on windows, although it does build
+bcr_test_module_windows:
+  module_path: ""
+  matrix:
+    bazel: ["6.x", "7.x"]
+  tasks:
+    run_tests:
+      working_directory: examples/bzlmod/hello_world
+      name: "Run test module"
+      platform: windows
+      bazel: ${{ bazel }}
+      run_targets:
+        - "//third-party:vendor"
+      build_targets:
+        - "@rules_rust//tools/rust_analyzer:gen_rust_project"
+      test_targets:
+        - "//..."
diff --git a/.gitignore b/.gitignore
index dde748d..08edefd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,6 +15,7 @@
 /test/no_std/bazel-*
 /docs/bazel-*
 user.bazelrc
+MODULE.bazel.lock
 
 # rustfmt
 *.rs.bk
diff --git a/METADATA b/METADATA
index 5f675fe..09fc8ba 100644
--- a/METADATA
+++ b/METADATA
@@ -4,13 +4,12 @@
   url {
     type: GIT
     value: "https://github.com/bazelbuild/rules_rust"
-    primary_source: true
   }
-  version: "0.39.0"
+  version: "0.40.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
-    month: 2
-    day: 16
+    month: 3
+    day: 12
   }
 }
diff --git a/MODULE.bazel b/MODULE.bazel
index d147ad1..0265497 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -2,7 +2,7 @@
 
 module(
     name = "rules_rust",
-    version = "0.39.0",
+    version = "0.40.0",
 )
 
 bazel_dep(
@@ -27,7 +27,7 @@
 )
 bazel_dep(
     name = "apple_support",
-    version = "1.11.1",
+    version = "1.13.0",
     repo_name = "build_bazel_apple_support",
 )
 bazel_dep(
@@ -36,7 +36,7 @@
     repo_name = "com_google_protobuf",
 )
 
-internal_deps = use_extension("//rust/private:extensions.bzl", "internal_deps")
+internal_deps = use_extension("//rust/private:extensions.bzl", "i")
 use_repo(
     internal_deps,
     "bazelci_rules",
@@ -120,9 +120,9 @@
     "rules_rust_wasm_bindgen__tempfile-3.6.0",
     "rules_rust_wasm_bindgen__ureq-2.8.0",
     "rules_rust_wasm_bindgen__walrus-0.20.3",
-    "rules_rust_wasm_bindgen__wasm-bindgen-0.2.89",
-    "rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.89",
-    "rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.89",
+    "rules_rust_wasm_bindgen__wasm-bindgen-0.2.91",
+    "rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.91",
+    "rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91",
     "rules_rust_wasm_bindgen__wasmparser-0.102.0",
     "rules_rust_wasm_bindgen__wasmprinter-0.2.60",
     "rules_rust_wasm_bindgen_cli",
diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel
index b520a3c..8845e38 100644
--- a/WORKSPACE.bazel
+++ b/WORKSPACE.bazel
@@ -76,3 +76,10 @@
 #
 # load("@bazelci_rules//:rbe_repo.bzl", "rbe_preconfig")
 # rbe_preconfig(name = "buildkite_config", toolchain = "ubuntu2004-bazel-java11")
+
+http_archive(
+    name = "rules_testing",
+    sha256 = "02c62574631876a4e3b02a1820cb51167bb9cdcdea2381b2fa9d9b8b11c407c4",
+    strip_prefix = "rules_testing-0.6.0",
+    url = "https://github.com/bazelbuild/rules_testing/releases/download/v0.6.0/rules_testing-v0.6.0.tar.gz",
+)
diff --git a/bindgen/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel b/bindgen/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel
index 391b2b2..55c3a2e 100644
--- a/bindgen/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel
+++ b/bindgen/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "aho_corasick",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.annotate-snippets-0.9.1.bazel b/bindgen/3rdparty/crates/BUILD.annotate-snippets-0.9.1.bazel
index dbee690..5faa0cd 100644
--- a/bindgen/3rdparty/crates/BUILD.annotate-snippets-0.9.1.bazel
+++ b/bindgen/3rdparty/crates/BUILD.annotate-snippets-0.9.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "annotate_snippets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.anstream-0.3.2.bazel b/bindgen/3rdparty/crates/BUILD.anstream-0.3.2.bazel
index e3ac504..ee3fb1f 100644
--- a/bindgen/3rdparty/crates/BUILD.anstream-0.3.2.bazel
+++ b/bindgen/3rdparty/crates/BUILD.anstream-0.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstream",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.anstyle-1.0.0.bazel b/bindgen/3rdparty/crates/BUILD.anstyle-1.0.0.bazel
index 32b852f..14c1b62 100644
--- a/bindgen/3rdparty/crates/BUILD.anstyle-1.0.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.anstyle-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstyle",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.anstyle-parse-0.2.0.bazel b/bindgen/3rdparty/crates/BUILD.anstyle-parse-0.2.0.bazel
index be1be56..f12dfc4 100644
--- a/bindgen/3rdparty/crates/BUILD.anstyle-parse-0.2.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.anstyle-parse-0.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstyle_parse",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.anstyle-query-1.0.0.bazel b/bindgen/3rdparty/crates/BUILD.anstyle-query-1.0.0.bazel
index e470125..fea4126 100644
--- a/bindgen/3rdparty/crates/BUILD.anstyle-query-1.0.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.anstyle-query-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstyle_query",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.anstyle-wincon-1.0.1.bazel b/bindgen/3rdparty/crates/BUILD.anstyle-wincon-1.0.1.bazel
index 418c7aa..4a02f9b 100644
--- a/bindgen/3rdparty/crates/BUILD.anstyle-wincon-1.0.1.bazel
+++ b/bindgen/3rdparty/crates/BUILD.anstyle-wincon-1.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstyle_wincon",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.bazel b/bindgen/3rdparty/crates/BUILD.bazel
index 4be4eff..57c378a 100644
--- a/bindgen/3rdparty/crates/BUILD.bazel
+++ b/bindgen/3rdparty/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/bindgen/3rdparty/crates/BUILD.bindgen-0.69.1.bazel b/bindgen/3rdparty/crates/BUILD.bindgen-0.69.1.bazel
index 4cd6a5b..55fb590 100644
--- a/bindgen/3rdparty/crates/BUILD.bindgen-0.69.1.bazel
+++ b/bindgen/3rdparty/crates/BUILD.bindgen-0.69.1.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "bindgen",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -99,8 +103,11 @@
 )
 
 cargo_build_script(
-    name = "bindgen_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "bindgen_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "__cli",
         "experimental",
@@ -110,6 +117,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -139,6 +147,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":bindgen_build_script",
+    actual = ":bindgen_bs",
     tags = ["manual"],
 )
diff --git a/bindgen/3rdparty/crates/BUILD.bitflags-1.3.2.bazel b/bindgen/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
index 2711102..3e7b079 100644
--- a/bindgen/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
+++ b/bindgen/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.bitflags-2.4.1.bazel b/bindgen/3rdparty/crates/BUILD.bitflags-2.4.1.bazel
index e10bddb..5e274fa 100644
--- a/bindgen/3rdparty/crates/BUILD.bitflags-2.4.1.bazel
+++ b/bindgen/3rdparty/crates/BUILD.bitflags-2.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.cc-1.0.79.bazel b/bindgen/3rdparty/crates/BUILD.cc-1.0.79.bazel
index f982101..39f0d61 100644
--- a/bindgen/3rdparty/crates/BUILD.cc-1.0.79.bazel
+++ b/bindgen/3rdparty/crates/BUILD.cc-1.0.79.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.cexpr-0.6.0.bazel b/bindgen/3rdparty/crates/BUILD.cexpr-0.6.0.bazel
index cc7ab82..1cd9946 100644
--- a/bindgen/3rdparty/crates/BUILD.cexpr-0.6.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.cexpr-0.6.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cexpr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel b/bindgen/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
index 439045a..bc2864e 100644
--- a/bindgen/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.clang-sys-1.6.1.bazel b/bindgen/3rdparty/crates/BUILD.clang-sys-1.6.1.bazel
index 6f29c03..b7c7c83 100644
--- a/bindgen/3rdparty/crates/BUILD.clang-sys-1.6.1.bazel
+++ b/bindgen/3rdparty/crates/BUILD.clang-sys-1.6.1.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "clang_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -104,8 +108,11 @@
 )
 
 cargo_build_script(
-    name = "clang-sys_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "clang-sys_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "clang_10_0",
         "clang_11_0",
@@ -130,6 +137,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -160,6 +168,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":clang-sys_build_script",
+    actual = ":clang-sys_bs",
     tags = ["manual"],
 )
diff --git a/bindgen/3rdparty/crates/BUILD.clap-4.3.3.bazel b/bindgen/3rdparty/crates/BUILD.clap-4.3.3.bazel
index f078066..c2c4af0 100644
--- a/bindgen/3rdparty/crates/BUILD.clap-4.3.3.bazel
+++ b/bindgen/3rdparty/crates/BUILD.clap-4.3.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "clap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.clap_builder-4.3.3.bazel b/bindgen/3rdparty/crates/BUILD.clap_builder-4.3.3.bazel
index 4b28e30..70a06c0 100644
--- a/bindgen/3rdparty/crates/BUILD.clap_builder-4.3.3.bazel
+++ b/bindgen/3rdparty/crates/BUILD.clap_builder-4.3.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "clap_builder",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.clap_complete-4.3.1.bazel b/bindgen/3rdparty/crates/BUILD.clap_complete-4.3.1.bazel
index 0ada2d4..fc1624a 100644
--- a/bindgen/3rdparty/crates/BUILD.clap_complete-4.3.1.bazel
+++ b/bindgen/3rdparty/crates/BUILD.clap_complete-4.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "clap_complete",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.clap_derive-4.3.2.bazel b/bindgen/3rdparty/crates/BUILD.clap_derive-4.3.2.bazel
index 0fad6c0..b3fbd53 100644
--- a/bindgen/3rdparty/crates/BUILD.clap_derive-4.3.2.bazel
+++ b/bindgen/3rdparty/crates/BUILD.clap_derive-4.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "clap_derive",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.clap_lex-0.5.0.bazel b/bindgen/3rdparty/crates/BUILD.clap_lex-0.5.0.bazel
index 15697f7..a412472 100644
--- a/bindgen/3rdparty/crates/BUILD.clap_lex-0.5.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.clap_lex-0.5.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "clap_lex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.colorchoice-1.0.0.bazel b/bindgen/3rdparty/crates/BUILD.colorchoice-1.0.0.bazel
index 674cbfa..6306a44 100644
--- a/bindgen/3rdparty/crates/BUILD.colorchoice-1.0.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.colorchoice-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "colorchoice",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.env_logger-0.10.0.bazel b/bindgen/3rdparty/crates/BUILD.env_logger-0.10.0.bazel
index a82cb00..948bcb0 100644
--- a/bindgen/3rdparty/crates/BUILD.env_logger-0.10.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.env_logger-0.10.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "env_logger",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.errno-0.3.1.bazel b/bindgen/3rdparty/crates/BUILD.errno-0.3.1.bazel
index 7984fea..a96b79e 100644
--- a/bindgen/3rdparty/crates/BUILD.errno-0.3.1.bazel
+++ b/bindgen/3rdparty/crates/BUILD.errno-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "errno",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel b/bindgen/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
index 53868c5..d6e3fcf 100644
--- a/bindgen/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
+++ b/bindgen/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "errno_dragonfly",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.glob-0.3.1.bazel b/bindgen/3rdparty/crates/BUILD.glob-0.3.1.bazel
index ab744d0..6170719 100644
--- a/bindgen/3rdparty/crates/BUILD.glob-0.3.1.bazel
+++ b/bindgen/3rdparty/crates/BUILD.glob-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "glob",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.heck-0.4.1.bazel b/bindgen/3rdparty/crates/BUILD.heck-0.4.1.bazel
index d5665bd..b67de75 100644
--- a/bindgen/3rdparty/crates/BUILD.heck-0.4.1.bazel
+++ b/bindgen/3rdparty/crates/BUILD.heck-0.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "heck",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.hermit-abi-0.3.1.bazel b/bindgen/3rdparty/crates/BUILD.hermit-abi-0.3.1.bazel
index 0ff068b..dadd8f3 100644
--- a/bindgen/3rdparty/crates/BUILD.hermit-abi-0.3.1.bazel
+++ b/bindgen/3rdparty/crates/BUILD.hermit-abi-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.humantime-2.1.0.bazel b/bindgen/3rdparty/crates/BUILD.humantime-2.1.0.bazel
index 1d14807..1698e4c 100644
--- a/bindgen/3rdparty/crates/BUILD.humantime-2.1.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.humantime-2.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "humantime",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel b/bindgen/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
index 0d26ee1..b9d8d81 100644
--- a/bindgen/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
+++ b/bindgen/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "io_lifetimes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.is-terminal-0.4.7.bazel b/bindgen/3rdparty/crates/BUILD.is-terminal-0.4.7.bazel
index e766c46..8127c78 100644
--- a/bindgen/3rdparty/crates/BUILD.is-terminal-0.4.7.bazel
+++ b/bindgen/3rdparty/crates/BUILD.is-terminal-0.4.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "is_terminal",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel b/bindgen/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
index 3f63daa..e3f08e3 100644
--- a/bindgen/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "lazy_static",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.lazycell-1.3.0.bazel b/bindgen/3rdparty/crates/BUILD.lazycell-1.3.0.bazel
index 8195d43..7bf889d 100644
--- a/bindgen/3rdparty/crates/BUILD.lazycell-1.3.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.lazycell-1.3.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "lazycell",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.libc-0.2.146.bazel b/bindgen/3rdparty/crates/BUILD.libc-0.2.146.bazel
index fc5234a..2e8b4f9 100644
--- a/bindgen/3rdparty/crates/BUILD.libc-0.2.146.bazel
+++ b/bindgen/3rdparty/crates/BUILD.libc-0.2.146.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -238,8 +242,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = select({
         "@rules_rust//rust/platform:aarch64-apple-darwin": [
             "default",  # aarch64-apple-darwin
@@ -401,6 +408,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -427,6 +435,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/bindgen/3rdparty/crates/BUILD.libloading-0.7.4.bazel b/bindgen/3rdparty/crates/BUILD.libloading-0.7.4.bazel
index edbba5b..eb2d193 100644
--- a/bindgen/3rdparty/crates/BUILD.libloading-0.7.4.bazel
+++ b/bindgen/3rdparty/crates/BUILD.libloading-0.7.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "libloading",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel b/bindgen/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
index 4df8aac..1be08fb 100644
--- a/bindgen/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
+++ b/bindgen/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "linux_raw_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.log-0.4.19.bazel b/bindgen/3rdparty/crates/BUILD.log-0.4.19.bazel
index b165593..a66753d 100644
--- a/bindgen/3rdparty/crates/BUILD.log-0.4.19.bazel
+++ b/bindgen/3rdparty/crates/BUILD.log-0.4.19.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.memchr-2.5.0.bazel b/bindgen/3rdparty/crates/BUILD.memchr-2.5.0.bazel
index 52d1e8d..1a5f50b 100644
--- a/bindgen/3rdparty/crates/BUILD.memchr-2.5.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.memchr-2.5.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "memchr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.minimal-lexical-0.2.1.bazel b/bindgen/3rdparty/crates/BUILD.minimal-lexical-0.2.1.bazel
index 9b13aff..ae14344 100644
--- a/bindgen/3rdparty/crates/BUILD.minimal-lexical-0.2.1.bazel
+++ b/bindgen/3rdparty/crates/BUILD.minimal-lexical-0.2.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "minimal_lexical",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.nom-7.1.3.bazel b/bindgen/3rdparty/crates/BUILD.nom-7.1.3.bazel
index f40b95b..9b54f6d 100644
--- a/bindgen/3rdparty/crates/BUILD.nom-7.1.3.bazel
+++ b/bindgen/3rdparty/crates/BUILD.nom-7.1.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "nom",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.once_cell-1.18.0.bazel b/bindgen/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
index 7d580df..8bb4c7a 100644
--- a/bindgen/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "once_cell",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.peeking_take_while-0.1.2.bazel b/bindgen/3rdparty/crates/BUILD.peeking_take_while-0.1.2.bazel
index 53de6ff..6cd0ba1 100644
--- a/bindgen/3rdparty/crates/BUILD.peeking_take_while-0.1.2.bazel
+++ b/bindgen/3rdparty/crates/BUILD.peeking_take_while-0.1.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "peeking_take_while",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.proc-macro2-1.0.60.bazel b/bindgen/3rdparty/crates/BUILD.proc-macro2-1.0.60.bazel
index 76d24fe..da2518d 100644
--- a/bindgen/3rdparty/crates/BUILD.proc-macro2-1.0.60.bazel
+++ b/bindgen/3rdparty/crates/BUILD.proc-macro2-1.0.60.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.quote-1.0.28.bazel b/bindgen/3rdparty/crates/BUILD.quote-1.0.28.bazel
index 5b3ff8d..e0c62af 100644
--- a/bindgen/3rdparty/crates/BUILD.quote-1.0.28.bazel
+++ b/bindgen/3rdparty/crates/BUILD.quote-1.0.28.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.regex-1.8.4.bazel b/bindgen/3rdparty/crates/BUILD.regex-1.8.4.bazel
index 6acc048..5cf6284 100644
--- a/bindgen/3rdparty/crates/BUILD.regex-1.8.4.bazel
+++ b/bindgen/3rdparty/crates/BUILD.regex-1.8.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.regex-syntax-0.7.2.bazel b/bindgen/3rdparty/crates/BUILD.regex-syntax-0.7.2.bazel
index 065188b..796e628 100644
--- a/bindgen/3rdparty/crates/BUILD.regex-syntax-0.7.2.bazel
+++ b/bindgen/3rdparty/crates/BUILD.regex-syntax-0.7.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex_syntax",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.rustc-hash-1.1.0.bazel b/bindgen/3rdparty/crates/BUILD.rustc-hash-1.1.0.bazel
index c51f36e..a436979 100644
--- a/bindgen/3rdparty/crates/BUILD.rustc-hash-1.1.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.rustc-hash-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rustc_hash",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.rustix-0.37.20.bazel b/bindgen/3rdparty/crates/BUILD.rustix-0.37.20.bazel
index 7ccbabf..2cdf23c 100644
--- a/bindgen/3rdparty/crates/BUILD.rustix-0.37.20.bazel
+++ b/bindgen/3rdparty/crates/BUILD.rustix-0.37.20.bazel
@@ -13,7 +13,10 @@
 
 rust_library(
     name = "rustix",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     aliases = select({
         "@rules_rust//rust/platform:aarch64-apple-darwin": {
             "@rules_rust_bindgen__errno-0.3.1//:errno": "libc_errno",  # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = "linux", any(target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"), all(target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64"))))))))
@@ -100,6 +103,7 @@
     }),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -319,8 +323,11 @@
 )
 
 cargo_build_script(
-    name = "rustix_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rustix_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "io-lifetimes",
@@ -333,6 +340,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -359,6 +367,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rustix_build_script",
+    actual = ":rustix_bs",
     tags = ["manual"],
 )
diff --git a/bindgen/3rdparty/crates/BUILD.shlex-1.1.0.bazel b/bindgen/3rdparty/crates/BUILD.shlex-1.1.0.bazel
index 6752acb..90c2786 100644
--- a/bindgen/3rdparty/crates/BUILD.shlex-1.1.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.shlex-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "shlex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.strsim-0.10.0.bazel b/bindgen/3rdparty/crates/BUILD.strsim-0.10.0.bazel
index 5800d7a..75719d6 100644
--- a/bindgen/3rdparty/crates/BUILD.strsim-0.10.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.strsim-0.10.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "strsim",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.syn-2.0.18.bazel b/bindgen/3rdparty/crates/BUILD.syn-2.0.18.bazel
index 171f1cd..2dd0941 100644
--- a/bindgen/3rdparty/crates/BUILD.syn-2.0.18.bazel
+++ b/bindgen/3rdparty/crates/BUILD.syn-2.0.18.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.termcolor-1.2.0.bazel b/bindgen/3rdparty/crates/BUILD.termcolor-1.2.0.bazel
index ac4ff30..539610e 100644
--- a/bindgen/3rdparty/crates/BUILD.termcolor-1.2.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.termcolor-1.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "termcolor",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.unicode-ident-1.0.9.bazel b/bindgen/3rdparty/crates/BUILD.unicode-ident-1.0.9.bazel
index 19b31b9..bffa9fd 100644
--- a/bindgen/3rdparty/crates/BUILD.unicode-ident-1.0.9.bazel
+++ b/bindgen/3rdparty/crates/BUILD.unicode-ident-1.0.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_ident",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.unicode-width-0.1.10.bazel b/bindgen/3rdparty/crates/BUILD.unicode-width-0.1.10.bazel
index 4186cef..2582ed9 100644
--- a/bindgen/3rdparty/crates/BUILD.unicode-width-0.1.10.bazel
+++ b/bindgen/3rdparty/crates/BUILD.unicode-width-0.1.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_width",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.utf8parse-0.2.1.bazel b/bindgen/3rdparty/crates/BUILD.utf8parse-0.2.1.bazel
index 6674782..d74f381 100644
--- a/bindgen/3rdparty/crates/BUILD.utf8parse-0.2.1.bazel
+++ b/bindgen/3rdparty/crates/BUILD.utf8parse-0.2.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "utf8parse",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.winapi-0.3.9.bazel b/bindgen/3rdparty/crates/BUILD.winapi-0.3.9.bazel
index 90f885d..f21420f 100644
--- a/bindgen/3rdparty/crates/BUILD.winapi-0.3.9.bazel
+++ b/bindgen/3rdparty/crates/BUILD.winapi-0.3.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -95,8 +99,11 @@
 )
 
 cargo_build_script(
-    name = "winapi_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "consoleapi",
         "errhandlingapi",
@@ -115,6 +122,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -141,6 +149,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi_build_script",
+    actual = ":winapi_bs",
     tags = ["manual"],
 )
diff --git a/bindgen/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/bindgen/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
index 420921f..65caed8 100644
--- a/bindgen/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "winapi_i686_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel b/bindgen/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel
index 1985145..8a3454c 100644
--- a/bindgen/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel
+++ b/bindgen/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "winapi_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/bindgen/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
index c3c0bd2..e139ce9 100644
--- a/bindgen/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "winapi_x86_64_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel b/bindgen/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
index eb0f788..4f46b04 100644
--- a/bindgen/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.windows-targets-0.48.0.bazel b/bindgen/3rdparty/crates/BUILD.windows-targets-0.48.0.bazel
index 573f947..4ac6cc4 100644
--- a/bindgen/3rdparty/crates/BUILD.windows-targets-0.48.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.windows-targets-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel b/bindgen/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
index 80a2870..d07bab1 100644
--- a/bindgen/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel b/bindgen/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
index 782b96a..fac1471 100644
--- a/bindgen/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel b/bindgen/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
index d2b718c..4aa994d 100644
--- a/bindgen/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel b/bindgen/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
index 7073976..5186dbe 100644
--- a/bindgen/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel b/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
index e0d2c78..5ae4e6c 100644
--- a/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel b/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
index b772590..0caa3ce 100644
--- a/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel b/bindgen/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
index 8a4f01d..94d36b8 100644
--- a/bindgen/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
+++ b/bindgen/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/BUILD.yansi-term-0.1.2.bazel b/bindgen/3rdparty/crates/BUILD.yansi-term-0.1.2.bazel
index 744a6cc..9be8d85 100644
--- a/bindgen/3rdparty/crates/BUILD.yansi-term-0.1.2.bazel
+++ b/bindgen/3rdparty/crates/BUILD.yansi-term-0.1.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "yansi_term",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/bindgen/3rdparty/crates/defs.bzl b/bindgen/3rdparty/crates/defs.bzl
index 9ee731c..2bfde4e 100644
--- a/bindgen/3rdparty/crates/defs.bzl
+++ b/bindgen/3rdparty/crates/defs.bzl
@@ -295,11 +295,11 @@
 _NORMAL_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "bindgen": "@rules_rust_bindgen__bindgen-0.69.1//:bindgen",
-            "clang-sys": "@rules_rust_bindgen__clang-sys-1.6.1//:clang_sys",
-            "clap": "@rules_rust_bindgen__clap-4.3.3//:clap",
-            "clap_complete": "@rules_rust_bindgen__clap_complete-4.3.1//:clap_complete",
-            "env_logger": "@rules_rust_bindgen__env_logger-0.10.0//:env_logger",
+            "bindgen": Label("@rules_rust_bindgen__bindgen-0.69.1//:bindgen"),
+            "clang-sys": Label("@rules_rust_bindgen__clang-sys-1.6.1//:clang_sys"),
+            "clap": Label("@rules_rust_bindgen__clap-4.3.3//:clap"),
+            "clap_complete": Label("@rules_rust_bindgen__clap_complete-4.3.1//:clap_complete"),
+            "env_logger": Label("@rules_rust_bindgen__env_logger-0.10.0//:env_logger"),
         },
     },
 }
diff --git a/bindgen/private/bindgen.bzl b/bindgen/private/bindgen.bzl
index f32a4fc..445036b 100644
--- a/bindgen/private/bindgen.bzl
+++ b/bindgen/private/bindgen.bzl
@@ -99,6 +99,14 @@
         **kwargs
     )
 
+def _get_user_link_flags(cc_lib):
+    linker_flags = []
+
+    for linker_input in cc_lib[CcInfo].linking_context.linker_inputs.to_list():
+        linker_flags.extend(linker_input.user_link_flags)
+
+    return linker_flags
+
 def _generate_cc_link_build_info(ctx, cc_lib):
     """Produce the eqivilant cargo_build_script providers for use in linking the library.
 
@@ -110,33 +118,30 @@
         The `BuildInfo` provider.
     """
     compile_data = []
-    linker_flags = []
+
+    rustc_flags = []
     linker_search_paths = []
 
     for linker_input in cc_lib[CcInfo].linking_context.linker_inputs.to_list():
         for lib in linker_input.libraries:
             if lib.static_library:
-                linker_flags.append("-lstatic={}".format(get_lib_name_default(lib.static_library)))
+                rustc_flags.append("-lstatic={}".format(get_lib_name_default(lib.static_library)))
                 linker_search_paths.append(lib.static_library.dirname)
                 compile_data.append(lib.static_library)
             elif lib.pic_static_library:
-                linker_flags.append("-lstatic={}".format(get_lib_name_default(lib.pic_static_library)))
+                rustc_flags.append("-lstatic={}".format(get_lib_name_default(lib.pic_static_library)))
                 linker_search_paths.append(lib.pic_static_library.dirname)
                 compile_data.append(lib.pic_static_library)
 
-        if linker_input.user_link_flags:
-            linker_flags.append("-C")
-            linker_flags.append("link-args={}".format(" ".join(linker_input.user_link_flags)))
-
     if not compile_data:
         fail("No static libraries found in {}".format(
             cc_lib.label,
         ))
 
-    link_flags = ctx.actions.declare_file("{}.link_flags".format(ctx.label.name))
+    rustc_flags_file = ctx.actions.declare_file("{}.rustc_flags".format(ctx.label.name))
     ctx.actions.write(
-        output = link_flags,
-        content = "\n".join(linker_flags),
+        output = rustc_flags_file,
+        content = "\n".join(rustc_flags),
     )
 
     link_search_paths = ctx.actions.declare_file("{}.link_search_paths".format(ctx.label.name))
@@ -151,8 +156,9 @@
     return BuildInfo(
         compile_data = depset(compile_data),
         dep_env = None,
-        flags = None,
-        link_flags = link_flags,
+        flags = rustc_flags_file,
+        # linker_flags is provided via CcInfo
+        linker_flags = None,
         link_search_paths = link_search_paths,
         out_dir = None,
         rustc_env = None,
@@ -282,7 +288,24 @@
             direct_cc_infos = [cc_lib[CcInfo]],
         )]
     else:
-        providers = [_generate_cc_link_build_info(ctx, cc_lib)]
+        providers = [
+            _generate_cc_link_build_info(ctx, cc_lib),
+            # As in https://github.com/bazelbuild/rules_rust/pull/2361, we want
+            # to link cc_lib to the direct parent (rlib) using `-lstatic=<cc_lib>` rustc flag
+            # Hence, we do not need to provide the whole CcInfo of cc_lib because
+            # it will cause the downstream binary to link the cc_lib again
+            # (same effect as setting `leak_symbols` attribute above)
+            # The CcInfo here only contains the custom link flags (i.e. linkopts attribute)
+            # specified by users in cc_lib
+            CcInfo(
+                linking_context = cc_common.create_linking_context(
+                    linker_inputs = depset([cc_common.create_linker_input(
+                        owner = ctx.label,
+                        user_link_flags = _get_user_link_flags(cc_lib),
+                    )]),
+                ),
+            ),
+        ]
 
     return providers + [
         OutputGroupInfo(
diff --git a/cargo/private/cargo_build_script.bzl b/cargo/private/cargo_build_script.bzl
index ad93a5c..675819d 100644
--- a/cargo/private/cargo_build_script.bzl
+++ b/cargo/private/cargo_build_script.bzl
@@ -299,7 +299,7 @@
             rustc_env = env_out,
             dep_env = dep_env_out,
             flags = flags_out,
-            link_flags = link_flags,
+            linker_flags = link_flags,
             link_search_paths = link_search_paths,
             compile_data = depset([]),
         ),
@@ -415,8 +415,8 @@
     Returns:
         str: A cleaned up name for a build script target.
     """
-    if name.endswith("_build_script"):
-        return name[:-len("_build_script")]
+    if name.endswith("_bs"):
+        return name[:-len("_bs")]
     return name
 
 def _cargo_dep_env_implementation(ctx):
@@ -445,7 +445,7 @@
         build_infos.append(BuildInfo(
             dep_env = empty_file,
             flags = empty_file,
-            link_flags = empty_file,
+            linker_flags = empty_file,
             link_search_paths = empty_file,
             out_dir = out_dir,
             rustc_env = empty_file,
@@ -464,7 +464,7 @@
         BuildInfo(
             dep_env = empty_file,
             flags = empty_file,
-            link_flags = empty_file,
+            linker_flags = empty_file,
             link_search_paths = empty_file,
             out_dir = None,
             rustc_env = empty_file,
diff --git a/crate_universe/3rdparty/crates/BUILD.adler-1.0.2.bazel b/crate_universe/3rdparty/crates/BUILD.adler-1.0.2.bazel
index b6e4d49..3253ce6 100644
--- a/crate_universe/3rdparty/crates/BUILD.adler-1.0.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.adler-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "adler",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel b/crate_universe/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel
index 97b97a3..8a2bc25 100644
--- a/crate_universe/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "aho_corasick",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.android-tzdata-0.1.1.bazel b/crate_universe/3rdparty/crates/BUILD.android-tzdata-0.1.1.bazel
index dc79a82..2a75686 100644
--- a/crate_universe/3rdparty/crates/BUILD.android-tzdata-0.1.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.android-tzdata-0.1.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "android_tzdata",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.android_system_properties-0.1.5.bazel b/crate_universe/3rdparty/crates/BUILD.android_system_properties-0.1.5.bazel
index ba4503b..c3e9919 100644
--- a/crate_universe/3rdparty/crates/BUILD.android_system_properties-0.1.5.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.android_system_properties-0.1.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "android_system_properties",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.anstream-0.3.2.bazel b/crate_universe/3rdparty/crates/BUILD.anstream-0.3.2.bazel
index aaad255..18fb78f 100644
--- a/crate_universe/3rdparty/crates/BUILD.anstream-0.3.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.anstream-0.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstream",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.anstyle-1.0.1.bazel b/crate_universe/3rdparty/crates/BUILD.anstyle-1.0.1.bazel
index 2b89ce6..8251473 100644
--- a/crate_universe/3rdparty/crates/BUILD.anstyle-1.0.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.anstyle-1.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstyle",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.anstyle-parse-0.2.1.bazel b/crate_universe/3rdparty/crates/BUILD.anstyle-parse-0.2.1.bazel
index 558061c..19de3c3 100644
--- a/crate_universe/3rdparty/crates/BUILD.anstyle-parse-0.2.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.anstyle-parse-0.2.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstyle_parse",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.anstyle-query-1.0.0.bazel b/crate_universe/3rdparty/crates/BUILD.anstyle-query-1.0.0.bazel
index a9448cd..794cc17 100644
--- a/crate_universe/3rdparty/crates/BUILD.anstyle-query-1.0.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.anstyle-query-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstyle_query",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.anstyle-wincon-1.0.1.bazel b/crate_universe/3rdparty/crates/BUILD.anstyle-wincon-1.0.1.bazel
index 5301543..07632b8 100644
--- a/crate_universe/3rdparty/crates/BUILD.anstyle-wincon-1.0.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.anstyle-wincon-1.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstyle_wincon",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.anyhow-1.0.75.bazel b/crate_universe/3rdparty/crates/BUILD.anyhow-1.0.75.bazel
index 8da42d8..bd32090 100644
--- a/crate_universe/3rdparty/crates/BUILD.anyhow-1.0.75.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.anyhow-1.0.75.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "anyhow",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "anyhow_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "anyhow_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":anyhow_build_script",
+    actual = ":anyhow_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.arc-swap-1.6.0.bazel b/crate_universe/3rdparty/crates/BUILD.arc-swap-1.6.0.bazel
index 3c1da41..8987bc8 100644
--- a/crate_universe/3rdparty/crates/BUILD.arc-swap-1.6.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.arc-swap-1.6.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "arc_swap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.arrayvec-0.7.4.bazel b/crate_universe/3rdparty/crates/BUILD.arrayvec-0.7.4.bazel
index 84c9828..4206d89 100644
--- a/crate_universe/3rdparty/crates/BUILD.arrayvec-0.7.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.arrayvec-0.7.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "arrayvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.autocfg-1.1.0.bazel b/crate_universe/3rdparty/crates/BUILD.autocfg-1.1.0.bazel
index 7378ca0..8f83e33 100644
--- a/crate_universe/3rdparty/crates/BUILD.autocfg-1.1.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.autocfg-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "autocfg",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.bazel b/crate_universe/3rdparty/crates/BUILD.bazel
index 22ce4bd..bddceab 100644
--- a/crate_universe/3rdparty/crates/BUILD.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/crate_universe/3rdparty/crates/BUILD.bitflags-1.3.2.bazel b/crate_universe/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
index a52c519..3a0d65c 100644
--- a/crate_universe/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.bitflags-2.4.1.bazel b/crate_universe/3rdparty/crates/BUILD.bitflags-2.4.1.bazel
index f494fdf..2808721 100644
--- a/crate_universe/3rdparty/crates/BUILD.bitflags-2.4.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.bitflags-2.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.block-buffer-0.10.4.bazel b/crate_universe/3rdparty/crates/BUILD.block-buffer-0.10.4.bazel
index a96f408..e790b49 100644
--- a/crate_universe/3rdparty/crates/BUILD.block-buffer-0.10.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.block-buffer-0.10.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "block_buffer",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.bstr-1.6.0.bazel b/crate_universe/3rdparty/crates/BUILD.bstr-1.6.0.bazel
index 263cfa7..03350f5 100644
--- a/crate_universe/3rdparty/crates/BUILD.bstr-1.6.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.bstr-1.6.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bstr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.btoi-0.4.3.bazel b/crate_universe/3rdparty/crates/BUILD.btoi-0.4.3.bazel
index 66174ef..7e74a2f 100644
--- a/crate_universe/3rdparty/crates/BUILD.btoi-0.4.3.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.btoi-0.4.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "btoi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.bumpalo-3.13.0.bazel b/crate_universe/3rdparty/crates/BUILD.bumpalo-3.13.0.bazel
index a5eb41b..712e6e5 100644
--- a/crate_universe/3rdparty/crates/BUILD.bumpalo-3.13.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.bumpalo-3.13.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bumpalo",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.byteyarn-0.2.3.bazel b/crate_universe/3rdparty/crates/BUILD.byteyarn-0.2.3.bazel
index ff3841d..f85e83a 100644
--- a/crate_universe/3rdparty/crates/BUILD.byteyarn-0.2.3.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.byteyarn-0.2.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "byteyarn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.camino-1.1.6.bazel b/crate_universe/3rdparty/crates/BUILD.camino-1.1.6.bazel
index b8ec4e3..93e8b19 100644
--- a/crate_universe/3rdparty/crates/BUILD.camino-1.1.6.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.camino-1.1.6.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "camino",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "camino_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "camino_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "serde",
         "serde1",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":camino_build_script",
+    actual = ":camino_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.cargo-lock-9.0.0.bazel b/crate_universe/3rdparty/crates/BUILD.cargo-lock-9.0.0.bazel
index fe2d60a..7e8d11c 100644
--- a/crate_universe/3rdparty/crates/BUILD.cargo-lock-9.0.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.cargo-lock-9.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cargo_lock",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.cargo-platform-0.1.4.bazel b/crate_universe/3rdparty/crates/BUILD.cargo-platform-0.1.4.bazel
index 88efaee..0d5a2b1 100644
--- a/crate_universe/3rdparty/crates/BUILD.cargo-platform-0.1.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.cargo-platform-0.1.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cargo_platform",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.cargo_metadata-0.18.1.bazel b/crate_universe/3rdparty/crates/BUILD.cargo_metadata-0.18.1.bazel
index f609acd..a128ae3 100644
--- a/crate_universe/3rdparty/crates/BUILD.cargo_metadata-0.18.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.cargo_metadata-0.18.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cargo_metadata",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.cargo_toml-0.17.1.bazel b/crate_universe/3rdparty/crates/BUILD.cargo_toml-0.17.1.bazel
index 3680d9a..5f7e824 100644
--- a/crate_universe/3rdparty/crates/BUILD.cargo_toml-0.17.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.cargo_toml-0.17.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cargo_toml",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.cc-1.0.79.bazel b/crate_universe/3rdparty/crates/BUILD.cc-1.0.79.bazel
index 2bc5bf9..a667aa0 100644
--- a/crate_universe/3rdparty/crates/BUILD.cc-1.0.79.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.cc-1.0.79.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.cfg-expr-0.15.5.bazel b/crate_universe/3rdparty/crates/BUILD.cfg-expr-0.15.5.bazel
index f5768fe..c4d77a9 100644
--- a/crate_universe/3rdparty/crates/BUILD.cfg-expr-0.15.5.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.cfg-expr-0.15.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_expr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel b/crate_universe/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
index 54e0b0a..ce6f047 100644
--- a/crate_universe/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.chrono-0.4.26.bazel b/crate_universe/3rdparty/crates/BUILD.chrono-0.4.26.bazel
index 8ff1678..df016e3 100644
--- a/crate_universe/3rdparty/crates/BUILD.chrono-0.4.26.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.chrono-0.4.26.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "chrono",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.chrono-tz-0.8.4.bazel b/crate_universe/3rdparty/crates/BUILD.chrono-tz-0.8.4.bazel
index 8a08e4e..df09989 100644
--- a/crate_universe/3rdparty/crates/BUILD.chrono-tz-0.8.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.chrono-tz-0.8.4.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "chrono_tz",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -87,8 +91,11 @@
 )
 
 cargo_build_script(
-    name = "chrono-tz_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "chrono-tz_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -97,6 +104,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -126,6 +134,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":chrono-tz_build_script",
+    actual = ":chrono-tz_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.chrono-tz-build-0.2.1.bazel b/crate_universe/3rdparty/crates/BUILD.chrono-tz-build-0.2.1.bazel
index 31b2e7c..e48a2c1 100644
--- a/crate_universe/3rdparty/crates/BUILD.chrono-tz-build-0.2.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.chrono-tz-build-0.2.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "chrono_tz_build",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.clap-4.3.11.bazel b/crate_universe/3rdparty/crates/BUILD.clap-4.3.11.bazel
index 708f39a..989f670 100644
--- a/crate_universe/3rdparty/crates/BUILD.clap-4.3.11.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.clap-4.3.11.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "clap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.clap_builder-4.3.11.bazel b/crate_universe/3rdparty/crates/BUILD.clap_builder-4.3.11.bazel
index 33b64cd..ff471fe 100644
--- a/crate_universe/3rdparty/crates/BUILD.clap_builder-4.3.11.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.clap_builder-4.3.11.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "clap_builder",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.clap_derive-4.3.2.bazel b/crate_universe/3rdparty/crates/BUILD.clap_derive-4.3.2.bazel
index 3d0ed37..d0564ed 100644
--- a/crate_universe/3rdparty/crates/BUILD.clap_derive-4.3.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.clap_derive-4.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "clap_derive",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.clap_lex-0.5.0.bazel b/crate_universe/3rdparty/crates/BUILD.clap_lex-0.5.0.bazel
index 2298e49..1a2e2ee 100644
--- a/crate_universe/3rdparty/crates/BUILD.clap_lex-0.5.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.clap_lex-0.5.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "clap_lex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.clru-0.6.1.bazel b/crate_universe/3rdparty/crates/BUILD.clru-0.6.1.bazel
index 31ad3c1..e50f8d6 100644
--- a/crate_universe/3rdparty/crates/BUILD.clru-0.6.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.clru-0.6.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "clru",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.colorchoice-1.0.0.bazel b/crate_universe/3rdparty/crates/BUILD.colorchoice-1.0.0.bazel
index 6a842b0..197e9dd 100644
--- a/crate_universe/3rdparty/crates/BUILD.colorchoice-1.0.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.colorchoice-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "colorchoice",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.core-foundation-sys-0.8.4.bazel b/crate_universe/3rdparty/crates/BUILD.core-foundation-sys-0.8.4.bazel
index f7c4cbe..62cc325 100644
--- a/crate_universe/3rdparty/crates/BUILD.core-foundation-sys-0.8.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.core-foundation-sys-0.8.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "core_foundation_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.cpufeatures-0.2.9.bazel b/crate_universe/3rdparty/crates/BUILD.cpufeatures-0.2.9.bazel
index 98534ac..0d22485 100644
--- a/crate_universe/3rdparty/crates/BUILD.cpufeatures-0.2.9.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.cpufeatures-0.2.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cpufeatures",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.crates-index-2.2.0.bazel b/crate_universe/3rdparty/crates/BUILD.crates-index-2.2.0.bazel
index 41642a9..f4661a5 100644
--- a/crate_universe/3rdparty/crates/BUILD.crates-index-2.2.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.crates-index-2.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "crates_index",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.crc32fast-1.3.2.bazel b/crate_universe/3rdparty/crates/BUILD.crc32fast-1.3.2.bazel
index 8de6d65..e9d9919 100644
--- a/crate_universe/3rdparty/crates/BUILD.crc32fast-1.3.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.crc32fast-1.3.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "crc32fast",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "crc32fast_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "crc32fast_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":crc32fast_build_script",
+    actual = ":crc32fast_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.crossbeam-0.8.2.bazel b/crate_universe/3rdparty/crates/BUILD.crossbeam-0.8.2.bazel
index d860a63..0ed392f 100644
--- a/crate_universe/3rdparty/crates/BUILD.crossbeam-0.8.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.crossbeam-0.8.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "crossbeam",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.crossbeam-channel-0.5.8.bazel b/crate_universe/3rdparty/crates/BUILD.crossbeam-channel-0.5.8.bazel
index ddc1a5c..e09c5b9 100644
--- a/crate_universe/3rdparty/crates/BUILD.crossbeam-channel-0.5.8.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.crossbeam-channel-0.5.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "crossbeam_channel",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.crossbeam-deque-0.8.3.bazel b/crate_universe/3rdparty/crates/BUILD.crossbeam-deque-0.8.3.bazel
index de1f80c..63e7c4b 100644
--- a/crate_universe/3rdparty/crates/BUILD.crossbeam-deque-0.8.3.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.crossbeam-deque-0.8.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "crossbeam_deque",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.crossbeam-epoch-0.9.15.bazel b/crate_universe/3rdparty/crates/BUILD.crossbeam-epoch-0.9.15.bazel
index 545f39a..5db7ab9 100644
--- a/crate_universe/3rdparty/crates/BUILD.crossbeam-epoch-0.9.15.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.crossbeam-epoch-0.9.15.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "crossbeam_epoch",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -89,8 +93,11 @@
 )
 
 cargo_build_script(
-    name = "crossbeam-epoch_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "crossbeam-epoch_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "alloc",
         "std",
@@ -99,6 +106,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -128,6 +136,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":crossbeam-epoch_build_script",
+    actual = ":crossbeam-epoch_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.crossbeam-queue-0.3.8.bazel b/crate_universe/3rdparty/crates/BUILD.crossbeam-queue-0.3.8.bazel
index ec0b2c3..bd4cb44 100644
--- a/crate_universe/3rdparty/crates/BUILD.crossbeam-queue-0.3.8.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.crossbeam-queue-0.3.8.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "crossbeam_queue",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -87,8 +91,11 @@
 )
 
 cargo_build_script(
-    name = "crossbeam-queue_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "crossbeam-queue_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "alloc",
         "std",
@@ -97,6 +104,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -123,6 +131,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":crossbeam-queue_build_script",
+    actual = ":crossbeam-queue_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.crossbeam-utils-0.8.16.bazel b/crate_universe/3rdparty/crates/BUILD.crossbeam-utils-0.8.16.bazel
index 33640d9..b78de3e 100644
--- a/crate_universe/3rdparty/crates/BUILD.crossbeam-utils-0.8.16.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.crossbeam-utils-0.8.16.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "crossbeam_utils",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "crossbeam-utils_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "crossbeam-utils_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":crossbeam-utils_build_script",
+    actual = ":crossbeam-utils_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.crypto-common-0.1.6.bazel b/crate_universe/3rdparty/crates/BUILD.crypto-common-0.1.6.bazel
index 9340ff6..4ced972 100644
--- a/crate_universe/3rdparty/crates/BUILD.crypto-common-0.1.6.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.crypto-common-0.1.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "crypto_common",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.deranged-0.3.9.bazel b/crate_universe/3rdparty/crates/BUILD.deranged-0.3.9.bazel
index af32ed3..4fe1351 100644
--- a/crate_universe/3rdparty/crates/BUILD.deranged-0.3.9.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.deranged-0.3.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "deranged",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.deunicode-0.4.3.bazel b/crate_universe/3rdparty/crates/BUILD.deunicode-0.4.3.bazel
index bb39c1d..84e9c55 100644
--- a/crate_universe/3rdparty/crates/BUILD.deunicode-0.4.3.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.deunicode-0.4.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "deunicode",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.digest-0.10.7.bazel b/crate_universe/3rdparty/crates/BUILD.digest-0.10.7.bazel
index 099e3c7..2d00507 100644
--- a/crate_universe/3rdparty/crates/BUILD.digest-0.10.7.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.digest-0.10.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "digest",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.dunce-1.0.4.bazel b/crate_universe/3rdparty/crates/BUILD.dunce-1.0.4.bazel
index 43702a4..a7f0a22 100644
--- a/crate_universe/3rdparty/crates/BUILD.dunce-1.0.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.dunce-1.0.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "dunce",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.either-1.9.0.bazel b/crate_universe/3rdparty/crates/BUILD.either-1.9.0.bazel
index 01e76b2..60cb07a 100644
--- a/crate_universe/3rdparty/crates/BUILD.either-1.9.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.either-1.9.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "either",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.encoding_rs-0.8.33.bazel b/crate_universe/3rdparty/crates/BUILD.encoding_rs-0.8.33.bazel
index 7e03abd..931c5b8 100644
--- a/crate_universe/3rdparty/crates/BUILD.encoding_rs-0.8.33.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.encoding_rs-0.8.33.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "encoding_rs",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.equivalent-1.0.1.bazel b/crate_universe/3rdparty/crates/BUILD.equivalent-1.0.1.bazel
index 134bd93..184f828 100644
--- a/crate_universe/3rdparty/crates/BUILD.equivalent-1.0.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.equivalent-1.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "equivalent",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.errno-0.3.1.bazel b/crate_universe/3rdparty/crates/BUILD.errno-0.3.1.bazel
index 1a63908..7d288b2 100644
--- a/crate_universe/3rdparty/crates/BUILD.errno-0.3.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.errno-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "errno",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel b/crate_universe/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
index 3fde9b0..b150d26 100644
--- a/crate_universe/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "errno_dragonfly",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -82,12 +86,16 @@
 )
 
 cargo_build_script(
-    name = "errno-dragonfly_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "errno-dragonfly_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -117,6 +125,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":errno-dragonfly_build_script",
+    actual = ":errno-dragonfly_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.faster-hex-0.8.1.bazel b/crate_universe/3rdparty/crates/BUILD.faster-hex-0.8.1.bazel
index 563a045..cd9c15e 100644
--- a/crate_universe/3rdparty/crates/BUILD.faster-hex-0.8.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.faster-hex-0.8.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "faster_hex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.fastrand-2.0.1.bazel b/crate_universe/3rdparty/crates/BUILD.fastrand-2.0.1.bazel
index 274c350..5ae557e 100644
--- a/crate_universe/3rdparty/crates/BUILD.fastrand-2.0.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.fastrand-2.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fastrand",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.filetime-0.2.22.bazel b/crate_universe/3rdparty/crates/BUILD.filetime-0.2.22.bazel
index 6226974..c0cf6cc 100644
--- a/crate_universe/3rdparty/crates/BUILD.filetime-0.2.22.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.filetime-0.2.22.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "filetime",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.flate2-1.0.28.bazel b/crate_universe/3rdparty/crates/BUILD.flate2-1.0.28.bazel
index 96fca41..506f747 100644
--- a/crate_universe/3rdparty/crates/BUILD.flate2-1.0.28.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.flate2-1.0.28.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "flate2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.fnv-1.0.7.bazel b/crate_universe/3rdparty/crates/BUILD.fnv-1.0.7.bazel
index 56bfc51..7051bbd 100644
--- a/crate_universe/3rdparty/crates/BUILD.fnv-1.0.7.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.fnv-1.0.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fnv",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.form_urlencoded-1.2.0.bazel b/crate_universe/3rdparty/crates/BUILD.form_urlencoded-1.2.0.bazel
index d1eb99b..9bf21b6 100644
--- a/crate_universe/3rdparty/crates/BUILD.form_urlencoded-1.2.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.form_urlencoded-1.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "form_urlencoded",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.fuchsia-cprng-0.1.1.bazel b/crate_universe/3rdparty/crates/BUILD.fuchsia-cprng-0.1.1.bazel
index ee0440a..6ee0a5d 100644
--- a/crate_universe/3rdparty/crates/BUILD.fuchsia-cprng-0.1.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.fuchsia-cprng-0.1.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fuchsia_cprng",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.generic-array-0.14.7.bazel b/crate_universe/3rdparty/crates/BUILD.generic-array-0.14.7.bazel
index 0075afa..bbbc688 100644
--- a/crate_universe/3rdparty/crates/BUILD.generic-array-0.14.7.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.generic-array-0.14.7.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "generic_array",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "generic-array_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "generic-array_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "more_lengths",
     ],
@@ -94,6 +101,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -123,6 +131,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":generic-array_build_script",
+    actual = ":generic-array_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.getrandom-0.2.10.bazel b/crate_universe/3rdparty/crates/BUILD.getrandom-0.2.10.bazel
index 7c7be8d..5631432 100644
--- a/crate_universe/3rdparty/crates/BUILD.getrandom-0.2.10.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.getrandom-0.2.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "getrandom",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-0.54.1.bazel b/crate_universe/3rdparty/crates/BUILD.gix-0.54.1.bazel
index 099b62a..4e41cec 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-0.54.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-0.54.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-actor-0.27.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-actor-0.27.0.bazel
index 2639142..7695f3d 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-actor-0.27.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-actor-0.27.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_actor",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-attributes-0.19.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-attributes-0.19.0.bazel
index 42556e2..2e06008 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-attributes-0.19.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-attributes-0.19.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_attributes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-bitmap-0.2.7.bazel b/crate_universe/3rdparty/crates/BUILD.gix-bitmap-0.2.7.bazel
index 86b167b..4940aad 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-bitmap-0.2.7.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-bitmap-0.2.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_bitmap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-chunk-0.4.4.bazel b/crate_universe/3rdparty/crates/BUILD.gix-chunk-0.4.4.bazel
index 43aa199..d8b1f58 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-chunk-0.4.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-chunk-0.4.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_chunk",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-command-0.2.10.bazel b/crate_universe/3rdparty/crates/BUILD.gix-command-0.2.10.bazel
index bece43d..1bcd3ad 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-command-0.2.10.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-command-0.2.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_command",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-commitgraph-0.21.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-commitgraph-0.21.0.bazel
index 2137b3b..4932ce0 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-commitgraph-0.21.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-commitgraph-0.21.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_commitgraph",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-config-0.30.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-config-0.30.0.bazel
index 3273414..47fadb5 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-config-0.30.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-config-0.30.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_config",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-config-value-0.14.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-config-value-0.14.0.bazel
index ba3b68d..062ad91 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-config-value-0.14.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-config-value-0.14.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_config_value",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-credentials-0.20.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-credentials-0.20.0.bazel
index 8893011..8a7a324 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-credentials-0.20.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-credentials-0.20.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_credentials",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-date-0.8.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-date-0.8.0.bazel
index b80a638..5fa2018 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-date-0.8.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-date-0.8.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_date",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-diff-0.36.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-diff-0.36.0.bazel
index 82e5a1e..f04c0f4 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-diff-0.36.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-diff-0.36.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_diff",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-discover-0.25.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-discover-0.25.0.bazel
index 6d539ab..0b689d1 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-discover-0.25.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-discover-0.25.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_discover",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-features-0.35.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-features-0.35.0.bazel
index 4b47668..7adcd38 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-features-0.35.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-features-0.35.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_features",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-filter-0.5.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-filter-0.5.0.bazel
index cbad0b6..0b3a074 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-filter-0.5.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-filter-0.5.0.bazel
@@ -12,12 +12,16 @@
 
 rust_library(
     name = "gix_filter",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     aliases = {
         "@cui__gix-packetline-blocking-0.16.6//:gix_packetline_blocking": "gix_packetline",
     },
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-fs-0.7.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-fs-0.7.0.bazel
index 5dd4129..2ba076f 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-fs-0.7.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-fs-0.7.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_fs",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-glob-0.13.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-glob-0.13.0.bazel
index 0d41494..67b25d9 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-glob-0.13.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-glob-0.13.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_glob",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-hash-0.13.1.bazel b/crate_universe/3rdparty/crates/BUILD.gix-hash-0.13.1.bazel
index 66038fc..3affd7e 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-hash-0.13.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-hash-0.13.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_hash",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-hashtable-0.4.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-hashtable-0.4.0.bazel
index 5ebc5e6..a1f966b 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-hashtable-0.4.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-hashtable-0.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_hashtable",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-ignore-0.8.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-ignore-0.8.0.bazel
index 83c24da..2f66df8 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-ignore-0.8.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-ignore-0.8.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_ignore",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-index-0.25.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-index-0.25.0.bazel
index 359d164..c14d1d6 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-index-0.25.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-index-0.25.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_index",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-lock-10.0.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-lock-10.0.0.bazel
index dfcdbad..51aec87 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-lock-10.0.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-lock-10.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_lock",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-macros-0.1.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-macros-0.1.0.bazel
index b68111c..754241c 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-macros-0.1.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-macros-0.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "gix_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-negotiate-0.8.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-negotiate-0.8.0.bazel
index 4006175..248a2be 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-negotiate-0.8.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-negotiate-0.8.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_negotiate",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-object-0.37.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-object-0.37.0.bazel
index 9ae6dd8..e7ed7a4 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-object-0.37.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-object-0.37.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_object",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-odb-0.53.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-odb-0.53.0.bazel
index 7f28e62..0379b4f 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-odb-0.53.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-odb-0.53.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_odb",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-pack-0.43.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-pack-0.43.0.bazel
index 1d66b2a..27e6284 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-pack-0.43.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-pack-0.43.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_pack",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-packetline-0.16.7.bazel b/crate_universe/3rdparty/crates/BUILD.gix-packetline-0.16.7.bazel
index 3d03cbf..3fd12fd 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-packetline-0.16.7.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-packetline-0.16.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_packetline",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-packetline-blocking-0.16.6.bazel b/crate_universe/3rdparty/crates/BUILD.gix-packetline-blocking-0.16.6.bazel
index 94d343f..bcc0cc6 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-packetline-blocking-0.16.6.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-packetline-blocking-0.16.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_packetline_blocking",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-path-0.10.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-path-0.10.0.bazel
index 523ec82..449ee64 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-path-0.10.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-path-0.10.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_path",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-pathspec-0.3.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-pathspec-0.3.0.bazel
index 92bc9c8..8387e9e 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-pathspec-0.3.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-pathspec-0.3.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_pathspec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-prompt-0.7.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-prompt-0.7.0.bazel
index 05a3cd3..5ec0771 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-prompt-0.7.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-prompt-0.7.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_prompt",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-protocol-0.40.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-protocol-0.40.0.bazel
index 1c176d4..058e478 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-protocol-0.40.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-protocol-0.40.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_protocol",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-quote-0.4.7.bazel b/crate_universe/3rdparty/crates/BUILD.gix-quote-0.4.7.bazel
index 9967f34..840763b 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-quote-0.4.7.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-quote-0.4.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-ref-0.37.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-ref-0.37.0.bazel
index 00aa777..759c286 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-ref-0.37.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-ref-0.37.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_ref",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-refspec-0.18.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-refspec-0.18.0.bazel
index 368f53b..8638081 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-refspec-0.18.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-refspec-0.18.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_refspec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-revision-0.22.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-revision-0.22.0.bazel
index 3b3e2fb..a6c4955 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-revision-0.22.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-revision-0.22.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_revision",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-revwalk-0.8.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-revwalk-0.8.0.bazel
index 2e92efb..8154bba 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-revwalk-0.8.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-revwalk-0.8.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_revwalk",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-sec-0.10.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-sec-0.10.0.bazel
index d1c01d0..1c71dac 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-sec-0.10.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-sec-0.10.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_sec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-submodule-0.4.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-submodule-0.4.0.bazel
index eea986a..fe042a4 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-submodule-0.4.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-submodule-0.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_submodule",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-tempfile-10.0.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-tempfile-10.0.0.bazel
index 950c5d2..781c2dd 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-tempfile-10.0.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-tempfile-10.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_tempfile",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-trace-0.1.3.bazel b/crate_universe/3rdparty/crates/BUILD.gix-trace-0.1.3.bazel
index 1a3a0b0..bc76b63 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-trace-0.1.3.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-trace-0.1.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_trace",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-transport-0.37.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-transport-0.37.0.bazel
index 1e8ecc2..3521c0e 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-transport-0.37.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-transport-0.37.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_transport",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-traverse-0.33.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-traverse-0.33.0.bazel
index 7ee222b..62b7a5e 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-traverse-0.33.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-traverse-0.33.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_traverse",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-url-0.24.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-url-0.24.0.bazel
index 154bd67..fbb74c9 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-url-0.24.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-url-0.24.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_url",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-utils-0.1.5.bazel b/crate_universe/3rdparty/crates/BUILD.gix-utils-0.1.5.bazel
index c5c928b..84058d0 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-utils-0.1.5.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-utils-0.1.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_utils",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-validate-0.8.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-validate-0.8.0.bazel
index f0ead3e..be1e320 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-validate-0.8.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-validate-0.8.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_validate",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.gix-worktree-0.26.0.bazel b/crate_universe/3rdparty/crates/BUILD.gix-worktree-0.26.0.bazel
index c33c15c..c138904 100644
--- a/crate_universe/3rdparty/crates/BUILD.gix-worktree-0.26.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.gix-worktree-0.26.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gix_worktree",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.globset-0.4.11.bazel b/crate_universe/3rdparty/crates/BUILD.globset-0.4.11.bazel
index 6b550a4..32d2faa 100644
--- a/crate_universe/3rdparty/crates/BUILD.globset-0.4.11.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.globset-0.4.11.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "globset",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.globwalk-0.8.1.bazel b/crate_universe/3rdparty/crates/BUILD.globwalk-0.8.1.bazel
index 692347d..1a4c289 100644
--- a/crate_universe/3rdparty/crates/BUILD.globwalk-0.8.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.globwalk-0.8.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "globwalk",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.hashbrown-0.14.3.bazel b/crate_universe/3rdparty/crates/BUILD.hashbrown-0.14.3.bazel
index 3c2e5d1..669d231 100644
--- a/crate_universe/3rdparty/crates/BUILD.hashbrown-0.14.3.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.hashbrown-0.14.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hashbrown",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.heck-0.4.1.bazel b/crate_universe/3rdparty/crates/BUILD.heck-0.4.1.bazel
index 8535c02..0a5ca83 100644
--- a/crate_universe/3rdparty/crates/BUILD.heck-0.4.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.heck-0.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "heck",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.hermit-abi-0.3.2.bazel b/crate_universe/3rdparty/crates/BUILD.hermit-abi-0.3.2.bazel
index cc4c6bc..b4061d1 100644
--- a/crate_universe/3rdparty/crates/BUILD.hermit-abi-0.3.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.hermit-abi-0.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.hex-0.4.3.bazel b/crate_universe/3rdparty/crates/BUILD.hex-0.4.3.bazel
index e53c7f4..38b223e 100644
--- a/crate_universe/3rdparty/crates/BUILD.hex-0.4.3.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.hex-0.4.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.home-0.5.5.bazel b/crate_universe/3rdparty/crates/BUILD.home-0.5.5.bazel
index 33f7e75..6d3121d 100644
--- a/crate_universe/3rdparty/crates/BUILD.home-0.5.5.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.home-0.5.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "home",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.humansize-2.1.3.bazel b/crate_universe/3rdparty/crates/BUILD.humansize-2.1.3.bazel
index e033dcf..0de39d6 100644
--- a/crate_universe/3rdparty/crates/BUILD.humansize-2.1.3.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.humansize-2.1.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "humansize",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.iana-time-zone-0.1.57.bazel b/crate_universe/3rdparty/crates/BUILD.iana-time-zone-0.1.57.bazel
index 90f60a4..28874ce 100644
--- a/crate_universe/3rdparty/crates/BUILD.iana-time-zone-0.1.57.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.iana-time-zone-0.1.57.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "iana_time_zone",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.iana-time-zone-haiku-0.1.2.bazel b/crate_universe/3rdparty/crates/BUILD.iana-time-zone-haiku-0.1.2.bazel
index f9a48f3..5cf23f2 100644
--- a/crate_universe/3rdparty/crates/BUILD.iana-time-zone-haiku-0.1.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.iana-time-zone-haiku-0.1.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "iana_time_zone_haiku",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "iana-time-zone-haiku_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "iana-time-zone-haiku_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -116,6 +124,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":iana-time-zone-haiku_build_script",
+    actual = ":iana-time-zone-haiku_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.idna-0.4.0.bazel b/crate_universe/3rdparty/crates/BUILD.idna-0.4.0.bazel
index 6245442..2e5e85b 100644
--- a/crate_universe/3rdparty/crates/BUILD.idna-0.4.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.idna-0.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "idna",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.ignore-0.4.18.bazel b/crate_universe/3rdparty/crates/BUILD.ignore-0.4.18.bazel
index 6ac42ef..2c8b154 100644
--- a/crate_universe/3rdparty/crates/BUILD.ignore-0.4.18.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.ignore-0.4.18.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ignore",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.indexmap-2.1.0.bazel b/crate_universe/3rdparty/crates/BUILD.indexmap-2.1.0.bazel
index b4fd33b..2a28799 100644
--- a/crate_universe/3rdparty/crates/BUILD.indexmap-2.1.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.indexmap-2.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "indexmap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.indoc-2.0.4.bazel b/crate_universe/3rdparty/crates/BUILD.indoc-2.0.4.bazel
index d9e3546..a83db95 100644
--- a/crate_universe/3rdparty/crates/BUILD.indoc-2.0.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.indoc-2.0.4.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "indoc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel b/crate_universe/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
index a843830..3484d23 100644
--- a/crate_universe/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "io_lifetimes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -192,8 +196,11 @@
 )
 
 cargo_build_script(
-    name = "io-lifetimes_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "io-lifetimes_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "close",
         "default",
@@ -205,6 +212,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -231,6 +239,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":io-lifetimes_build_script",
+    actual = ":io-lifetimes_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.is-terminal-0.4.7.bazel b/crate_universe/3rdparty/crates/BUILD.is-terminal-0.4.7.bazel
index 503b9f4..5615c10 100644
--- a/crate_universe/3rdparty/crates/BUILD.is-terminal-0.4.7.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.is-terminal-0.4.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "is_terminal",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.itertools-0.12.0.bazel b/crate_universe/3rdparty/crates/BUILD.itertools-0.12.0.bazel
index 31f76df..9c1273c 100644
--- a/crate_universe/3rdparty/crates/BUILD.itertools-0.12.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.itertools-0.12.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "itertools",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.itoa-1.0.8.bazel b/crate_universe/3rdparty/crates/BUILD.itoa-1.0.8.bazel
index 5058656..9136680 100644
--- a/crate_universe/3rdparty/crates/BUILD.itoa-1.0.8.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.itoa-1.0.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "itoa",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.js-sys-0.3.64.bazel b/crate_universe/3rdparty/crates/BUILD.js-sys-0.3.64.bazel
index 35d1e77..de4e55a 100644
--- a/crate_universe/3rdparty/crates/BUILD.js-sys-0.3.64.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.js-sys-0.3.64.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "js_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.jwalk-0.8.1.bazel b/crate_universe/3rdparty/crates/BUILD.jwalk-0.8.1.bazel
index 8c8bd0b..a291838 100644
--- a/crate_universe/3rdparty/crates/BUILD.jwalk-0.8.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.jwalk-0.8.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "jwalk",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel b/crate_universe/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
index a3f03ac..2688613 100644
--- a/crate_universe/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "lazy_static",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.libc-0.2.149.bazel b/crate_universe/3rdparty/crates/BUILD.libc-0.2.149.bazel
index 33b80f6..07336ea 100644
--- a/crate_universe/3rdparty/crates/BUILD.libc-0.2.149.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.libc-0.2.149.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -177,8 +181,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -279,6 +286,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -305,6 +313,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.libm-0.2.7.bazel b/crate_universe/3rdparty/crates/BUILD.libm-0.2.7.bazel
index 98e716c..715d436 100644
--- a/crate_universe/3rdparty/crates/BUILD.libm-0.2.7.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.libm-0.2.7.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -84,8 +88,11 @@
 )
 
 cargo_build_script(
-    name = "libm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
     ],
@@ -93,6 +100,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -119,6 +127,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libm_build_script",
+    actual = ":libm_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel b/crate_universe/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
index 69ab37a..4dff3b8 100644
--- a/crate_universe/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "linux_raw_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.linux-raw-sys-0.4.10.bazel b/crate_universe/3rdparty/crates/BUILD.linux-raw-sys-0.4.10.bazel
index fb33284..295e54d 100644
--- a/crate_universe/3rdparty/crates/BUILD.linux-raw-sys-0.4.10.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.linux-raw-sys-0.4.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "linux_raw_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.lock_api-0.4.11.bazel b/crate_universe/3rdparty/crates/BUILD.lock_api-0.4.11.bazel
index a94a06c..91a3518 100644
--- a/crate_universe/3rdparty/crates/BUILD.lock_api-0.4.11.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.lock_api-0.4.11.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "lock_api",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "lock_api_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "lock_api_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "atomic_usize",
         "default",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -125,6 +133,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":lock_api_build_script",
+    actual = ":lock_api_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.log-0.4.19.bazel b/crate_universe/3rdparty/crates/BUILD.log-0.4.19.bazel
index 105d51d..2dbceeb 100644
--- a/crate_universe/3rdparty/crates/BUILD.log-0.4.19.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.log-0.4.19.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.maplit-1.0.2.bazel b/crate_universe/3rdparty/crates/BUILD.maplit-1.0.2.bazel
index 98a7ab8..d8f1f68 100644
--- a/crate_universe/3rdparty/crates/BUILD.maplit-1.0.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.maplit-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "maplit",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.maybe-async-0.2.7.bazel b/crate_universe/3rdparty/crates/BUILD.maybe-async-0.2.7.bazel
index 9f53535..d53f258 100644
--- a/crate_universe/3rdparty/crates/BUILD.maybe-async-0.2.7.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.maybe-async-0.2.7.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "maybe_async",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.memchr-2.6.4.bazel b/crate_universe/3rdparty/crates/BUILD.memchr-2.6.4.bazel
index 82138ab..3f21aed 100644
--- a/crate_universe/3rdparty/crates/BUILD.memchr-2.6.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.memchr-2.6.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "memchr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.memmap2-0.7.1.bazel b/crate_universe/3rdparty/crates/BUILD.memmap2-0.7.1.bazel
index 1fb45b6..676fcfb 100644
--- a/crate_universe/3rdparty/crates/BUILD.memmap2-0.7.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.memmap2-0.7.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "memmap2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.memoffset-0.9.0.bazel b/crate_universe/3rdparty/crates/BUILD.memoffset-0.9.0.bazel
index 109a364..85f37dc 100644
--- a/crate_universe/3rdparty/crates/BUILD.memoffset-0.9.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.memoffset-0.9.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "memoffset",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -84,8 +88,11 @@
 )
 
 cargo_build_script(
-    name = "memoffset_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "memoffset_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
     ],
@@ -93,6 +100,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":memoffset_build_script",
+    actual = ":memoffset_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.miniz_oxide-0.7.1.bazel b/crate_universe/3rdparty/crates/BUILD.miniz_oxide-0.7.1.bazel
index 45f76c9..297b832 100644
--- a/crate_universe/3rdparty/crates/BUILD.miniz_oxide-0.7.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.miniz_oxide-0.7.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "miniz_oxide",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.normpath-1.1.1.bazel b/crate_universe/3rdparty/crates/BUILD.normpath-1.1.1.bazel
index 38acf5e..0fa263a 100644
--- a/crate_universe/3rdparty/crates/BUILD.normpath-1.1.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.normpath-1.1.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "normpath",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.nu-ansi-term-0.46.0.bazel b/crate_universe/3rdparty/crates/BUILD.nu-ansi-term-0.46.0.bazel
index f5080b3..24a7ed0 100644
--- a/crate_universe/3rdparty/crates/BUILD.nu-ansi-term-0.46.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.nu-ansi-term-0.46.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "nu_ansi_term",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.num-0.1.42.bazel b/crate_universe/3rdparty/crates/BUILD.num-0.1.42.bazel
index 09a4501..aaedd29 100644
--- a/crate_universe/3rdparty/crates/BUILD.num-0.1.42.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.num-0.1.42.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.num-bigint-0.1.44.bazel b/crate_universe/3rdparty/crates/BUILD.num-bigint-0.1.44.bazel
index ba9c3ae..2a1ebfe 100644
--- a/crate_universe/3rdparty/crates/BUILD.num-bigint-0.1.44.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.num-bigint-0.1.44.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_bigint",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.num-complex-0.1.43.bazel b/crate_universe/3rdparty/crates/BUILD.num-complex-0.1.43.bazel
index f933ce7..cdbdc8f 100644
--- a/crate_universe/3rdparty/crates/BUILD.num-complex-0.1.43.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.num-complex-0.1.43.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_complex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.num-integer-0.1.45.bazel b/crate_universe/3rdparty/crates/BUILD.num-integer-0.1.45.bazel
index b5e4d11..41b380a 100644
--- a/crate_universe/3rdparty/crates/BUILD.num-integer-0.1.45.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.num-integer-0.1.45.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "num_integer",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "num-integer_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "num-integer_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -125,6 +133,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":num-integer_build_script",
+    actual = ":num-integer_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.num-iter-0.1.43.bazel b/crate_universe/3rdparty/crates/BUILD.num-iter-0.1.43.bazel
index ce0a415..4126830 100644
--- a/crate_universe/3rdparty/crates/BUILD.num-iter-0.1.43.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.num-iter-0.1.43.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "num_iter",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -87,8 +91,11 @@
 )
 
 cargo_build_script(
-    name = "num-iter_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "num-iter_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -97,6 +104,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -126,6 +134,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":num-iter_build_script",
+    actual = ":num-iter_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.num-rational-0.1.42.bazel b/crate_universe/3rdparty/crates/BUILD.num-rational-0.1.42.bazel
index 0867744..70f0cae 100644
--- a/crate_universe/3rdparty/crates/BUILD.num-rational-0.1.42.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.num-rational-0.1.42.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_rational",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.num-traits-0.2.15.bazel b/crate_universe/3rdparty/crates/BUILD.num-traits-0.2.15.bazel
index dae9925..ee292fc 100644
--- a/crate_universe/3rdparty/crates/BUILD.num-traits-0.2.15.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.num-traits-0.2.15.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "num_traits",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "num-traits_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "num-traits_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -124,6 +132,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":num-traits_build_script",
+    actual = ":num-traits_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.num_threads-0.1.6.bazel b/crate_universe/3rdparty/crates/BUILD.num_threads-0.1.6.bazel
index 332acec..dba4493 100644
--- a/crate_universe/3rdparty/crates/BUILD.num_threads-0.1.6.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.num_threads-0.1.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_threads",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.once_cell-1.18.0.bazel b/crate_universe/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
index 2fd7a1a..712fce0 100644
--- a/crate_universe/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "once_cell",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.overload-0.1.1.bazel b/crate_universe/3rdparty/crates/BUILD.overload-0.1.1.bazel
index f6002cb..235aac2 100644
--- a/crate_universe/3rdparty/crates/BUILD.overload-0.1.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.overload-0.1.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "overload",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.parking_lot-0.12.1.bazel b/crate_universe/3rdparty/crates/BUILD.parking_lot-0.12.1.bazel
index 967502b..c4f565a 100644
--- a/crate_universe/3rdparty/crates/BUILD.parking_lot-0.12.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.parking_lot-0.12.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "parking_lot",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.parking_lot_core-0.9.9.bazel b/crate_universe/3rdparty/crates/BUILD.parking_lot_core-0.9.9.bazel
index 9a472e4..e5bd179 100644
--- a/crate_universe/3rdparty/crates/BUILD.parking_lot_core-0.9.9.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.parking_lot_core-0.9.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "parking_lot_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -166,12 +170,16 @@
 )
 
 cargo_build_script(
-    name = "parking_lot_core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "parking_lot_core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -198,6 +206,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":parking_lot_core_build_script",
+    actual = ":parking_lot_core_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.parse-zoneinfo-0.3.0.bazel b/crate_universe/3rdparty/crates/BUILD.parse-zoneinfo-0.3.0.bazel
index 9c29f0d..75356b0 100644
--- a/crate_universe/3rdparty/crates/BUILD.parse-zoneinfo-0.3.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.parse-zoneinfo-0.3.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "parse_zoneinfo",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.pathdiff-0.2.1.bazel b/crate_universe/3rdparty/crates/BUILD.pathdiff-0.2.1.bazel
index 51b424f..8e25de0 100644
--- a/crate_universe/3rdparty/crates/BUILD.pathdiff-0.2.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.pathdiff-0.2.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pathdiff",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.percent-encoding-2.3.0.bazel b/crate_universe/3rdparty/crates/BUILD.percent-encoding-2.3.0.bazel
index e03814d..3cd8908 100644
--- a/crate_universe/3rdparty/crates/BUILD.percent-encoding-2.3.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.percent-encoding-2.3.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "percent_encoding",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.pest-2.7.0.bazel b/crate_universe/3rdparty/crates/BUILD.pest-2.7.0.bazel
index 78605cf..d94278a 100644
--- a/crate_universe/3rdparty/crates/BUILD.pest-2.7.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.pest-2.7.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pest",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.pest_derive-2.7.0.bazel b/crate_universe/3rdparty/crates/BUILD.pest_derive-2.7.0.bazel
index e9ba129..61d7802 100644
--- a/crate_universe/3rdparty/crates/BUILD.pest_derive-2.7.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.pest_derive-2.7.0.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "pest_derive",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.pest_generator-2.7.0.bazel b/crate_universe/3rdparty/crates/BUILD.pest_generator-2.7.0.bazel
index 2b9b39c..8b77d8a 100644
--- a/crate_universe/3rdparty/crates/BUILD.pest_generator-2.7.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.pest_generator-2.7.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pest_generator",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.pest_meta-2.7.0.bazel b/crate_universe/3rdparty/crates/BUILD.pest_meta-2.7.0.bazel
index add9224..5578ae6 100644
--- a/crate_universe/3rdparty/crates/BUILD.pest_meta-2.7.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.pest_meta-2.7.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pest_meta",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.phf-0.11.2.bazel b/crate_universe/3rdparty/crates/BUILD.phf-0.11.2.bazel
index 8ace25f..848ddbc 100644
--- a/crate_universe/3rdparty/crates/BUILD.phf-0.11.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.phf-0.11.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "phf",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.phf_codegen-0.11.2.bazel b/crate_universe/3rdparty/crates/BUILD.phf_codegen-0.11.2.bazel
index 3699a14..d3a9d84 100644
--- a/crate_universe/3rdparty/crates/BUILD.phf_codegen-0.11.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.phf_codegen-0.11.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "phf_codegen",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.phf_generator-0.11.2.bazel b/crate_universe/3rdparty/crates/BUILD.phf_generator-0.11.2.bazel
index bfa77a0..8d42ea1 100644
--- a/crate_universe/3rdparty/crates/BUILD.phf_generator-0.11.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.phf_generator-0.11.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "phf_generator",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.phf_shared-0.11.2.bazel b/crate_universe/3rdparty/crates/BUILD.phf_shared-0.11.2.bazel
index a14f7d2..f1dadf0 100644
--- a/crate_universe/3rdparty/crates/BUILD.phf_shared-0.11.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.phf_shared-0.11.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "phf_shared",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.pin-project-lite-0.2.13.bazel b/crate_universe/3rdparty/crates/BUILD.pin-project-lite-0.2.13.bazel
index 12b1949..e0afaac 100644
--- a/crate_universe/3rdparty/crates/BUILD.pin-project-lite-0.2.13.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.pin-project-lite-0.2.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_project_lite",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.powerfmt-0.2.0.bazel b/crate_universe/3rdparty/crates/BUILD.powerfmt-0.2.0.bazel
index e850b28..e2831c2 100644
--- a/crate_universe/3rdparty/crates/BUILD.powerfmt-0.2.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.powerfmt-0.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "powerfmt",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.ppv-lite86-0.2.17.bazel b/crate_universe/3rdparty/crates/BUILD.ppv-lite86-0.2.17.bazel
index dcc0898..9ab552b 100644
--- a/crate_universe/3rdparty/crates/BUILD.ppv-lite86-0.2.17.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.ppv-lite86-0.2.17.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ppv_lite86",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.proc-macro2-1.0.64.bazel b/crate_universe/3rdparty/crates/BUILD.proc-macro2-1.0.64.bazel
index c8019ca..d60c5dc 100644
--- a/crate_universe/3rdparty/crates/BUILD.proc-macro2-1.0.64.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.proc-macro2-1.0.64.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "proc-macro2_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro2_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro2_build_script",
+    actual = ":proc-macro2_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.prodash-26.2.2.bazel b/crate_universe/3rdparty/crates/BUILD.prodash-26.2.2.bazel
index d676b61..a0f4b15 100644
--- a/crate_universe/3rdparty/crates/BUILD.prodash-26.2.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.prodash-26.2.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "prodash",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.quote-1.0.29.bazel b/crate_universe/3rdparty/crates/BUILD.quote-1.0.29.bazel
index 86d1e16..30c9a8b 100644
--- a/crate_universe/3rdparty/crates/BUILD.quote-1.0.29.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.quote-1.0.29.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "quote_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "quote_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":quote_build_script",
+    actual = ":quote_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.rand-0.4.6.bazel b/crate_universe/3rdparty/crates/BUILD.rand-0.4.6.bazel
index deb3a50..d9506bd 100644
--- a/crate_universe/3rdparty/crates/BUILD.rand-0.4.6.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rand-0.4.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.rand-0.8.5.bazel b/crate_universe/3rdparty/crates/BUILD.rand-0.8.5.bazel
index ec10796..cf42a50 100644
--- a/crate_universe/3rdparty/crates/BUILD.rand-0.8.5.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rand-0.8.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.rand_chacha-0.3.1.bazel b/crate_universe/3rdparty/crates/BUILD.rand_chacha-0.3.1.bazel
index a88b9ec..857a673 100644
--- a/crate_universe/3rdparty/crates/BUILD.rand_chacha-0.3.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rand_chacha-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand_chacha",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.rand_core-0.3.1.bazel b/crate_universe/3rdparty/crates/BUILD.rand_core-0.3.1.bazel
index 325a890..ecca760 100644
--- a/crate_universe/3rdparty/crates/BUILD.rand_core-0.3.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rand_core-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.rand_core-0.4.2.bazel b/crate_universe/3rdparty/crates/BUILD.rand_core-0.4.2.bazel
index 5292c75..5a20bb3 100644
--- a/crate_universe/3rdparty/crates/BUILD.rand_core-0.4.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rand_core-0.4.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.rand_core-0.6.4.bazel b/crate_universe/3rdparty/crates/BUILD.rand_core-0.6.4.bazel
index 4959b59..904dcfb 100644
--- a/crate_universe/3rdparty/crates/BUILD.rand_core-0.6.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rand_core-0.6.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.rayon-1.8.0.bazel b/crate_universe/3rdparty/crates/BUILD.rayon-1.8.0.bazel
index 097db34..a1279e3 100644
--- a/crate_universe/3rdparty/crates/BUILD.rayon-1.8.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rayon-1.8.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rayon",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.rayon-core-1.12.0.bazel b/crate_universe/3rdparty/crates/BUILD.rayon-core-1.12.0.bazel
index 8e21506..7d7ad04 100644
--- a/crate_universe/3rdparty/crates/BUILD.rayon-core-1.12.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rayon-core-1.12.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "rayon_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -83,12 +87,16 @@
 )
 
 cargo_build_script(
-    name = "rayon-core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rayon-core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -116,6 +124,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rayon-core_build_script",
+    actual = ":rayon-core_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.rdrand-0.4.0.bazel b/crate_universe/3rdparty/crates/BUILD.rdrand-0.4.0.bazel
index c0ae659..1b74522 100644
--- a/crate_universe/3rdparty/crates/BUILD.rdrand-0.4.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rdrand-0.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rdrand",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.redox_syscall-0.3.5.bazel b/crate_universe/3rdparty/crates/BUILD.redox_syscall-0.3.5.bazel
index 06ad12a..75cf539 100644
--- a/crate_universe/3rdparty/crates/BUILD.redox_syscall-0.3.5.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.redox_syscall-0.3.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syscall",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.redox_syscall-0.4.1.bazel b/crate_universe/3rdparty/crates/BUILD.redox_syscall-0.4.1.bazel
index c520a1d..366b56e 100644
--- a/crate_universe/3rdparty/crates/BUILD.redox_syscall-0.4.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.redox_syscall-0.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syscall",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.regex-1.10.2.bazel b/crate_universe/3rdparty/crates/BUILD.regex-1.10.2.bazel
index f11c355..040eec1 100644
--- a/crate_universe/3rdparty/crates/BUILD.regex-1.10.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.regex-1.10.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.regex-automata-0.3.3.bazel b/crate_universe/3rdparty/crates/BUILD.regex-automata-0.3.3.bazel
index 75e8412..5b53cc5 100644
--- a/crate_universe/3rdparty/crates/BUILD.regex-automata-0.3.3.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.regex-automata-0.3.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex_automata",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.regex-automata-0.4.3.bazel b/crate_universe/3rdparty/crates/BUILD.regex-automata-0.4.3.bazel
index 8374dda..dc2c91d 100644
--- a/crate_universe/3rdparty/crates/BUILD.regex-automata-0.4.3.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.regex-automata-0.4.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex_automata",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.regex-syntax-0.8.2.bazel b/crate_universe/3rdparty/crates/BUILD.regex-syntax-0.8.2.bazel
index f2506ae..e6593b5 100644
--- a/crate_universe/3rdparty/crates/BUILD.regex-syntax-0.8.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.regex-syntax-0.8.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex_syntax",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.rustc-hash-1.1.0.bazel b/crate_universe/3rdparty/crates/BUILD.rustc-hash-1.1.0.bazel
index 5482050..4323246 100644
--- a/crate_universe/3rdparty/crates/BUILD.rustc-hash-1.1.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rustc-hash-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rustc_hash",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.rustc-serialize-0.3.25.bazel b/crate_universe/3rdparty/crates/BUILD.rustc-serialize-0.3.25.bazel
index dde3975..87c2f1b 100644
--- a/crate_universe/3rdparty/crates/BUILD.rustc-serialize-0.3.25.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rustc-serialize-0.3.25.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rustc_serialize",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.rustix-0.37.23.bazel b/crate_universe/3rdparty/crates/BUILD.rustix-0.37.23.bazel
index 046f85f..9fe7b56 100644
--- a/crate_universe/3rdparty/crates/BUILD.rustix-0.37.23.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rustix-0.37.23.bazel
@@ -13,7 +13,10 @@
 
 rust_library(
     name = "rustix",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     aliases = select({
         "@rules_rust//rust/platform:aarch64-apple-darwin": {
             "@cui__errno-0.3.1//:errno": "libc_errno",  # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = "linux", any(target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"), all(target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64"))))))))
@@ -100,6 +103,7 @@
     }),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -319,8 +323,11 @@
 )
 
 cargo_build_script(
-    name = "rustix_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rustix_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "io-lifetimes",
@@ -333,6 +340,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -359,6 +367,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rustix_build_script",
+    actual = ":rustix_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.rustix-0.38.21.bazel b/crate_universe/3rdparty/crates/BUILD.rustix-0.38.21.bazel
index 969dba0..6ef4583 100644
--- a/crate_universe/3rdparty/crates/BUILD.rustix-0.38.21.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.rustix-0.38.21.bazel
@@ -13,7 +13,10 @@
 
 rust_library(
     name = "rustix",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     aliases = select({
         "@rules_rust//rust/platform:aarch64-apple-darwin": {
             "@cui__errno-0.3.1//:errno": "libc_errno",  # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = "linux", target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "riscv64", all(rustix_use_experimental_asm, target_arch = "powerpc64"), all(rustix_use_experimental_asm, target_arch = "mips"), all(rustix_use_experimental_asm, target_arch = "mips32r6"), all(rustix_use_experimental_asm, target_arch = "mips64"), all(rustix_use_experimental_asm, target_arch = "mips64r6"), target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64")))))))
@@ -100,6 +103,7 @@
     }),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -384,8 +388,11 @@
 )
 
 cargo_build_script(
-    name = "rustix_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rustix_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "alloc",
         "default",
@@ -471,6 +478,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -497,6 +505,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rustix_build_script",
+    actual = ":rustix_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.ryu-1.0.14.bazel b/crate_universe/3rdparty/crates/BUILD.ryu-1.0.14.bazel
index f3822df..27a1bc9 100644
--- a/crate_universe/3rdparty/crates/BUILD.ryu-1.0.14.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.ryu-1.0.14.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ryu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.same-file-1.0.6.bazel b/crate_universe/3rdparty/crates/BUILD.same-file-1.0.6.bazel
index 2c78ad2..f0a26cb 100644
--- a/crate_universe/3rdparty/crates/BUILD.same-file-1.0.6.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.same-file-1.0.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "same_file",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.scopeguard-1.2.0.bazel b/crate_universe/3rdparty/crates/BUILD.scopeguard-1.2.0.bazel
index d93a70e..d200aa9 100644
--- a/crate_universe/3rdparty/crates/BUILD.scopeguard-1.2.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.scopeguard-1.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "scopeguard",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.semver-1.0.20.bazel b/crate_universe/3rdparty/crates/BUILD.semver-1.0.20.bazel
index 28717f9..924e0e5 100644
--- a/crate_universe/3rdparty/crates/BUILD.semver-1.0.20.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.semver-1.0.20.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "semver",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -87,8 +91,11 @@
 )
 
 cargo_build_script(
-    name = "semver_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "semver_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "serde",
@@ -98,6 +105,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -124,6 +132,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":semver_build_script",
+    actual = ":semver_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.serde-1.0.190.bazel b/crate_universe/3rdparty/crates/BUILD.serde-1.0.190.bazel
index 5da7918..50b2ca0 100644
--- a/crate_universe/3rdparty/crates/BUILD.serde-1.0.190.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.serde-1.0.190.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -91,8 +95,11 @@
 )
 
 cargo_build_script(
-    name = "serde_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "derive",
@@ -104,6 +111,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -130,6 +138,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":serde_build_script",
+    actual = ":serde_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.serde_derive-1.0.190.bazel b/crate_universe/3rdparty/crates/BUILD.serde_derive-1.0.190.bazel
index 5b2ef09..c38e91c 100644
--- a/crate_universe/3rdparty/crates/BUILD.serde_derive-1.0.190.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.serde_derive-1.0.190.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "serde_derive",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.serde_json-1.0.108.bazel b/crate_universe/3rdparty/crates/BUILD.serde_json-1.0.108.bazel
index fa2d9ea..4db6b4a 100644
--- a/crate_universe/3rdparty/crates/BUILD.serde_json-1.0.108.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.serde_json-1.0.108.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde_json",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -89,8 +93,11 @@
 )
 
 cargo_build_script(
-    name = "serde_json_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_json_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -100,6 +107,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -126,6 +134,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":serde_json_build_script",
+    actual = ":serde_json_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.serde_spanned-0.6.5.bazel b/crate_universe/3rdparty/crates/BUILD.serde_spanned-0.6.5.bazel
index 6d8c750..71c364a 100644
--- a/crate_universe/3rdparty/crates/BUILD.serde_spanned-0.6.5.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.serde_spanned-0.6.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "serde_spanned",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.serde_starlark-0.1.14.bazel b/crate_universe/3rdparty/crates/BUILD.serde_starlark-0.1.14.bazel
index 416bdba..a75faf3 100644
--- a/crate_universe/3rdparty/crates/BUILD.serde_starlark-0.1.14.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.serde_starlark-0.1.14.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "serde_starlark",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.sha1_smol-1.0.0.bazel b/crate_universe/3rdparty/crates/BUILD.sha1_smol-1.0.0.bazel
index da93269..2fa9130 100644
--- a/crate_universe/3rdparty/crates/BUILD.sha1_smol-1.0.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.sha1_smol-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "sha1_smol",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.sha2-0.10.8.bazel b/crate_universe/3rdparty/crates/BUILD.sha2-0.10.8.bazel
index 95b9479..bd7e935 100644
--- a/crate_universe/3rdparty/crates/BUILD.sha2-0.10.8.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.sha2-0.10.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "sha2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.sharded-slab-0.1.7.bazel b/crate_universe/3rdparty/crates/BUILD.sharded-slab-0.1.7.bazel
index 2484c65..069cc51 100644
--- a/crate_universe/3rdparty/crates/BUILD.sharded-slab-0.1.7.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.sharded-slab-0.1.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "sharded_slab",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.siphasher-0.3.10.bazel b/crate_universe/3rdparty/crates/BUILD.siphasher-0.3.10.bazel
index e0da186..f4e303f 100644
--- a/crate_universe/3rdparty/crates/BUILD.siphasher-0.3.10.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.siphasher-0.3.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "siphasher",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.slug-0.1.4.bazel b/crate_universe/3rdparty/crates/BUILD.slug-0.1.4.bazel
index ae4ea1b..0825a42 100644
--- a/crate_universe/3rdparty/crates/BUILD.slug-0.1.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.slug-0.1.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "slug",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.smallvec-1.11.0.bazel b/crate_universe/3rdparty/crates/BUILD.smallvec-1.11.0.bazel
index 29bf0a7..25c9e7f 100644
--- a/crate_universe/3rdparty/crates/BUILD.smallvec-1.11.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.smallvec-1.11.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "smallvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.smawk-0.3.1.bazel b/crate_universe/3rdparty/crates/BUILD.smawk-0.3.1.bazel
index 095a7cf..d1cd354 100644
--- a/crate_universe/3rdparty/crates/BUILD.smawk-0.3.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.smawk-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "smawk",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.smol_str-0.2.0.bazel b/crate_universe/3rdparty/crates/BUILD.smol_str-0.2.0.bazel
index 5f94d75..ea0369d 100644
--- a/crate_universe/3rdparty/crates/BUILD.smol_str-0.2.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.smol_str-0.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "smol_str",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.spdx-0.10.3.bazel b/crate_universe/3rdparty/crates/BUILD.spdx-0.10.3.bazel
index 222dc77..434aafe 100644
--- a/crate_universe/3rdparty/crates/BUILD.spdx-0.10.3.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.spdx-0.10.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "spdx",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.spectral-0.6.0.bazel b/crate_universe/3rdparty/crates/BUILD.spectral-0.6.0.bazel
index 83eef51..aef41e7 100644
--- a/crate_universe/3rdparty/crates/BUILD.spectral-0.6.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.spectral-0.6.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "spectral",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.strsim-0.10.0.bazel b/crate_universe/3rdparty/crates/BUILD.strsim-0.10.0.bazel
index 736ecdc..13eae12 100644
--- a/crate_universe/3rdparty/crates/BUILD.strsim-0.10.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.strsim-0.10.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "strsim",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.syn-1.0.109.bazel b/crate_universe/3rdparty/crates/BUILD.syn-1.0.109.bazel
index b1ac3c8..eb4fa49 100644
--- a/crate_universe/3rdparty/crates/BUILD.syn-1.0.109.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.syn-1.0.109.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -95,8 +99,11 @@
 )
 
 cargo_build_script(
-    name = "syn_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "syn_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "clone-impls",
         "default",
@@ -112,6 +119,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -138,6 +146,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":syn_build_script",
+    actual = ":syn_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.syn-2.0.32.bazel b/crate_universe/3rdparty/crates/BUILD.syn-2.0.32.bazel
index 809e1cd..23b83ed 100644
--- a/crate_universe/3rdparty/crates/BUILD.syn-2.0.32.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.syn-2.0.32.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.tempfile-3.8.1.bazel b/crate_universe/3rdparty/crates/BUILD.tempfile-3.8.1.bazel
index 303b3b1..a5c00b0 100644
--- a/crate_universe/3rdparty/crates/BUILD.tempfile-3.8.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.tempfile-3.8.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tempfile",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.tera-1.19.1.bazel b/crate_universe/3rdparty/crates/BUILD.tera-1.19.1.bazel
index 572113f..6455bb0 100644
--- a/crate_universe/3rdparty/crates/BUILD.tera-1.19.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.tera-1.19.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tera",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.textwrap-0.16.0.bazel b/crate_universe/3rdparty/crates/BUILD.textwrap-0.16.0.bazel
index 7e98339..26db9ea 100644
--- a/crate_universe/3rdparty/crates/BUILD.textwrap-0.16.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.textwrap-0.16.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "textwrap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.thiserror-1.0.50.bazel b/crate_universe/3rdparty/crates/BUILD.thiserror-1.0.50.bazel
index 09fbf38..c005a35 100644
--- a/crate_universe/3rdparty/crates/BUILD.thiserror-1.0.50.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.thiserror-1.0.50.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "thiserror",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -84,12 +88,16 @@
 )
 
 cargo_build_script(
-    name = "thiserror_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "thiserror_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -116,6 +124,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":thiserror_build_script",
+    actual = ":thiserror_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.thiserror-impl-1.0.50.bazel b/crate_universe/3rdparty/crates/BUILD.thiserror-impl-1.0.50.bazel
index 97b0097..deaa499 100644
--- a/crate_universe/3rdparty/crates/BUILD.thiserror-impl-1.0.50.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.thiserror-impl-1.0.50.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "thiserror_impl",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.thread_local-1.1.4.bazel b/crate_universe/3rdparty/crates/BUILD.thread_local-1.1.4.bazel
index 3c5e06b..b19b477 100644
--- a/crate_universe/3rdparty/crates/BUILD.thread_local-1.1.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.thread_local-1.1.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "thread_local",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.time-0.3.30.bazel b/crate_universe/3rdparty/crates/BUILD.time-0.3.30.bazel
index 461c4b8..025a2e5 100644
--- a/crate_universe/3rdparty/crates/BUILD.time-0.3.30.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.time-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "time",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.time-core-0.1.2.bazel b/crate_universe/3rdparty/crates/BUILD.time-core-0.1.2.bazel
index f82d3db..791803b 100644
--- a/crate_universe/3rdparty/crates/BUILD.time-core-0.1.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.time-core-0.1.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "time_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.time-macros-0.2.15.bazel b/crate_universe/3rdparty/crates/BUILD.time-macros-0.2.15.bazel
index 211822a..55feead 100644
--- a/crate_universe/3rdparty/crates/BUILD.time-macros-0.2.15.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.time-macros-0.2.15.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "time_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.tinyvec-1.6.0.bazel b/crate_universe/3rdparty/crates/BUILD.tinyvec-1.6.0.bazel
index ca47cb5..f227825 100644
--- a/crate_universe/3rdparty/crates/BUILD.tinyvec-1.6.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.tinyvec-1.6.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tinyvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.tinyvec_macros-0.1.1.bazel b/crate_universe/3rdparty/crates/BUILD.tinyvec_macros-0.1.1.bazel
index 524e5ac..12db9aa 100644
--- a/crate_universe/3rdparty/crates/BUILD.tinyvec_macros-0.1.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.tinyvec_macros-0.1.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tinyvec_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.toml-0.7.6.bazel b/crate_universe/3rdparty/crates/BUILD.toml-0.7.6.bazel
index cfabc7f..31e36c6 100644
--- a/crate_universe/3rdparty/crates/BUILD.toml-0.7.6.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.toml-0.7.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "toml",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.toml-0.8.10.bazel b/crate_universe/3rdparty/crates/BUILD.toml-0.8.10.bazel
index 8eb5eb9..4194396 100644
--- a/crate_universe/3rdparty/crates/BUILD.toml-0.8.10.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.toml-0.8.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "toml",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.toml_datetime-0.6.5.bazel b/crate_universe/3rdparty/crates/BUILD.toml_datetime-0.6.5.bazel
index 0088e94..91dfaf4 100644
--- a/crate_universe/3rdparty/crates/BUILD.toml_datetime-0.6.5.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.toml_datetime-0.6.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "toml_datetime",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.toml_edit-0.19.13.bazel b/crate_universe/3rdparty/crates/BUILD.toml_edit-0.19.13.bazel
index 2a0897e..c38784c 100644
--- a/crate_universe/3rdparty/crates/BUILD.toml_edit-0.19.13.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.toml_edit-0.19.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "toml_edit",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.toml_edit-0.22.4.bazel b/crate_universe/3rdparty/crates/BUILD.toml_edit-0.22.4.bazel
index 73617ff..a25f309 100644
--- a/crate_universe/3rdparty/crates/BUILD.toml_edit-0.22.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.toml_edit-0.22.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "toml_edit",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.tracing-0.1.40.bazel b/crate_universe/3rdparty/crates/BUILD.tracing-0.1.40.bazel
index 0588abf..7cd1068 100644
--- a/crate_universe/3rdparty/crates/BUILD.tracing-0.1.40.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.tracing-0.1.40.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.tracing-attributes-0.1.27.bazel b/crate_universe/3rdparty/crates/BUILD.tracing-attributes-0.1.27.bazel
index 70c829a..abd597e 100644
--- a/crate_universe/3rdparty/crates/BUILD.tracing-attributes-0.1.27.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.tracing-attributes-0.1.27.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "tracing_attributes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.tracing-core-0.1.32.bazel b/crate_universe/3rdparty/crates/BUILD.tracing-core-0.1.32.bazel
index 994e28d..7e7e9f9 100644
--- a/crate_universe/3rdparty/crates/BUILD.tracing-core-0.1.32.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.tracing-core-0.1.32.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.tracing-log-0.1.4.bazel b/crate_universe/3rdparty/crates/BUILD.tracing-log-0.1.4.bazel
index d1cc407..1679e9a 100644
--- a/crate_universe/3rdparty/crates/BUILD.tracing-log-0.1.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.tracing-log-0.1.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.tracing-subscriber-0.3.17.bazel b/crate_universe/3rdparty/crates/BUILD.tracing-subscriber-0.3.17.bazel
index 96aa077..bb85593 100644
--- a/crate_universe/3rdparty/crates/BUILD.tracing-subscriber-0.3.17.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.tracing-subscriber-0.3.17.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_subscriber",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.typenum-1.16.0.bazel b/crate_universe/3rdparty/crates/BUILD.typenum-1.16.0.bazel
index ff94042..9031608 100644
--- a/crate_universe/3rdparty/crates/BUILD.typenum-1.16.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.typenum-1.16.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "typenum",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "typenum_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "typenum_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_main",
     crate_root = "build/main.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_main",
-    actual = ":typenum_build_script",
+    actual = ":typenum_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.ucd-trie-0.1.6.bazel b/crate_universe/3rdparty/crates/BUILD.ucd-trie-0.1.6.bazel
index f057e55..2238a38 100644
--- a/crate_universe/3rdparty/crates/BUILD.ucd-trie-0.1.6.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.ucd-trie-0.1.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ucd_trie",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.uluru-3.0.0.bazel b/crate_universe/3rdparty/crates/BUILD.uluru-3.0.0.bazel
index 797a0cb..3eeb026 100644
--- a/crate_universe/3rdparty/crates/BUILD.uluru-3.0.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.uluru-3.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "uluru",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.unic-char-property-0.9.0.bazel b/crate_universe/3rdparty/crates/BUILD.unic-char-property-0.9.0.bazel
index 0fca9f8..9a8f03a 100644
--- a/crate_universe/3rdparty/crates/BUILD.unic-char-property-0.9.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.unic-char-property-0.9.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unic_char_property",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.unic-char-range-0.9.0.bazel b/crate_universe/3rdparty/crates/BUILD.unic-char-range-0.9.0.bazel
index a072e89..33da796 100644
--- a/crate_universe/3rdparty/crates/BUILD.unic-char-range-0.9.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.unic-char-range-0.9.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unic_char_range",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.unic-common-0.9.0.bazel b/crate_universe/3rdparty/crates/BUILD.unic-common-0.9.0.bazel
index 7573a12..eb7f04d 100644
--- a/crate_universe/3rdparty/crates/BUILD.unic-common-0.9.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.unic-common-0.9.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unic_common",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.unic-segment-0.9.0.bazel b/crate_universe/3rdparty/crates/BUILD.unic-segment-0.9.0.bazel
index 8b488a2..5aa1964 100644
--- a/crate_universe/3rdparty/crates/BUILD.unic-segment-0.9.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.unic-segment-0.9.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unic_segment",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.unic-ucd-segment-0.9.0.bazel b/crate_universe/3rdparty/crates/BUILD.unic-ucd-segment-0.9.0.bazel
index c60b3ea..49626d3 100644
--- a/crate_universe/3rdparty/crates/BUILD.unic-ucd-segment-0.9.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.unic-ucd-segment-0.9.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unic_ucd_segment",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.unic-ucd-version-0.9.0.bazel b/crate_universe/3rdparty/crates/BUILD.unic-ucd-version-0.9.0.bazel
index 881992a..1253e18 100644
--- a/crate_universe/3rdparty/crates/BUILD.unic-ucd-version-0.9.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.unic-ucd-version-0.9.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unic_ucd_version",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.unicode-bidi-0.3.13.bazel b/crate_universe/3rdparty/crates/BUILD.unicode-bidi-0.3.13.bazel
index d74df18..0a11b45 100644
--- a/crate_universe/3rdparty/crates/BUILD.unicode-bidi-0.3.13.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.unicode-bidi-0.3.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_bidi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.unicode-bom-2.0.2.bazel b/crate_universe/3rdparty/crates/BUILD.unicode-bom-2.0.2.bazel
index 260dc33..a0acad3 100644
--- a/crate_universe/3rdparty/crates/BUILD.unicode-bom-2.0.2.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.unicode-bom-2.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_bom",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.unicode-ident-1.0.10.bazel b/crate_universe/3rdparty/crates/BUILD.unicode-ident-1.0.10.bazel
index d9b26d4..4341228 100644
--- a/crate_universe/3rdparty/crates/BUILD.unicode-ident-1.0.10.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.unicode-ident-1.0.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_ident",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.unicode-linebreak-0.1.5.bazel b/crate_universe/3rdparty/crates/BUILD.unicode-linebreak-0.1.5.bazel
index e1357d1..d1cb550 100644
--- a/crate_universe/3rdparty/crates/BUILD.unicode-linebreak-0.1.5.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.unicode-linebreak-0.1.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_linebreak",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.unicode-normalization-0.1.22.bazel b/crate_universe/3rdparty/crates/BUILD.unicode-normalization-0.1.22.bazel
index 67e6d98..fb30bba 100644
--- a/crate_universe/3rdparty/crates/BUILD.unicode-normalization-0.1.22.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.unicode-normalization-0.1.22.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_normalization",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.unicode-width-0.1.10.bazel b/crate_universe/3rdparty/crates/BUILD.unicode-width-0.1.10.bazel
index 0497cd4..5265ba1 100644
--- a/crate_universe/3rdparty/crates/BUILD.unicode-width-0.1.10.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.unicode-width-0.1.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_width",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.url-2.4.0.bazel b/crate_universe/3rdparty/crates/BUILD.url-2.4.0.bazel
index 81e02ef..2a9ae72 100644
--- a/crate_universe/3rdparty/crates/BUILD.url-2.4.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.url-2.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "url",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.utf8parse-0.2.1.bazel b/crate_universe/3rdparty/crates/BUILD.utf8parse-0.2.1.bazel
index 87e8876..457eb58 100644
--- a/crate_universe/3rdparty/crates/BUILD.utf8parse-0.2.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.utf8parse-0.2.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "utf8parse",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.valuable-0.1.0.bazel b/crate_universe/3rdparty/crates/BUILD.valuable-0.1.0.bazel
index 8b25119..e694e6b 100644
--- a/crate_universe/3rdparty/crates/BUILD.valuable-0.1.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.valuable-0.1.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "valuable",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "valuable_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "valuable_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":valuable_build_script",
+    actual = ":valuable_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.version_check-0.9.4.bazel b/crate_universe/3rdparty/crates/BUILD.version_check-0.9.4.bazel
index e708e1b..60896d1 100644
--- a/crate_universe/3rdparty/crates/BUILD.version_check-0.9.4.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.version_check-0.9.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "version_check",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.walkdir-2.3.3.bazel b/crate_universe/3rdparty/crates/BUILD.walkdir-2.3.3.bazel
index 18c6aa4..8ea2146 100644
--- a/crate_universe/3rdparty/crates/BUILD.walkdir-2.3.3.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.walkdir-2.3.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "walkdir",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel b/crate_universe/3rdparty/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
index ba761f3..4436951 100644
--- a/crate_universe/3rdparty/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-0.2.87.bazel b/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-0.2.87.bazel
index 374eabe..3ce1724 100644
--- a/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-0.2.87.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-0.2.87.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "wasm_bindgen",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,12 +89,16 @@
 )
 
 cargo_build_script(
-    name = "wasm-bindgen_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "wasm-bindgen_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -117,6 +125,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":wasm-bindgen_build_script",
+    actual = ":wasm-bindgen_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-backend-0.2.87.bazel b/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-backend-0.2.87.bazel
index 55b7310..6a56b38 100644
--- a/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-backend-0.2.87.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-backend-0.2.87.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasm_bindgen_backend",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-macro-0.2.87.bazel b/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-macro-0.2.87.bazel
index 44cc4dd..9570e32 100644
--- a/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-macro-0.2.87.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-macro-0.2.87.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "wasm_bindgen_macro",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-macro-support-0.2.87.bazel b/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-macro-support-0.2.87.bazel
index 6bc1cd9..5d5491e 100644
--- a/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-macro-support-0.2.87.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-macro-support-0.2.87.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasm_bindgen_macro_support",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-shared-0.2.87.bazel b/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-shared-0.2.87.bazel
index 28c5155..57e0669 100644
--- a/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-shared-0.2.87.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.wasm-bindgen-shared-0.2.87.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "wasm_bindgen_shared",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "wasm-bindgen-shared_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "wasm-bindgen-shared_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -114,6 +122,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":wasm-bindgen-shared_build_script",
+    actual = ":wasm-bindgen-shared_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.winapi-0.3.9.bazel b/crate_universe/3rdparty/crates/BUILD.winapi-0.3.9.bazel
index 291e0cf..55f08f4 100644
--- a/crate_universe/3rdparty/crates/BUILD.winapi-0.3.9.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.winapi-0.3.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -99,8 +103,11 @@
 )
 
 cargo_build_script(
-    name = "winapi_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "consoleapi",
         "errhandlingapi",
@@ -123,6 +130,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -149,6 +157,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi_build_script",
+    actual = ":winapi_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/crate_universe/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
index 6ae2873..7c514eb 100644
--- a/crate_universe/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_i686_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-i686-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-i686-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-i686-pc-windows-gnu_build_script",
+    actual = ":winapi-i686-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel b/crate_universe/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel
index 5f03c86..164ab8c 100644
--- a/crate_universe/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "winapi_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/crate_universe/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
index 412394a..97f4859 100644
--- a/crate_universe/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_x86_64_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-x86_64-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-x86_64-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-x86_64-pc-windows-gnu_build_script",
+    actual = ":winapi-x86_64-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.windows-0.48.0.bazel b/crate_universe/3rdparty/crates/BUILD.windows-0.48.0.bazel
index 883f6a6..3d28891 100644
--- a/crate_universe/3rdparty/crates/BUILD.windows-0.48.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.windows-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel b/crate_universe/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
index 3a6c255..c1a7d88 100644
--- a/crate_universe/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.windows-targets-0.48.1.bazel b/crate_universe/3rdparty/crates/BUILD.windows-targets-0.48.1.bazel
index 5d3ac9a..9abd50f 100644
--- a/crate_universe/3rdparty/crates/BUILD.windows-targets-0.48.1.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.windows-targets-0.48.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel b/crate_universe/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
index 5a40145..0a702a6 100644
--- a/crate_universe/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel b/crate_universe/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
index 19483f1..98a26f0 100644
--- a/crate_universe/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel b/crate_universe/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
index 72c2745..1041257 100644
--- a/crate_universe/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel b/crate_universe/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
index b595d8f..c17adbc 100644
--- a/crate_universe/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel b/crate_universe/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
index 04f66c3..68116b3 100644
--- a/crate_universe/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel b/crate_universe/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
index efa533c..7775985 100644
--- a/crate_universe/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel b/crate_universe/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
index 152fd7c..632e80c 100644
--- a/crate_universe/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/crate_universe/3rdparty/crates/BUILD.winnow-0.5.18.bazel b/crate_universe/3rdparty/crates/BUILD.winnow-0.5.18.bazel
index 207f1c5..725baec 100644
--- a/crate_universe/3rdparty/crates/BUILD.winnow-0.5.18.bazel
+++ b/crate_universe/3rdparty/crates/BUILD.winnow-0.5.18.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "winnow",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/crate_universe/3rdparty/crates/defs.bzl b/crate_universe/3rdparty/crates/defs.bzl
index f5c0c39..83fa4c9 100644
--- a/crate_universe/3rdparty/crates/defs.bzl
+++ b/crate_universe/3rdparty/crates/defs.bzl
@@ -295,45 +295,45 @@
 _NORMAL_DEPENDENCIES = {
     "crate_universe": {
         _COMMON_CONDITION: {
-            "anyhow": "@cui__anyhow-1.0.75//:anyhow",
-            "camino": "@cui__camino-1.1.6//:camino",
-            "cargo-lock": "@cui__cargo-lock-9.0.0//:cargo_lock",
-            "cargo-platform": "@cui__cargo-platform-0.1.4//:cargo_platform",
-            "cargo_metadata": "@cui__cargo_metadata-0.18.1//:cargo_metadata",
-            "cargo_toml": "@cui__cargo_toml-0.17.1//:cargo_toml",
-            "cfg-expr": "@cui__cfg-expr-0.15.5//:cfg_expr",
-            "clap": "@cui__clap-4.3.11//:clap",
-            "crates-index": "@cui__crates-index-2.2.0//:crates_index",
-            "hex": "@cui__hex-0.4.3//:hex",
-            "itertools": "@cui__itertools-0.12.0//:itertools",
-            "normpath": "@cui__normpath-1.1.1//:normpath",
-            "pathdiff": "@cui__pathdiff-0.2.1//:pathdiff",
-            "regex": "@cui__regex-1.10.2//:regex",
-            "semver": "@cui__semver-1.0.20//:semver",
-            "serde": "@cui__serde-1.0.190//:serde",
-            "serde_json": "@cui__serde_json-1.0.108//:serde_json",
-            "serde_starlark": "@cui__serde_starlark-0.1.14//:serde_starlark",
-            "sha2": "@cui__sha2-0.10.8//:sha2",
-            "spdx": "@cui__spdx-0.10.3//:spdx",
-            "tempfile": "@cui__tempfile-3.8.1//:tempfile",
-            "tera": "@cui__tera-1.19.1//:tera",
-            "textwrap": "@cui__textwrap-0.16.0//:textwrap",
-            "toml": "@cui__toml-0.8.10//:toml",
-            "tracing": "@cui__tracing-0.1.40//:tracing",
-            "tracing-subscriber": "@cui__tracing-subscriber-0.3.17//:tracing_subscriber",
+            "anyhow": Label("@cui__anyhow-1.0.75//:anyhow"),
+            "camino": Label("@cui__camino-1.1.6//:camino"),
+            "cargo-lock": Label("@cui__cargo-lock-9.0.0//:cargo_lock"),
+            "cargo-platform": Label("@cui__cargo-platform-0.1.4//:cargo_platform"),
+            "cargo_metadata": Label("@cui__cargo_metadata-0.18.1//:cargo_metadata"),
+            "cargo_toml": Label("@cui__cargo_toml-0.17.1//:cargo_toml"),
+            "cfg-expr": Label("@cui__cfg-expr-0.15.5//:cfg_expr"),
+            "clap": Label("@cui__clap-4.3.11//:clap"),
+            "crates-index": Label("@cui__crates-index-2.2.0//:crates_index"),
+            "hex": Label("@cui__hex-0.4.3//:hex"),
+            "itertools": Label("@cui__itertools-0.12.0//:itertools"),
+            "normpath": Label("@cui__normpath-1.1.1//:normpath"),
+            "pathdiff": Label("@cui__pathdiff-0.2.1//:pathdiff"),
+            "regex": Label("@cui__regex-1.10.2//:regex"),
+            "semver": Label("@cui__semver-1.0.20//:semver"),
+            "serde": Label("@cui__serde-1.0.190//:serde"),
+            "serde_json": Label("@cui__serde_json-1.0.108//:serde_json"),
+            "serde_starlark": Label("@cui__serde_starlark-0.1.14//:serde_starlark"),
+            "sha2": Label("@cui__sha2-0.10.8//:sha2"),
+            "spdx": Label("@cui__spdx-0.10.3//:spdx"),
+            "tempfile": Label("@cui__tempfile-3.8.1//:tempfile"),
+            "tera": Label("@cui__tera-1.19.1//:tera"),
+            "textwrap": Label("@cui__textwrap-0.16.0//:textwrap"),
+            "toml": Label("@cui__toml-0.8.10//:toml"),
+            "tracing": Label("@cui__tracing-0.1.40//:tracing"),
+            "tracing-subscriber": Label("@cui__tracing-subscriber-0.3.17//:tracing_subscriber"),
         },
     },
     "crate_universe/tools/cross_installer": {
         _COMMON_CONDITION: {
-            "clap": "@cui__clap-4.3.11//:clap",
+            "clap": Label("@cui__clap-4.3.11//:clap"),
         },
     },
     "crate_universe/tools/urls_generator": {
         _COMMON_CONDITION: {
-            "clap": "@cui__clap-4.3.11//:clap",
-            "hex": "@cui__hex-0.4.3//:hex",
-            "serde_json": "@cui__serde_json-1.0.108//:serde_json",
-            "sha2": "@cui__sha2-0.10.8//:sha2",
+            "clap": Label("@cui__clap-4.3.11//:clap"),
+            "hex": Label("@cui__hex-0.4.3//:hex"),
+            "serde_json": Label("@cui__serde_json-1.0.108//:serde_json"),
+            "sha2": Label("@cui__sha2-0.10.8//:sha2"),
         },
     },
 }
@@ -356,8 +356,8 @@
 _NORMAL_DEV_DEPENDENCIES = {
     "crate_universe": {
         _COMMON_CONDITION: {
-            "maplit": "@cui__maplit-1.0.2//:maplit",
-            "spectral": "@cui__spectral-0.6.0//:spectral",
+            "maplit": Label("@cui__maplit-1.0.2//:maplit"),
+            "spectral": Label("@cui__spectral-0.6.0//:spectral"),
         },
     },
     "crate_universe/tools/cross_installer": {
@@ -380,7 +380,7 @@
 _PROC_MACRO_DEPENDENCIES = {
     "crate_universe": {
         _COMMON_CONDITION: {
-            "indoc": "@cui__indoc-2.0.4//:indoc",
+            "indoc": Label("@cui__indoc-2.0.4//:indoc"),
         },
     },
     "crate_universe/tools/cross_installer": {
diff --git a/crate_universe/Cargo.lock b/crate_universe/Cargo.lock
index ffd54e1..41e2b5f 100644
--- a/crate_universe/Cargo.lock
+++ b/crate_universe/Cargo.lock
@@ -169,7 +169,7 @@
 
 [[package]]
 name = "cargo-bazel"
-version = "0.10.0"
+version = "0.11.0"
 dependencies = [
  "anyhow",
  "camino",
diff --git a/crate_universe/Cargo.toml b/crate_universe/Cargo.toml
index 8aa9deb..2c71ef7 100644
--- a/crate_universe/Cargo.toml
+++ b/crate_universe/Cargo.toml
@@ -7,7 +7,7 @@
 
 [package]
 name = "cargo-bazel"
-version = "0.10.0"
+version = "0.11.0"
 authors = [
     "Andre Brisco - andre.brisco@protonmail.com",
 ]
diff --git a/crate_universe/DEVELOPMENT.md b/crate_universe/DEVELOPMENT.md
index a03540b..a146daa 100644
--- a/crate_universe/DEVELOPMENT.md
+++ b/crate_universe/DEVELOPMENT.md
@@ -31,3 +31,12 @@
 other than developing `rules_rust` directly.
 
 [cbr]: https://bazelbuild.github.io/rules_rust/cargo.html#cargo_bootstrap_repository
+
+## Updating vendored crates
+
+A lot of crates are vendored into this repo, e.g. in examples and tests. To
+re-vendor them all, a bash script is provided:
+
+```sh
+bazel run //crate_universe/tools:vendor
+```
diff --git a/crate_universe/extension.bzl b/crate_universe/extension.bzl
index 9117f6c..8e6b816 100644
--- a/crate_universe/extension.bzl
+++ b/crate_universe/extension.bzl
@@ -46,7 +46,6 @@
 
     rendering_config = json.decode(render_config(
         regen_command = "Run 'cargo update [--workspace]'",
-        crate_label_template = "@@rules_rust~override~crate~{repository}__{name}-{version}//:{target}",
     ))
     config_file = tag_path.get_child("config.json")
     module_ctx.file(
diff --git a/crate_universe/private/crates_repository.bzl b/crate_universe/private/crates_repository.bzl
index e785343..0a3de51 100644
--- a/crate_universe/private/crates_repository.bzl
+++ b/crate_universe/private/crates_repository.bzl
@@ -125,8 +125,8 @@
 
 ```text
 [workspace]/
-    WORKSPACE
-    BUILD
+    WORKSPACE.bazel
+    BUILD.bazel
     Cargo.toml
     Cargo.Bazel.lock
     src/
@@ -183,7 +183,8 @@
 | Any of [`true`, `1`, `yes`, `on`, `workspace`] | `cargo update --workspace` |
 | Any of [`full`, `eager`, `all`] | `cargo update` |
 | `package_name` | `cargo upgrade --package package_name` |
-| `package_name@1.2.3` | `cargo upgrade --package package_name --precise 1.2.3` |
+| `package_name@1.2.3` | `cargo upgrade --package package_name@1.2.3` |
+| `package_name@1.2.3=4.5.6` | `cargo upgrade --package package_name@1.2.3 --precise=4.5.6` |
 
 If the `crates_repository` is used multiple times in the same Bazel workspace (e.g. for multiple independent
 Rust workspaces), it may additionally be useful to use the `CARGO_BAZEL_REPIN_ONLY` environment variable, which
diff --git a/crate_universe/private/module_extensions/cargo_bazel_bootstrap.bzl b/crate_universe/private/module_extensions/cargo_bazel_bootstrap.bzl
index 28b6e12..ae98cb8 100644
--- a/crate_universe/private/module_extensions/cargo_bazel_bootstrap.bzl
+++ b/crate_universe/private/module_extensions/cargo_bazel_bootstrap.bzl
@@ -1,6 +1,8 @@
 """Module extension for bootstrapping cargo-bazel."""
 
 load("//crate_universe:deps_bootstrap.bzl", _cargo_bazel_bootstrap_repo_rule = "cargo_bazel_bootstrap")
+load("//rust/platform:triple.bzl", "get_host_triple")
+load("//rust/platform:triple_mappings.bzl", "system_to_binary_ext")
 
 def _cargo_bazel_bootstrap_impl(_):
     _cargo_bazel_bootstrap_repo_rule(
@@ -23,8 +25,11 @@
         A function that can be called to execute cargo_bazel.
     """
 
-    cargo_path = str(module_ctx.path(Label("@rust_host_tools//:bin/cargo")))
-    rustc_path = str(module_ctx.path(Label("@rust_host_tools//:bin/rustc")))
+    host_triple = get_host_triple(module_ctx)
+    binary_ext = system_to_binary_ext(host_triple.system)
+
+    cargo_path = str(module_ctx.path(Label("@rust_host_tools//:bin/cargo{}".format(binary_ext))))
+    rustc_path = str(module_ctx.path(Label("@rust_host_tools//:bin/rustc{}".format(binary_ext))))
     cargo_bazel = module_ctx.path(Label("@cargo_bazel_bootstrap//:cargo-bazel"))
 
     # Placing this as a nested function allows users to call this right at the
diff --git a/crate_universe/private/srcs.bzl b/crate_universe/private/srcs.bzl
index ecd5a8b..1d5933c 100644
--- a/crate_universe/private/srcs.bzl
+++ b/crate_universe/private/srcs.bzl
@@ -6,6 +6,8 @@
 # Run 'bazel run //crate_universe/private:srcs_module.install' to regenerate.
 
 CARGO_BAZEL_SRCS = [
+    Label("//crate_universe:src/api.rs"),
+    Label("//crate_universe:src/api/lockfile.rs"),
     Label("//crate_universe:src/cli.rs"),
     Label("//crate_universe:src/cli/generate.rs"),
     Label("//crate_universe:src/cli/query.rs"),
diff --git a/crate_universe/src/api.rs b/crate_universe/src/api.rs
new file mode 100644
index 0000000..0b36d1c
--- /dev/null
+++ b/crate_universe/src/api.rs
@@ -0,0 +1,4 @@
+//! Module api provides a publicly consumable API over rules_rust's crate_universe.
+//! While it has no formal compatibility guarantees, it is much less likely to break than other types in this library.
+
+pub mod lockfile;
diff --git a/crate_universe/src/api/lockfile.rs b/crate_universe/src/api/lockfile.rs
new file mode 100644
index 0000000..0c7a1df
--- /dev/null
+++ b/crate_universe/src/api/lockfile.rs
@@ -0,0 +1,220 @@
+//! The lockfile::public module represents a reasonable stable API for inspecting the contents of a lockfile which others can code against.
+
+use std::collections::BTreeSet;
+use std::fs::File;
+use std::io::BufReader;
+use std::path::Path;
+
+use anyhow::Result;
+use serde::Deserialize;
+
+pub use crate::config::CrateId;
+use crate::context::crate_context::{CrateDependency, Rule};
+use crate::context::{CommonAttributes, Context};
+use crate::select::Select;
+
+/// Parse a lockfile at a path on disk.
+pub fn parse(path: &Path) -> Result<impl CargoBazelLockfile> {
+    let reader = BufReader::new(File::open(path)?);
+    let lockfile: CargoBazelLockfileImpl = serde_json::from_reader(reader)?;
+    Ok(lockfile)
+}
+
+/// CargoBazelLockfile provides a view over cargo-bazel's lockfile format,
+/// providing information about the third-party dependencies of a workspace.
+/// While the lockfile's format doesn't provide any kind of compatibility guarantees over time,
+/// this type offers an interface which is likely to be publicly supportable.
+/// No formal compatibility guarantees are offered around this type - it may change at any time,
+/// but the maintainers will attempt to keep it as stable they reasonably can.
+pub trait CargoBazelLockfile {
+    /// Get the members of the local workspace.
+    /// These are typically not very interesting on their own, but can be used as roots for navigating what dependencies these crates have.
+    fn workspace_members(&self) -> BTreeSet<CrateId>;
+
+    /// Get information about a specific crate (which may be in the local workspace, or an external dependency).
+    fn crate_info(&self, crate_id: &CrateId) -> Option<CrateInfo>;
+}
+
+#[derive(Deserialize)]
+#[serde(transparent)]
+struct CargoBazelLockfileImpl(Context);
+
+impl CargoBazelLockfile for CargoBazelLockfileImpl {
+    fn workspace_members(&self) -> BTreeSet<CrateId> {
+        self.0.workspace_members.keys().cloned().collect()
+    }
+
+    fn crate_info(&self, crate_id: &CrateId) -> Option<CrateInfo> {
+        let crate_context = self.0.crates.get(crate_id)?;
+        Some(CrateInfo {
+            name: crate_context.name.clone(),
+            version: crate_context.version.clone(),
+            library_target_name: crate_context.library_target_name.clone(),
+            is_proc_macro: crate_context
+                .targets
+                .iter()
+                .any(|t| matches!(t, Rule::ProcMacro(_))),
+            common_attributes: crate_context.common_attrs.clone(),
+        })
+    }
+}
+
+/// Information about a crate (which may be in-workspace or a dependency).
+#[derive(Deserialize, PartialEq, Eq, Debug)]
+pub struct CrateInfo {
+    name: String,
+    version: semver::Version,
+    library_target_name: Option<String>,
+    is_proc_macro: bool,
+
+    common_attributes: CommonAttributes,
+}
+
+impl CrateInfo {
+    /// The name of the crate.
+    pub fn name(&self) -> &str {
+        &self.name
+    }
+
+    /// The version of the crate.
+    pub fn version(&self) -> &semver::Version {
+        &self.version
+    }
+
+    /// The name of the crate's root library target. This is the target that a dependent
+    /// would get if they were to depend on this crate.
+    pub fn library_target_name(&self) -> Option<&str> {
+        self.library_target_name.as_deref()
+    }
+
+    /// Whether the crate is a procedural macro.
+    pub fn is_proc_macro(&self) -> bool {
+        self.is_proc_macro
+    }
+
+    /// Dependencies required to compile the crate, without procedural macro dependencies.
+    pub fn normal_deps(&self) -> Select<BTreeSet<CrateDependency>> {
+        self.common_attributes.deps.clone()
+    }
+
+    /// Dependencies required to compile the tests for the crate, but not needed to compile the crate itself, without procedural macro dependencies.
+    pub fn dev_deps(&self) -> Select<BTreeSet<CrateDependency>> {
+        self.common_attributes.deps_dev.clone()
+    }
+
+    /// Procedural macro dependencies required to compile the crate.
+    pub fn proc_macro_deps(&self) -> Select<BTreeSet<CrateDependency>> {
+        self.common_attributes.proc_macro_deps.clone()
+    }
+
+    /// Procedural macro dependencies required to compile the tests for the crate, but not needed to compile the crate itself.
+    pub fn proc_macro_dev_deps(&self) -> Select<BTreeSet<CrateDependency>> {
+        self.common_attributes.proc_macro_deps_dev.clone()
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use super::{parse, CargoBazelLockfile};
+    use crate::config::CrateId;
+    use crate::context::crate_context::CrateDependency;
+    use semver::Version;
+    use std::collections::BTreeSet;
+
+    #[test]
+    fn test() {
+        let pkg_a = CrateId {
+            name: String::from("pkg_a"),
+            version: Version::new(0, 1, 0),
+        };
+
+        let want_workspace_member_names = {
+            let mut set = BTreeSet::new();
+            set.insert(pkg_a.clone());
+            set.insert(CrateId {
+                name: String::from("pkg_b"),
+                version: Version::new(0, 1, 0),
+            });
+            set.insert(CrateId {
+                name: String::from("pkg_c"),
+                version: Version::new(0, 1, 0),
+            });
+            set
+        };
+
+        let runfiles = runfiles::Runfiles::create().unwrap();
+        let path = runfiles
+            .rlocation("rules_rust/crate_universe/test_data/cargo_bazel_lockfile/multi_package-cargo-bazel-lock.json");
+
+        let parsed = parse(&path).unwrap();
+        assert_eq!(parsed.workspace_members(), want_workspace_member_names);
+
+        let got_pkg_a = parsed.crate_info(&pkg_a).unwrap();
+        assert_eq!(got_pkg_a.name(), "pkg_a");
+        assert_eq!(got_pkg_a.version(), &Version::new(0, 1, 0));
+        assert_eq!(got_pkg_a.library_target_name(), Some("pkg_a"));
+        assert!(!got_pkg_a.is_proc_macro());
+
+        let serde_derive = CrateId {
+            name: String::from("serde_derive"),
+            version: Version::new(1, 0, 152),
+        };
+        let got_serde_derive = parsed.crate_info(&serde_derive).unwrap();
+        assert_eq!(got_serde_derive.name(), "serde_derive");
+        assert_eq!(got_serde_derive.version(), &Version::new(1, 0, 152));
+        assert_eq!(got_serde_derive.library_target_name(), Some("serde_derive"));
+        assert!(got_serde_derive.is_proc_macro);
+
+        assert_eq!(
+            got_pkg_a.normal_deps().values(),
+            vec![
+                CrateDependency {
+                    id: CrateId {
+                        name: String::from("anyhow"),
+                        version: Version::new(1, 0, 69),
+                    },
+                    target: String::from("anyhow"),
+                    alias: None,
+                },
+                CrateDependency {
+                    id: CrateId {
+                        name: String::from("reqwest"),
+                        version: Version::new(0, 11, 14),
+                    },
+                    target: String::from("reqwest"),
+                    alias: None,
+                },
+            ],
+        );
+
+        let async_process = CrateId {
+            name: String::from("async-process"),
+            version: Version::new(1, 6, 0),
+        };
+        let got_async_process = parsed.crate_info(&async_process).unwrap();
+        let got_async_process_deps: BTreeSet<(Option<String>, String)> = got_async_process
+            .normal_deps()
+            .items()
+            .into_iter()
+            .map(|(config, dep)| (config, dep.id.name))
+            .collect();
+        assert_eq!(
+            got_async_process_deps,
+            vec![
+                (None, "async-lock"),
+                (None, "async-process"),
+                (None, "cfg-if"),
+                (None, "event-listener"),
+                (None, "futures-lite"),
+                (Some("cfg(unix)"), "async-io"),
+                (Some("cfg(unix)"), "libc"),
+                (Some("cfg(unix)"), "signal-hook"),
+                (Some("cfg(windows)"), "blocking"),
+                (Some("cfg(windows)"), "windows-sys"),
+            ]
+            .into_iter()
+            .map(|(config, dep)| (config.map(String::from), String::from(dep)))
+            .collect::<BTreeSet<_>>(),
+        );
+    }
+}
diff --git a/crate_universe/src/config.rs b/crate_universe/src/config.rs
index 46f075c..6a5913d 100644
--- a/crate_universe/src/config.rs
+++ b/crate_universe/src/config.rs
@@ -1,18 +1,21 @@
 //! A module for configuration information
 
+use std::cmp::Ordering;
 use std::collections::{BTreeMap, BTreeSet};
 use std::convert::AsRef;
+use std::fmt::Formatter;
 use std::iter::Sum;
 use std::ops::Add;
 use std::path::Path;
+use std::str::FromStr;
 use std::{fmt, fs};
 
-use anyhow::Result;
+use anyhow::{Context, Result};
 use cargo_lock::package::GitReference;
 use cargo_metadata::Package;
 use semver::VersionReq;
 use serde::de::value::SeqAccessDeserializer;
-use serde::de::{Deserializer, SeqAccess, Visitor};
+use serde::de::{Deserializer, SeqAccess, Unexpected, Visitor};
 use serde::{Deserialize, Serialize, Serializer};
 
 use crate::select::{Select, Selectable};
@@ -22,7 +25,7 @@
 /// Representations of different kinds of crate vendoring into workspaces.
 #[derive(Debug, Serialize, Deserialize, Clone)]
 #[serde(rename_all = "lowercase")]
-pub enum VendorMode {
+pub(crate) enum VendorMode {
     /// Crates having full source being vendored into a workspace
     Local,
 
@@ -44,58 +47,58 @@
 
 #[derive(Debug, Serialize, Deserialize, Clone)]
 #[serde(deny_unknown_fields)]
-pub struct RenderConfig {
+pub(crate) struct RenderConfig {
     /// The name of the repository being rendered
-    pub repository_name: String,
+    pub(crate) repository_name: String,
 
     /// The pattern to use for BUILD file names.
     /// Eg. `//:BUILD.{name}-{version}.bazel`
     #[serde(default = "default_build_file_template")]
-    pub build_file_template: String,
+    pub(crate) build_file_template: String,
 
     /// The pattern to use for a crate target.
     /// Eg. `@{repository}__{name}-{version}//:{target}`
     #[serde(default = "default_crate_label_template")]
-    pub crate_label_template: String,
+    pub(crate) crate_label_template: String,
 
     /// The pattern to use for the `defs.bzl` and `BUILD.bazel`
     /// file names used for the crates module.
     /// Eg. `//:{file}`
     #[serde(default = "default_crates_module_template")]
-    pub crates_module_template: String,
+    pub(crate) crates_module_template: String,
 
     /// The pattern used for a crate's repository name.
     /// Eg. `{repository}__{name}-{version}`
     #[serde(default = "default_crate_repository_template")]
-    pub crate_repository_template: String,
+    pub(crate) crate_repository_template: String,
 
     /// Default alias rule to use for packages.  Can be overridden by annotations.
     #[serde(default)]
-    pub default_alias_rule: AliasRule,
+    pub(crate) default_alias_rule: AliasRule,
 
     /// The default of the `package_name` parameter to use for the module macros like `all_crate_deps`.
     /// In general, this should be be unset to allow the macros to do auto-detection in the analysis phase.
-    pub default_package_name: Option<String>,
+    pub(crate) default_package_name: Option<String>,
 
     /// Whether to generate `target_compatible_with` annotations on the generated BUILD files.  This
     /// catches a `target_triple`being targeted that isn't declared in `supported_platform_triples`.
     #[serde(default = "default_generate_target_compatible_with")]
-    pub generate_target_compatible_with: bool,
+    pub(crate) generate_target_compatible_with: bool,
 
     /// The pattern to use for platform constraints.
     /// Eg. `@rules_rust//rust/platform:{triple}`.
     #[serde(default = "default_platforms_template")]
-    pub platforms_template: String,
+    pub(crate) platforms_template: String,
 
     /// The command to use for regenerating generated files.
-    pub regen_command: String,
+    pub(crate) regen_command: String,
 
     /// An optional configuration for rendering content to be rendered into repositories.
-    pub vendor_mode: Option<VendorMode>,
+    pub(crate) vendor_mode: Option<VendorMode>,
 
     /// Whether to generate package metadata
     #[serde(default = "default_generate_rules_license_metadata")]
-    pub generate_rules_license_metadata: bool,
+    pub(crate) generate_rules_license_metadata: bool,
 }
 
 // Default is manually implemented so that the default values match the default
@@ -150,7 +153,7 @@
 
 /// A representation of some Git identifier used to represent the "revision" or "pin" of a checkout.
 #[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, PartialOrd, Ord)]
-pub enum Commitish {
+pub(crate) enum Commitish {
     /// From a tag.
     Tag(String),
 
@@ -173,7 +176,7 @@
 
 /// Information representing deterministic identifiers for some remote asset.
 #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
-pub enum Checksumish {
+pub(crate) enum Checksumish {
     Http {
         /// The sha256 digest of an http archive
         sha256: Option<String>,
@@ -190,7 +193,7 @@
 }
 
 #[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Clone)]
-pub enum AliasRule {
+pub(crate) enum AliasRule {
     #[default]
     #[serde(rename = "alias")]
     Alias,
@@ -205,7 +208,7 @@
 }
 
 impl AliasRule {
-    pub fn bzl(&self) -> Option<String> {
+    pub(crate) fn bzl(&self) -> Option<String> {
         match self {
             AliasRule::Alias => None,
             AliasRule::Dbg | AliasRule::Fastbuild | AliasRule::Opt => {
@@ -215,7 +218,7 @@
         }
     }
 
-    pub fn rule(&self) -> String {
+    pub(crate) fn rule(&self) -> String {
         match self {
             AliasRule::Alias => "alias".to_owned(),
             AliasRule::Dbg => "transition_alias_dbg".to_owned(),
@@ -227,115 +230,115 @@
 }
 
 #[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
-pub struct CrateAnnotations {
+pub(crate) struct CrateAnnotations {
     /// Which subset of the crate's bins should get produced as `rust_binary` targets.
-    pub gen_binaries: Option<GenBinaries>,
+    pub(crate) gen_binaries: Option<GenBinaries>,
 
     /// Determins whether or not Cargo build scripts should be generated for the current package
-    pub gen_build_script: Option<bool>,
+    pub(crate) gen_build_script: Option<bool>,
 
     /// Additional data to pass to
     /// [deps](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-deps) attribute.
-    pub deps: Option<Select<BTreeSet<Label>>>,
+    pub(crate) deps: Option<Select<BTreeSet<Label>>>,
 
     /// Additional data to pass to
     /// [proc_macro_deps](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-proc_macro_deps) attribute.
-    pub proc_macro_deps: Option<Select<BTreeSet<Label>>>,
+    pub(crate) proc_macro_deps: Option<Select<BTreeSet<Label>>>,
 
     /// Additional data to pass to  the target's
     /// [crate_features](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-crate_features) attribute.
-    pub crate_features: Option<Select<BTreeSet<String>>>,
+    pub(crate) crate_features: Option<Select<BTreeSet<String>>>,
 
     /// Additional data to pass to  the target's
     /// [data](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-data) attribute.
-    pub data: Option<Select<BTreeSet<Label>>>,
+    pub(crate) data: Option<Select<BTreeSet<Label>>>,
 
     /// An optional glob pattern to set on the
     /// [data](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-data) attribute.
-    pub data_glob: Option<BTreeSet<String>>,
+    pub(crate) data_glob: Option<BTreeSet<String>>,
 
     /// Additional data to pass to
     /// [compile_data](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-compile_data) attribute.
-    pub compile_data: Option<Select<BTreeSet<Label>>>,
+    pub(crate) compile_data: Option<Select<BTreeSet<Label>>>,
 
     /// An optional glob pattern to set on the
     /// [compile_data](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-compile_data) attribute.
-    pub compile_data_glob: Option<BTreeSet<String>>,
+    pub(crate) compile_data_glob: Option<BTreeSet<String>>,
 
     /// If true, disables pipelining for library targets generated for this crate.
-    pub disable_pipelining: bool,
+    pub(crate) disable_pipelining: bool,
 
     /// Additional data to pass to  the target's
     /// [rustc_env](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-rustc_env) attribute.
-    pub rustc_env: Option<Select<BTreeMap<String, String>>>,
+    pub(crate) rustc_env: Option<Select<BTreeMap<String, String>>>,
 
     /// Additional data to pass to  the target's
     /// [rustc_env_files](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-rustc_env_files) attribute.
-    pub rustc_env_files: Option<Select<BTreeSet<String>>>,
+    pub(crate) rustc_env_files: Option<Select<BTreeSet<String>>>,
 
     /// Additional data to pass to the target's
     /// [rustc_flags](https://bazelbuild.github.io/rules_rust/defs.html#rust_library-rustc_flags) attribute.
-    pub rustc_flags: Option<Select<Vec<String>>>,
+    pub(crate) rustc_flags: Option<Select<Vec<String>>>,
 
     /// Additional dependencies to pass to a build script's
     /// [deps](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-deps) attribute.
-    pub build_script_deps: Option<Select<BTreeSet<Label>>>,
+    pub(crate) build_script_deps: Option<Select<BTreeSet<Label>>>,
 
     /// Additional data to pass to a build script's
     /// [proc_macro_deps](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-proc_macro_deps) attribute.
-    pub build_script_proc_macro_deps: Option<Select<BTreeSet<Label>>>,
+    pub(crate) build_script_proc_macro_deps: Option<Select<BTreeSet<Label>>>,
 
     /// Additional data to pass to a build script's
     /// [build_script_data](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-data) attribute.
-    pub build_script_data: Option<Select<BTreeSet<Label>>>,
+    pub(crate) build_script_data: Option<Select<BTreeSet<Label>>>,
 
     /// Additional data to pass to a build script's
     /// [tools](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-tools) attribute.
-    pub build_script_tools: Option<Select<BTreeSet<Label>>>,
+    pub(crate) build_script_tools: Option<Select<BTreeSet<Label>>>,
 
     /// An optional glob pattern to set on the
     /// [build_script_data](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-build_script_env) attribute.
-    pub build_script_data_glob: Option<BTreeSet<String>>,
+    pub(crate) build_script_data_glob: Option<BTreeSet<String>>,
 
     /// Additional environment variables to pass to a build script's
     /// [build_script_env](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-rustc_env) attribute.
-    pub build_script_env: Option<Select<BTreeMap<String, String>>>,
+    pub(crate) build_script_env: Option<Select<BTreeMap<String, String>>>,
 
     /// Additional rustc_env flags to pass to a build script's
     /// [rustc_env](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-rustc_env) attribute.
-    pub build_script_rustc_env: Option<Select<BTreeMap<String, String>>>,
+    pub(crate) build_script_rustc_env: Option<Select<BTreeMap<String, String>>>,
 
     /// Additional labels to pass to a build script's
     /// [toolchains](https://bazel.build/reference/be/common-definitions#common-attributes) attribute.
-    pub build_script_toolchains: Option<BTreeSet<Label>>,
+    pub(crate) build_script_toolchains: Option<BTreeSet<Label>>,
 
     /// Directory to run the crate's build script in. If not set, will run in the manifest directory, otherwise a directory relative to the exec root.
-    pub build_script_rundir: Option<Select<String>>,
+    pub(crate) build_script_rundir: Option<Select<String>>,
 
     /// A scratch pad used to write arbitrary text to target BUILD files.
-    pub additive_build_file_content: Option<String>,
+    pub(crate) additive_build_file_content: Option<String>,
 
     /// For git sourced crates, this is a the
     /// [git_repository::shallow_since](https://docs.bazel.build/versions/main/repo/git.html#new_git_repository-shallow_since) attribute.
-    pub shallow_since: Option<String>,
+    pub(crate) shallow_since: Option<String>,
 
     /// The `patch_args` attribute of a Bazel repository rule. See
     /// [http_archive.patch_args](https://docs.bazel.build/versions/main/repo/http.html#http_archive-patch_args)
-    pub patch_args: Option<Vec<String>>,
+    pub(crate) patch_args: Option<Vec<String>>,
 
     /// The `patch_tool` attribute of a Bazel repository rule. See
     /// [http_archive.patch_tool](https://docs.bazel.build/versions/main/repo/http.html#http_archive-patch_tool)
-    pub patch_tool: Option<String>,
+    pub(crate) patch_tool: Option<String>,
 
     /// The `patches` attribute of a Bazel repository rule. See
     /// [http_archive.patches](https://docs.bazel.build/versions/main/repo/http.html#http_archive-patches)
-    pub patches: Option<BTreeSet<String>>,
+    pub(crate) patches: Option<BTreeSet<String>>,
 
     /// Extra targets the should be aliased during rendering.
-    pub extra_aliased_targets: Option<BTreeMap<String, String>>,
+    pub(crate) extra_aliased_targets: Option<BTreeMap<String, String>>,
 
     /// Transition rule to use instead of `native.alias()`.
-    pub alias_rule: Option<AliasRule>,
+    pub(crate) alias_rule: Option<AliasRule>,
 }
 
 macro_rules! joined_extra_member {
@@ -437,25 +440,28 @@
 /// not specify a different value for the same annotation in their
 /// crates_repository attributes.
 #[derive(Debug, Deserialize)]
-pub struct AnnotationsProvidedByPackage {
-    pub gen_build_script: Option<bool>,
-    pub data: Option<Select<BTreeSet<Label>>>,
-    pub data_glob: Option<BTreeSet<String>>,
-    pub deps: Option<Select<BTreeSet<Label>>>,
-    pub compile_data: Option<Select<BTreeSet<Label>>>,
-    pub compile_data_glob: Option<BTreeSet<String>>,
-    pub rustc_env: Option<Select<BTreeMap<String, String>>>,
-    pub rustc_env_files: Option<Select<BTreeSet<String>>>,
-    pub rustc_flags: Option<Select<Vec<String>>>,
-    pub build_script_env: Option<Select<BTreeMap<String, String>>>,
-    pub build_script_rustc_env: Option<Select<BTreeMap<String, String>>>,
-    pub build_script_rundir: Option<Select<String>>,
-    pub additive_build_file_content: Option<String>,
-    pub extra_aliased_targets: Option<BTreeMap<String, String>>,
+pub(crate) struct AnnotationsProvidedByPackage {
+    pub(crate) gen_build_script: Option<bool>,
+    pub(crate) data: Option<Select<BTreeSet<Label>>>,
+    pub(crate) data_glob: Option<BTreeSet<String>>,
+    pub(crate) deps: Option<Select<BTreeSet<Label>>>,
+    pub(crate) compile_data: Option<Select<BTreeSet<Label>>>,
+    pub(crate) compile_data_glob: Option<BTreeSet<String>>,
+    pub(crate) rustc_env: Option<Select<BTreeMap<String, String>>>,
+    pub(crate) rustc_env_files: Option<Select<BTreeSet<String>>>,
+    pub(crate) rustc_flags: Option<Select<Vec<String>>>,
+    pub(crate) build_script_env: Option<Select<BTreeMap<String, String>>>,
+    pub(crate) build_script_rustc_env: Option<Select<BTreeMap<String, String>>>,
+    pub(crate) build_script_rundir: Option<Select<String>>,
+    pub(crate) additive_build_file_content: Option<String>,
+    pub(crate) extra_aliased_targets: Option<BTreeMap<String, String>>,
 }
 
 impl CrateAnnotations {
-    pub fn apply_defaults_from_package_metadata(&mut self, pkg_metadata: &serde_json::Value) {
+    pub(crate) fn apply_defaults_from_package_metadata(
+        &mut self,
+        pkg_metadata: &serde_json::Value,
+    ) {
         #[deny(unused_variables)]
         let AnnotationsProvidedByPackage {
             gen_build_script,
@@ -516,55 +522,21 @@
     pub name: String,
 
     /// The crate's semantic version
-    pub version: String,
+    pub version: semver::Version,
 }
 
 impl CrateId {
     /// Construct a new [CrateId]
-    pub fn new(name: String, version: String) -> Self {
+    pub(crate) fn new(name: String, version: semver::Version) -> Self {
         Self { name, version }
     }
-
-    /// Compares a [CrateId] against a [cargo_metadata::Package].
-    pub fn matches(&self, package: &Package) -> bool {
-        // If the package name does not match, it's obviously
-        // not the right package
-        if self.name != "*" && self.name != package.name {
-            return false;
-        }
-
-        // First see if the package version matches exactly
-        if package.version.to_string() == self.version {
-            return true;
-        }
-
-        // If the version provided is the wildcard "*", it matches. Do not
-        // delegate to the semver crate in this case because semver does not
-        // consider "*" to match prerelease packages. That's expected behavior
-        // in the context of declaring package dependencies, but not in the
-        // context of declaring which versions of preselected packages an
-        // annotation applies to.
-        if self.version == "*" {
-            return true;
-        }
-
-        // Next, check to see if the version provided is a semver req and
-        // check if the package matches the condition
-        if let Ok(semver) = VersionReq::parse(&self.version) {
-            if semver.matches(&package.version) {
-                return true;
-            }
-        }
-
-        false
-    }
 }
 
 impl From<&Package> for CrateId {
     fn from(package: &Package) -> Self {
         Self {
             name: package.name.clone(),
-            version: package.version.to_string(),
+            version: package.version.clone(),
         }
     }
 }
@@ -590,16 +562,20 @@
     where
         E: serde::de::Error,
     {
-        v.rsplit_once(' ')
-            .map(|(name, version)| CrateId {
-                name: name.to_string(),
-                version: version.to_string(),
-            })
-            .ok_or_else(|| {
-                E::custom(format!(
-                    "Expected string value of `{{name}} {{version}}`. Got '{v}'"
-                ))
-            })
+        let (name, version_str) = v.rsplit_once(' ').ok_or_else(|| {
+            E::custom(format!(
+                "Expected string value of `{{name}} {{version}}`. Got '{v}'"
+            ))
+        })?;
+        let version = semver::Version::parse(version_str).map_err(|err| {
+            E::custom(format!(
+                "Couldn't parse {version_str} as a semver::Version: {err}"
+            ))
+        })?;
+        Ok(CrateId {
+            name: name.to_string(),
+            version,
+        })
     }
 }
 
@@ -619,7 +595,7 @@
 }
 
 #[derive(Debug, Hash, Clone, PartialEq, Eq)]
-pub enum GenBinaries {
+pub(crate) enum GenBinaries {
     All,
     Some(BTreeSet<String>),
 }
@@ -679,35 +655,207 @@
 /// Workspace specific settings to control how targets are generated
 #[derive(Debug, Default, Serialize, Deserialize, Clone)]
 #[serde(deny_unknown_fields)]
-pub struct Config {
+pub(crate) struct Config {
     /// Whether to generate `rust_binary` targets for all bins by default
-    pub generate_binaries: bool,
+    pub(crate) generate_binaries: bool,
 
     /// Whether or not to generate Cargo build scripts by default
-    pub generate_build_scripts: bool,
+    pub(crate) generate_build_scripts: bool,
 
     /// Additional settings to apply to generated crates
     #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
-    pub annotations: BTreeMap<CrateId, CrateAnnotations>,
+    pub(crate) annotations: BTreeMap<CrateNameAndVersionReq, CrateAnnotations>,
 
     /// Settings used to determine various render info
-    pub rendering: RenderConfig,
+    pub(crate) rendering: RenderConfig,
 
     /// The contents of a Cargo configuration file
-    pub cargo_config: Option<toml::Value>,
+    pub(crate) cargo_config: Option<toml::Value>,
 
     /// A set of platform triples to use in generated select statements
     #[serde(default, skip_serializing_if = "BTreeSet::is_empty")]
-    pub supported_platform_triples: BTreeSet<TargetTriple>,
+    pub(crate) supported_platform_triples: BTreeSet<TargetTriple>,
 }
 
 impl Config {
-    pub fn try_from_path<T: AsRef<Path>>(path: T) -> Result<Self> {
+    pub(crate) fn try_from_path<T: AsRef<Path>>(path: T) -> Result<Self> {
         let data = fs::read_to_string(path)?;
         Ok(serde_json::from_str(&data)?)
     }
 }
 
+#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
+pub struct CrateNameAndVersionReq {
+    /// The name of the crate
+    pub name: String,
+
+    version_req_string: VersionReqString,
+}
+
+impl Serialize for CrateNameAndVersionReq {
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        serializer.serialize_str(&format!(
+            "{} {}",
+            self.name, self.version_req_string.original
+        ))
+    }
+}
+
+struct CrateNameAndVersionReqVisitor;
+impl<'de> Visitor<'de> for CrateNameAndVersionReqVisitor {
+    type Value = CrateNameAndVersionReq;
+
+    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+        formatter.write_str("Expected string value of `{name} {version}`.")
+    }
+
+    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
+    where
+        E: serde::de::Error,
+    {
+        let (name, version) = v.rsplit_once(' ').ok_or_else(|| {
+            E::custom(format!(
+                "Expected string value of `{{name}} {{version}}`. Got '{v}'"
+            ))
+        })?;
+        version
+            .parse()
+            .map(|version| CrateNameAndVersionReq {
+                name: name.to_string(),
+                version_req_string: version,
+            })
+            .map_err(|err| E::custom(err.to_string()))
+    }
+}
+
+impl<'de> Deserialize<'de> for CrateNameAndVersionReq {
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: serde::Deserializer<'de>,
+    {
+        deserializer.deserialize_str(CrateNameAndVersionReqVisitor)
+    }
+}
+
+/// A version requirement (i.e. a semver::VersionReq) which preserves the original string it was parsed from.
+/// This means that you can report back to the user whether they wrote `1` or `1.0.0` or `^1.0.0` or `>=1,<2`,
+/// and support exact round-trip serialization and deserialization.
+#[derive(Clone, Debug)]
+pub struct VersionReqString {
+    original: String,
+
+    parsed: VersionReq,
+}
+
+impl FromStr for VersionReqString {
+    type Err = anyhow::Error;
+
+    fn from_str(original: &str) -> Result<Self, Self::Err> {
+        let parsed = VersionReq::parse(original)
+            .context("VersionReqString must be a valid semver requirement")?;
+        Ok(VersionReqString {
+            original: original.to_owned(),
+            parsed,
+        })
+    }
+}
+
+impl PartialEq for VersionReqString {
+    fn eq(&self, other: &Self) -> bool {
+        self.original == other.original
+    }
+}
+
+impl Eq for VersionReqString {}
+
+impl PartialOrd for VersionReqString {
+    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+        Some(self.cmp(other))
+    }
+}
+
+impl Ord for VersionReqString {
+    fn cmp(&self, other: &Self) -> Ordering {
+        Ord::cmp(&self.original, &other.original)
+    }
+}
+
+impl Serialize for VersionReqString {
+    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        serializer.serialize_str(&self.original)
+    }
+}
+
+impl<'de> Deserialize<'de> for VersionReqString {
+    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        struct StringVisitor;
+
+        impl<'de> Visitor<'de> for StringVisitor {
+            type Value = String;
+
+            fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
+                formatter.write_str("string of a semver requirement")
+            }
+        }
+
+        let original = deserializer.deserialize_str(StringVisitor)?;
+        let parsed = VersionReq::parse(&original).map_err(|_| {
+            serde::de::Error::invalid_value(
+                Unexpected::Str(&original),
+                &"a valid semver requirement",
+            )
+        })?;
+        Ok(VersionReqString { original, parsed })
+    }
+}
+
+impl CrateNameAndVersionReq {
+    #[cfg(test)]
+    pub fn new(name: String, version_req_string: VersionReqString) -> CrateNameAndVersionReq {
+        CrateNameAndVersionReq {
+            name,
+            version_req_string,
+        }
+    }
+
+    /// Compares a [CrateNameAndVersionReq] against a [cargo_metadata::Package].
+    pub fn matches(&self, package: &Package) -> bool {
+        // If the package name does not match, it's obviously
+        // not the right package
+        if self.name != "*" && self.name != package.name {
+            return false;
+        }
+
+        // First see if the package version matches exactly
+        if package.version.to_string() == self.version_req_string.original {
+            return true;
+        }
+
+        // If the version provided is the wildcard "*", it matches. Do not
+        // delegate to the semver crate in this case because semver does not
+        // consider "*" to match prerelease packages. That's expected behavior
+        // in the context of declaring package dependencies, but not in the
+        // context of declaring which versions of preselected packages an
+        // annotation applies to.
+        if self.version_req_string.original == "*" {
+            return true;
+        }
+
+        // Next, check to see if the version provided is a semver req and
+        // check if the package matches the condition
+        self.version_req_string.parsed.matches(&package.version)
+    }
+}
+
 #[cfg(test)]
 mod test {
     use super::*;
@@ -717,21 +865,17 @@
     #[test]
     fn test_crate_id_serde() {
         let id: CrateId = serde_json::from_str("\"crate 0.1.0\"").unwrap();
-        assert_eq!(id, CrateId::new("crate".to_owned(), "0.1.0".to_owned()));
+        assert_eq!(
+            id,
+            CrateId::new("crate".to_owned(), semver::Version::new(0, 1, 0))
+        );
         assert_eq!(serde_json::to_string(&id).unwrap(), "\"crate 0.1.0\"");
     }
 
     #[test]
-    fn test_crate_id_serde_semver() {
-        let semver_id: CrateId = serde_json::from_str("\"crate *\"").unwrap();
-        assert_eq!(semver_id, CrateId::new("crate".to_owned(), "*".to_owned()));
-        assert_eq!(serde_json::to_string(&semver_id).unwrap(), "\"crate *\"");
-    }
-
-    #[test]
     fn test_crate_id_matches() {
         let mut package = mock_cargo_metadata_package();
-        let id = CrateId::new("mock-pkg".to_owned(), "0.1.0".to_owned());
+        let id = CrateNameAndVersionReq::new("mock-pkg".to_owned(), "0.1.0".parse().unwrap());
 
         package.version = cargo_metadata::semver::Version::new(0, 1, 0);
         assert!(id.matches(&package));
@@ -741,19 +885,43 @@
     }
 
     #[test]
-    fn test_crate_id_semver_matches() {
+    fn test_crate_name_and_version_req_serde() {
+        let id: CrateNameAndVersionReq = serde_json::from_str("\"crate 0.1.0\"").unwrap();
+        assert_eq!(
+            id,
+            CrateNameAndVersionReq::new(
+                "crate".to_owned(),
+                VersionReqString::from_str("0.1.0").unwrap()
+            )
+        );
+        assert_eq!(serde_json::to_string(&id).unwrap(), "\"crate 0.1.0\"");
+    }
+
+    #[test]
+    fn test_crate_name_and_version_req_serde_semver() {
+        let id: CrateNameAndVersionReq = serde_json::from_str("\"crate *\"").unwrap();
+        assert_eq!(
+            id,
+            CrateNameAndVersionReq::new(
+                "crate".to_owned(),
+                VersionReqString::from_str("*").unwrap()
+            )
+        );
+        assert_eq!(serde_json::to_string(&id).unwrap(), "\"crate *\"");
+    }
+
+    #[test]
+    fn test_crate_name_and_version_req_semver_matches() {
         let mut package = mock_cargo_metadata_package();
         package.version = cargo_metadata::semver::Version::new(1, 0, 0);
-        let mut id = CrateId::new("mock-pkg".to_owned(), "0.1.0".to_owned());
-
-        id.version = "*".to_owned();
+        let id = CrateNameAndVersionReq::new("mock-pkg".to_owned(), "*".parse().unwrap());
         assert!(id.matches(&package));
 
         let mut prerelease = mock_cargo_metadata_package();
         prerelease.version = cargo_metadata::semver::Version::parse("1.0.0-pre.0").unwrap();
         assert!(id.matches(&prerelease));
 
-        id.version = "<1".to_owned();
+        let id = CrateNameAndVersionReq::new("mock-pkg".to_owned(), "<1".parse().unwrap());
         assert!(!id.matches(&package));
     }
 
@@ -770,7 +938,10 @@
         // Annotations
         let annotation = config
             .annotations
-            .get(&CrateId::new("rand".to_owned(), "0.8.5".to_owned()))
+            .get(&CrateNameAndVersionReq::new(
+                "rand".to_owned(),
+                "0.8.5".parse().unwrap(),
+            ))
             .unwrap();
         assert_eq!(
             annotation.crate_features,
diff --git a/crate_universe/src/context.rs b/crate_universe/src/context.rs
index 47dc994..f962afc 100644
--- a/crate_universe/src/context.rs
+++ b/crate_universe/src/context.rs
@@ -1,6 +1,6 @@
 //! Convert annotated metadata into a renderable context
 
-pub mod crate_context;
+pub(crate) mod crate_context;
 mod platforms;
 
 use std::collections::{BTreeMap, BTreeSet};
@@ -18,42 +18,42 @@
 use crate::select::Select;
 use crate::utils::target_triple::TargetTriple;
 
-pub use self::crate_context::*;
+pub(crate) use self::crate_context::*;
 
 /// A struct containing information about a Cargo dependency graph in an easily to consume
 /// format for rendering reproducible Bazel targets.
 #[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
-pub struct Context {
+pub(crate) struct Context {
     /// The collective checksum of all inputs to the context
-    pub checksum: Option<Digest>,
+    pub(crate) checksum: Option<Digest>,
 
     /// The collection of all crates that make up the dependency graph
-    pub crates: BTreeMap<CrateId, CrateContext>,
+    pub(crate) crates: BTreeMap<CrateId, CrateContext>,
 
     /// A subset of only crates with binary targets
-    pub binary_crates: BTreeSet<CrateId>,
+    pub(crate) binary_crates: BTreeSet<CrateId>,
 
     /// A subset of workspace members mapping to their workspace
     /// path relative to the workspace root
-    pub workspace_members: BTreeMap<CrateId, String>,
+    pub(crate) workspace_members: BTreeMap<CrateId, String>,
 
     /// A mapping of `cfg` flags to platform triples supporting the configuration
-    pub conditions: BTreeMap<String, BTreeSet<TargetTriple>>,
+    pub(crate) conditions: BTreeMap<String, BTreeSet<TargetTriple>>,
 
     /// A list of crates visible to any bazel module.
-    pub direct_deps: BTreeSet<CrateId>,
+    pub(crate) direct_deps: BTreeSet<CrateId>,
 
     /// A list of crates visible to this bazel module.
-    pub direct_dev_deps: BTreeSet<CrateId>,
+    pub(crate) direct_dev_deps: BTreeSet<CrateId>,
 }
 
 impl Context {
-    pub fn try_from_path<T: AsRef<Path>>(path: T) -> Result<Self> {
+    pub(crate) fn try_from_path<T: AsRef<Path>>(path: T) -> Result<Self> {
         let data = fs::read_to_string(path.as_ref())?;
         Ok(serde_json::from_str(&data)?)
     }
 
-    pub fn new(annotations: Annotations) -> Result<Self> {
+    pub(crate) fn new(annotations: Annotations) -> Result<Self> {
         // Build a map of crate contexts
         let crates: BTreeMap<CrateId, CrateContext> = annotations
             .metadata
@@ -192,7 +192,7 @@
     }
 
     /// Create a set of all direct dependencies of workspace member crates.
-    pub fn workspace_member_deps(&self) -> BTreeSet<CrateDependency> {
+    pub(crate) fn workspace_member_deps(&self) -> BTreeSet<CrateDependency> {
         self.workspace_members
             .keys()
             .map(move |id| &self.crates[id])
@@ -208,7 +208,7 @@
             .collect()
     }
 
-    pub fn has_duplicate_workspace_member_dep(&self, dep: &CrateDependency) -> bool {
+    pub(crate) fn has_duplicate_workspace_member_dep(&self, dep: &CrateDependency) -> bool {
         1 < self
             .workspace_member_deps()
             .into_iter()
@@ -216,7 +216,7 @@
             .count()
     }
 
-    pub fn has_duplicate_binary_crate(&self, bin: &CrateId) -> bool {
+    pub(crate) fn has_duplicate_binary_crate(&self, bin: &CrateId) -> bool {
         1 < self
             .binary_crates
             .iter()
@@ -228,6 +228,7 @@
 #[cfg(test)]
 mod test {
     use super::*;
+    use semver::Version;
 
     use crate::config::Config;
 
@@ -264,8 +265,8 @@
                 .map(|dep| (&dep.id, context.has_duplicate_workspace_member_dep(dep)))
                 .collect::<Vec<_>>(),
             [
-                (&CrateId::new("bitflags".to_owned(), "1.3.2".to_owned()), false),
-                (&CrateId::new("cfg-if".to_owned(), "1.0.0".to_owned()), false),
+                (&CrateId::new("bitflags".to_owned(), Version::new(1, 3, 2)), false),
+                (&CrateId::new("cfg-if".to_owned(), Version::new(1, 0, 0)), false),
             ],
         }
     }
@@ -281,17 +282,17 @@
                 .map(|dep| (&dep.id, context.has_duplicate_workspace_member_dep(dep)))
                 .collect::<Vec<_>>(),
             [
-                (&CrateId::new("log".to_owned(), "0.3.9".to_owned()), false),
-                (&CrateId::new("log".to_owned(), "0.4.14".to_owned()), false),
-                (&CrateId::new("names".to_owned(), "0.12.1-dev".to_owned()), false),
-                (&CrateId::new("names".to_owned(), "0.13.0".to_owned()), false),
-                (&CrateId::new("value-bag".to_owned(), "1.0.0-alpha.7".to_owned()), false),
+                (&CrateId::new("log".to_owned(), Version::new(0, 3, 9)), false),
+                (&CrateId::new("log".to_owned(), Version::new(0, 4, 14)), false),
+                (&CrateId::new("names".to_owned(), Version::parse("0.12.1-dev").unwrap()), false),
+                (&CrateId::new("names".to_owned(), Version::new(0, 13, 0)), false),
+                (&CrateId::new("value-bag".to_owned(), Version::parse("1.0.0-alpha.7").unwrap()), false),
             ],
         }
     }
 
     #[test]
-    fn seralization() {
+    fn serialization() {
         let context = mock_context_aliases();
 
         // Seralize and deseralize the context object
diff --git a/crate_universe/src/context/crate_context.rs b/crate_universe/src/context/crate_context.rs
index 3643523..1f56e4d 100644
--- a/crate_universe/src/context/crate_context.rs
+++ b/crate_universe/src/context/crate_context.rs
@@ -27,7 +27,7 @@
 
 #[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Clone)]
 #[serde(default)]
-pub struct TargetAttributes {
+pub(crate) struct TargetAttributes {
     /// The module name of the crate (notably, not the package name).
     //
     // This must be the first field of `TargetAttributes` to make it the
@@ -35,17 +35,17 @@
     // by. The `Ord` impl controls the order of multiple rules of the same type
     // in the same BUILD file. In particular, this makes packages with multiple
     // bin crates generate those `rust_binary` targets in alphanumeric order.
-    pub crate_name: String,
+    pub(crate) crate_name: String,
 
     /// The path to the crate's root source file, relative to the manifest.
-    pub crate_root: Option<String>,
+    pub(crate) crate_root: Option<String>,
 
     /// A glob pattern of all source files required by the target
-    pub srcs: Glob,
+    pub(crate) srcs: Glob,
 }
 
 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Clone)]
-pub enum Rule {
+pub(crate) enum Rule {
     /// `rust_library`
     Library(TargetAttributes),
 
@@ -63,58 +63,58 @@
 /// [core rules of `rules_rust`](https://bazelbuild.github.io/rules_rust/defs.html).
 #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(default)]
-pub struct CommonAttributes {
+pub(crate) struct CommonAttributes {
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub compile_data: Select<BTreeSet<Label>>,
+    pub(crate) compile_data: Select<BTreeSet<Label>>,
 
     #[serde(skip_serializing_if = "BTreeSet::is_empty")]
-    pub compile_data_glob: BTreeSet<String>,
+    pub(crate) compile_data_glob: BTreeSet<String>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub crate_features: Select<BTreeSet<String>>,
+    pub(crate) crate_features: Select<BTreeSet<String>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub data: Select<BTreeSet<Label>>,
+    pub(crate) data: Select<BTreeSet<Label>>,
 
     #[serde(skip_serializing_if = "BTreeSet::is_empty")]
-    pub data_glob: BTreeSet<String>,
+    pub(crate) data_glob: BTreeSet<String>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub deps: Select<BTreeSet<CrateDependency>>,
+    pub(crate) deps: Select<BTreeSet<CrateDependency>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub extra_deps: Select<BTreeSet<Label>>,
+    pub(crate) extra_deps: Select<BTreeSet<Label>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub deps_dev: Select<BTreeSet<CrateDependency>>,
+    pub(crate) deps_dev: Select<BTreeSet<CrateDependency>>,
 
-    pub edition: String,
+    pub(crate) edition: String,
 
     #[serde(skip_serializing_if = "Option::is_none")]
-    pub linker_script: Option<String>,
+    pub(crate) linker_script: Option<String>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub proc_macro_deps: Select<BTreeSet<CrateDependency>>,
+    pub(crate) proc_macro_deps: Select<BTreeSet<CrateDependency>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub extra_proc_macro_deps: Select<BTreeSet<Label>>,
+    pub(crate) extra_proc_macro_deps: Select<BTreeSet<Label>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub proc_macro_deps_dev: Select<BTreeSet<CrateDependency>>,
+    pub(crate) proc_macro_deps_dev: Select<BTreeSet<CrateDependency>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub rustc_env: Select<BTreeMap<String, String>>,
+    pub(crate) rustc_env: Select<BTreeMap<String, String>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub rustc_env_files: Select<BTreeSet<String>>,
+    pub(crate) rustc_env_files: Select<BTreeSet<String>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub rustc_flags: Select<Vec<String>>,
+    pub(crate) rustc_flags: Select<Vec<String>>,
 
-    pub version: String,
+    pub(crate) version: String,
 
     #[serde(skip_serializing_if = "Vec::is_empty")]
-    pub tags: Vec<String>,
+    pub(crate) tags: Vec<String>,
 }
 
 impl Default for CommonAttributes {
@@ -147,21 +147,21 @@
 // https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script
 #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
 #[serde(default)]
-pub struct BuildScriptAttributes {
+pub(crate) struct BuildScriptAttributes {
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub compile_data: Select<BTreeSet<Label>>,
+    pub(crate) compile_data: Select<BTreeSet<Label>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub data: Select<BTreeSet<Label>>,
+    pub(crate) data: Select<BTreeSet<Label>>,
 
     #[serde(skip_serializing_if = "BTreeSet::is_empty")]
-    pub data_glob: BTreeSet<String>,
+    pub(crate) data_glob: BTreeSet<String>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub deps: Select<BTreeSet<CrateDependency>>,
+    pub(crate) deps: Select<BTreeSet<CrateDependency>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub extra_deps: Select<BTreeSet<Label>>,
+    pub(crate) extra_deps: Select<BTreeSet<Label>>,
 
     // TODO: refactor a crate with a build.rs file from two into three bazel
     // rules in order to deduplicate link_dep information. Currently as the
@@ -181,40 +181,40 @@
     // normal dependencies. This could be handled a special rule, or just using
     // a `filegroup`.
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub link_deps: Select<BTreeSet<CrateDependency>>,
+    pub(crate) link_deps: Select<BTreeSet<CrateDependency>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub extra_link_deps: Select<BTreeSet<Label>>,
+    pub(crate) extra_link_deps: Select<BTreeSet<Label>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub build_script_env: Select<BTreeMap<String, String>>,
+    pub(crate) build_script_env: Select<BTreeMap<String, String>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub rundir: Select<String>,
+    pub(crate) rundir: Select<String>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub extra_proc_macro_deps: Select<BTreeSet<Label>>,
+    pub(crate) extra_proc_macro_deps: Select<BTreeSet<Label>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub proc_macro_deps: Select<BTreeSet<CrateDependency>>,
+    pub(crate) proc_macro_deps: Select<BTreeSet<CrateDependency>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub rustc_env: Select<BTreeMap<String, String>>,
+    pub(crate) rustc_env: Select<BTreeMap<String, String>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub rustc_flags: Select<Vec<String>>,
+    pub(crate) rustc_flags: Select<Vec<String>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub rustc_env_files: Select<BTreeSet<String>>,
+    pub(crate) rustc_env_files: Select<BTreeSet<String>>,
 
     #[serde(skip_serializing_if = "Select::is_empty")]
-    pub tools: Select<BTreeSet<Label>>,
+    pub(crate) tools: Select<BTreeSet<Label>>,
 
     #[serde(skip_serializing_if = "Option::is_none")]
-    pub links: Option<String>,
+    pub(crate) links: Option<String>,
 
     #[serde(skip_serializing_if = "BTreeSet::is_empty")]
-    pub toolchains: BTreeSet<Label>,
+    pub(crate) toolchains: BTreeSet<Label>,
 }
 
 impl Default for BuildScriptAttributes {
@@ -242,66 +242,78 @@
     }
 }
 
-#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
-#[serde(default)]
-pub struct CrateContext {
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub(crate) struct CrateContext {
     /// The package name of the current crate
-    pub name: String,
+    pub(crate) name: String,
 
     /// The full version of the current crate
-    pub version: String,
+    pub(crate) version: semver::Version,
 
     /// The package URL of the current crate
-    pub package_url: Option<String>,
+    #[serde(default)]
+    pub(crate) package_url: Option<String>,
 
     /// Optional source annotations if they were discoverable in the
     /// lockfile. Workspace Members will not have source annotations and
     /// potentially others.
-    pub repository: Option<SourceAnnotation>,
+    #[serde(default)]
+    pub(crate) repository: Option<SourceAnnotation>,
 
     /// A list of all targets (lib, proc-macro, bin) associated with this package
-    pub targets: BTreeSet<Rule>,
+    #[serde(default)]
+    pub(crate) targets: BTreeSet<Rule>,
 
     /// The name of the crate's root library target. This is the target that a dependent
     /// would get if they were to depend on `{crate_name}`.
-    pub library_target_name: Option<String>,
+    #[serde(default)]
+    pub(crate) library_target_name: Option<String>,
 
     /// A set of attributes common to most [Rule] types or target types.
-    pub common_attrs: CommonAttributes,
+    #[serde(default)]
+    pub(crate) common_attrs: CommonAttributes,
 
     /// Optional attributes for build scripts. This field is only populated if
     /// a build script (`custom-build`) target is defined for the crate.
     #[serde(skip_serializing_if = "Option::is_none")]
-    pub build_script_attrs: Option<BuildScriptAttributes>,
+    #[serde(default)]
+    pub(crate) build_script_attrs: Option<BuildScriptAttributes>,
 
     /// The license used by the crate
-    pub license: Option<String>,
+    #[serde(default)]
+    pub(crate) license: Option<String>,
 
     /// The SPDX licence IDs
-    pub license_ids: BTreeSet<String>,
+    /// #[serde(default)]
+    pub(crate) license_ids: BTreeSet<String>,
 
-    // The license file
-    pub license_file: Option<String>,
+    /// The license file
+    #[serde(default)]
+    pub(crate) license_file: Option<String>,
 
     /// Additional text to add to the generated BUILD file.
     #[serde(skip_serializing_if = "Option::is_none")]
-    pub additive_build_file_content: Option<String>,
+    #[serde(default)]
+    pub(crate) additive_build_file_content: Option<String>,
 
     /// If true, disables pipelining for library targets generated for this crate
     #[serde(skip_serializing_if = "std::ops::Not::not")]
-    pub disable_pipelining: bool,
+    #[serde(default)]
+    pub(crate) disable_pipelining: bool,
 
     /// Extra targets that should be aliased.
     #[serde(skip_serializing_if = "BTreeMap::is_empty")]
-    pub extra_aliased_targets: BTreeMap<String, String>,
+    #[serde(default)]
+    pub(crate) extra_aliased_targets: BTreeMap<String, String>,
 
     /// Transition rule to use instead of `alias`.
     #[serde(skip_serializing_if = "Option::is_none")]
-    pub alias_rule: Option<AliasRule>,
+    #[serde(default)]
+    pub(crate) alias_rule: Option<AliasRule>,
 }
 
 impl CrateContext {
-    pub fn new(
+    pub(crate) fn new(
         annotation: &CrateAnnotation,
         packages: &BTreeMap<PackageId, Package>,
         source_annotations: &BTreeMap<PackageId, SourceAnnotation>,
@@ -311,7 +323,7 @@
         include_build_scripts: bool,
     ) -> Self {
         let package: &Package = &packages[&annotation.node.id];
-        let current_crate_id = CrateId::new(package.name.clone(), package.version.to_string());
+        let current_crate_id = CrateId::new(package.name.clone(), package.version.clone());
 
         let new_crate_dep = |dep: Dependency| -> CrateDependency {
             let pkg = &packages[&dep.package_id];
@@ -322,7 +334,7 @@
             let target = sanitize_module_name(&dep.target_name);
 
             CrateDependency {
-                id: CrateId::new(pkg.name.clone(), pkg.version.to_string()),
+                id: CrateId::new(pkg.name.clone(), pkg.version.clone()),
                 target,
                 alias: dep.alias,
             }
@@ -450,7 +462,7 @@
             }
         }
 
-        let license_file = package.license_file.as_ref().map(|path| path.to_string());
+        let license_file = Self::locate_license_file(package);
 
         let package_url: Option<String> = match package.repository {
             Some(..) => package.repository.clone(),
@@ -460,7 +472,7 @@
         // Create the crate's context and apply extra settings
         CrateContext {
             name: package.name.clone(),
-            version: package.version.to_string(),
+            version: package.version.clone(),
             license: package.license.clone(),
             license_ids,
             license_file,
@@ -650,6 +662,33 @@
         self
     }
 
+    fn locate_license_file(package: &Package) -> Option<String> {
+        if let Some(license_file_path) = &package.license_file {
+            return Some(license_file_path.to_string());
+        }
+        let package_root = package
+            .manifest_path
+            .as_std_path()
+            .parent()
+            .expect("Every manifest should have a parent directory");
+        if package_root.exists() {
+            let mut paths: Vec<_> = package_root
+                .read_dir()
+                .unwrap()
+                .map(|r| r.unwrap())
+                .collect();
+            paths.sort_by_key(|dir| dir.path());
+            for path in paths {
+                if let Some(file_name) = path.file_name().to_str() {
+                    if file_name.to_uppercase().starts_with("LICENSE") {
+                        return Some(file_name.to_string());
+                    }
+                }
+            }
+        }
+        None
+    }
+
     /// Determine whether or not a crate __should__ include a build script
     /// (build.rs) if it happens to have one.
     fn crate_includes_build_script(
@@ -801,7 +840,7 @@
 
         let mut pairred_extras = BTreeMap::new();
         pairred_extras.insert(
-            CrateId::new("common".to_owned(), "0.1.0".to_owned()),
+            CrateId::new("common".to_owned(), semver::Version::new(0, 1, 0)),
             PairedExtras {
                 package_id,
                 crate_extra: CrateAnnotations {
diff --git a/crate_universe/src/context/platforms.rs b/crate_universe/src/context/platforms.rs
index f3bc160..ede6053 100644
--- a/crate_universe/src/context/platforms.rs
+++ b/crate_universe/src/context/platforms.rs
@@ -10,7 +10,7 @@
 /// Walk through all dependencies in a [CrateContext] list for all configuration specific
 /// dependencies to produce a mapping of configurations/Cargo target_triples to compatible
 /// Bazel target_triples.  Also adds mappings for all known target_triples.
-pub fn resolve_cfg_platforms(
+pub(crate) fn resolve_cfg_platforms(
     crates: Vec<&CrateContext>,
     supported_platform_triples: &BTreeSet<TargetTriple>,
 ) -> Result<BTreeMap<String, BTreeSet<TargetTriple>>> {
@@ -117,6 +117,8 @@
 
     use super::*;
 
+    const VERSION_ZERO_ONE_ZERO: semver::Version = semver::Version::new(0, 1, 0);
+
     fn supported_platform_triples() -> BTreeSet<TargetTriple> {
         BTreeSet::from([
             TargetTriple::from_bazel("aarch64-apple-darwin".to_owned()),
@@ -130,7 +132,7 @@
         let mut deps: Select<BTreeSet<CrateDependency>> = Select::default();
         deps.insert(
             CrateDependency {
-                id: CrateId::new("mock_crate_b".to_owned(), "0.1.0".to_owned()),
+                id: CrateId::new("mock_crate_b".to_owned(), VERSION_ZERO_ONE_ZERO),
                 target: "mock_crate_b".to_owned(),
                 alias: None,
             },
@@ -139,12 +141,23 @@
 
         let context = CrateContext {
             name: "mock_crate_a".to_owned(),
-            version: "0.1.0".to_owned(),
+            version: VERSION_ZERO_ONE_ZERO,
+            package_url: None,
+            repository: None,
+            targets: BTreeSet::default(),
+            library_target_name: None,
             common_attrs: CommonAttributes {
                 deps,
                 ..CommonAttributes::default()
             },
-            ..CrateContext::default()
+            build_script_attrs: None,
+            license: None,
+            license_ids: BTreeSet::default(),
+            license_file: None,
+            additive_build_file_content: None,
+            disable_pipelining: false,
+            extra_aliased_targets: BTreeMap::default(),
+            alias_rule: None,
         };
 
         let configurations =
@@ -176,7 +189,7 @@
         let mut deps: Select<BTreeSet<CrateDependency>> = Select::default();
         deps.insert(
             CrateDependency {
-                id: CrateId::new("mock_crate_b".to_owned(), "0.1.0".to_owned()),
+                id: CrateId::new("mock_crate_b".to_owned(), VERSION_ZERO_ONE_ZERO),
                 target: "mock_crate_b".to_owned(),
                 alias: None,
             },
@@ -185,12 +198,23 @@
 
         CrateContext {
             name: "mock_crate_a".to_owned(),
-            version: "0.1.0".to_owned(),
+            version: VERSION_ZERO_ONE_ZERO,
+            package_url: None,
+            repository: None,
+            targets: BTreeSet::default(),
+            library_target_name: None,
             common_attrs: CommonAttributes {
                 deps,
                 ..CommonAttributes::default()
             },
-            ..CrateContext::default()
+            build_script_attrs: None,
+            license: None,
+            license_ids: BTreeSet::default(),
+            license_file: None,
+            additive_build_file_content: None,
+            disable_pipelining: false,
+            extra_aliased_targets: BTreeMap::default(),
+            alias_rule: None,
         }
     }
 
@@ -250,7 +274,7 @@
         let mut deps: Select<BTreeSet<CrateDependency>> = Select::default();
         deps.insert(
             CrateDependency {
-                id: CrateId::new("mock_crate_b".to_owned(), "0.1.0".to_owned()),
+                id: CrateId::new("mock_crate_b".to_owned(), VERSION_ZERO_ONE_ZERO),
                 target: "mock_crate_b".to_owned(),
                 alias: None,
             },
@@ -259,12 +283,23 @@
 
         let context = CrateContext {
             name: "mock_crate_a".to_owned(),
-            version: "0.1.0".to_owned(),
+            version: VERSION_ZERO_ONE_ZERO,
+            package_url: None,
+            repository: None,
+            targets: BTreeSet::default(),
+            library_target_name: None,
             common_attrs: CommonAttributes {
                 deps,
                 ..CommonAttributes::default()
             },
-            ..CrateContext::default()
+            build_script_attrs: None,
+            license: None,
+            license_ids: BTreeSet::default(),
+            license_file: None,
+            additive_build_file_content: None,
+            disable_pipelining: false,
+            extra_aliased_targets: BTreeMap::default(),
+            alias_rule: None,
         };
 
         let configurations =
@@ -304,7 +339,7 @@
         let mut deps: Select<BTreeSet<CrateDependency>> = Select::default();
         deps.insert(
             CrateDependency {
-                id: CrateId::new("mock_crate_b".to_owned(), "0.1.0".to_owned()),
+                id: CrateId::new("mock_crate_b".to_owned(), VERSION_ZERO_ONE_ZERO),
                 target: "mock_crate_b".to_owned(),
                 alias: None,
             },
@@ -313,12 +348,23 @@
 
         let context = CrateContext {
             name: "mock_crate_a".to_owned(),
-            version: "0.1.0".to_owned(),
+            version: VERSION_ZERO_ONE_ZERO,
+            package_url: None,
+            repository: None,
+            targets: BTreeSet::default(),
+            library_target_name: None,
             common_attrs: CommonAttributes {
                 deps,
                 ..CommonAttributes::default()
             },
-            ..CrateContext::default()
+            build_script_attrs: None,
+            license: None,
+            license_ids: BTreeSet::default(),
+            license_file: None,
+            additive_build_file_content: None,
+            disable_pipelining: false,
+            extra_aliased_targets: BTreeMap::default(),
+            alias_rule: None,
         };
 
         let configurations =
diff --git a/crate_universe/src/lib.rs b/crate_universe/src/lib.rs
index 12d9633..0db5537 100644
--- a/crate_universe/src/lib.rs
+++ b/crate_universe/src/lib.rs
@@ -1,5 +1,7 @@
 #![allow(clippy::large_enum_variant)]
 
+pub mod api;
+
 pub mod cli;
 
 mod config;
diff --git a/crate_universe/src/lockfile.rs b/crate_universe/src/lockfile.rs
index 3eaae23..6f23199 100644
--- a/crate_universe/src/lockfile.rs
+++ b/crate_universe/src/lockfile.rs
@@ -1,4 +1,4 @@
-//! Utility module for interracting with different kinds of lock files
+//! Utility module for interacting with the cargo-bazel lockfile.
 
 use std::collections::BTreeMap;
 use std::convert::TryFrom;
@@ -17,7 +17,7 @@
 use crate::metadata::Cargo;
 use crate::splicing::{SplicingManifest, SplicingMetadata};
 
-pub fn lock_context(
+pub(crate) fn lock_context(
     mut context: Context,
     config: &Config,
     splicing_manifest: &SplicingManifest,
@@ -37,7 +37,7 @@
 }
 
 /// Write a [crate::context::Context] to disk
-pub fn write_lockfile(lockfile: Context, path: &Path, dry_run: bool) -> Result<()> {
+pub(crate) fn write_lockfile(lockfile: Context, path: &Path, dry_run: bool) -> Result<()> {
     let content = serde_json::to_string_pretty(&lockfile)?;
 
     if dry_run {
@@ -55,10 +55,10 @@
 }
 
 #[derive(Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Clone)]
-pub struct Digest(String);
+pub(crate) struct Digest(String);
 
 impl Digest {
-    pub fn new(
+    pub(crate) fn new(
         context: &Context,
         config: &Config,
         splicing_manifest: &SplicingManifest,
@@ -130,7 +130,7 @@
         Self(hasher.finalize().encode_hex::<String>())
     }
 
-    pub fn bin_version(binary: &Path) -> Result<String> {
+    pub(crate) fn bin_version(binary: &Path) -> Result<String> {
         let safe_vars = [OsStr::new("HOMEDRIVE"), OsStr::new("PATHEXT")];
         let env = std::env::vars_os().filter(|(var, _)| safe_vars.contains(&var.as_os_str()));
 
@@ -187,7 +187,7 @@
 
 #[cfg(test)]
 mod test {
-    use crate::config::{CrateAnnotations, CrateId};
+    use crate::config::{CrateAnnotations, CrateNameAndVersionReq};
     use crate::splicing::cargo_config::{AdditionalRegistry, CargoConfig, Registry};
     use crate::utils::target_triple::TargetTriple;
 
@@ -223,7 +223,7 @@
             generate_binaries: false,
             generate_build_scripts: false,
             annotations: BTreeMap::from([(
-                CrateId::new("rustonomicon".to_owned(), "1.0.0".to_owned()),
+                CrateNameAndVersionReq::new("rustonomicon".to_owned(), "1.0.0".parse().unwrap()),
                 CrateAnnotations {
                     compile_data_glob: Some(BTreeSet::from(["arts/**".to_owned()])),
                     ..CrateAnnotations::default()
diff --git a/crate_universe/src/metadata.rs b/crate_universe/src/metadata.rs
index 029850a..39e45db 100644
--- a/crate_universe/src/metadata.rs
+++ b/crate_universe/src/metadata.rs
@@ -23,17 +23,17 @@
 use crate::select::Select;
 use crate::utils::target_triple::TargetTriple;
 
-pub use self::dependency::*;
-pub use self::metadata_annotation::*;
+pub(crate) use self::dependency::*;
+pub(crate) use self::metadata_annotation::*;
 
 // TODO: This should also return a set of [crate-index::IndexConfig]s for packages in metadata.packages
 /// A Trait for generating metadata (`cargo metadata` output and a lock file) from a Cargo manifest.
-pub trait MetadataGenerator {
+pub(crate) trait MetadataGenerator {
     fn generate<T: AsRef<Path>>(&self, manifest_path: T) -> Result<(CargoMetadata, CargoLockfile)>;
 }
 
 /// Generates Cargo metadata and a lockfile from a provided manifest.
-pub struct Generator {
+pub(crate) struct Generator {
     /// The path to a `cargo` binary
     cargo_bin: Cargo,
 
@@ -42,7 +42,7 @@
 }
 
 impl Generator {
-    pub fn new() -> Self {
+    pub(crate) fn new() -> Self {
         Generator {
             cargo_bin: Cargo::new(PathBuf::from(
                 env::var("CARGO").unwrap_or_else(|_| "cargo".to_string()),
@@ -51,12 +51,12 @@
         }
     }
 
-    pub fn with_cargo(mut self, cargo_bin: Cargo) -> Self {
+    pub(crate) fn with_cargo(mut self, cargo_bin: Cargo) -> Self {
         self.cargo_bin = cargo_bin;
         self
     }
 
-    pub fn with_rustc(mut self, rustc_bin: PathBuf) -> Self {
+    pub(crate) fn with_rustc(mut self, rustc_bin: PathBuf) -> Self {
         self.rustc_bin = rustc_bin;
         self
     }
@@ -97,13 +97,13 @@
 /// Any invocations of `cargo` (either as a `std::process::Command` or via `cargo_metadata`) should
 /// go via this wrapper to ensure that any environment variables needed are set appropriately.
 #[derive(Debug, Clone)]
-pub struct Cargo {
+pub(crate) struct Cargo {
     path: PathBuf,
     full_version: Arc<Mutex<Option<String>>>,
 }
 
 impl Cargo {
-    pub fn new(path: PathBuf) -> Cargo {
+    pub(crate) fn new(path: PathBuf) -> Cargo {
         Cargo {
             path,
             full_version: Arc::new(Mutex::new(None)),
@@ -111,7 +111,7 @@
     }
 
     /// Returns a new `Command` for running this cargo.
-    pub fn command(&self) -> Result<Command> {
+    pub(crate) fn command(&self) -> Result<Command> {
         let mut command = Command::new(&self.path);
         command.envs(self.env()?);
         if self.is_nightly()? {
@@ -121,7 +121,7 @@
     }
 
     /// Returns a new `MetadataCommand` using this cargo.
-    pub fn metadata_command(&self) -> Result<MetadataCommand> {
+    pub(crate) fn metadata_command(&self) -> Result<MetadataCommand> {
         let mut command = MetadataCommand::new();
         command.cargo_path(&self.path);
         for (k, v) in self.env()? {
@@ -132,7 +132,7 @@
 
     /// Returns the output of running `cargo version`, trimming any leading or trailing whitespace.
     /// This function performs normalisation to work around `<https://github.com/rust-lang/cargo/issues/10547>`
-    pub fn full_version(&self) -> Result<String> {
+    pub(crate) fn full_version(&self) -> Result<String> {
         let mut full_version = self.full_version.lock().unwrap();
         if full_version.is_none() {
             let observed_version = Digest::bin_version(&self.path)?;
@@ -141,7 +141,7 @@
         Ok(full_version.clone().unwrap())
     }
 
-    pub fn is_nightly(&self) -> Result<bool> {
+    pub(crate) fn is_nightly(&self) -> Result<bool> {
         let full_version = self.full_version()?;
         let version_str = full_version.split(' ').nth(1);
         if let Some(version_str) = version_str {
@@ -151,7 +151,7 @@
         bail!("Couldn't parse cargo version");
     }
 
-    pub fn use_sparse_registries_for_crates_io(&self) -> Result<bool> {
+    pub(crate) fn use_sparse_registries_for_crates_io(&self) -> Result<bool> {
         let full_version = self.full_version()?;
         let version_str = full_version.split(' ').nth(1);
         if let Some(version_str) = version_str {
@@ -163,7 +163,8 @@
 
     /// Determine if Cargo is expected to be using the new package_id spec. For
     /// details see <https://github.com/rust-lang/cargo/pull/13311>
-    pub fn uses_new_package_id_format(&self) -> Result<bool> {
+    #[cfg(test)]
+    pub(crate) fn uses_new_package_id_format(&self) -> Result<bool> {
         let full_version = self.full_version()?;
         let version_str = full_version.split(' ').nth(1);
         if let Some(version_str) = version_str {
@@ -186,7 +187,7 @@
     }
 }
 
-/// A configuration desrcibing how to invoke [cargo update](https://doc.rust-lang.org/cargo/commands/cargo-update.html).
+/// A configuration describing how to invoke [cargo update](https://doc.rust-lang.org/cargo/commands/cargo-update.html).
 #[derive(Debug, Clone, PartialEq, Eq)]
 pub enum CargoUpdateRequest {
     /// Translates to an unrestricted `cargo update` command
@@ -219,7 +220,7 @@
             return Ok(Self::Workspace);
         }
 
-        let mut split = s.splitn(2, '@');
+        let mut split = s.splitn(2, '=');
         Ok(Self::Package {
             name: split.next().map(|s| s.to_owned()).unwrap(),
             version: split.next().map(|s| s.to_owned()),
@@ -247,7 +248,12 @@
     }
 
     /// Calls `cargo update` with arguments specific to the state of the current variant.
-    pub fn update(&self, manifest: &Path, cargo_bin: &Cargo, rustc_bin: &Path) -> Result<()> {
+    pub(crate) fn update(
+        &self,
+        manifest: &Path,
+        cargo_bin: &Cargo,
+        rustc_bin: &Path,
+    ) -> Result<()> {
         let manifest_dir = manifest.parent().unwrap();
 
         // Simply invoke `cargo update`
@@ -280,7 +286,7 @@
     }
 }
 
-pub struct LockGenerator {
+pub(crate) struct LockGenerator {
     /// The path to a `cargo` binary
     cargo_bin: Cargo,
 
@@ -289,7 +295,7 @@
 }
 
 impl LockGenerator {
-    pub fn new(cargo_bin: Cargo, rustc_bin: PathBuf) -> Self {
+    pub(crate) fn new(cargo_bin: Cargo, rustc_bin: PathBuf) -> Self {
         Self {
             cargo_bin,
             rustc_bin,
@@ -297,7 +303,7 @@
     }
 
     #[tracing::instrument(name = "LockGenerator::generate", skip_all)]
-    pub fn generate(
+    pub(crate) fn generate(
         &self,
         manifest_path: &Path,
         existing_lock: &Option<PathBuf>,
@@ -390,7 +396,7 @@
 }
 
 /// A generator which runs `cargo vendor` on a given manifest
-pub struct VendorGenerator {
+pub(crate) struct VendorGenerator {
     /// The path to a `cargo` binary
     cargo_bin: Cargo,
 
@@ -399,14 +405,14 @@
 }
 
 impl VendorGenerator {
-    pub fn new(cargo_bin: Cargo, rustc_bin: PathBuf) -> Self {
+    pub(crate) fn new(cargo_bin: Cargo, rustc_bin: PathBuf) -> Self {
         Self {
             cargo_bin,
             rustc_bin,
         }
     }
     #[tracing::instrument(name = "VendorGenerator::generate", skip_all)]
-    pub fn generate(&self, manifest_path: &Path, output_dir: &Path) -> Result<()> {
+    pub(crate) fn generate(&self, manifest_path: &Path, output_dir: &Path) -> Result<()> {
         debug!(
             "Vendoring {} to {}",
             manifest_path.display(),
@@ -449,7 +455,7 @@
 }
 
 /// A generate which computes per-platform feature sets.
-pub struct FeatureGenerator {
+pub(crate) struct FeatureGenerator {
     /// The path to a `cargo` binary
     cargo_bin: Cargo,
 
@@ -458,7 +464,7 @@
 }
 
 impl FeatureGenerator {
-    pub fn new(cargo_bin: Cargo, rustc_bin: PathBuf) -> Self {
+    pub(crate) fn new(cargo_bin: Cargo, rustc_bin: PathBuf) -> Self {
         Self {
             cargo_bin,
             rustc_bin,
@@ -467,7 +473,7 @@
 
     /// Computes the set of enabled features for each target triplet for each crate.
     #[tracing::instrument(name = "FeatureGenerator::generate", skip_all)]
-    pub fn generate(
+    pub(crate) fn generate(
         &self,
         manifest_path: &Path,
         target_triples: &BTreeSet<TargetTriple>,
@@ -604,18 +610,14 @@
                 parts[1]
             );
         }
-        let crate_id = CrateId::new(
-            crate_id_parts[0].to_owned(),
-            crate_id_parts[1]
-                .strip_prefix('v')
-                .ok_or_else(|| {
-                    anyhow!(
-                        "Unexpected crate version '{}' when parsing 'cargo tree' output.",
-                        crate_id_parts[1]
-                    )
-                })?
-                .to_owned(),
-        );
+        let version_str = crate_id_parts[1].strip_prefix('v').ok_or_else(|| {
+            anyhow!(
+                "Unexpected crate version '{}' when parsing 'cargo tree' output.",
+                crate_id_parts[1]
+            )
+        })?;
+        let version = Version::parse(version_str).context("Failed to parse version")?;
+        let crate_id = CrateId::new(crate_id_parts[0].to_owned(), version);
         let mut features = if parts[2].is_empty() {
             BTreeSet::new()
         } else {
@@ -630,7 +632,7 @@
 }
 
 /// A helper function for writing Cargo metadata to a file.
-pub fn write_metadata(path: &Path, metadata: &cargo_metadata::Metadata) -> Result<()> {
+pub(crate) fn write_metadata(path: &Path, metadata: &cargo_metadata::Metadata) -> Result<()> {
     let content =
         serde_json::to_string_pretty(metadata).context("Failed to serialize Cargo Metadata")?;
 
@@ -638,7 +640,7 @@
 }
 
 /// A helper function for deserializing Cargo metadata and lockfiles
-pub fn load_metadata(
+pub(crate) fn load_metadata(
     metadata_path: &Path,
 ) -> Result<(cargo_metadata::Metadata, cargo_lock::Lockfile)> {
     // Locate the Cargo.lock file related to the metadata file.
@@ -707,8 +709,21 @@
         assert_eq!(
             request,
             CargoUpdateRequest::Package {
-                name: "cargo-bazel".to_owned(),
-                version: Some("1.2.3".to_owned())
+                name: "cargo-bazel@1.2.3".to_owned(),
+                version: None
+            }
+        );
+    }
+
+    #[test]
+    fn deserialize_cargo_update_request_for_precise_pin() {
+        let request = CargoUpdateRequest::from_str("cargo-bazel@1.2.3=4.5.6").unwrap();
+
+        assert_eq!(
+            request,
+            CargoUpdateRequest::Package {
+                name: "cargo-bazel@1.2.3".to_owned(),
+                version: Some("4.5.6".to_owned()),
             }
         );
     }
@@ -733,35 +748,35 @@
                 (
                     CrateId {
                         name: "multi_cfg_dep".to_owned(),
-                        version: "0.1.0".to_owned()
+                        version: Version::new(0, 1, 0),
                     },
                     BTreeSet::from([])
                 ),
                 (
                     CrateId {
                         name: "cpufeatures".to_owned(),
-                        version: "0.2.1".to_owned()
+                        version: Version::new(0, 2, 1),
                     },
                     BTreeSet::from([])
                 ),
                 (
                     CrateId {
                         name: "libc".to_owned(),
-                        version: "0.2.117".to_owned()
+                        version: Version::new(0, 2, 117),
                     },
                     BTreeSet::from(["default".to_owned(), "std".to_owned()])
                 ),
                 (
                     CrateId {
                         name: "serde_derive".to_owned(),
-                        version: "1.0.152".to_owned()
+                        version: Version::new(1, 0, 152),
                     },
                     BTreeSet::from([])
                 ),
                 (
                     CrateId {
                         name: "chrono".to_owned(),
-                        version: "0.4.24".to_owned()
+                        version: Version::new(0, 4, 24),
                     },
                     BTreeSet::from(["default".to_owned(), "std".to_owned(), "serde".to_owned()])
                 ),
diff --git a/crate_universe/src/metadata/dependency.rs b/crate_universe/src/metadata/dependency.rs
index 6987125..979719b 100644
--- a/crate_universe/src/metadata/dependency.rs
+++ b/crate_universe/src/metadata/dependency.rs
@@ -13,32 +13,32 @@
 
 /// A representation of a crate dependency
 #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
-pub struct Dependency {
+pub(crate) struct Dependency {
     /// The PackageId of the target
-    pub package_id: PackageId,
+    pub(crate) package_id: PackageId,
 
     /// The library target name of the dependency.
-    pub target_name: String,
+    pub(crate) target_name: String,
 
     /// The alias for the dependency from the perspective of the current package
-    pub alias: Option<String>,
+    pub(crate) alias: Option<String>,
 }
 
 /// A collection of [Dependency]s sorted by dependency kind.
 #[derive(Debug, Default, Serialize, Deserialize)]
-pub struct DependencySet {
-    pub normal_deps: Select<BTreeSet<Dependency>>,
-    pub normal_dev_deps: Select<BTreeSet<Dependency>>,
-    pub proc_macro_deps: Select<BTreeSet<Dependency>>,
-    pub proc_macro_dev_deps: Select<BTreeSet<Dependency>>,
-    pub build_deps: Select<BTreeSet<Dependency>>,
-    pub build_link_deps: Select<BTreeSet<Dependency>>,
-    pub build_proc_macro_deps: Select<BTreeSet<Dependency>>,
+pub(crate) struct DependencySet {
+    pub(crate) normal_deps: Select<BTreeSet<Dependency>>,
+    pub(crate) normal_dev_deps: Select<BTreeSet<Dependency>>,
+    pub(crate) proc_macro_deps: Select<BTreeSet<Dependency>>,
+    pub(crate) proc_macro_dev_deps: Select<BTreeSet<Dependency>>,
+    pub(crate) build_deps: Select<BTreeSet<Dependency>>,
+    pub(crate) build_link_deps: Select<BTreeSet<Dependency>>,
+    pub(crate) build_proc_macro_deps: Select<BTreeSet<Dependency>>,
 }
 
 impl DependencySet {
     /// Collect all dependencies for a given node in the resolve graph.
-    pub fn new_for_node(node: &Node, metadata: &CargoMetadata) -> Self {
+    pub(crate) fn new_for_node(node: &Node, metadata: &CargoMetadata) -> Self {
         let (normal_dev_deps, normal_deps) = {
             let (dev, normal) = node
                 .deps
diff --git a/crate_universe/src/metadata/metadata_annotation.rs b/crate_universe/src/metadata/metadata_annotation.rs
index 990c7aa..988b8ba 100644
--- a/crate_universe/src/metadata/metadata_annotation.rs
+++ b/crate_universe/src/metadata/metadata_annotation.rs
@@ -14,40 +14,40 @@
 use crate::select::Select;
 use crate::splicing::{SourceInfo, WorkspaceMetadata};
 
-pub type CargoMetadata = cargo_metadata::Metadata;
-pub type CargoLockfile = cargo_lock::Lockfile;
+pub(crate) type CargoMetadata = cargo_metadata::Metadata;
+pub(crate) type CargoLockfile = cargo_lock::Lockfile;
 
 /// Additional information about a crate relative to other crates in a dependency graph.
 #[derive(Debug, Serialize, Deserialize)]
-pub struct CrateAnnotation {
+pub(crate) struct CrateAnnotation {
     /// The crate's node in the Cargo "resolve" graph.
-    pub node: Node,
+    pub(crate) node: Node,
 
     /// The crate's sorted dependencies.
-    pub deps: DependencySet,
+    pub(crate) deps: DependencySet,
 }
 
 /// Additional information about a Cargo workspace's metadata.
 #[derive(Debug, Default, Serialize, Deserialize)]
-pub struct MetadataAnnotation {
+pub(crate) struct MetadataAnnotation {
     /// All packages found within the Cargo metadata
-    pub packages: BTreeMap<PackageId, Package>,
+    pub(crate) packages: BTreeMap<PackageId, Package>,
 
     /// All [CrateAnnotation]s for all packages
-    pub crates: BTreeMap<PackageId, CrateAnnotation>,
+    pub(crate) crates: BTreeMap<PackageId, CrateAnnotation>,
 
     /// All packages that are workspace members
-    pub workspace_members: BTreeSet<PackageId>,
+    pub(crate) workspace_members: BTreeSet<PackageId>,
 
     /// The path to the directory containing the Cargo workspace that produced the metadata.
-    pub workspace_root: PathBuf,
+    pub(crate) workspace_root: PathBuf,
 
     /// Information on the Cargo workspace.
-    pub workspace_metadata: WorkspaceMetadata,
+    pub(crate) workspace_metadata: WorkspaceMetadata,
 }
 
 impl MetadataAnnotation {
-    pub fn new(metadata: CargoMetadata) -> MetadataAnnotation {
+    pub(crate) fn new(metadata: CargoMetadata) -> MetadataAnnotation {
         // UNWRAP: The workspace metadata should be written by a controlled process. This should not return a result
         let workspace_metadata = find_workspace_metadata(&metadata).unwrap_or_default();
 
@@ -104,7 +104,7 @@
 
 /// Additional information about how and where to acquire a crate's source code from.
 #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
-pub enum SourceAnnotation {
+pub(crate) enum SourceAnnotation {
     Git {
         /// The Git url where to clone the source from.
         remote: String,
@@ -160,13 +160,13 @@
 /// Additional information related to [Cargo.lock](https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html)
 /// data used for improved determinism.
 #[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord, Deserialize, Serialize)]
-pub struct LockfileAnnotation {
+pub(crate) struct LockfileAnnotation {
     /// A mapping of crates/packages to additional source (network location) information.
-    pub crates: BTreeMap<PackageId, SourceAnnotation>,
+    pub(crate) crates: BTreeMap<PackageId, SourceAnnotation>,
 }
 
 impl LockfileAnnotation {
-    pub fn new(lockfile: CargoLockfile, metadata: &CargoMetadata) -> Result<Self> {
+    pub(crate) fn new(lockfile: CargoLockfile, metadata: &CargoMetadata) -> Result<Self> {
         let workspace_metadata = find_workspace_metadata(metadata).unwrap_or_default();
 
         let nodes: Vec<&Node> = metadata
@@ -245,7 +245,10 @@
 
             return Ok(SourceAnnotation::Git {
                 remote: source.url().to_string(),
-                commitish: Commitish::from(git_ref.clone()),
+                commitish: source
+                    .precise()
+                    .map(|rev| Commitish::Rev(rev.to_string()))
+                    .unwrap_or(Commitish::from(git_ref.clone())),
                 shallow_since: None,
                 strip_prefix,
                 patch_args: None,
@@ -303,7 +306,7 @@
         package: &cargo_lock::Package,
         metadata: &WorkspaceMetadata,
     ) -> Option<SourceInfo> {
-        let crate_id = CrateId::new(package.name.to_string(), package.version.to_string());
+        let crate_id = CrateId::new(package.name.to_string(), package.version.clone());
         metadata.sources.get(&crate_id).cloned()
     }
 
@@ -338,35 +341,35 @@
 
 /// A pairing of a crate's package identifier to its annotations.
 #[derive(Debug)]
-pub struct PairedExtras {
+pub(crate) struct PairedExtras {
     /// The crate's package identifier
-    pub package_id: cargo_metadata::PackageId,
+    pub(crate) package_id: cargo_metadata::PackageId,
 
     /// The crate's annotations
-    pub crate_extra: CrateAnnotations,
+    pub(crate) crate_extra: CrateAnnotations,
 }
 
 /// A collection of data which has been processed for optimal use in generating Bazel targets.
 #[derive(Debug, Default)]
-pub struct Annotations {
+pub(crate) struct Annotations {
     /// Annotated Cargo metadata
-    pub metadata: MetadataAnnotation,
+    pub(crate) metadata: MetadataAnnotation,
 
     /// Annotated Cargo lockfile
-    pub lockfile: LockfileAnnotation,
+    pub(crate) lockfile: LockfileAnnotation,
 
     /// The current workspace's configuration settings
-    pub config: Config,
+    pub(crate) config: Config,
 
     /// Pairred crate annotations
-    pub pairred_extras: BTreeMap<CrateId, PairedExtras>,
+    pub(crate) pairred_extras: BTreeMap<CrateId, PairedExtras>,
 
     /// Feature set for each target triplet and crate.
-    pub crate_features: BTreeMap<CrateId, Select<BTreeSet<String>>>,
+    pub(crate) crate_features: BTreeMap<CrateId, Select<BTreeSet<String>>>,
 }
 
 impl Annotations {
-    pub fn new(
+    pub(crate) fn new(
         cargo_metadata: CargoMetadata,
         cargo_lockfile: CargoLockfile,
         config: Config,
@@ -403,7 +406,7 @@
                     None
                 } else {
                     Some((
-                        CrateId::new(pkg.name.clone(), pkg.version.to_string()),
+                        CrateId::new(pkg.name.clone(), pkg.version.clone()),
                         PairedExtras {
                             package_id: pkg_id.clone(),
                             crate_extra,
@@ -445,7 +448,7 @@
     if cargo_metadata.workspace_members.contains(id) {
         if let Some(data) = find_workspace_metadata(cargo_metadata) {
             let pkg = &cargo_metadata[id];
-            let crate_id = CrateId::new(pkg.name.clone(), pkg.version.to_string());
+            let crate_id = CrateId::new(pkg.name.clone(), pkg.version.clone());
 
             !data.sources.contains_key(&crate_id)
         } else {
@@ -469,6 +472,7 @@
 #[cfg(test)]
 mod test {
     use super::*;
+    use crate::config::CrateNameAndVersionReq;
 
     use crate::test::*;
 
@@ -547,11 +551,32 @@
     }
 
     #[test]
+    fn resolves_commit_from_branches_and_tags() {
+        let crates =
+            LockfileAnnotation::new(test::lockfile::git_repos(), &test::metadata::git_repos())
+                .unwrap()
+                .crates;
+
+        let package_id = PackageId { repr: "tracing 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)".into() };
+        let annotation = crates.get(&package_id).unwrap();
+
+        let commitish = match annotation {
+            SourceAnnotation::Git { commitish, .. } => commitish,
+            _ => panic!("Unexpected annotation type"),
+        };
+
+        assert_eq!(
+            *commitish,
+            Commitish::Rev("1e09e50e8d15580b5929adbade9c782a6833e4a0".into())
+        );
+    }
+
+    #[test]
     fn detect_unused_annotation() {
         // Create a config with some random annotation
         let mut config = Config::default();
         config.annotations.insert(
-            CrateId::new("mock-crate".to_owned(), "0.1.0".to_owned()),
+            CrateNameAndVersionReq::new("mock-crate".to_owned(), "0.1.0".parse().unwrap()),
             CrateAnnotations::default(),
         );
 
@@ -565,7 +590,14 @@
 
     #[test]
     fn defaults_from_package_metadata() {
-        let crate_id = CrateId::new("has_package_metadata".to_owned(), "0.0.0".to_owned());
+        let crate_id = CrateId::new(
+            "has_package_metadata".to_owned(),
+            semver::Version::new(0, 0, 0),
+        );
+        let crate_name_and_version_req = CrateNameAndVersionReq::new(
+            "has_package_metadata".to_owned(),
+            "0.0.0".parse().unwrap(),
+        );
         let annotations = CrateAnnotations {
             rustc_env: Some(Select::from_value(BTreeMap::from([(
                 "BAR".to_owned(),
@@ -577,7 +609,7 @@
         let mut config = Config::default();
         config
             .annotations
-            .insert(crate_id.clone(), annotations.clone());
+            .insert(crate_name_and_version_req, annotations.clone());
 
         // Combine the above annotations with default values provided by the
         // crate author in package metadata.
diff --git a/crate_universe/src/rendering.rs b/crate_universe/src/rendering.rs
index 8a2f9fe..b9cd992 100644
--- a/crate_universe/src/rendering.rs
+++ b/crate_universe/src/rendering.rs
@@ -29,14 +29,17 @@
 // to platform labels like "@rules_rust//rust/platform:x86_64-unknown-linux-gnu".
 pub(crate) type Platforms = BTreeMap<String, BTreeSet<String>>;
 
-pub struct Renderer {
+pub(crate) struct Renderer {
     config: RenderConfig,
     supported_platform_triples: BTreeSet<TargetTriple>,
     engine: TemplateEngine,
 }
 
 impl Renderer {
-    pub fn new(config: RenderConfig, supported_platform_triples: BTreeSet<TargetTriple>) -> Self {
+    pub(crate) fn new(
+        config: RenderConfig,
+        supported_platform_triples: BTreeSet<TargetTriple>,
+    ) -> Self {
         let engine = TemplateEngine::new(&config);
         Self {
             config,
@@ -45,7 +48,7 @@
         }
     }
 
-    pub fn render(&self, context: &Context) -> Result<BTreeMap<PathBuf, String>> {
+    pub(crate) fn render(&self, context: &Context) -> Result<BTreeMap<PathBuf, String>> {
         let mut output = BTreeMap::new();
 
         let platforms = self.render_platform_labels(context);
@@ -153,6 +156,7 @@
         let mut exports_files = ExportsFiles {
             paths: BTreeSet::from(["cargo-bazel.json".to_owned(), "defs.bzl".to_owned()]),
             globs: Glob {
+                allow_empty: true,
                 include: BTreeSet::from(["*.bazel".to_owned()]),
                 exclude: BTreeSet::new(),
             },
@@ -165,6 +169,7 @@
         let filegroup = Filegroup {
             name: "srcs".to_owned(),
             srcs: Glob {
+                allow_empty: true,
                 include: BTreeSet::from(["*.bazel".to_owned(), "*.bzl".to_owned()]),
                 exclude: BTreeSet::new(),
             },
@@ -190,7 +195,11 @@
                     } else {
                         rename.clone()
                     },
-                    actual: self.crate_label(&krate.name, &krate.version, library_target_name),
+                    actual: self.crate_label(
+                        &krate.name,
+                        &krate.version.to_string(),
+                        library_target_name,
+                    ),
                     tags: BTreeSet::from(["manual".to_owned()]),
                 });
             }
@@ -199,7 +208,7 @@
                 dependencies.push(Alias {
                     rule: alias_rule.rule(),
                     name: alias.clone(),
-                    actual: self.crate_label(&krate.name, &krate.version, target),
+                    actual: self.crate_label(&krate.name, &krate.version.to_string(), target),
                     tags: BTreeSet::from(["manual".to_owned()]),
                 });
             }
@@ -240,7 +249,7 @@
                         },
                         actual: self.crate_label(
                             &krate.name,
-                            &krate.version,
+                            &krate.version.to_string(),
                             &format!("{}__bin", bin.crate_name),
                         ),
                         tags: BTreeSet::from(["manual".to_owned()]),
@@ -275,7 +284,7 @@
                 let label = match render_build_file_template(
                     &self.config.build_file_template,
                     &id.name,
-                    &id.version,
+                    &id.version.to_string(),
                 ) {
                     Ok(label) => label,
                     Err(e) => bail!(e),
@@ -340,7 +349,7 @@
                 name: "package_info".to_owned(),
                 package_name: krate.name.clone(),
                 package_url: krate.package_url.clone().unwrap_or_default(),
-                package_version: krate.version.clone(),
+                package_version: krate.version.to_string(),
             }));
 
             if has_license_ids {
@@ -372,7 +381,7 @@
                     starlark.push(Starlark::Alias(Alias {
                         rule: AliasRule::default().rule(),
                         name: target.crate_name.clone(),
-                        actual: Label::from_str(&format!(":{}_build_script", krate.name)).unwrap(),
+                        actual: Label::from_str(&format!(":{}_bs", krate.name)).unwrap(),
                         tags: BTreeSet::from(["manual".to_owned()]),
                     }));
                 }
@@ -426,7 +435,9 @@
             // on having certain Cargo environment variables set.
             //
             // Do not change this name to "cargo_build_script".
-            name: format!("{}_build_script", krate.name),
+            //
+            // This is set to a short suffix to avoid long path name issues on windows.
+            name: format!("{}_bs", krate.name),
             aliases: SelectDict::new(self.make_aliases(krate, true, false), platforms),
             build_script_env: SelectDict::new(
                 attrs
@@ -711,7 +722,7 @@
                 if let Some(alias) = &dependency.alias {
                     let label = self.crate_label(
                         &dependency.id.name,
-                        &dependency.id.version,
+                        &dependency.id.version.to_string(),
                         &dependency.target,
                     );
                     aliases.insert((label, alias.clone()), configuration.clone());
@@ -727,7 +738,9 @@
         extra_deps: Select<BTreeSet<Label>>,
     ) -> Select<BTreeSet<Label>> {
         Select::merge(
-            deps.map(|dep| self.crate_label(&dep.id.name, &dep.id.version, &dep.target)),
+            deps.map(|dep| {
+                self.crate_label(&dep.id.name, &dep.id.version.to_string(), &dep.target)
+            }),
             extra_deps,
         )
     }
@@ -767,7 +780,7 @@
 }
 
 /// Write a set of [crate::context::crate_context::CrateContext] to disk.
-pub fn write_outputs(
+pub(crate) fn write_outputs(
     outputs: BTreeMap<PathBuf, String>,
     out_dir: &Path,
     dry_run: bool,
@@ -805,7 +818,7 @@
 }
 
 /// Render the Bazel label of a crate
-pub fn render_crate_bazel_label(
+pub(crate) fn render_crate_bazel_label(
     template: &str,
     repository_name: &str,
     name: &str,
@@ -820,7 +833,7 @@
 }
 
 /// Render the Bazel label of a crate
-pub fn render_crate_bazel_repository(
+pub(crate) fn render_crate_bazel_repository(
     template: &str,
     repository_name: &str,
     name: &str,
@@ -833,14 +846,14 @@
 }
 
 /// Render the Bazel label of a crate
-pub fn render_crate_build_file(template: &str, name: &str, version: &str) -> String {
+pub(crate) fn render_crate_build_file(template: &str, name: &str, version: &str) -> String {
     template
         .replace("{name}", name)
         .replace("{version}", version)
 }
 
 /// Render the Bazel label of a vendor module label
-pub fn render_module_label(template: &str, name: &str) -> Result<Label> {
+pub(crate) fn render_module_label(template: &str, name: &str) -> Result<Label> {
     Label::from_str(&template.replace("{file}", name))
 }
 
@@ -873,6 +886,7 @@
 
     Data {
         glob: Glob {
+            allow_empty: true,
             include: glob,
             exclude: COMMON_GLOB_EXCLUDES
                 .iter()
@@ -896,6 +910,8 @@
     use crate::metadata::Annotations;
     use crate::test;
 
+    const VERSION_ZERO_ONE_ZERO: semver::Version = semver::Version::new(0, 1, 0);
+
     fn mock_target_attributes() -> TargetAttributes {
         TargetAttributes {
             crate_name: "mock_crate".to_owned(),
@@ -943,14 +959,25 @@
     #[test]
     fn render_rust_library() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         context.crates.insert(
             crate_id.clone(),
             CrateContext {
                 name: crate_id.name,
                 version: crate_id.version,
+                package_url: None,
+                repository: None,
                 targets: BTreeSet::from([Rule::Library(mock_target_attributes())]),
-                ..CrateContext::default()
+                library_target_name: None,
+                common_attrs: CommonAttributes::default(),
+                build_script_attrs: None,
+                license: None,
+                license_ids: BTreeSet::default(),
+                license_file: None,
+                additive_build_file_content: None,
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
+                alias_rule: None,
             },
         );
 
@@ -969,15 +996,25 @@
     #[test]
     fn test_disable_pipelining() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         context.crates.insert(
             crate_id.clone(),
             CrateContext {
                 name: crate_id.name,
                 version: crate_id.version,
+                package_url: None,
+                repository: None,
                 targets: BTreeSet::from([Rule::Library(mock_target_attributes())]),
+                library_target_name: None,
+                common_attrs: CommonAttributes::default(),
+                build_script_attrs: None,
+                license: None,
+                license_ids: BTreeSet::default(),
+                license_file: None,
+                additive_build_file_content: None,
                 disable_pipelining: true,
-                ..CrateContext::default()
+                extra_aliased_targets: BTreeMap::default(),
+                alias_rule: None,
             },
         );
 
@@ -994,20 +1031,30 @@
     #[test]
     fn render_cargo_build_script() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         context.crates.insert(
             crate_id.clone(),
             CrateContext {
                 name: crate_id.name,
                 version: crate_id.version,
+                package_url: None,
+                repository: None,
                 targets: BTreeSet::from([Rule::BuildScript(TargetAttributes {
                     crate_name: "build_script_build".to_owned(),
                     crate_root: Some("build.rs".to_owned()),
                     ..TargetAttributes::default()
                 })]),
                 // Build script attributes are required.
+                library_target_name: None,
+                common_attrs: CommonAttributes::default(),
                 build_script_attrs: Some(BuildScriptAttributes::default()),
-                ..CrateContext::default()
+                license: None,
+                license_ids: BTreeSet::default(),
+                license_file: None,
+                additive_build_file_content: None,
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
+                alias_rule: None,
             },
         );
 
@@ -1023,20 +1070,31 @@
         assert!(build_file_content.contains("\"crate-name=mock_crate\""));
 
         // Ensure `cargo_build_script` requirements are met
-        assert!(build_file_content.contains("name = \"mock_crate_build_script\""));
+        assert!(build_file_content.contains("name = \"mock_crate_bs\""));
     }
 
     #[test]
     fn render_proc_macro() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         context.crates.insert(
             crate_id.clone(),
             CrateContext {
                 name: crate_id.name,
                 version: crate_id.version,
+                package_url: None,
+                repository: None,
                 targets: BTreeSet::from([Rule::ProcMacro(mock_target_attributes())]),
-                ..CrateContext::default()
+                library_target_name: None,
+                common_attrs: CommonAttributes::default(),
+                build_script_attrs: None,
+                license: None,
+                license_ids: BTreeSet::default(),
+                license_file: None,
+                additive_build_file_content: None,
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
+                alias_rule: None,
             },
         );
 
@@ -1055,14 +1113,25 @@
     #[test]
     fn render_binary() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         context.crates.insert(
             crate_id.clone(),
             CrateContext {
                 name: crate_id.name,
                 version: crate_id.version,
+                package_url: None,
+                repository: None,
                 targets: BTreeSet::from([Rule::Binary(mock_target_attributes())]),
-                ..CrateContext::default()
+                library_target_name: None,
+                common_attrs: CommonAttributes::default(),
+                build_script_attrs: None,
+                license: None,
+                license_ids: BTreeSet::default(),
+                license_file: None,
+                additive_build_file_content: None,
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
+                alias_rule: None,
             },
         );
 
@@ -1081,17 +1150,27 @@
     #[test]
     fn render_additive_build_contents() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         context.crates.insert(
             crate_id.clone(),
             CrateContext {
                 name: crate_id.name,
                 version: crate_id.version,
+                package_url: None,
+                repository: None,
                 targets: BTreeSet::from([Rule::Binary(mock_target_attributes())]),
+                library_target_name: None,
+                common_attrs: CommonAttributes::default(),
+                build_script_attrs: None,
+                license: None,
+                license_ids: BTreeSet::default(),
+                license_file: None,
                 additive_build_file_content: Some(
                     "# Hello World from additive section!".to_owned(),
                 ),
-                ..CrateContext::default()
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
+                alias_rule: None,
             },
         );
 
@@ -1127,14 +1206,25 @@
     #[test]
     fn render_crate_repositories() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         context.crates.insert(
             crate_id.clone(),
             CrateContext {
                 name: crate_id.name,
                 version: crate_id.version,
+                package_url: None,
+                repository: None,
                 targets: BTreeSet::from([Rule::Library(mock_target_attributes())]),
-                ..CrateContext::default()
+                library_target_name: None,
+                common_attrs: CommonAttributes::default(),
+                build_script_attrs: None,
+                license: None,
+                license_ids: BTreeSet::default(),
+                license_file: None,
+                additive_build_file_content: None,
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
+                alias_rule: None,
             },
         );
 
@@ -1149,14 +1239,25 @@
     #[test]
     fn remote_remote_vendor_mode() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         context.crates.insert(
             crate_id.clone(),
             CrateContext {
                 name: crate_id.name,
                 version: crate_id.version,
+                package_url: None,
+                repository: None,
                 targets: BTreeSet::from([Rule::Library(mock_target_attributes())]),
-                ..CrateContext::default()
+                library_target_name: None,
+                common_attrs: CommonAttributes::default(),
+                build_script_attrs: None,
+                license: None,
+                license_ids: BTreeSet::default(),
+                license_file: None,
+                additive_build_file_content: None,
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
+                alias_rule: None,
             },
         );
 
@@ -1177,14 +1278,25 @@
     #[test]
     fn remote_local_vendor_mode() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         context.crates.insert(
             crate_id.clone(),
             CrateContext {
                 name: crate_id.name,
                 version: crate_id.version,
+                package_url: None,
+                repository: None,
                 targets: BTreeSet::from([Rule::Library(mock_target_attributes())]),
-                ..CrateContext::default()
+                library_target_name: None,
+                common_attrs: CommonAttributes::default(),
+                build_script_attrs: None,
+                license: None,
+                license_ids: BTreeSet::default(),
+                license_file: None,
+                additive_build_file_content: None,
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
+                alias_rule: None,
             },
         );
 
@@ -1206,7 +1318,7 @@
     #[test]
     fn duplicate_rustc_flags() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
 
         let rustc_flags = vec![
             "-l".to_owned(),
@@ -1220,12 +1332,22 @@
             CrateContext {
                 name: crate_id.name,
                 version: crate_id.version,
+                package_url: None,
+                repository: None,
                 targets: BTreeSet::from([Rule::Library(mock_target_attributes())]),
+                library_target_name: None,
                 common_attrs: CommonAttributes {
                     rustc_flags: Select::from_value(rustc_flags.clone()),
                     ..CommonAttributes::default()
                 },
-                ..CrateContext::default()
+                build_script_attrs: None,
+                license: None,
+                license_ids: BTreeSet::default(),
+                license_file: None,
+                additive_build_file_content: None,
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
+                alias_rule: None,
             },
         );
 
@@ -1311,7 +1433,7 @@
                 .collect(),
             ..Context::default()
         };
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         let mut crate_features: Select<BTreeSet<String>> = Select::default();
         crate_features.insert("foo".to_owned(), Some("aarch64-apple-darwin".to_owned()));
         crate_features.insert("bar".to_owned(), None);
@@ -1320,12 +1442,22 @@
             CrateContext {
                 name: crate_id.name,
                 version: crate_id.version,
+                package_url: None,
+                repository: None,
                 targets: BTreeSet::from([Rule::Library(mock_target_attributes())]),
+                library_target_name: None,
                 common_attrs: CommonAttributes {
                     crate_features,
                     ..CommonAttributes::default()
                 },
-                ..CrateContext::default()
+                build_script_attrs: None,
+                license: None,
+                license_ids: BTreeSet::default(),
+                license_file: None,
+                additive_build_file_content: None,
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
+                alias_rule: None,
             },
         );
 
@@ -1353,15 +1485,25 @@
     #[test]
     fn crate_package_metadata_without_license_ids() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         context.crates.insert(
             crate_id.clone(),
             CrateContext {
                 name: crate_id.name,
                 version: crate_id.version,
                 package_url: Some("http://www.mock_crate.com/".to_owned()),
+                repository: None,
                 targets: BTreeSet::from([Rule::Library(mock_target_attributes())]),
-                ..CrateContext::default()
+                library_target_name: None,
+                common_attrs: CommonAttributes::default(),
+                build_script_attrs: None,
+                license: None,
+                license_ids: BTreeSet::default(),
+                license_file: None,
+                additive_build_file_content: None,
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
+                alias_rule: None,
             },
         );
 
@@ -1395,7 +1537,7 @@
     #[test]
     fn crate_package_metadata_with_license_ids() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         context.crates.insert(
             crate_id.clone(),
             CrateContext {
@@ -1403,8 +1545,17 @@
                 version: crate_id.version,
                 package_url: Some("http://www.mock_crate.com/".to_owned()),
                 license_ids: BTreeSet::from(["Apache-2.0".to_owned(), "MIT".to_owned()]),
+                license_file: None,
+                additive_build_file_content: None,
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
                 targets: BTreeSet::from([Rule::Library(mock_target_attributes())]),
-                ..CrateContext::default()
+                library_target_name: None,
+                common_attrs: CommonAttributes::default(),
+                build_script_attrs: None,
+                repository: None,
+                license: None,
+                alias_rule: None,
             },
         );
 
@@ -1449,7 +1600,7 @@
     #[test]
     fn crate_package_metadata_with_license_ids_and_file() {
         let mut context = Context::default();
-        let crate_id = CrateId::new("mock_crate".to_owned(), "0.1.0".to_owned());
+        let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
         context.crates.insert(
             crate_id.clone(),
             CrateContext {
@@ -1458,8 +1609,16 @@
                 package_url: Some("http://www.mock_crate.com/".to_owned()),
                 license_ids: BTreeSet::from(["Apache-2.0".to_owned(), "MIT".to_owned()]),
                 license_file: Some("LICENSE.txt".to_owned()),
+                additive_build_file_content: None,
+                disable_pipelining: false,
+                extra_aliased_targets: BTreeMap::default(),
                 targets: BTreeSet::from([Rule::Library(mock_target_attributes())]),
-                ..CrateContext::default()
+                library_target_name: None,
+                common_attrs: CommonAttributes::default(),
+                build_script_attrs: None,
+                repository: None,
+                license: None,
+                alias_rule: None,
             },
         );
 
diff --git a/crate_universe/src/rendering/template_engine.rs b/crate_universe/src/rendering/template_engine.rs
index 9b7afff..083ee0a 100644
--- a/crate_universe/src/rendering/template_engine.rs
+++ b/crate_universe/src/rendering/template_engine.rs
@@ -15,13 +15,13 @@
 use crate::select::Select;
 use crate::utils::sanitize_repository_name;
 
-pub struct TemplateEngine {
+pub(crate) struct TemplateEngine {
     engine: Tera,
     context: tera::Context,
 }
 
 impl TemplateEngine {
-    pub fn new(render_config: &RenderConfig) -> Self {
+    pub(crate) fn new(render_config: &RenderConfig) -> Self {
         let mut tera = Tera::default();
         tera.add_raw_templates(vec![
             (
@@ -123,7 +123,7 @@
         self.context.clone()
     }
 
-    pub fn render_header(&self) -> Result<String> {
+    pub(crate) fn render_header(&self) -> Result<String> {
         let context = self.new_tera_ctx();
         let mut header = self
             .engine
@@ -133,7 +133,11 @@
         Ok(header)
     }
 
-    pub fn render_module_bzl(&self, data: &Context, platforms: &Platforms) -> Result<String> {
+    pub(crate) fn render_module_bzl(
+        &self,
+        data: &Context,
+        platforms: &Platforms,
+    ) -> Result<String> {
         let mut context = self.new_tera_ctx();
         context.insert("context", data);
         context.insert("platforms", platforms);
@@ -143,7 +147,7 @@
             .context("Failed to render crates module")
     }
 
-    pub fn render_vendor_module_file(&self, data: &Context) -> Result<String> {
+    pub(crate) fn render_vendor_module_file(&self, data: &Context) -> Result<String> {
         let mut context = self.new_tera_ctx();
         context.insert("context", data);
 
diff --git a/crate_universe/src/rendering/templates/partials/module/deps_map.j2 b/crate_universe/src/rendering/templates/partials/module/deps_map.j2
index c9f169d..d1f1b98 100644
--- a/crate_universe/src/rendering/templates/partials/module/deps_map.j2
+++ b/crate_universe/src/rendering/templates/partials/module/deps_map.j2
@@ -30,7 +30,7 @@
             {%- for dep in deps_set.common %}
             {%- if dep.id in context.workspace_members %}{% continue %}}{% endif %}{# Workspace member repositories are not defined, skip adding their labels here #}
             {%- set crate = context.crates | get(key=dep.id) %}
-            "{{ dep | get(key="alias", default=crate.name) }}": "{{ crate_label(name = crate.name, version = crate.version, target = dep.target) }}",
+            "{{ dep | get(key="alias", default=crate.name) }}": Label("{{ crate_label(name = crate.name, version = crate.version, target = dep.target) }}"),
             {%- endfor %}
         },
         {%- endif %}
@@ -40,7 +40,7 @@
             {%- for dep in deps %}
             {%- if dep.id in context.workspace_members %}{% continue %}}{% endif %}{# Workspace member repositories are not defined, skip adding their labels here #}
             {%- set crate = context.crates | get(key=dep.id) %}
-            "{{ dep | get(key="alias", default=crate.name) }}": "{{ crate_label(name = crate.name, version = crate.version, target = dep.target) }}",
+            "{{ dep | get(key="alias", default=crate.name) }}": Label("{{ crate_label(name = crate.name, version = crate.version, target = dep.target) }}"),
             {%- endfor %}
         },
         {%- endfor %}
diff --git a/crate_universe/src/select.rs b/crate_universe/src/select.rs
index 621c719..d2662fc 100644
--- a/crate_universe/src/select.rs
+++ b/crate_universe/src/select.rs
@@ -3,6 +3,7 @@
 
 use serde::{de::DeserializeOwned, Deserialize, Deserializer, Serialize};
 
+/// A wrapper around values where some values may be conditionally included (e.g. only on a certain platform), and others are unconditional.
 #[derive(Debug, Clone, PartialEq, Eq, Serialize)]
 pub struct Select<T>
 where
@@ -49,7 +50,7 @@
 
 impl<T> SelectableOrderedValue for T where T: SelectableValue + PartialOrd + Ord {}
 
-pub trait SelectableScalar
+pub(crate) trait SelectableScalar
 where
     Self: SelectableValue,
 {
@@ -64,45 +65,49 @@
 where
     T: Selectable,
 {
-    pub fn new() -> Self {
+    pub(crate) fn new() -> Self {
         Self {
             common: T::CommonType::default(),
             selects: BTreeMap::new(),
         }
     }
 
-    pub fn from_value(value: T::CommonType) -> Self {
+    pub(crate) fn from_value(value: T::CommonType) -> Self {
         Self {
             common: value,
             selects: BTreeMap::new(),
         }
     }
 
+    /// Whether there zero values in this collection, common or configuration-specific.
     pub fn is_empty(&self) -> bool {
         T::is_empty(self)
     }
 
+    /// A list of the configurations which have some configuration-specific value associated.
     pub fn configurations(&self) -> BTreeSet<String> {
         self.selects.keys().cloned().collect()
     }
 
+    /// All values and their associated configurations, if any.
     pub fn items(&self) -> Vec<(Option<String>, T::ItemType)> {
         T::items(self)
     }
 
+    /// All values, whether common or configured.
     pub fn values(&self) -> Vec<T::ItemType> {
         T::values(self)
     }
 
-    pub fn insert(&mut self, value: T::ItemType, configuration: Option<String>) {
+    pub(crate) fn insert(&mut self, value: T::ItemType, configuration: Option<String>) {
         T::insert(self, value, configuration);
     }
 
-    pub fn into_parts(self) -> (T::CommonType, BTreeMap<String, T::SelectsType>) {
+    pub(crate) fn into_parts(self) -> (T::CommonType, BTreeMap<String, T::SelectsType>) {
         (self.common, self.selects)
     }
 
-    pub fn merge(lhs: Self, rhs: Self) -> Self {
+    pub(crate) fn merge(lhs: Self, rhs: Self) -> Self {
         T::merge(lhs, rhs)
     }
 }
@@ -367,7 +372,7 @@
 where
     T: SelectableOrderedValue,
 {
-    pub fn map<U, F>(self, func: F) -> Select<BTreeSet<U>>
+    pub(crate) fn map<U, F>(self, func: F) -> Select<BTreeSet<U>>
     where
         U: SelectableOrderedValue,
         F: Copy + FnMut(T) -> U,
diff --git a/crate_universe/src/splicing.rs b/crate_universe/src/splicing.rs
index e13ed3e..3cb9f4e 100644
--- a/crate_universe/src/splicing.rs
+++ b/crate_universe/src/splicing.rs
@@ -23,25 +23,25 @@
 
 use self::cargo_config::CargoConfig;
 use self::crate_index_lookup::CrateIndexLookup;
-pub use self::splicer::*;
+pub(crate) use self::splicer::*;
 
 type DirectPackageManifest = BTreeMap<String, cargo_toml::DependencyDetail>;
 
 /// A collection of information used for splicing together a new Cargo manifest.
 #[derive(Debug, Default, Serialize, Deserialize, Clone)]
 #[serde(deny_unknown_fields)]
-pub struct SplicingManifest {
+pub(crate) struct SplicingManifest {
     /// A set of all packages directly written to the rule
-    pub direct_packages: DirectPackageManifest,
+    pub(crate) direct_packages: DirectPackageManifest,
 
     /// A mapping of manifest paths to the labels representing them
-    pub manifests: BTreeMap<PathBuf, Label>,
+    pub(crate) manifests: BTreeMap<PathBuf, Label>,
 
     /// The path of a Cargo config file
-    pub cargo_config: Option<PathBuf>,
+    pub(crate) cargo_config: Option<PathBuf>,
 
     /// The Cargo resolver version to use for splicing
-    pub resolver_version: cargo_toml::Resolver,
+    pub(crate) resolver_version: cargo_toml::Resolver,
 }
 
 impl FromStr for SplicingManifest {
@@ -53,12 +53,12 @@
 }
 
 impl SplicingManifest {
-    pub fn try_from_path<T: AsRef<Path>>(path: T) -> Result<Self> {
+    pub(crate) fn try_from_path<T: AsRef<Path>>(path: T) -> Result<Self> {
         let content = fs::read_to_string(path.as_ref())?;
         Self::from_str(&content).context("Failed to load SplicingManifest")
     }
 
-    pub fn resolve(self, workspace_dir: &Path, output_base: &Path) -> Self {
+    pub(crate) fn resolve(self, workspace_dir: &Path, output_base: &Path) -> Self {
         let Self {
             manifests,
             cargo_config,
@@ -99,15 +99,15 @@
 
 /// The result of fully resolving a [SplicingManifest] in preparation for splicing.
 #[derive(Debug, Serialize, Default)]
-pub struct SplicingMetadata {
+pub(crate) struct SplicingMetadata {
     /// A set of all packages directly written to the rule
-    pub direct_packages: DirectPackageManifest,
+    pub(crate) direct_packages: DirectPackageManifest,
 
     /// A mapping of manifest paths to the labels representing them
-    pub manifests: BTreeMap<Label, cargo_toml::Manifest>,
+    pub(crate) manifests: BTreeMap<Label, cargo_toml::Manifest>,
 
     /// The path of a Cargo config file
-    pub cargo_config: Option<CargoConfig>,
+    pub(crate) cargo_config: Option<CargoConfig>,
 }
 
 impl TryFrom<SplicingManifest> for SplicingMetadata {
@@ -151,31 +151,31 @@
 }
 
 #[derive(Debug, Default, Serialize, Deserialize, Clone)]
-pub struct SourceInfo {
+pub(crate) struct SourceInfo {
     /// A url where to a `.crate` file.
-    pub url: String,
+    pub(crate) url: String,
 
     /// The `.crate` file's sha256 checksum.
-    pub sha256: String,
+    pub(crate) sha256: String,
 }
 
 /// Information about the Cargo workspace relative to the Bazel workspace
 #[derive(Debug, Default, Serialize, Deserialize)]
-pub struct WorkspaceMetadata {
+pub(crate) struct WorkspaceMetadata {
     /// A mapping of crates to information about where their source can be downloaded
-    pub sources: BTreeMap<CrateId, SourceInfo>,
+    pub(crate) sources: BTreeMap<CrateId, SourceInfo>,
 
     /// The path from the root of a Bazel workspace to the root of the Cargo workspace
-    pub workspace_prefix: Option<String>,
+    pub(crate) workspace_prefix: Option<String>,
 
     /// Paths from the root of a Bazel workspace to a Cargo package
-    pub package_prefixes: BTreeMap<String, String>,
+    pub(crate) package_prefixes: BTreeMap<String, String>,
 
     /// Feature set for each target triplet and crate.
     ///
     /// We store this here because it's computed during the splicing phase via
     /// calls to "cargo tree" which need the full spliced workspace.
-    pub features: BTreeMap<CrateId, Select<BTreeSet<String>>>,
+    pub(crate) features: BTreeMap<CrateId, Select<BTreeSet<String>>>,
 }
 
 impl TryFrom<toml::Value> for WorkspaceMetadata {
@@ -252,7 +252,7 @@
         })
     }
 
-    pub fn write_registry_urls_and_feature_map(
+    pub(crate) fn write_registry_urls_and_feature_map(
         cargo: &Cargo,
         lockfile: &cargo_lock::Lockfile,
         features: BTreeMap<CrateId, Select<BTreeSet<String>>>,
@@ -321,6 +321,8 @@
                     CrateIndexLookup::Http(crates_index::SparseIndex::from_url(
                         "sparse+https://index.crates.io/",
                     )?)
+                } else if index_url.starts_with("sparse+") {
+                    CrateIndexLookup::Http(crates_index::SparseIndex::from_url(index_url)?)
                 } else {
                     match source_kind {
                         SourceKind::Registry => {
@@ -373,7 +375,7 @@
                 })?;
                 lookup.get_source_info(pkg).map(|source_info| {
                     (
-                        CrateId::new(pkg.name.as_str().to_owned(), pkg.version.to_string()),
+                        CrateId::new(pkg.name.as_str().to_owned(), pkg.version.clone()),
                         source_info,
                     )
                 })
@@ -420,14 +422,14 @@
 }
 
 #[derive(Debug)]
-pub enum SplicedManifest {
+pub(crate) enum SplicedManifest {
     Workspace(PathBuf),
     Package(PathBuf),
     MultiPackage(PathBuf),
 }
 
 impl SplicedManifest {
-    pub fn as_path_buf(&self) -> &PathBuf {
+    pub(crate) fn as_path_buf(&self) -> &PathBuf {
         match self {
             SplicedManifest::Workspace(p) => p,
             SplicedManifest::Package(p) => p,
@@ -436,12 +438,12 @@
     }
 }
 
-pub fn read_manifest(manifest: &Path) -> Result<Manifest> {
+pub(crate) fn read_manifest(manifest: &Path) -> Result<Manifest> {
     let content = fs::read_to_string(manifest)?;
     cargo_toml::Manifest::from_str(content.as_str()).context("Failed to deserialize manifest")
 }
 
-pub fn generate_lockfile(
+pub(crate) fn generate_lockfile(
     manifest_path: &SplicedManifest,
     existing_lock: &Option<PathBuf>,
     cargo_bin: Cargo,
diff --git a/crate_universe/src/splicing/cargo_config.rs b/crate_universe/src/splicing/cargo_config.rs
index d33c517..e99345a 100644
--- a/crate_universe/src/splicing/cargo_config.rs
+++ b/crate_universe/src/splicing/cargo_config.rs
@@ -12,25 +12,25 @@
 /// The [`[registry]`](https://doc.rust-lang.org/cargo/reference/config.html#registry)
 /// table controls the default registry used when one is not specified.
 #[derive(Debug, Deserialize, Serialize, PartialEq, Eq)]
-pub struct Registry {
+pub(crate) struct Registry {
     /// name of the default registry
-    pub default: String,
+    pub(crate) default: String,
 
     /// authentication token for crates.io
-    pub token: Option<String>,
+    pub(crate) token: Option<String>,
 }
 
 /// The [`[source]`](https://doc.rust-lang.org/cargo/reference/config.html#source)
 /// table defines the registry sources available.
 #[derive(Debug, Deserialize, Serialize, PartialEq, Eq)]
-pub struct Source {
+pub(crate) struct Source {
     /// replace this source with the given named source
     #[serde(rename = "replace-with")]
-    pub replace_with: Option<String>,
+    pub(crate) replace_with: Option<String>,
 
     /// URL to a registry source
     #[serde(default = "default_registry_url")]
-    pub registry: String,
+    pub(crate) registry: String,
 }
 
 /// This is the default registry url per what's defined by Cargo.
@@ -40,12 +40,12 @@
 
 #[derive(Debug, Deserialize, Serialize, PartialEq, Eq)]
 /// registries other than crates.io
-pub struct AdditionalRegistry {
+pub(crate) struct AdditionalRegistry {
     /// URL of the registry index
-    pub index: String,
+    pub(crate) index: String,
 
     /// authentication token for the registry
-    pub token: Option<String>,
+    pub(crate) token: Option<String>,
 }
 
 /// A subset of a Cargo configuration file. The schema here is only what
@@ -53,17 +53,17 @@
 /// See [cargo docs](https://doc.rust-lang.org/cargo/reference/config.html#configuration-format)
 /// for more details.
 #[derive(Debug, Deserialize, Serialize, PartialEq, Eq)]
-pub struct CargoConfig {
+pub(crate) struct CargoConfig {
     /// registries other than crates.io
     #[serde(default = "default_registries")]
-    pub registries: BTreeMap<String, AdditionalRegistry>,
+    pub(crate) registries: BTreeMap<String, AdditionalRegistry>,
 
     #[serde(default = "default_registry")]
-    pub registry: Registry,
+    pub(crate) registry: Registry,
 
     /// source definition and replacement
     #[serde(default = "BTreeMap::new")]
-    pub source: BTreeMap<String, Source>,
+    pub(crate) source: BTreeMap<String, Source>,
 }
 
 /// Each Cargo config is expected to have a default `crates-io` registry.
@@ -116,13 +116,13 @@
 
 impl CargoConfig {
     /// Load a Cargo config from a path to a file on disk.
-    pub fn try_from_path(path: &Path) -> Result<Self> {
+    pub(crate) fn try_from_path(path: &Path) -> Result<Self> {
         let content = fs::read_to_string(path)?;
         Self::from_str(&content)
     }
 
     /// Look up a registry [Source] by its url.
-    pub fn get_source_from_url(&self, url: &str) -> Option<&Source> {
+    pub(crate) fn get_source_from_url(&self, url: &str) -> Option<&Source> {
         if let Some(found) = self.source.values().find(|v| v.registry == url) {
             Some(found)
         } else if url == utils::CRATES_IO_INDEX_URL {
@@ -132,7 +132,7 @@
         }
     }
 
-    pub fn get_registry_index_url_by_name(&self, name: &str) -> Option<&str> {
+    pub(crate) fn get_registry_index_url_by_name(&self, name: &str) -> Option<&str> {
         if let Some(registry) = self.registries.get(name) {
             Some(&registry.index)
         } else if let Some(source) = self.source.get(name) {
@@ -142,7 +142,7 @@
         }
     }
 
-    pub fn resolve_replacement_url<'a>(&'a self, url: &'a str) -> Result<&'a str> {
+    pub(crate) fn resolve_replacement_url<'a>(&'a self, url: &'a str) -> Result<&'a str> {
         if let Some(source) = self.get_source_from_url(url) {
             if let Some(replace_with) = &source.replace_with {
                 if let Some(replacement) = self.get_registry_index_url_by_name(replace_with) {
diff --git a/crate_universe/src/splicing/crate_index_lookup.rs b/crate_universe/src/splicing/crate_index_lookup.rs
index 7710f32..2cc5134 100644
--- a/crate_universe/src/splicing/crate_index_lookup.rs
+++ b/crate_universe/src/splicing/crate_index_lookup.rs
@@ -3,13 +3,13 @@
 use crates_index::IndexConfig;
 use hex::ToHex;
 
-pub enum CrateIndexLookup {
+pub(crate) enum CrateIndexLookup {
     Git(crates_index::GitIndex),
     Http(crates_index::SparseIndex),
 }
 
 impl CrateIndexLookup {
-    pub fn get_source_info(&self, pkg: &cargo_lock::Package) -> Result<Option<SourceInfo>> {
+    pub(crate) fn get_source_info(&self, pkg: &cargo_lock::Package) -> Result<Option<SourceInfo>> {
         let index_config = self
             .index_config()
             .context("Failed to get crate index config")?;
diff --git a/crate_universe/src/splicing/splicer.rs b/crate_universe/src/splicing/splicer.rs
index 552d4e1..4093ab6 100644
--- a/crate_universe/src/splicing/splicer.rs
+++ b/crate_universe/src/splicing/splicer.rs
@@ -17,7 +17,7 @@
 
 /// The core splicer implementation. Each style of Bazel workspace should be represented
 /// here and a splicing implementation defined.
-pub enum SplicerKind<'a> {
+pub(crate) enum SplicerKind<'a> {
     /// Splice a manifest which is represented by a Cargo workspace
     Workspace {
         path: &'a PathBuf,
@@ -42,7 +42,7 @@
 const IGNORE_LIST: &[&str] = &[".git", "bazel-*", ".svn"];
 
 impl<'a> SplicerKind<'a> {
-    pub fn new(
+    pub(crate) fn new(
         manifests: &'a BTreeMap<PathBuf, Manifest>,
         splicing_manifest: &'a SplicingManifest,
         cargo: &Path,
@@ -185,7 +185,7 @@
     }
 
     /// Performs splicing based on the current variant.
-    pub fn splice(&self, workspace_dir: &Path) -> Result<SplicedManifest> {
+    pub(crate) fn splice(&self, workspace_dir: &Path) -> Result<SplicedManifest> {
         match self {
             SplicerKind::Workspace {
                 path,
@@ -517,14 +517,14 @@
     }
 }
 
-pub struct Splicer {
+pub(crate) struct Splicer {
     workspace_dir: PathBuf,
     manifests: BTreeMap<PathBuf, Manifest>,
     splicing_manifest: SplicingManifest,
 }
 
 impl Splicer {
-    pub fn new(workspace_dir: PathBuf, splicing_manifest: SplicingManifest) -> Result<Self> {
+    pub(crate) fn new(workspace_dir: PathBuf, splicing_manifest: SplicingManifest) -> Result<Self> {
         // Load all manifests
         let manifests = splicing_manifest
             .manifests
@@ -544,7 +544,7 @@
     }
 
     /// Build a new workspace root
-    pub fn splice_workspace(&self, cargo: &Path) -> Result<SplicedManifest> {
+    pub(crate) fn splice_workspace(&self, cargo: &Path) -> Result<SplicedManifest> {
         SplicerKind::new(&self.manifests, &self.splicing_manifest, cargo)?
             .splice(&self.workspace_dir)
     }
@@ -553,7 +553,7 @@
 const DEFAULT_SPLICING_PACKAGE_NAME: &str = "direct-cargo-bazel-deps";
 const DEFAULT_SPLICING_PACKAGE_VERSION: &str = "0.0.1";
 
-pub fn default_cargo_package_manifest() -> cargo_toml::Manifest {
+pub(crate) fn default_cargo_package_manifest() -> cargo_toml::Manifest {
     // A manifest is generated with a fake workspace member so the [cargo_toml::Manifest::Workspace]
     // member is deseralized and is not `None`.
     cargo_toml::Manifest::from_str(
@@ -573,14 +573,15 @@
     .unwrap()
 }
 
-pub fn default_splicing_package_crate_id() -> CrateId {
+pub(crate) fn default_splicing_package_crate_id() -> CrateId {
     CrateId::new(
         DEFAULT_SPLICING_PACKAGE_NAME.to_string(),
-        DEFAULT_SPLICING_PACKAGE_VERSION.to_string(),
+        semver::Version::parse(DEFAULT_SPLICING_PACKAGE_VERSION)
+            .expect("Known good version didn't parse"),
     )
 }
 
-pub fn default_cargo_workspace_manifest(
+pub(crate) fn default_cargo_workspace_manifest(
     resolver_version: &cargo_toml::Resolver,
 ) -> cargo_toml::Manifest {
     // A manifest is generated with a fake workspace member so the [cargo_toml::Manifest::Workspace]
@@ -600,14 +601,14 @@
 }
 
 /// Determine whtether or not the manifest is a workspace root
-pub fn is_workspace_root(manifest: &Manifest) -> bool {
+pub(crate) fn is_workspace_root(manifest: &Manifest) -> bool {
     // Anything with any workspace data is considered a workspace
     manifest.workspace.is_some()
 }
 
 /// Evaluates whether or not a manifest is considered a "workspace" manifest.
 /// See [Cargo workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html).
-pub fn is_workspace_owned(manifest: &Manifest) -> bool {
+pub(crate) fn is_workspace_owned(manifest: &Manifest) -> bool {
     if is_workspace_root(manifest) {
         return true;
     }
@@ -620,7 +621,7 @@
 }
 
 /// Determines whether or not a particular manifest is a workspace member to a given root manifest
-pub fn is_workspace_member(
+pub(crate) fn is_workspace_member(
     root_manifest: &Manifest,
     root_manifest_path: &Path,
     manifest_path: &Path,
@@ -641,7 +642,7 @@
     })
 }
 
-pub fn write_root_manifest(path: &Path, manifest: cargo_toml::Manifest) -> Result<()> {
+pub(crate) fn write_root_manifest(path: &Path, manifest: cargo_toml::Manifest) -> Result<()> {
     // Remove the file in case one exists already, preventing symlinked files
     // from having their contents overwritten.
     if path.exists() {
@@ -692,7 +693,11 @@
 }
 
 /// Symlinks the root contents of a source directory into a destination directory
-pub fn symlink_roots(source: &Path, dest: &Path, ignore_list: Option<&[&str]>) -> Result<()> {
+pub(crate) fn symlink_roots(
+    source: &Path,
+    dest: &Path,
+    ignore_list: Option<&[&str]>,
+) -> Result<()> {
     // Ensure the source exists and is a directory
     if !source.is_dir() {
         bail!("Source path is not a directory: {}", source.display());
diff --git a/crate_universe/src/test.rs b/crate_universe/src/test.rs
index 946386b..989472b 100644
--- a/crate_universe/src/test.rs
+++ b/crate_universe/src/test.rs
@@ -1,6 +1,6 @@
 //! A module containing common test helpers
 
-pub fn mock_cargo_metadata_package() -> cargo_metadata::Package {
+pub(crate) fn mock_cargo_metadata_package() -> cargo_metadata::Package {
     serde_json::from_value(serde_json::json!({
         "name": "mock-pkg",
         "version": "3.3.3",
@@ -29,7 +29,7 @@
     .unwrap()
 }
 
-pub fn mock_cargo_lock_package() -> cargo_lock::Package {
+pub(crate) fn mock_cargo_lock_package() -> cargo_lock::Package {
     toml::from_str(&textwrap::dedent(
         r#"
         name = "mock-pkg"
@@ -42,8 +42,8 @@
     .unwrap()
 }
 
-pub mod metadata {
-    pub fn alias() -> cargo_metadata::Metadata {
+pub(crate) mod metadata {
+    pub(crate) fn alias() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/aliases/metadata.json"
@@ -51,7 +51,7 @@
         .unwrap()
     }
 
-    pub fn build_scripts() -> cargo_metadata::Metadata {
+    pub(crate) fn build_scripts() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/build_scripts/metadata.json"
@@ -59,7 +59,7 @@
         .unwrap()
     }
 
-    pub fn crate_types() -> cargo_metadata::Metadata {
+    pub(crate) fn crate_types() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/crate_types/metadata.json"
@@ -67,7 +67,7 @@
         .unwrap()
     }
 
-    pub fn multi_cfg_dep() -> cargo_metadata::Metadata {
+    pub(crate) fn multi_cfg_dep() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/multi_cfg_dep/metadata.json"
@@ -75,7 +75,7 @@
         .unwrap()
     }
 
-    pub fn multi_kind_proc_macro_dep() -> cargo_metadata::Metadata {
+    pub(crate) fn multi_kind_proc_macro_dep() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/multi_kind_proc_macro_dep/metadata.json"
@@ -83,7 +83,7 @@
         .unwrap()
     }
 
-    pub fn no_deps() -> cargo_metadata::Metadata {
+    pub(crate) fn no_deps() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/no_deps/metadata.json"
@@ -91,7 +91,7 @@
         .unwrap()
     }
 
-    pub fn optional_deps_disabled() -> cargo_metadata::Metadata {
+    pub(crate) fn optional_deps_disabled() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/crate_optional_deps_disabled/metadata.json"
@@ -99,7 +99,7 @@
         .unwrap()
     }
 
-    pub fn renamed_optional_deps_disabled() -> cargo_metadata::Metadata {
+    pub(crate) fn renamed_optional_deps_disabled() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/crate_renamed_optional_deps_disabled/metadata.json"
@@ -107,7 +107,7 @@
         .unwrap()
     }
 
-    pub fn optional_deps_disabled_build_dep_enabled() -> cargo_metadata::Metadata {
+    pub(crate) fn optional_deps_disabled_build_dep_enabled() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/crate_optional_deps_disabled_build_dep_enabled/metadata.json"
@@ -115,7 +115,7 @@
         .unwrap()
     }
 
-    pub fn optional_deps_enabled() -> cargo_metadata::Metadata {
+    pub(crate) fn optional_deps_enabled() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/crate_optional_deps_enabled/metadata.json"
@@ -123,7 +123,7 @@
         .unwrap()
     }
 
-    pub fn renamed_optional_deps_enabled() -> cargo_metadata::Metadata {
+    pub(crate) fn renamed_optional_deps_enabled() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/crate_renamed_optional_deps_enabled/metadata.json"
@@ -131,7 +131,7 @@
         .unwrap()
     }
 
-    pub fn common() -> cargo_metadata::Metadata {
+    pub(crate) fn common() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/common/metadata.json"
@@ -139,7 +139,7 @@
         .unwrap()
     }
 
-    pub fn git_repos() -> cargo_metadata::Metadata {
+    pub(crate) fn git_repos() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/git_repos/metadata.json"
@@ -147,7 +147,7 @@
         .unwrap()
     }
 
-    pub fn has_package_metadata() -> cargo_metadata::Metadata {
+    pub(crate) fn has_package_metadata() -> cargo_metadata::Metadata {
         serde_json::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/has_package_metadata/metadata.json"
@@ -156,10 +156,10 @@
     }
 }
 
-pub mod lockfile {
+pub(crate) mod lockfile {
     use std::str::FromStr;
 
-    pub fn alias() -> cargo_lock::Lockfile {
+    pub(crate) fn alias() -> cargo_lock::Lockfile {
         cargo_lock::Lockfile::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/aliases/Cargo.lock"
@@ -167,7 +167,7 @@
         .unwrap()
     }
 
-    pub fn build_scripts() -> cargo_lock::Lockfile {
+    pub(crate) fn build_scripts() -> cargo_lock::Lockfile {
         cargo_lock::Lockfile::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/build_scripts/Cargo.lock"
@@ -175,7 +175,7 @@
         .unwrap()
     }
 
-    pub fn crate_types() -> cargo_lock::Lockfile {
+    pub(crate) fn crate_types() -> cargo_lock::Lockfile {
         cargo_lock::Lockfile::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/crate_types/Cargo.lock"
@@ -183,7 +183,7 @@
         .unwrap()
     }
 
-    pub fn multi_cfg_dep() -> cargo_lock::Lockfile {
+    pub(crate) fn multi_cfg_dep() -> cargo_lock::Lockfile {
         cargo_lock::Lockfile::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/multi_cfg_dep/Cargo.lock"
@@ -191,7 +191,7 @@
         .unwrap()
     }
 
-    pub fn no_deps() -> cargo_lock::Lockfile {
+    pub(crate) fn no_deps() -> cargo_lock::Lockfile {
         cargo_lock::Lockfile::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/no_deps/Cargo.lock"
@@ -199,7 +199,7 @@
         .unwrap()
     }
 
-    pub fn common() -> cargo_lock::Lockfile {
+    pub(crate) fn common() -> cargo_lock::Lockfile {
         cargo_lock::Lockfile::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/common/Cargo.lock"
@@ -207,7 +207,7 @@
         .unwrap()
     }
 
-    pub fn git_repos() -> cargo_lock::Lockfile {
+    pub(crate) fn git_repos() -> cargo_lock::Lockfile {
         cargo_lock::Lockfile::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/git_repos/Cargo.lock"
@@ -215,7 +215,7 @@
         .unwrap()
     }
 
-    pub fn has_package_metadata() -> cargo_lock::Lockfile {
+    pub(crate) fn has_package_metadata() -> cargo_lock::Lockfile {
         cargo_lock::Lockfile::from_str(include_str!(concat!(
             env!("CARGO_MANIFEST_DIR"),
             "/test_data/metadata/has_package_metadata/Cargo.lock"
diff --git a/crate_universe/src/utils.rs b/crate_universe/src/utils.rs
index 9344c43..ca168f2 100644
--- a/crate_universe/src/utils.rs
+++ b/crate_universe/src/utils.rs
@@ -1,18 +1,18 @@
 //! Common utilities
 
-pub mod starlark;
-pub mod target_triple;
+pub(crate) mod starlark;
+pub(crate) mod target_triple;
 
-pub const CRATES_IO_INDEX_URL: &str = "https://github.com/rust-lang/crates.io-index";
+pub(crate) const CRATES_IO_INDEX_URL: &str = "https://github.com/rust-lang/crates.io-index";
 
 /// Convert a string into a valid crate module name by applying transforms to invalid characters
-pub fn sanitize_module_name(name: &str) -> String {
+pub(crate) fn sanitize_module_name(name: &str) -> String {
     name.replace('-', "_")
 }
 
 /// Some character which may be present in version IDs are not valid
 /// in Bazel repository names. This converts invalid characters. See
 /// [RepositoryName.java](https://github.com/bazelbuild/bazel/blob/4.0.0/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java#L42)
-pub fn sanitize_repository_name(name: &str) -> String {
+pub(crate) fn sanitize_repository_name(name: &str) -> String {
     name.replace('+', "-")
 }
diff --git a/crate_universe/src/utils/starlark.rs b/crate_universe/src/utils/starlark.rs
index f104547..3b0ea53 100644
--- a/crate_universe/src/utils/starlark.rs
+++ b/crate_universe/src/utils/starlark.rs
@@ -15,18 +15,18 @@
 use serde::{Serialize, Serializer};
 use serde_starlark::{Error as StarlarkError, FunctionCall};
 
-pub use glob::*;
-pub use label::*;
-pub use select::*;
-pub use select_dict::*;
-pub use select_list::*;
-pub use select_scalar::*;
-pub use select_set::*;
-pub use target_compatible_with::*;
+pub(crate) use glob::*;
+pub(crate) use label::*;
+pub(crate) use select::*;
+pub(crate) use select_dict::*;
+pub(crate) use select_list::*;
+pub(crate) use select_scalar::*;
+pub(crate) use select_set::*;
+pub(crate) use target_compatible_with::*;
 
 #[derive(Serialize)]
 #[serde(untagged)]
-pub enum Starlark {
+pub(crate) enum Starlark {
     Load(Load),
     Package(Package),
     PackageInfo(PackageInfo),
@@ -46,170 +46,170 @@
     Verbatim(String),
 }
 
-pub struct Load {
-    pub bzl: String,
-    pub items: Set<String>,
+pub(crate) struct Load {
+    pub(crate) bzl: String,
+    pub(crate) items: Set<String>,
 }
 
-pub struct Package {
-    pub default_package_metadata: Set<Label>,
-    pub default_visibility: Set<String>,
+pub(crate) struct Package {
+    pub(crate) default_package_metadata: Set<Label>,
+    pub(crate) default_visibility: Set<String>,
 }
 
-pub struct PackageInfo {
-    pub name: String,
-    pub package_name: String,
-    pub package_url: String,
-    pub package_version: String,
+pub(crate) struct PackageInfo {
+    pub(crate) name: String,
+    pub(crate) package_name: String,
+    pub(crate) package_url: String,
+    pub(crate) package_version: String,
 }
 
-pub struct License {
-    pub name: String,
-    pub license_kinds: Set<String>,
-    pub license_text: String,
+pub(crate) struct License {
+    pub(crate) name: String,
+    pub(crate) license_kinds: Set<String>,
+    pub(crate) license_text: String,
 }
 
-pub struct ExportsFiles {
-    pub paths: Set<String>,
-    pub globs: Glob,
+pub(crate) struct ExportsFiles {
+    pub(crate) paths: Set<String>,
+    pub(crate) globs: Glob,
 }
 
 #[derive(Serialize)]
 #[serde(rename = "filegroup")]
-pub struct Filegroup {
-    pub name: String,
-    pub srcs: Glob,
+pub(crate) struct Filegroup {
+    pub(crate) name: String,
+    pub(crate) srcs: Glob,
 }
 
-pub struct Alias {
-    pub rule: String,
-    pub name: String,
-    pub actual: Label,
-    pub tags: Set<String>,
+pub(crate) struct Alias {
+    pub(crate) rule: String,
+    pub(crate) name: String,
+    pub(crate) actual: Label,
+    pub(crate) tags: Set<String>,
 }
 
 #[derive(Serialize)]
 #[serde(rename = "cargo_build_script")]
-pub struct CargoBuildScript {
-    pub name: String,
+pub(crate) struct CargoBuildScript {
+    pub(crate) name: String,
     #[serde(skip_serializing_if = "SelectDict::is_empty")]
-    pub aliases: SelectDict<Label, String>,
+    pub(crate) aliases: SelectDict<Label, String>,
     #[serde(skip_serializing_if = "SelectDict::is_empty")]
-    pub build_script_env: SelectDict<String, String>,
+    pub(crate) build_script_env: SelectDict<String, String>,
     #[serde(skip_serializing_if = "Data::is_empty")]
-    pub compile_data: Data,
+    pub(crate) compile_data: Data,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub crate_features: SelectSet<String>,
-    pub crate_name: String,
+    pub(crate) crate_features: SelectSet<String>,
+    pub(crate) crate_name: String,
     #[serde(skip_serializing_if = "Option::is_none")]
-    pub crate_root: Option<String>,
+    pub(crate) crate_root: Option<String>,
     #[serde(skip_serializing_if = "Data::is_empty")]
-    pub data: Data,
+    pub(crate) data: Data,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub deps: SelectSet<Label>,
+    pub(crate) deps: SelectSet<Label>,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub link_deps: SelectSet<Label>,
-    pub edition: String,
+    pub(crate) link_deps: SelectSet<Label>,
+    pub(crate) edition: String,
     #[serde(skip_serializing_if = "Option::is_none")]
-    pub linker_script: Option<String>,
+    pub(crate) linker_script: Option<String>,
     #[serde(skip_serializing_if = "Option::is_none")]
-    pub links: Option<String>,
+    pub(crate) links: Option<String>,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub proc_macro_deps: SelectSet<Label>,
+    pub(crate) proc_macro_deps: SelectSet<Label>,
     #[serde(skip_serializing_if = "SelectScalar::is_empty")]
-    pub rundir: SelectScalar<String>,
+    pub(crate) rundir: SelectScalar<String>,
     #[serde(skip_serializing_if = "SelectDict::is_empty")]
-    pub rustc_env: SelectDict<String, String>,
+    pub(crate) rustc_env: SelectDict<String, String>,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub rustc_env_files: SelectSet<String>,
+    pub(crate) rustc_env_files: SelectSet<String>,
     #[serde(skip_serializing_if = "SelectList::is_empty")]
-    pub rustc_flags: SelectList<String>,
-    pub srcs: Glob,
+    pub(crate) rustc_flags: SelectList<String>,
+    pub(crate) srcs: Glob,
     #[serde(skip_serializing_if = "Set::is_empty")]
-    pub tags: Set<String>,
+    pub(crate) tags: Set<String>,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub tools: SelectSet<Label>,
+    pub(crate) tools: SelectSet<Label>,
     #[serde(skip_serializing_if = "Set::is_empty")]
-    pub toolchains: Set<Label>,
-    pub version: String,
-    pub visibility: Set<String>,
+    pub(crate) toolchains: Set<Label>,
+    pub(crate) version: String,
+    pub(crate) visibility: Set<String>,
 }
 
 #[derive(Serialize)]
-pub struct RustProcMacro {
-    pub name: String,
+pub(crate) struct RustProcMacro {
+    pub(crate) name: String,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub deps: SelectSet<Label>,
+    pub(crate) deps: SelectSet<Label>,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub proc_macro_deps: SelectSet<Label>,
+    pub(crate) proc_macro_deps: SelectSet<Label>,
     #[serde(skip_serializing_if = "SelectDict::is_empty")]
-    pub aliases: SelectDict<Label, String>,
+    pub(crate) aliases: SelectDict<Label, String>,
     #[serde(flatten)]
-    pub common: CommonAttrs,
+    pub(crate) common: CommonAttrs,
 }
 
 #[derive(Serialize)]
-pub struct RustLibrary {
-    pub name: String,
+pub(crate) struct RustLibrary {
+    pub(crate) name: String,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub deps: SelectSet<Label>,
+    pub(crate) deps: SelectSet<Label>,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub proc_macro_deps: SelectSet<Label>,
+    pub(crate) proc_macro_deps: SelectSet<Label>,
     #[serde(skip_serializing_if = "SelectDict::is_empty")]
-    pub aliases: SelectDict<Label, String>,
+    pub(crate) aliases: SelectDict<Label, String>,
     #[serde(flatten)]
-    pub common: CommonAttrs,
+    pub(crate) common: CommonAttrs,
     #[serde(skip_serializing_if = "std::ops::Not::not")]
-    pub disable_pipelining: bool,
+    pub(crate) disable_pipelining: bool,
 }
 
 #[derive(Serialize)]
-pub struct RustBinary {
-    pub name: String,
+pub(crate) struct RustBinary {
+    pub(crate) name: String,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub deps: SelectSet<Label>,
+    pub(crate) deps: SelectSet<Label>,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub proc_macro_deps: SelectSet<Label>,
+    pub(crate) proc_macro_deps: SelectSet<Label>,
     #[serde(skip_serializing_if = "SelectDict::is_empty")]
-    pub aliases: SelectDict<Label, String>,
+    pub(crate) aliases: SelectDict<Label, String>,
     #[serde(flatten)]
-    pub common: CommonAttrs,
+    pub(crate) common: CommonAttrs,
 }
 
 #[derive(Serialize)]
-pub struct CommonAttrs {
+pub(crate) struct CommonAttrs {
     #[serde(skip_serializing_if = "Data::is_empty")]
-    pub compile_data: Data,
+    pub(crate) compile_data: Data,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub crate_features: SelectSet<String>,
+    pub(crate) crate_features: SelectSet<String>,
     #[serde(skip_serializing_if = "Option::is_none")]
-    pub crate_root: Option<String>,
+    pub(crate) crate_root: Option<String>,
     #[serde(skip_serializing_if = "Data::is_empty")]
-    pub data: Data,
-    pub edition: String,
+    pub(crate) data: Data,
+    pub(crate) edition: String,
     #[serde(skip_serializing_if = "Option::is_none")]
-    pub linker_script: Option<String>,
+    pub(crate) linker_script: Option<String>,
     #[serde(skip_serializing_if = "SelectDict::is_empty")]
-    pub rustc_env: SelectDict<String, String>,
+    pub(crate) rustc_env: SelectDict<String, String>,
     #[serde(skip_serializing_if = "SelectSet::is_empty")]
-    pub rustc_env_files: SelectSet<String>,
+    pub(crate) rustc_env_files: SelectSet<String>,
     #[serde(skip_serializing_if = "SelectList::is_empty")]
-    pub rustc_flags: SelectList<String>,
-    pub srcs: Glob,
+    pub(crate) rustc_flags: SelectList<String>,
+    pub(crate) srcs: Glob,
     #[serde(skip_serializing_if = "Set::is_empty")]
-    pub tags: Set<String>,
+    pub(crate) tags: Set<String>,
     #[serde(skip_serializing_if = "Option::is_none")]
-    pub target_compatible_with: Option<TargetCompatibleWith>,
-    pub version: String,
+    pub(crate) target_compatible_with: Option<TargetCompatibleWith>,
+    pub(crate) version: String,
 }
 
-pub struct Data {
-    pub glob: Glob,
-    pub select: SelectSet<Label>,
+pub(crate) struct Data {
+    pub(crate) glob: Glob,
+    pub(crate) select: SelectSet<Label>,
 }
 
 impl Package {
-    pub fn default_visibility_public(default_package_metadata: Set<Label>) -> Self {
+    pub(crate) fn default_visibility_public(default_package_metadata: Set<Label>) -> Self {
         let mut default_visibility = Set::new();
         default_visibility.insert("//visibility:public".to_owned());
         Package {
@@ -237,9 +237,9 @@
 
         #[derive(Serialize)]
         struct AliasInner<'a> {
-            pub name: &'a String,
-            pub actual: &'a Label,
-            pub tags: &'a Set<String>,
+            pub(crate) name: &'a String,
+            pub(crate) actual: &'a Label,
+            pub(crate) tags: &'a Set<String>,
         }
 
         FunctionCall::new(
@@ -254,7 +254,7 @@
     }
 }
 
-pub fn serialize(starlark: &[Starlark]) -> Result<String, StarlarkError> {
+pub(crate) fn serialize(starlark: &[Starlark]) -> Result<String, StarlarkError> {
     let mut content = String::new();
     for call in starlark {
         if !content.is_empty() {
diff --git a/crate_universe/src/utils/starlark/glob.rs b/crate_universe/src/utils/starlark/glob.rs
index a7bcebb..c8bf4bf 100644
--- a/crate_universe/src/utils/starlark/glob.rs
+++ b/crate_universe/src/utils/starlark/glob.rs
@@ -6,20 +6,22 @@
 use serde::ser::{Serialize, SerializeStruct, Serializer};
 
 #[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord, Clone)]
-pub struct Glob {
-    pub include: BTreeSet<String>,
-    pub exclude: BTreeSet<String>,
+pub(crate) struct Glob {
+    pub(crate) allow_empty: bool,
+    pub(crate) include: BTreeSet<String>,
+    pub(crate) exclude: BTreeSet<String>,
 }
 
 impl Glob {
-    pub fn new_rust_srcs() -> Self {
+    pub(crate) fn new_rust_srcs() -> Self {
         Self {
+            allow_empty: false,
             include: BTreeSet::from(["**/*.rs".to_owned()]),
             exclude: BTreeSet::new(),
         }
     }
 
-    pub fn is_empty(&self) -> bool {
+    pub(crate) fn has_any_include(&self) -> bool {
         self.include.is_empty()
         // Note: self.exclude intentionally not considered. A glob is empty if
         // there are no included globs. A glob cannot have only excludes.
@@ -31,16 +33,17 @@
     where
         S: Serializer,
     {
-        if self.exclude.is_empty() {
-            // Serialize as glob([...]).
-            serializer.serialize_newtype_struct("glob", &self.include)
-        } else {
-            // Serialize as glob(include = [...], exclude = [...]).
-            let mut call = serializer.serialize_struct("glob", 2)?;
-            call.serialize_field("include", &self.include)?;
+        let has_exclude = !self.exclude.is_empty();
+        let len = 2 + if has_exclude { 1 } else { 0 };
+
+        // Serialize as glob(allow_empty = False, include = [...], exclude = [...]).
+        let mut call = serializer.serialize_struct("glob", len)?;
+        call.serialize_field("allow_empty", &self.allow_empty)?;
+        call.serialize_field("include", &self.include)?;
+        if has_exclude {
             call.serialize_field("exclude", &self.exclude)?;
-            call.end()
         }
+        call.end()
     }
 }
 
@@ -68,6 +71,9 @@
         A: SeqAccess<'de>,
     {
         Ok(Glob {
+            // At time of writing the default value of allow_empty is true.
+            // We may want to change this if the default changes in Bazel.
+            allow_empty: true,
             include: BTreeSet::deserialize(SeqAccessDeserializer::new(seq))?,
             exclude: BTreeSet::new(),
         })
@@ -78,14 +84,22 @@
     where
         A: MapAccess<'de>,
     {
+        fn default_true() -> bool {
+            true
+        }
+
         #[derive(serde::Deserialize)]
         struct GlobMap {
+            #[serde(default = "default_true")]
+            allow_empty: bool,
             include: BTreeSet<String>,
+            #[serde(default)]
             exclude: BTreeSet<String>,
         }
 
         let glob_map = GlobMap::deserialize(MapAccessDeserializer::new(map))?;
         Ok(Glob {
+            allow_empty: glob_map.allow_empty,
             include: glob_map.include,
             exclude: glob_map.exclude,
         })
diff --git a/crate_universe/src/utils/starlark/label.rs b/crate_universe/src/utils/starlark/label.rs
index 603abfc..1315169 100644
--- a/crate_universe/src/utils/starlark/label.rs
+++ b/crate_universe/src/utils/starlark/label.rs
@@ -9,7 +9,7 @@
 use serde::{Deserialize, Serialize, Serializer};
 
 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone)]
-pub enum Label {
+pub(crate) enum Label {
     Relative {
         target: String,
     },
@@ -21,7 +21,7 @@
 }
 
 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone)]
-pub enum Repository {
+pub(crate) enum Repository {
     Canonical(String), // stringifies to `@@self.0` where `self.0` may be empty
     Explicit(String),  // stringifies to `@self.0` where `self.0` may be empty
     Local,             // stringifies to the empty string
@@ -29,7 +29,7 @@
 
 impl Label {
     #[cfg(test)]
-    pub fn is_absolute(&self) -> bool {
+    pub(crate) fn is_absolute(&self) -> bool {
         match self {
             Label::Relative { .. } => false,
             Label::Absolute { .. } => true,
@@ -37,21 +37,21 @@
     }
 
     #[cfg(test)]
-    pub fn repository(&self) -> Option<&Repository> {
+    pub(crate) fn repository(&self) -> Option<&Repository> {
         match self {
             Label::Relative { .. } => None,
             Label::Absolute { repository, .. } => Some(repository),
         }
     }
 
-    pub fn package(&self) -> Option<&str> {
+    pub(crate) fn package(&self) -> Option<&str> {
         match self {
             Label::Relative { .. } => None,
             Label::Absolute { package, .. } => Some(package.as_str()),
         }
     }
 
-    pub fn target(&self) -> &str {
+    pub(crate) fn target(&self) -> &str {
         match self {
             Label::Relative { target } => target.as_str(),
             Label::Absolute { target, .. } => target.as_str(),
@@ -183,7 +183,7 @@
 impl Label {
     /// Generates a label appropriate for the passed Path by walking the filesystem to identify its
     /// workspace and package.
-    pub fn from_absolute_path(p: &Path) -> Result<Self, anyhow::Error> {
+    pub(crate) fn from_absolute_path(p: &Path) -> Result<Self, anyhow::Error> {
         let mut workspace_root = None;
         let mut package_root = None;
         for ancestor in p.ancestors().skip(1) {
@@ -287,7 +287,7 @@
 }
 
 impl Label {
-    pub fn repr(&self) -> String {
+    pub(crate) fn repr(&self) -> String {
         self.to_string()
     }
 }
diff --git a/crate_universe/src/utils/starlark/select.rs b/crate_universe/src/utils/starlark/select.rs
index 43c5758..b2010bf 100644
--- a/crate_universe/src/utils/starlark/select.rs
+++ b/crate_universe/src/utils/starlark/select.rs
@@ -6,14 +6,14 @@
 use serde_starlark::LineComment;
 
 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone)]
-pub struct WithOriginalConfigurations<T> {
-    pub value: T,
-    pub original_configurations: BTreeSet<String>,
+pub(crate) struct WithOriginalConfigurations<T> {
+    pub(crate) value: T,
+    pub(crate) original_configurations: BTreeSet<String>,
 }
 
 #[derive(Serialize)]
 #[serde(rename = "selects.NO_MATCHING_PLATFORM_TRIPLES")]
-pub struct NoMatchingPlatformTriples;
+pub(crate) struct NoMatchingPlatformTriples;
 
 impl<T> Serialize for WithOriginalConfigurations<T>
 where
@@ -36,6 +36,6 @@
 // We don't expect any cfg-expressions or target triples to contain //,
 // and all labels _can_ be written in a way that they contain //,
 // so we use the presence of // as an indication something is a label.
-pub fn looks_like_bazel_configuration_label(configuration: &str) -> bool {
+pub(crate) fn looks_like_bazel_configuration_label(configuration: &str) -> bool {
     configuration.contains("//")
 }
diff --git a/crate_universe/src/utils/starlark/select_dict.rs b/crate_universe/src/utils/starlark/select_dict.rs
index fd260ac..2d19b86 100644
--- a/crate_universe/src/utils/starlark/select_dict.rs
+++ b/crate_universe/src/utils/starlark/select_dict.rs
@@ -11,7 +11,7 @@
 };
 
 #[derive(Debug, PartialEq, Eq)]
-pub struct SelectDict<U, T>
+pub(crate) struct SelectDict<U, T>
 where
     U: SelectableOrderedValue,
     T: SelectableValue,
@@ -34,7 +34,7 @@
     /// Re-keys the provided Select by the given configuration mapping.
     /// This mapping maps from configurations in the input Select to sets
     /// of configurations in the output SelectDict.
-    pub fn new(
+    pub(crate) fn new(
         select: Select<BTreeMap<U, T>>,
         platforms: &BTreeMap<String, BTreeSet<String>>,
     ) -> Self {
@@ -95,7 +95,7 @@
         }
     }
 
-    pub fn is_empty(&self) -> bool {
+    pub(crate) fn is_empty(&self) -> bool {
         self.common.is_empty() && self.selects.is_empty() && self.unmapped.is_empty()
     }
 }
diff --git a/crate_universe/src/utils/starlark/select_list.rs b/crate_universe/src/utils/starlark/select_list.rs
index 46604c7..706b194 100644
--- a/crate_universe/src/utils/starlark/select_list.rs
+++ b/crate_universe/src/utils/starlark/select_list.rs
@@ -12,7 +12,7 @@
 };
 
 #[derive(Debug, PartialEq, Eq)]
-pub struct SelectList<T>
+pub(crate) struct SelectList<T>
 where
     T: SelectableValue,
 {
@@ -31,7 +31,10 @@
     /// Re-keys the provided Select by the given configuration mapping.
     /// This mapping maps from configurations in the input Select to sets of
     /// configurations in the output SelectList.
-    pub fn new(select: Select<Vec<T>>, platforms: &BTreeMap<String, BTreeSet<String>>) -> Self {
+    pub(crate) fn new(
+        select: Select<Vec<T>>,
+        platforms: &BTreeMap<String, BTreeSet<String>>,
+    ) -> Self {
         let (common, selects) = select.into_parts();
 
         // Map new configuration -> WithOriginalConfigurations(value, old configuration).
@@ -84,7 +87,7 @@
     }
 
     /// Determine whether or not the select should be serialized
-    pub fn is_empty(&self) -> bool {
+    pub(crate) fn is_empty(&self) -> bool {
         self.common.is_empty() && self.selects.is_empty() && self.unmapped.is_empty()
     }
 }
diff --git a/crate_universe/src/utils/starlark/select_scalar.rs b/crate_universe/src/utils/starlark/select_scalar.rs
index d51f785..7bff374 100644
--- a/crate_universe/src/utils/starlark/select_scalar.rs
+++ b/crate_universe/src/utils/starlark/select_scalar.rs
@@ -11,7 +11,7 @@
 };
 
 #[derive(Debug, PartialEq, Eq)]
-pub struct SelectScalar<T>
+pub(crate) struct SelectScalar<T>
 where
     T: SelectableScalar,
 {
@@ -30,7 +30,7 @@
     /// Re-keys the provided Select by the given configuration mapping.
     /// This mapping maps from configurations in the input Select to sets of
     /// configurations in the output SelectScalar.
-    pub fn new(select: Select<T>, platforms: &BTreeMap<String, BTreeSet<String>>) -> Self {
+    pub(crate) fn new(select: Select<T>, platforms: &BTreeMap<String, BTreeSet<String>>) -> Self {
         let (common, selects) = select.into_parts();
 
         // Map new configuration -> WithOriginalConfigurations(value, old configurations).
@@ -77,7 +77,7 @@
     }
 
     /// Determine whether or not the select should be serialized
-    pub fn is_empty(&self) -> bool {
+    pub(crate) fn is_empty(&self) -> bool {
         self.common.is_none() && self.selects.is_empty() && self.unmapped.is_empty()
     }
 }
diff --git a/crate_universe/src/utils/starlark/select_set.rs b/crate_universe/src/utils/starlark/select_set.rs
index 65ca1f4..df14f2f 100644
--- a/crate_universe/src/utils/starlark/select_set.rs
+++ b/crate_universe/src/utils/starlark/select_set.rs
@@ -12,7 +12,7 @@
 };
 
 #[derive(Debug, PartialEq, Eq)]
-pub struct SelectSet<T>
+pub(crate) struct SelectSet<T>
 where
     T: SelectableOrderedValue,
 {
@@ -33,7 +33,7 @@
     /// Re-keys the provided Select by the given configuration mapping.
     /// This mapping maps from configurations in the input Select to sets of
     /// configurations in the output SelectSet.
-    pub fn new(
+    pub(crate) fn new(
         select: Select<BTreeSet<T>>,
         platforms: &BTreeMap<String, BTreeSet<String>>,
     ) -> Self {
@@ -102,7 +102,7 @@
     }
 
     /// Determine whether or not the select should be serialized
-    pub fn is_empty(&self) -> bool {
+    pub(crate) fn is_empty(&self) -> bool {
         self.common.is_empty() && self.selects.is_empty() && self.unmapped.is_empty()
     }
 }
diff --git a/crate_universe/src/utils/starlark/serialize.rs b/crate_universe/src/utils/starlark/serialize.rs
index 1368f7b..b6dc7d8 100644
--- a/crate_universe/src/utils/starlark/serialize.rs
+++ b/crate_universe/src/utils/starlark/serialize.rs
@@ -10,21 +10,21 @@
 // that attribute is that they get serialized as a map, not struct. In Starlark
 // unlike in JSON, maps and structs are differently serialized, so we need to
 // help fill in the function name or else we'd get a Starlark map instead.
-pub fn rust_proc_macro<S>(rule: &RustProcMacro, serializer: S) -> Result<S::Ok, S::Error>
+pub(crate) fn rust_proc_macro<S>(rule: &RustProcMacro, serializer: S) -> Result<S::Ok, S::Error>
 where
     S: Serializer,
 {
     FunctionCall::new("rust_proc_macro", rule).serialize(serializer)
 }
 
-pub fn rust_library<S>(rule: &RustLibrary, serializer: S) -> Result<S::Ok, S::Error>
+pub(crate) fn rust_library<S>(rule: &RustLibrary, serializer: S) -> Result<S::Ok, S::Error>
 where
     S: Serializer,
 {
     FunctionCall::new("rust_library", rule).serialize(serializer)
 }
 
-pub fn rust_binary<S>(rule: &RustBinary, serializer: S) -> Result<S::Ok, S::Error>
+pub(crate) fn rust_binary<S>(rule: &RustBinary, serializer: S) -> Result<S::Ok, S::Error>
 where
     S: Serializer,
 {
@@ -34,7 +34,7 @@
 // Serialize an array with each element on its own line, even if there is just a
 // single element which serde_starlark would ordinarily place on the same line
 // as the array brackets.
-pub struct MultilineArray<'a, A>(pub &'a A);
+pub(crate) struct MultilineArray<'a, A>(pub(crate) &'a A);
 
 impl<'a, A, T> Serialize for MultilineArray<'a, A>
 where
@@ -129,8 +129,8 @@
 }
 
 impl Data {
-    pub fn is_empty(&self) -> bool {
-        self.glob.is_empty() && self.select.is_empty()
+    pub(crate) fn is_empty(&self) -> bool {
+        self.glob.has_any_include() && self.select.is_empty()
     }
 }
 
@@ -140,10 +140,10 @@
         S: Serializer,
     {
         let mut plus = serializer.serialize_tuple_struct("+", MULTILINE)?;
-        if !self.glob.is_empty() {
+        if !self.glob.has_any_include() {
             plus.serialize_field(&self.glob)?;
         }
-        if !self.select.is_empty() || self.glob.is_empty() {
+        if !self.select.is_empty() || self.glob.has_any_include() {
             plus.serialize_field(&self.select)?;
         }
         plus.end()
diff --git a/crate_universe/src/utils/starlark/target_compatible_with.rs b/crate_universe/src/utils/starlark/target_compatible_with.rs
index 9ee52b5..cfdc790 100644
--- a/crate_universe/src/utils/starlark/target_compatible_with.rs
+++ b/crate_universe/src/utils/starlark/target_compatible_with.rs
@@ -5,12 +5,12 @@
 use serde_starlark::{FunctionCall, MULTILINE};
 
 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone)]
-pub struct TargetCompatibleWith {
+pub(crate) struct TargetCompatibleWith {
     target_triples: BTreeSet<String>,
 }
 
 impl TargetCompatibleWith {
-    pub fn new(target_triples: BTreeSet<String>) -> Self {
+    pub(crate) fn new(target_triples: BTreeSet<String>) -> Self {
         TargetCompatibleWith { target_triples }
     }
 }
diff --git a/crate_universe/src/utils/target_triple.rs b/crate_universe/src/utils/target_triple.rs
index 1f76adc..4f2e1df 100644
--- a/crate_universe/src/utils/target_triple.rs
+++ b/crate_universe/src/utils/target_triple.rs
@@ -4,19 +4,19 @@
 
 #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
 #[serde(transparent)]
-pub struct TargetTriple(String);
+pub(crate) struct TargetTriple(String);
 
 impl TargetTriple {
     #[cfg(test)]
-    pub fn from_bazel(bazel: String) -> Self {
+    pub(crate) fn from_bazel(bazel: String) -> Self {
         Self(bazel)
     }
 
-    pub fn to_bazel(&self) -> String {
+    pub(crate) fn to_bazel(&self) -> String {
         self.0.clone()
     }
 
-    pub fn to_cargo(&self) -> String {
+    pub(crate) fn to_cargo(&self) -> String {
         // While Bazel is NixOS aware (via `@platforms//os:nixos`), `rustc`
         // is not, so any target triples for `nixos` get remapped to `linux`
         // for the purposes of determining `cargo metadata`, resolving `cfg`
diff --git a/crate_universe/test_data/cargo_bazel_lockfile/multi_package-cargo-bazel-lock.json b/crate_universe/test_data/cargo_bazel_lockfile/multi_package-cargo-bazel-lock.json
new file mode 100644
index 0000000..78ffb86
--- /dev/null
+++ b/crate_universe/test_data/cargo_bazel_lockfile/multi_package-cargo-bazel-lock.json
@@ -0,0 +1,12150 @@
+{
+  "checksum": "d94d3a74aa0e73ed1c9b8bd803bb6ecaaeaf258f7c3a937d4783aaf5891b31b0",
+  "crates": {
+    "aho-corasick 0.7.20": {
+      "name": "aho-corasick",
+      "version": "0.7.20",
+      "package_url": "https://github.com/BurntSushi/aho-corasick",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/aho-corasick/0.7.20/download",
+          "sha256": "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "aho_corasick",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "aho_corasick",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "memchr 2.5.0",
+              "target": "memchr"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.7.20"
+      },
+      "license": "Unlicense OR MIT",
+      "license_ids": [
+        "MIT",
+        "Unlicense"
+      ],
+      "license_file": null
+    },
+    "anyhow 1.0.69": {
+      "name": "anyhow",
+      "version": "1.0.69",
+      "package_url": "https://github.com/dtolnay/anyhow",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/anyhow/1.0.69/download",
+          "sha256": "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "anyhow",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "anyhow",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "anyhow 1.0.69",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.0.69"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "assert-json-diff 2.0.2": {
+      "name": "assert-json-diff",
+      "version": "2.0.2",
+      "package_url": "https://github.com/davidpdrsn/assert-json-diff.git",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/assert-json-diff/2.0.2/download",
+          "sha256": "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "assert_json_diff",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "assert_json_diff",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "serde 1.0.152",
+              "target": "serde"
+            },
+            {
+              "id": "serde_json 1.0.93",
+              "target": "serde_json"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "2.0.2"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "async-channel 1.8.0": {
+      "name": "async-channel",
+      "version": "1.8.0",
+      "package_url": "https://github.com/smol-rs/async-channel",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/async-channel/1.8.0/download",
+          "sha256": "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "async_channel",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "async_channel",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "concurrent-queue 2.1.0",
+              "target": "concurrent_queue"
+            },
+            {
+              "id": "event-listener 2.5.3",
+              "target": "event_listener"
+            },
+            {
+              "id": "futures-core 0.3.26",
+              "target": "futures_core"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.8.0"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "async-executor 1.5.0": {
+      "name": "async-executor",
+      "version": "1.5.0",
+      "package_url": "https://github.com/smol-rs/async-executor",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/async-executor/1.5.0/download",
+          "sha256": "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "async_executor",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "async_executor",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "async-lock 2.7.0",
+              "target": "async_lock"
+            },
+            {
+              "id": "async-task 4.3.0",
+              "target": "async_task"
+            },
+            {
+              "id": "concurrent-queue 2.1.0",
+              "target": "concurrent_queue"
+            },
+            {
+              "id": "fastrand 1.9.0",
+              "target": "fastrand"
+            },
+            {
+              "id": "futures-lite 1.12.0",
+              "target": "futures_lite"
+            },
+            {
+              "id": "slab 0.4.8",
+              "target": "slab"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.5.0"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "async-global-executor 2.3.1": {
+      "name": "async-global-executor",
+      "version": "2.3.1",
+      "package_url": "https://github.com/Keruspe/async-global-executor",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/async-global-executor/2.3.1/download",
+          "sha256": "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "async_global_executor",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "async_global_executor",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "async-io",
+            "default"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "async-channel 1.8.0",
+              "target": "async_channel"
+            },
+            {
+              "id": "async-executor 1.5.0",
+              "target": "async_executor"
+            },
+            {
+              "id": "async-io 1.12.0",
+              "target": "async_io"
+            },
+            {
+              "id": "async-lock 2.7.0",
+              "target": "async_lock"
+            },
+            {
+              "id": "blocking 1.3.0",
+              "target": "blocking"
+            },
+            {
+              "id": "futures-lite 1.12.0",
+              "target": "futures_lite"
+            },
+            {
+              "id": "once_cell 1.17.1",
+              "target": "once_cell"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2021",
+        "version": "2.3.1"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "async-io 1.12.0": {
+      "name": "async-io",
+      "version": "1.12.0",
+      "package_url": "https://github.com/smol-rs/async-io",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/async-io/1.12.0/download",
+          "sha256": "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "async_io",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "async_io",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "async-io 1.12.0",
+              "target": "build_script_build"
+            },
+            {
+              "id": "async-lock 2.7.0",
+              "target": "async_lock"
+            },
+            {
+              "id": "concurrent-queue 2.1.0",
+              "target": "concurrent_queue"
+            },
+            {
+              "id": "futures-lite 1.12.0",
+              "target": "futures_lite"
+            },
+            {
+              "id": "log 0.4.17",
+              "target": "log"
+            },
+            {
+              "id": "parking 2.0.0",
+              "target": "parking"
+            },
+            {
+              "id": "polling 2.5.2",
+              "target": "polling"
+            },
+            {
+              "id": "slab 0.4.8",
+              "target": "slab"
+            },
+            {
+              "id": "socket2 0.4.9",
+              "target": "socket2"
+            },
+            {
+              "id": "waker-fn 1.1.0",
+              "target": "waker_fn"
+            }
+          ],
+          "selects": {
+            "cfg(unix)": [
+              {
+                "id": "libc 0.2.139",
+                "target": "libc"
+              }
+            ],
+            "cfg(windows)": [
+              {
+                "id": "windows-sys 0.42.0",
+                "target": "windows_sys"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "1.12.0"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "autocfg 1.1.0",
+              "target": "autocfg"
+            }
+          ],
+          "selects": {}
+        }
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "async-lock 2.7.0": {
+      "name": "async-lock",
+      "version": "2.7.0",
+      "package_url": "https://github.com/smol-rs/async-lock",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/async-lock/2.7.0/download",
+          "sha256": "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "async_lock",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "async_lock",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "event-listener 2.5.3",
+              "target": "event_listener"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "2.7.0"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "async-object-pool 0.1.4": {
+      "name": "async-object-pool",
+      "version": "0.1.4",
+      "package_url": "https://github.com/alexliesenfeld/async-object-pool",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/async-object-pool/0.1.4/download",
+          "sha256": "aeb901c30ebc2fc4ab46395bbfbdba9542c16559d853645d75190c3056caf3bc"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "async_object_pool",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "async_object_pool",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "async-std 1.12.0",
+              "target": "async_std"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.1.4"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "async-process 1.6.0": {
+      "name": "async-process",
+      "version": "1.6.0",
+      "package_url": "https://github.com/smol-rs/async-process",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/async-process/1.6.0/download",
+          "sha256": "6381ead98388605d0d9ff86371043b5aa922a3905824244de40dc263a14fcba4"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "async_process",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "async_process",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "async-lock 2.7.0",
+              "target": "async_lock"
+            },
+            {
+              "id": "async-process 1.6.0",
+              "target": "build_script_build"
+            },
+            {
+              "id": "cfg-if 1.0.0",
+              "target": "cfg_if"
+            },
+            {
+              "id": "event-listener 2.5.3",
+              "target": "event_listener"
+            },
+            {
+              "id": "futures-lite 1.12.0",
+              "target": "futures_lite"
+            }
+          ],
+          "selects": {
+            "cfg(unix)": [
+              {
+                "id": "async-io 1.12.0",
+                "target": "async_io"
+              },
+              {
+                "id": "libc 0.2.139",
+                "target": "libc"
+              },
+              {
+                "id": "signal-hook 0.3.15",
+                "target": "signal_hook"
+              }
+            ],
+            "cfg(windows)": [
+              {
+                "id": "blocking 1.3.0",
+                "target": "blocking"
+              },
+              {
+                "id": "windows-sys 0.42.0",
+                "target": "windows_sys"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "1.6.0"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "autocfg 1.1.0",
+              "target": "autocfg"
+            }
+          ],
+          "selects": {}
+        }
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "async-std 1.12.0": {
+      "name": "async-std",
+      "version": "1.12.0",
+      "package_url": "https://github.com/async-rs/async-std",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/async-std/1.12.0/download",
+          "sha256": "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "async_std",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "async_std",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "async-channel",
+            "async-global-executor",
+            "async-io",
+            "async-lock",
+            "async-process",
+            "crossbeam-utils",
+            "default",
+            "futures-channel",
+            "futures-core",
+            "futures-io",
+            "futures-lite",
+            "gloo-timers",
+            "kv-log-macro",
+            "log",
+            "memchr",
+            "once_cell",
+            "pin-project-lite",
+            "pin-utils",
+            "slab",
+            "std",
+            "unstable",
+            "wasm-bindgen-futures"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "async-channel 1.8.0",
+              "target": "async_channel"
+            },
+            {
+              "id": "async-lock 2.7.0",
+              "target": "async_lock"
+            },
+            {
+              "id": "crossbeam-utils 0.8.15",
+              "target": "crossbeam_utils"
+            },
+            {
+              "id": "futures-core 0.3.26",
+              "target": "futures_core"
+            },
+            {
+              "id": "futures-io 0.3.26",
+              "target": "futures_io"
+            },
+            {
+              "id": "kv-log-macro 1.0.7",
+              "target": "kv_log_macro"
+            },
+            {
+              "id": "log 0.4.17",
+              "target": "log"
+            },
+            {
+              "id": "memchr 2.5.0",
+              "target": "memchr"
+            },
+            {
+              "id": "once_cell 1.17.1",
+              "target": "once_cell"
+            },
+            {
+              "id": "pin-project-lite 0.2.9",
+              "target": "pin_project_lite"
+            },
+            {
+              "id": "pin-utils 0.1.0",
+              "target": "pin_utils"
+            },
+            {
+              "id": "slab 0.4.8",
+              "target": "slab"
+            }
+          ],
+          "selects": {
+            "cfg(not(target_os = \"unknown\"))": [
+              {
+                "id": "async-global-executor 2.3.1",
+                "target": "async_global_executor"
+              },
+              {
+                "id": "async-io 1.12.0",
+                "target": "async_io"
+              },
+              {
+                "id": "async-process 1.6.0",
+                "target": "async_process"
+              },
+              {
+                "id": "futures-lite 1.12.0",
+                "target": "futures_lite"
+              }
+            ],
+            "cfg(target_arch = \"wasm32\")": [
+              {
+                "id": "futures-channel 0.3.26",
+                "target": "futures_channel"
+              },
+              {
+                "id": "gloo-timers 0.2.6",
+                "target": "gloo_timers"
+              },
+              {
+                "id": "wasm-bindgen-futures 0.4.34",
+                "target": "wasm_bindgen_futures"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "1.12.0"
+      },
+      "license": "Apache-2.0/MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "async-task 4.3.0": {
+      "name": "async-task",
+      "version": "4.3.0",
+      "package_url": "https://github.com/smol-rs/async-task",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/async-task/4.3.0/download",
+          "sha256": "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "async_task",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "async_task",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "4.3.0"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "async-trait 0.1.64": {
+      "name": "async-trait",
+      "version": "0.1.64",
+      "package_url": "https://github.com/dtolnay/async-trait",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/async-trait/0.1.64/download",
+          "sha256": "1cd7fce9ba8c3c042128ce72d8b2ddbf3a05747efb67ea0313c635e10bda47a2"
+        }
+      },
+      "targets": [
+        {
+          "ProcMacro": {
+            "crate_name": "async_trait",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "async_trait",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "async-trait 0.1.64",
+              "target": "build_script_build"
+            },
+            {
+              "id": "proc-macro2 1.0.51",
+              "target": "proc_macro2"
+            },
+            {
+              "id": "quote 1.0.23",
+              "target": "quote"
+            },
+            {
+              "id": "syn 1.0.109",
+              "target": "syn"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.1.64"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "atomic-waker 1.1.0": {
+      "name": "atomic-waker",
+      "version": "1.1.0",
+      "package_url": "https://github.com/smol-rs/atomic-waker",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/atomic-waker/1.1.0/download",
+          "sha256": "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "atomic_waker",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "atomic_waker",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "1.1.0"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "autocfg 1.1.0": {
+      "name": "autocfg",
+      "version": "1.1.0",
+      "package_url": "https://github.com/cuviper/autocfg",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/autocfg/1.1.0/download",
+          "sha256": "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "autocfg",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "autocfg",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2015",
+        "version": "1.1.0"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "base64 0.13.1": {
+      "name": "base64",
+      "version": "0.13.1",
+      "package_url": "https://github.com/marshallpierce/rust-base64",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/base64/0.13.1/download",
+          "sha256": "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "base64",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "base64",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.13.1"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "base64 0.21.0": {
+      "name": "base64",
+      "version": "0.21.0",
+      "package_url": "https://github.com/marshallpierce/rust-base64",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/base64/0.21.0/download",
+          "sha256": "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "base64",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "base64",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2021",
+        "version": "0.21.0"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "block-buffer 0.9.0": {
+      "name": "block-buffer",
+      "version": "0.9.0",
+      "package_url": "https://github.com/RustCrypto/utils",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/block-buffer/0.9.0/download",
+          "sha256": "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "block_buffer",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "block_buffer",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "generic-array 0.14.6",
+              "target": "generic_array"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.9.0"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "blocking 1.3.0": {
+      "name": "blocking",
+      "version": "1.3.0",
+      "package_url": "https://github.com/smol-rs/blocking",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/blocking/1.3.0/download",
+          "sha256": "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "blocking",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "blocking",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "async-channel 1.8.0",
+              "target": "async_channel"
+            },
+            {
+              "id": "async-lock 2.7.0",
+              "target": "async_lock"
+            },
+            {
+              "id": "async-task 4.3.0",
+              "target": "async_task"
+            },
+            {
+              "id": "atomic-waker 1.1.0",
+              "target": "atomic_waker"
+            },
+            {
+              "id": "fastrand 1.9.0",
+              "target": "fastrand"
+            },
+            {
+              "id": "futures-lite 1.12.0",
+              "target": "futures_lite"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.3.0"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "bumpalo 3.12.0": {
+      "name": "bumpalo",
+      "version": "3.12.0",
+      "package_url": "https://github.com/fitzgen/bumpalo",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/bumpalo/3.12.0/download",
+          "sha256": "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "bumpalo",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "bumpalo",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default"
+          ],
+          "selects": {}
+        },
+        "edition": "2021",
+        "version": "3.12.0"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "bytes 1.4.0": {
+      "name": "bytes",
+      "version": "1.4.0",
+      "package_url": "https://github.com/tokio-rs/bytes",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/bytes/1.4.0/download",
+          "sha256": "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "bytes",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "bytes",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.4.0"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "castaway 0.2.2": {
+      "name": "castaway",
+      "version": "0.2.2",
+      "package_url": "https://github.com/sagebind/castaway",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/castaway/0.2.2/download",
+          "sha256": "8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "castaway",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "castaway",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "proc_macro_deps": {
+          "common": [
+            {
+              "id": "rustversion 1.0.11",
+              "target": "rustversion"
+            }
+          ],
+          "selects": {}
+        },
+        "version": "0.2.2"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "cc 1.0.79": {
+      "name": "cc",
+      "version": "1.0.79",
+      "package_url": "https://github.com/rust-lang/cc-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/cc/1.0.79/download",
+          "sha256": "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "cc",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "cc",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "1.0.79"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "cfg-if 1.0.0": {
+      "name": "cfg-if",
+      "version": "1.0.0",
+      "package_url": "https://github.com/alexcrichton/cfg-if",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/cfg-if/1.0.0/download",
+          "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "cfg_if",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "cfg_if",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "1.0.0"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "concurrent-queue 2.1.0": {
+      "name": "concurrent-queue",
+      "version": "2.1.0",
+      "package_url": "https://github.com/smol-rs/concurrent-queue",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/concurrent-queue/2.1.0/download",
+          "sha256": "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "concurrent_queue",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "concurrent_queue",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "crossbeam-utils 0.8.15",
+              "target": "crossbeam_utils"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "2.1.0"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "crossbeam-utils 0.8.15": {
+      "name": "crossbeam-utils",
+      "version": "0.8.15",
+      "package_url": "https://github.com/crossbeam-rs/crossbeam",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/crossbeam-utils/0.8.15/download",
+          "sha256": "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "crossbeam_utils",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "crossbeam_utils",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "cfg-if 1.0.0",
+              "target": "cfg_if"
+            },
+            {
+              "id": "crossbeam-utils 0.8.15",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.8.15"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "ctor 0.1.26": {
+      "name": "ctor",
+      "version": "0.1.26",
+      "package_url": "https://github.com/mmastrac/rust-ctor",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/ctor/0.1.26/download",
+          "sha256": "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
+        }
+      },
+      "targets": [
+        {
+          "ProcMacro": {
+            "crate_name": "ctor",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "ctor",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "quote 1.0.23",
+              "target": "quote"
+            },
+            {
+              "id": "syn 1.0.109",
+              "target": "syn"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.1.26"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "curl 0.4.44": {
+      "name": "curl",
+      "version": "0.4.44",
+      "package_url": "https://github.com/alexcrichton/curl-rust",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/curl/0.4.44/download",
+          "sha256": "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "curl",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "curl",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "http2",
+            "rustls",
+            "static-curl"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "curl 0.4.44",
+              "target": "build_script_build"
+            },
+            {
+              "id": "curl-sys 0.4.60+curl-7.88.1",
+              "target": "curl_sys"
+            },
+            {
+              "id": "libc 0.2.139",
+              "target": "libc"
+            },
+            {
+              "id": "socket2 0.4.9",
+              "target": "socket2"
+            }
+          ],
+          "selects": {
+            "cfg(target_env = \"msvc\")": [
+              {
+                "id": "schannel 0.1.21",
+                "target": "schannel"
+              },
+              {
+                "id": "winapi 0.3.9",
+                "target": "winapi"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "0.4.44"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "link_deps": {
+          "common": [
+            {
+              "id": "curl-sys 0.4.60+curl-7.88.1",
+              "target": "curl_sys"
+            }
+          ],
+          "selects": {}
+        }
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "curl-sys 0.4.60+curl-7.88.1": {
+      "name": "curl-sys",
+      "version": "0.4.60+curl-7.88.1",
+      "package_url": "https://github.com/alexcrichton/curl-rust",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/curl-sys/0.4.60+curl-7.88.1/download",
+          "sha256": "717abe2cb465a5da6ce06617388a3980c9a2844196734bec8ccb8e575250f13f"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "curl_sys",
+            "crate_root": "lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "curl_sys",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "http2",
+            "libnghttp2-sys",
+            "rustls",
+            "rustls-ffi",
+            "static-curl"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "libc 0.2.139",
+              "target": "libc"
+            },
+            {
+              "id": "libnghttp2-sys 0.1.7+1.45.0",
+              "target": "libnghttp2_sys"
+            },
+            {
+              "id": "libz-sys 1.1.8",
+              "target": "libz_sys"
+            },
+            {
+              "id": "rustls-ffi 0.8.2",
+              "target": "rustls_ffi"
+            }
+          ],
+          "selects": {
+            "cfg(windows)": [
+              {
+                "id": "winapi 0.3.9",
+                "target": "winapi"
+              }
+            ]
+          }
+        },
+        "extra_deps": {
+          "common": [
+            "@m_pkgs__curl//:curl"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.4.60+curl-7.88.1"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "digest 0.9.0": {
+      "name": "digest",
+      "version": "0.9.0",
+      "package_url": "https://github.com/RustCrypto/traits",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/digest/0.9.0/download",
+          "sha256": "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "digest",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "digest",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "generic-array 0.14.6",
+              "target": "generic_array"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.9.0"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "encoding_rs 0.8.32": {
+      "name": "encoding_rs",
+      "version": "0.8.32",
+      "package_url": "https://github.com/hsivonen/encoding_rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/encoding_rs/0.8.32/download",
+          "sha256": "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "encoding_rs",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "encoding_rs",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "default"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "cfg-if 1.0.0",
+              "target": "cfg_if"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.8.32"
+      },
+      "license": "(Apache-2.0 OR MIT) AND BSD-3-Clause",
+      "license_ids": [
+        "Apache-2.0",
+        "BSD-3-Clause",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "event-listener 2.5.3": {
+      "name": "event-listener",
+      "version": "2.5.3",
+      "package_url": "https://github.com/smol-rs/event-listener",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/event-listener/2.5.3/download",
+          "sha256": "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "event_listener",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "event_listener",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "2.5.3"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "fastrand 1.9.0": {
+      "name": "fastrand",
+      "version": "1.9.0",
+      "package_url": "https://github.com/smol-rs/fastrand",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/fastrand/1.9.0/download",
+          "sha256": "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "fastrand",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "fastrand",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [],
+          "selects": {
+            "cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))": [
+              {
+                "id": "instant 0.1.12",
+                "target": "instant"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "1.9.0"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "fnv 1.0.7": {
+      "name": "fnv",
+      "version": "1.0.7",
+      "package_url": "https://github.com/servo/rust-fnv",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/fnv/1.0.7/download",
+          "sha256": "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "fnv",
+            "crate_root": "lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "fnv",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2015",
+        "version": "1.0.7"
+      },
+      "license": "Apache-2.0 / MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "form_urlencoded 1.1.0": {
+      "name": "form_urlencoded",
+      "version": "1.1.0",
+      "package_url": "https://github.com/servo/rust-url",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/form_urlencoded/1.1.0/download",
+          "sha256": "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "form_urlencoded",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "form_urlencoded",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "percent-encoding 2.2.0",
+              "target": "percent_encoding"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.1.0"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "futures-channel 0.3.26": {
+      "name": "futures-channel",
+      "version": "0.3.26",
+      "package_url": "https://github.com/rust-lang/futures-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/futures-channel/0.3.26/download",
+          "sha256": "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "futures_channel",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "futures_channel",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "futures-channel 0.3.26",
+              "target": "build_script_build"
+            },
+            {
+              "id": "futures-core 0.3.26",
+              "target": "futures_core"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.26"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "futures-core 0.3.26": {
+      "name": "futures-core",
+      "version": "0.3.26",
+      "package_url": "https://github.com/rust-lang/futures-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/futures-core/0.3.26/download",
+          "sha256": "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "futures_core",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "futures_core",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "futures-core 0.3.26",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.26"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "futures-io 0.3.26": {
+      "name": "futures-io",
+      "version": "0.3.26",
+      "package_url": "https://github.com/rust-lang/futures-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/futures-io/0.3.26/download",
+          "sha256": "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "futures_io",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "futures_io",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.26"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "futures-lite 1.12.0": {
+      "name": "futures-lite",
+      "version": "1.12.0",
+      "package_url": "https://github.com/smol-rs/futures-lite",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/futures-lite/1.12.0/download",
+          "sha256": "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "futures_lite",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "futures_lite",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [],
+          "selects": {
+            "aarch64-apple-darwin": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "aarch64-apple-ios": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "aarch64-apple-ios-sim": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "aarch64-fuchsia": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "aarch64-linux-android": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "aarch64-pc-windows-msvc": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "aarch64-unknown-linux-gnu": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "aarch64-unknown-nixos-gnu": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "aarch64-unknown-nto-qnx710": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "arm-unknown-linux-gnueabi": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "armv7-linux-androideabi": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "armv7-unknown-linux-gnueabi": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "i686-apple-darwin": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "i686-linux-android": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "i686-pc-windows-msvc": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "i686-unknown-freebsd": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "i686-unknown-linux-gnu": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "powerpc-unknown-linux-gnu": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "riscv32imc-unknown-none-elf": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "riscv64gc-unknown-none-elf": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "s390x-unknown-linux-gnu": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "thumbv7em-none-eabi": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "thumbv8m.main-none-eabi": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "wasm32-wasi": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "x86_64-apple-darwin": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "x86_64-apple-ios": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "x86_64-fuchsia": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "x86_64-linux-android": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "x86_64-pc-windows-msvc": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "x86_64-unknown-freebsd": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "x86_64-unknown-linux-gnu": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "x86_64-unknown-nixos-gnu": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ],
+            "x86_64-unknown-none": [
+              "alloc",
+              "default",
+              "fastrand",
+              "futures-io",
+              "memchr",
+              "parking",
+              "std",
+              "waker-fn"
+            ]
+          }
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "fastrand 1.9.0",
+              "target": "fastrand"
+            },
+            {
+              "id": "futures-core 0.3.26",
+              "target": "futures_core"
+            },
+            {
+              "id": "futures-io 0.3.26",
+              "target": "futures_io"
+            },
+            {
+              "id": "memchr 2.5.0",
+              "target": "memchr"
+            },
+            {
+              "id": "parking 2.0.0",
+              "target": "parking"
+            },
+            {
+              "id": "pin-project-lite 0.2.9",
+              "target": "pin_project_lite"
+            },
+            {
+              "id": "waker-fn 1.1.0",
+              "target": "waker_fn"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.12.0"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "futures-macro 0.3.26": {
+      "name": "futures-macro",
+      "version": "0.3.26",
+      "package_url": "https://github.com/rust-lang/futures-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/futures-macro/0.3.26/download",
+          "sha256": "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70"
+        }
+      },
+      "targets": [
+        {
+          "ProcMacro": {
+            "crate_name": "futures_macro",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "futures_macro",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "proc-macro2 1.0.51",
+              "target": "proc_macro2"
+            },
+            {
+              "id": "quote 1.0.23",
+              "target": "quote"
+            },
+            {
+              "id": "syn 1.0.109",
+              "target": "syn"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.26"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "futures-sink 0.3.26": {
+      "name": "futures-sink",
+      "version": "0.3.26",
+      "package_url": "https://github.com/rust-lang/futures-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/futures-sink/0.3.26/download",
+          "sha256": "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "futures_sink",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "futures_sink",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.26"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "futures-task 0.3.26": {
+      "name": "futures-task",
+      "version": "0.3.26",
+      "package_url": "https://github.com/rust-lang/futures-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/futures-task/0.3.26/download",
+          "sha256": "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "futures_task",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "futures_task",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "futures-task 0.3.26",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.26"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "futures-util 0.3.26": {
+      "name": "futures-util",
+      "version": "0.3.26",
+      "package_url": "https://github.com/rust-lang/futures-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/futures-util/0.3.26/download",
+          "sha256": "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "futures_util",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "futures_util",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "async-await",
+            "async-await-macro",
+            "default",
+            "futures-io",
+            "futures-macro",
+            "io",
+            "memchr",
+            "slab",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "futures-core 0.3.26",
+              "target": "futures_core"
+            },
+            {
+              "id": "futures-io 0.3.26",
+              "target": "futures_io"
+            },
+            {
+              "id": "futures-task 0.3.26",
+              "target": "futures_task"
+            },
+            {
+              "id": "futures-util 0.3.26",
+              "target": "build_script_build"
+            },
+            {
+              "id": "memchr 2.5.0",
+              "target": "memchr"
+            },
+            {
+              "id": "pin-project-lite 0.2.9",
+              "target": "pin_project_lite"
+            },
+            {
+              "id": "pin-utils 0.1.0",
+              "target": "pin_utils"
+            },
+            {
+              "id": "slab 0.4.8",
+              "target": "slab"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "proc_macro_deps": {
+          "common": [
+            {
+              "id": "futures-macro 0.3.26",
+              "target": "futures_macro"
+            }
+          ],
+          "selects": {}
+        },
+        "version": "0.3.26"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "generic-array 0.14.6": {
+      "name": "generic-array",
+      "version": "0.14.6",
+      "package_url": "https://github.com/fizyk20/generic-array.git",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/generic-array/0.14.6/download",
+          "sha256": "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "generic_array",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "generic_array",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "generic-array 0.14.6",
+              "target": "build_script_build"
+            },
+            {
+              "id": "typenum 1.16.0",
+              "target": "typenum"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2015",
+        "version": "0.14.6"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "version_check 0.9.4",
+              "target": "version_check"
+            }
+          ],
+          "selects": {}
+        }
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "gloo-timers 0.2.6": {
+      "name": "gloo-timers",
+      "version": "0.2.6",
+      "package_url": "https://github.com/rustwasm/gloo/tree/master/crates/timers",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/gloo-timers/0.2.6/download",
+          "sha256": "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "gloo_timers",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "gloo_timers",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "futures",
+            "futures-channel",
+            "futures-core"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "futures-channel 0.3.26",
+              "target": "futures_channel"
+            },
+            {
+              "id": "futures-core 0.3.26",
+              "target": "futures_core"
+            },
+            {
+              "id": "js-sys 0.3.61",
+              "target": "js_sys"
+            },
+            {
+              "id": "wasm-bindgen 0.2.84",
+              "target": "wasm_bindgen"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.2.6"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "h2 0.3.16": {
+      "name": "h2",
+      "version": "0.3.16",
+      "package_url": "https://github.com/hyperium/h2",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/h2/0.3.16/download",
+          "sha256": "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "h2",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "h2",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "bytes 1.4.0",
+              "target": "bytes"
+            },
+            {
+              "id": "fnv 1.0.7",
+              "target": "fnv"
+            },
+            {
+              "id": "futures-core 0.3.26",
+              "target": "futures_core"
+            },
+            {
+              "id": "futures-sink 0.3.26",
+              "target": "futures_sink"
+            },
+            {
+              "id": "futures-util 0.3.26",
+              "target": "futures_util"
+            },
+            {
+              "id": "http 0.2.9",
+              "target": "http"
+            },
+            {
+              "id": "indexmap 1.9.2",
+              "target": "indexmap"
+            },
+            {
+              "id": "slab 0.4.8",
+              "target": "slab"
+            },
+            {
+              "id": "tokio 1.26.0",
+              "target": "tokio"
+            },
+            {
+              "id": "tokio-util 0.7.7",
+              "target": "tokio_util"
+            },
+            {
+              "id": "tracing 0.1.37",
+              "target": "tracing"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.16"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "hashbrown 0.12.3": {
+      "name": "hashbrown",
+      "version": "0.12.3",
+      "package_url": "https://github.com/rust-lang/hashbrown",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/hashbrown/0.12.3/download",
+          "sha256": "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "hashbrown",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "hashbrown",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "raw"
+          ],
+          "selects": {}
+        },
+        "edition": "2021",
+        "version": "0.12.3"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "hermit-abi 0.2.6": {
+      "name": "hermit-abi",
+      "version": "0.2.6",
+      "package_url": "https://github.com/hermitcore/rusty-hermit",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/hermit-abi/0.2.6/download",
+          "sha256": "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "hermit_abi",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "hermit_abi",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "libc 0.2.139",
+              "target": "libc"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2021",
+        "version": "0.2.6"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "hex-literal 0.3.4": {
+      "name": "hex-literal",
+      "version": "0.3.4",
+      "package_url": "https://github.com/RustCrypto/utils",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/hex-literal/0.3.4/download",
+          "sha256": "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0"
+        }
+      },
+      "targets": [
+        {
+          "ProcMacro": {
+            "crate_name": "hex_literal",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "hex_literal",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "0.3.4"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "http 0.2.9": {
+      "name": "http",
+      "version": "0.2.9",
+      "package_url": "https://github.com/hyperium/http",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/http/0.2.9/download",
+          "sha256": "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "http",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "http",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "bytes 1.4.0",
+              "target": "bytes"
+            },
+            {
+              "id": "fnv 1.0.7",
+              "target": "fnv"
+            },
+            {
+              "id": "itoa 1.0.5",
+              "target": "itoa"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.2.9"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "http-body 0.4.5": {
+      "name": "http-body",
+      "version": "0.4.5",
+      "package_url": "https://github.com/hyperium/http-body",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/http-body/0.4.5/download",
+          "sha256": "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "http_body",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "http_body",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "bytes 1.4.0",
+              "target": "bytes"
+            },
+            {
+              "id": "http 0.2.9",
+              "target": "http"
+            },
+            {
+              "id": "pin-project-lite 0.2.9",
+              "target": "pin_project_lite"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.4.5"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "httparse 1.8.0": {
+      "name": "httparse",
+      "version": "1.8.0",
+      "package_url": "https://github.com/seanmonstar/httparse",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/httparse/1.8.0/download",
+          "sha256": "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "httparse",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "httparse",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "httparse 1.8.0",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.8.0"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "httpdate 1.0.2": {
+      "name": "httpdate",
+      "version": "1.0.2",
+      "package_url": "https://github.com/pyfisch/httpdate",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/httpdate/1.0.2/download",
+          "sha256": "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "httpdate",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "httpdate",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "1.0.2"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "httpmock 0.6.7": {
+      "name": "httpmock",
+      "version": "0.6.7",
+      "package_url": "https://github.com/alexliesenfeld/httpmock",
+      "repository": {
+        "Git": {
+          "remote": "https://github.com/alexliesenfeld/httpmock.git",
+          "commitish": {
+            "Rev": "9ecf35255ee154986bc36d06473f1fa088586ad9"
+          },
+          "shallow_since": "1673473097 +0100"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "httpmock",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "httpmock",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "rustls"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "assert-json-diff 2.0.2",
+              "target": "assert_json_diff"
+            },
+            {
+              "id": "async-object-pool 0.1.4",
+              "target": "async_object_pool"
+            },
+            {
+              "id": "base64 0.13.1",
+              "target": "base64"
+            },
+            {
+              "id": "crossbeam-utils 0.8.15",
+              "target": "crossbeam_utils"
+            },
+            {
+              "id": "form_urlencoded 1.1.0",
+              "target": "form_urlencoded"
+            },
+            {
+              "id": "futures-util 0.3.26",
+              "target": "futures_util"
+            },
+            {
+              "id": "hyper 0.14.24",
+              "target": "hyper"
+            },
+            {
+              "id": "isahc 1.7.0",
+              "target": "isahc"
+            },
+            {
+              "id": "lazy_static 1.4.0",
+              "target": "lazy_static"
+            },
+            {
+              "id": "levenshtein 1.0.5",
+              "target": "levenshtein"
+            },
+            {
+              "id": "log 0.4.17",
+              "target": "log"
+            },
+            {
+              "id": "regex 1.7.1",
+              "target": "regex"
+            },
+            {
+              "id": "serde 1.0.152",
+              "target": "serde"
+            },
+            {
+              "id": "serde_json 1.0.93",
+              "target": "serde_json"
+            },
+            {
+              "id": "serde_regex 1.1.0",
+              "target": "serde_regex"
+            },
+            {
+              "id": "similar 2.2.1",
+              "target": "similar"
+            },
+            {
+              "id": "tokio 1.26.0",
+              "target": "tokio"
+            },
+            {
+              "id": "url 2.3.1",
+              "target": "url"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "proc_macro_deps": {
+          "common": [
+            {
+              "id": "async-trait 0.1.64",
+              "target": "async_trait"
+            }
+          ],
+          "selects": {}
+        },
+        "version": "0.6.7"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "hyper 0.14.24": {
+      "name": "hyper",
+      "version": "0.14.24",
+      "package_url": "https://github.com/hyperium/hyper",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/hyper/0.14.24/download",
+          "sha256": "5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164c"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "hyper",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "hyper",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "http1",
+            "server",
+            "socket2",
+            "tcp"
+          ],
+          "selects": {
+            "aarch64-apple-darwin": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "aarch64-apple-ios": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "aarch64-apple-ios-sim": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "aarch64-fuchsia": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "aarch64-linux-android": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "aarch64-pc-windows-msvc": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "aarch64-unknown-linux-gnu": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "aarch64-unknown-nixos-gnu": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "aarch64-unknown-nto-qnx710": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "arm-unknown-linux-gnueabi": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "armv7-linux-androideabi": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "armv7-unknown-linux-gnueabi": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "i686-apple-darwin": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "i686-linux-android": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "i686-pc-windows-msvc": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "i686-unknown-freebsd": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "i686-unknown-linux-gnu": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "powerpc-unknown-linux-gnu": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "riscv32imc-unknown-none-elf": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "riscv64gc-unknown-none-elf": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "s390x-unknown-linux-gnu": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "thumbv7em-none-eabi": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "thumbv8m.main-none-eabi": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "x86_64-apple-darwin": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "x86_64-apple-ios": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "x86_64-fuchsia": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "x86_64-linux-android": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "x86_64-pc-windows-msvc": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "x86_64-unknown-freebsd": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "x86_64-unknown-linux-gnu": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "x86_64-unknown-nixos-gnu": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ],
+            "x86_64-unknown-none": [
+              "client",
+              "h2",
+              "http2",
+              "runtime"
+            ]
+          }
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "bytes 1.4.0",
+              "target": "bytes"
+            },
+            {
+              "id": "futures-channel 0.3.26",
+              "target": "futures_channel"
+            },
+            {
+              "id": "futures-core 0.3.26",
+              "target": "futures_core"
+            },
+            {
+              "id": "futures-util 0.3.26",
+              "target": "futures_util"
+            },
+            {
+              "id": "h2 0.3.16",
+              "target": "h2"
+            },
+            {
+              "id": "http 0.2.9",
+              "target": "http"
+            },
+            {
+              "id": "http-body 0.4.5",
+              "target": "http_body"
+            },
+            {
+              "id": "httparse 1.8.0",
+              "target": "httparse"
+            },
+            {
+              "id": "httpdate 1.0.2",
+              "target": "httpdate"
+            },
+            {
+              "id": "itoa 1.0.5",
+              "target": "itoa"
+            },
+            {
+              "id": "pin-project-lite 0.2.9",
+              "target": "pin_project_lite"
+            },
+            {
+              "id": "socket2 0.4.9",
+              "target": "socket2"
+            },
+            {
+              "id": "tokio 1.26.0",
+              "target": "tokio"
+            },
+            {
+              "id": "tower-service 0.3.2",
+              "target": "tower_service"
+            },
+            {
+              "id": "tracing 0.1.37",
+              "target": "tracing"
+            },
+            {
+              "id": "want 0.3.0",
+              "target": "want"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.14.24"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "hyper-rustls 0.23.2": {
+      "name": "hyper-rustls",
+      "version": "0.23.2",
+      "package_url": "https://github.com/ctz/hyper-rustls",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/hyper-rustls/0.23.2/download",
+          "sha256": "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "hyper_rustls",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "hyper_rustls",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "http 0.2.9",
+              "target": "http"
+            },
+            {
+              "id": "hyper 0.14.24",
+              "target": "hyper"
+            },
+            {
+              "id": "rustls 0.20.8",
+              "target": "rustls"
+            },
+            {
+              "id": "tokio 1.26.0",
+              "target": "tokio"
+            },
+            {
+              "id": "tokio-rustls 0.23.4",
+              "target": "tokio_rustls"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.23.2"
+      },
+      "license": "Apache-2.0/ISC/MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "ISC",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "idna 0.3.0": {
+      "name": "idna",
+      "version": "0.3.0",
+      "package_url": "https://github.com/servo/rust-url/",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/idna/0.3.0/download",
+          "sha256": "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "idna",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "idna",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "unicode-bidi 0.3.10",
+              "target": "unicode_bidi"
+            },
+            {
+              "id": "unicode-normalization 0.1.22",
+              "target": "unicode_normalization"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.0"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "indexmap 1.9.2": {
+      "name": "indexmap",
+      "version": "1.9.2",
+      "package_url": "https://github.com/bluss/indexmap",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/indexmap/1.9.2/download",
+          "sha256": "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "indexmap",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "indexmap",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [],
+          "selects": {
+            "aarch64-apple-darwin": [
+              "std"
+            ],
+            "aarch64-apple-ios": [
+              "std"
+            ],
+            "aarch64-apple-ios-sim": [
+              "std"
+            ],
+            "aarch64-fuchsia": [
+              "std"
+            ],
+            "aarch64-linux-android": [
+              "std"
+            ],
+            "aarch64-pc-windows-msvc": [
+              "std"
+            ],
+            "aarch64-unknown-linux-gnu": [
+              "std"
+            ],
+            "aarch64-unknown-nixos-gnu": [
+              "std"
+            ],
+            "aarch64-unknown-nto-qnx710": [
+              "std"
+            ],
+            "arm-unknown-linux-gnueabi": [
+              "std"
+            ],
+            "armv7-linux-androideabi": [
+              "std"
+            ],
+            "armv7-unknown-linux-gnueabi": [
+              "std"
+            ],
+            "i686-apple-darwin": [
+              "std"
+            ],
+            "i686-linux-android": [
+              "std"
+            ],
+            "i686-pc-windows-msvc": [
+              "std"
+            ],
+            "i686-unknown-freebsd": [
+              "std"
+            ],
+            "i686-unknown-linux-gnu": [
+              "std"
+            ],
+            "powerpc-unknown-linux-gnu": [
+              "std"
+            ],
+            "riscv32imc-unknown-none-elf": [
+              "std"
+            ],
+            "riscv64gc-unknown-none-elf": [
+              "std"
+            ],
+            "s390x-unknown-linux-gnu": [
+              "std"
+            ],
+            "thumbv7em-none-eabi": [
+              "std"
+            ],
+            "thumbv8m.main-none-eabi": [
+              "std"
+            ],
+            "x86_64-apple-darwin": [
+              "std"
+            ],
+            "x86_64-apple-ios": [
+              "std"
+            ],
+            "x86_64-fuchsia": [
+              "std"
+            ],
+            "x86_64-linux-android": [
+              "std"
+            ],
+            "x86_64-pc-windows-msvc": [
+              "std"
+            ],
+            "x86_64-unknown-freebsd": [
+              "std"
+            ],
+            "x86_64-unknown-linux-gnu": [
+              "std"
+            ],
+            "x86_64-unknown-nixos-gnu": [
+              "std"
+            ],
+            "x86_64-unknown-none": [
+              "std"
+            ]
+          }
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "hashbrown 0.12.3",
+              "target": "hashbrown"
+            },
+            {
+              "id": "indexmap 1.9.2",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2021",
+        "version": "1.9.2"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "autocfg 1.1.0",
+              "target": "autocfg"
+            }
+          ],
+          "selects": {}
+        }
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "instant 0.1.12": {
+      "name": "instant",
+      "version": "0.1.12",
+      "package_url": "https://github.com/sebcrozet/instant",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/instant/0.1.12/download",
+          "sha256": "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "instant",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "instant",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "cfg-if 1.0.0",
+              "target": "cfg_if"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.1.12"
+      },
+      "license": "BSD-3-Clause",
+      "license_ids": [
+        "BSD-3-Clause"
+      ],
+      "license_file": null
+    },
+    "ipnet 2.7.1": {
+      "name": "ipnet",
+      "version": "2.7.1",
+      "package_url": "https://github.com/krisprice/ipnet",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/ipnet/2.7.1/download",
+          "sha256": "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "ipnet",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "ipnet",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "2.7.1"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "isahc 1.7.0": {
+      "name": "isahc",
+      "version": "1.7.0",
+      "package_url": "https://github.com/sagebind/isahc",
+      "repository": {
+        "Git": {
+          "remote": "https://github.com/sagebind/isahc.git",
+          "commitish": {
+            "Rev": "096aff7b13f4ff5bb474fdc27bc30b297a2968f6"
+          },
+          "shallow_since": "1667787880 -0600"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "isahc",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "isahc",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "encoding_rs",
+            "http2",
+            "json",
+            "mime",
+            "rustls-tls",
+            "serde",
+            "serde_json",
+            "static-curl",
+            "text-decoding"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "async-channel 1.8.0",
+              "target": "async_channel"
+            },
+            {
+              "id": "castaway 0.2.2",
+              "target": "castaway"
+            },
+            {
+              "id": "crossbeam-utils 0.8.15",
+              "target": "crossbeam_utils"
+            },
+            {
+              "id": "curl 0.4.44",
+              "target": "curl"
+            },
+            {
+              "id": "curl-sys 0.4.60+curl-7.88.1",
+              "target": "curl_sys"
+            },
+            {
+              "id": "encoding_rs 0.8.32",
+              "target": "encoding_rs"
+            },
+            {
+              "id": "event-listener 2.5.3",
+              "target": "event_listener"
+            },
+            {
+              "id": "futures-io 0.3.26",
+              "target": "futures_io"
+            },
+            {
+              "id": "futures-lite 1.12.0",
+              "target": "futures_lite"
+            },
+            {
+              "id": "http 0.2.9",
+              "target": "http"
+            },
+            {
+              "id": "isahc 1.7.0",
+              "target": "build_script_build"
+            },
+            {
+              "id": "log 0.4.17",
+              "target": "log"
+            },
+            {
+              "id": "mime 0.3.16",
+              "target": "mime"
+            },
+            {
+              "id": "once_cell 1.17.1",
+              "target": "once_cell"
+            },
+            {
+              "id": "polling 2.5.2",
+              "target": "polling"
+            },
+            {
+              "id": "serde 1.0.152",
+              "target": "serde"
+            },
+            {
+              "id": "serde_json 1.0.93",
+              "target": "serde_json"
+            },
+            {
+              "id": "sluice 0.5.5",
+              "target": "sluice"
+            },
+            {
+              "id": "tracing 0.1.37",
+              "target": "tracing"
+            },
+            {
+              "id": "tracing-futures 0.2.5",
+              "target": "tracing_futures"
+            },
+            {
+              "id": "url 2.3.1",
+              "target": "url"
+            },
+            {
+              "id": "waker-fn 1.1.0",
+              "target": "waker_fn"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2021",
+        "version": "1.7.0"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "link_deps": {
+          "common": [
+            {
+              "id": "curl-sys 0.4.60+curl-7.88.1",
+              "target": "curl_sys"
+            }
+          ],
+          "selects": {}
+        }
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "itoa 1.0.5": {
+      "name": "itoa",
+      "version": "1.0.5",
+      "package_url": "https://github.com/dtolnay/itoa",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/itoa/1.0.5/download",
+          "sha256": "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "itoa",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "itoa",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "1.0.5"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "js-sys 0.3.61": {
+      "name": "js-sys",
+      "version": "0.3.61",
+      "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/js-sys",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/js-sys/0.3.61/download",
+          "sha256": "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "js_sys",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "js_sys",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "wasm-bindgen 0.2.84",
+              "target": "wasm_bindgen"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.61"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "kv-log-macro 1.0.7": {
+      "name": "kv-log-macro",
+      "version": "1.0.7",
+      "package_url": "https://github.com/yoshuawuyts/kv-log-macro",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/kv-log-macro/1.0.7/download",
+          "sha256": "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "kv_log_macro",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "kv_log_macro",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "log 0.4.17",
+              "target": "log"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.0.7"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "lazy_static 1.4.0": {
+      "name": "lazy_static",
+      "version": "1.4.0",
+      "package_url": "https://github.com/rust-lang-nursery/lazy-static.rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/lazy_static/1.4.0/download",
+          "sha256": "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "lazy_static",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "lazy_static",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2015",
+        "version": "1.4.0"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "levenshtein 1.0.5": {
+      "name": "levenshtein",
+      "version": "1.0.5",
+      "package_url": "https://github.com/wooorm/levenshtein-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/levenshtein/1.0.5/download",
+          "sha256": "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "levenshtein",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "levenshtein",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2015",
+        "version": "1.0.5"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "libc 0.2.139": {
+      "name": "libc",
+      "version": "0.2.139",
+      "package_url": "https://github.com/rust-lang/libc",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/libc/0.2.139/download",
+          "sha256": "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "libc",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "libc",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "libc 0.2.139",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2015",
+        "version": "0.2.139"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "libnghttp2-sys 0.1.7+1.45.0": {
+      "name": "libnghttp2-sys",
+      "version": "0.1.7+1.45.0",
+      "package_url": "https://github.com/alexcrichton/nghttp2-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/libnghttp2-sys/0.1.7+1.45.0/download",
+          "sha256": "57ed28aba195b38d5ff02b9170cbff627e336a20925e43b4945390401c5dc93f"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "libnghttp2_sys",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "libnghttp2_sys",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "data_glob": [
+          "nghttp2/**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "libc 0.2.139",
+              "target": "libc"
+            },
+            {
+              "id": "libnghttp2-sys 0.1.7+1.45.0",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2015",
+        "version": "0.1.7+1.45.0"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**",
+          "nghttp2/**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "cc 1.0.79",
+              "target": "cc"
+            }
+          ],
+          "selects": {}
+        },
+        "links": "nghttp2"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "libz-sys 1.1.8": {
+      "name": "libz-sys",
+      "version": "1.1.8",
+      "package_url": "https://github.com/rust-lang/libz-sys",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/libz-sys/1.1.8/download",
+          "sha256": "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "libz_sys",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "libz_sys",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "libc"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "libc 0.2.139",
+              "target": "libc"
+            },
+            {
+              "id": "libz-sys 1.1.8",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.1.8"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "cc 1.0.79",
+              "target": "cc"
+            },
+            {
+              "id": "pkg-config 0.3.26",
+              "target": "pkg_config"
+            }
+          ],
+          "selects": {
+            "cfg(target_env = \"msvc\")": [
+              {
+                "id": "vcpkg 0.2.15",
+                "target": "vcpkg"
+              }
+            ]
+          }
+        },
+        "links": "z"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "log 0.4.17": {
+      "name": "log",
+      "version": "0.4.17",
+      "package_url": "https://github.com/rust-lang/log",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/log/0.4.17/download",
+          "sha256": "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "log",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "log",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "kv_unstable",
+            "value-bag"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "cfg-if 1.0.0",
+              "target": "cfg_if"
+            },
+            {
+              "id": "log 0.4.17",
+              "target": "build_script_build"
+            },
+            {
+              "id": "value-bag 1.0.0-alpha.9",
+              "target": "value_bag"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2015",
+        "version": "0.4.17"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "md-5 0.9.1": {
+      "name": "md-5",
+      "version": "0.9.1",
+      "package_url": "https://github.com/RustCrypto/hashes",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/md-5/0.9.1/download",
+          "sha256": "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "md5",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "md5",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "block-buffer 0.9.0",
+              "target": "block_buffer"
+            },
+            {
+              "id": "digest 0.9.0",
+              "target": "digest"
+            },
+            {
+              "id": "opaque-debug 0.3.0",
+              "target": "opaque_debug"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.9.1"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "memchr 2.5.0": {
+      "name": "memchr",
+      "version": "2.5.0",
+      "package_url": "https://github.com/BurntSushi/memchr",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/memchr/2.5.0/download",
+          "sha256": "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "memchr",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "memchr",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "memchr 2.5.0",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "2.5.0"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "Unlicense/MIT",
+      "license_ids": [
+        "MIT",
+        "Unlicense"
+      ],
+      "license_file": null
+    },
+    "mime 0.3.16": {
+      "name": "mime",
+      "version": "0.3.16",
+      "package_url": "https://github.com/hyperium/mime",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/mime/0.3.16/download",
+          "sha256": "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "mime",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "mime",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2015",
+        "version": "0.3.16"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "mio 0.8.6": {
+      "name": "mio",
+      "version": "0.8.6",
+      "package_url": "https://github.com/tokio-rs/mio",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/mio/0.8.6/download",
+          "sha256": "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "mio",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "mio",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "net",
+            "os-ext",
+            "os-poll"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "log 0.4.17",
+              "target": "log"
+            }
+          ],
+          "selects": {
+            "cfg(target_os = \"wasi\")": [
+              {
+                "id": "libc 0.2.139",
+                "target": "libc"
+              },
+              {
+                "id": "wasi 0.11.0+wasi-snapshot-preview1",
+                "target": "wasi"
+              }
+            ],
+            "cfg(unix)": [
+              {
+                "id": "libc 0.2.139",
+                "target": "libc"
+              }
+            ],
+            "cfg(windows)": [
+              {
+                "id": "windows-sys 0.45.0",
+                "target": "windows_sys"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "0.8.6"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "num_cpus 1.15.0": {
+      "name": "num_cpus",
+      "version": "1.15.0",
+      "package_url": "https://github.com/seanmonstar/num_cpus",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/num_cpus/1.15.0/download",
+          "sha256": "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "num_cpus",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "num_cpus",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [],
+          "selects": {
+            "cfg(all(any(target_arch = \"x86_64\", target_arch = \"aarch64\"), target_os = \"hermit\"))": [
+              {
+                "id": "hermit-abi 0.2.6",
+                "target": "hermit_abi"
+              }
+            ],
+            "cfg(not(windows))": [
+              {
+                "id": "libc 0.2.139",
+                "target": "libc"
+              }
+            ]
+          }
+        },
+        "edition": "2015",
+        "version": "1.15.0"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "num_enum 0.5.11": {
+      "name": "num_enum",
+      "version": "0.5.11",
+      "package_url": "https://github.com/illicitonion/num_enum",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/num_enum/0.5.11/download",
+          "sha256": "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "num_enum",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "num_enum",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "proc_macro_deps": {
+          "common": [
+            {
+              "id": "num_enum_derive 0.5.11",
+              "target": "num_enum_derive"
+            }
+          ],
+          "selects": {}
+        },
+        "version": "0.5.11"
+      },
+      "license": "BSD-3-Clause OR MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "BSD-3-Clause",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "num_enum_derive 0.5.11": {
+      "name": "num_enum_derive",
+      "version": "0.5.11",
+      "package_url": "https://github.com/illicitonion/num_enum",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/num_enum_derive/0.5.11/download",
+          "sha256": "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799"
+        }
+      },
+      "targets": [
+        {
+          "ProcMacro": {
+            "crate_name": "num_enum_derive",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "num_enum_derive",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "proc-macro-crate",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "proc-macro-crate 1.3.1",
+              "target": "proc_macro_crate"
+            },
+            {
+              "id": "proc-macro2 1.0.51",
+              "target": "proc_macro2"
+            },
+            {
+              "id": "quote 1.0.23",
+              "target": "quote"
+            },
+            {
+              "id": "syn 1.0.109",
+              "target": "syn"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.5.11"
+      },
+      "license": "BSD-3-Clause OR MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "BSD-3-Clause",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "once_cell 1.17.1": {
+      "name": "once_cell",
+      "version": "1.17.1",
+      "package_url": "https://github.com/matklad/once_cell",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/once_cell/1.17.1/download",
+          "sha256": "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "once_cell",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "once_cell",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "default",
+            "race",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2021",
+        "version": "1.17.1"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "opaque-debug 0.3.0": {
+      "name": "opaque-debug",
+      "version": "0.3.0",
+      "package_url": "https://github.com/RustCrypto/utils",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/opaque-debug/0.3.0/download",
+          "sha256": "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "opaque_debug",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "opaque_debug",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "0.3.0"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "parking 2.0.0": {
+      "name": "parking",
+      "version": "2.0.0",
+      "package_url": "https://github.com/stjepang/parking",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/parking/2.0.0/download",
+          "sha256": "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "parking",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "parking",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "2.0.0"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "percent-encoding 2.2.0": {
+      "name": "percent-encoding",
+      "version": "2.2.0",
+      "package_url": "https://github.com/servo/rust-url/",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/percent-encoding/2.2.0/download",
+          "sha256": "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "percent_encoding",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "percent_encoding",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "default"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "2.2.0"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "pin-project 1.0.12": {
+      "name": "pin-project",
+      "version": "1.0.12",
+      "package_url": "https://github.com/taiki-e/pin-project",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/pin-project/1.0.12/download",
+          "sha256": "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "pin_project",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "pin_project",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "proc_macro_deps": {
+          "common": [
+            {
+              "id": "pin-project-internal 1.0.12",
+              "target": "pin_project_internal"
+            }
+          ],
+          "selects": {}
+        },
+        "version": "1.0.12"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "pin-project-internal 1.0.12": {
+      "name": "pin-project-internal",
+      "version": "1.0.12",
+      "package_url": "https://github.com/taiki-e/pin-project",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/pin-project-internal/1.0.12/download",
+          "sha256": "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
+        }
+      },
+      "targets": [
+        {
+          "ProcMacro": {
+            "crate_name": "pin_project_internal",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "pin_project_internal",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "proc-macro2 1.0.51",
+              "target": "proc_macro2"
+            },
+            {
+              "id": "quote 1.0.23",
+              "target": "quote"
+            },
+            {
+              "id": "syn 1.0.109",
+              "target": "syn"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.0.12"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "pin-project-lite 0.2.9": {
+      "name": "pin-project-lite",
+      "version": "0.2.9",
+      "package_url": "https://github.com/taiki-e/pin-project-lite",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/pin-project-lite/0.2.9/download",
+          "sha256": "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "pin_project_lite",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "pin_project_lite",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "0.2.9"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "pin-utils 0.1.0": {
+      "name": "pin-utils",
+      "version": "0.1.0",
+      "package_url": "https://github.com/rust-lang-nursery/pin-utils",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/pin-utils/0.1.0/download",
+          "sha256": "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "pin_utils",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "pin_utils",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "0.1.0"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "pkg-config 0.3.26": {
+      "name": "pkg-config",
+      "version": "0.3.26",
+      "package_url": "https://github.com/rust-lang/pkg-config-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/pkg-config/0.3.26/download",
+          "sha256": "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "pkg_config",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "pkg_config",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2015",
+        "version": "0.3.26"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "pkg_a 0.1.0": {
+      "name": "pkg_a",
+      "version": "0.1.0",
+      "package_url": null,
+      "repository": null,
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "pkg_a",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "pkg_a",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "anyhow 1.0.69",
+              "target": "anyhow"
+            },
+            {
+              "id": "reqwest 0.11.14",
+              "target": "reqwest"
+            }
+          ],
+          "selects": {}
+        },
+        "deps_dev": {
+          "common": [
+            {
+              "id": "httpmock 0.6.7",
+              "target": "httpmock"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.1.0"
+      },
+      "license": null,
+      "license_ids": [],
+      "license_file": null
+    },
+    "pkg_b 0.1.0": {
+      "name": "pkg_b",
+      "version": "0.1.0",
+      "package_url": null,
+      "repository": null,
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "pkg_b",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "pkg_b",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "rustls 0.20.8",
+              "target": "rustls"
+            },
+            {
+              "id": "rustls-pemfile 1.0.2",
+              "target": "rustls_pemfile"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.1.0"
+      },
+      "license": null,
+      "license_ids": [],
+      "license_file": null
+    },
+    "pkg_c 0.1.0": {
+      "name": "pkg_c",
+      "version": "0.1.0",
+      "package_url": null,
+      "repository": null,
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "pkg_c",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "pkg_c",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "md-5 0.9.1",
+              "target": "md5"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "proc_macro_deps_dev": {
+          "common": [
+            {
+              "id": "hex-literal 0.3.4",
+              "target": "hex_literal"
+            }
+          ],
+          "selects": {}
+        },
+        "version": "0.1.0"
+      },
+      "license": null,
+      "license_ids": [],
+      "license_file": null
+    },
+    "polling 2.5.2": {
+      "name": "polling",
+      "version": "2.5.2",
+      "package_url": "https://github.com/smol-rs/polling",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/polling/2.5.2/download",
+          "sha256": "22122d5ec4f9fe1b3916419b76be1e80bcb93f618d071d2edf841b137b2a2bd6"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "polling",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "polling",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "cfg-if 1.0.0",
+              "target": "cfg_if"
+            },
+            {
+              "id": "log 0.4.17",
+              "target": "log"
+            },
+            {
+              "id": "polling 2.5.2",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {
+            "cfg(any(unix, target_os = \"fuchsia\", target_os = \"vxworks\"))": [
+              {
+                "id": "libc 0.2.139",
+                "target": "libc"
+              }
+            ],
+            "cfg(windows)": [
+              {
+                "id": "wepoll-ffi 0.1.2",
+                "target": "wepoll_ffi"
+              },
+              {
+                "id": "windows-sys 0.42.0",
+                "target": "windows_sys"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "2.5.2"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "autocfg 1.1.0",
+              "target": "autocfg"
+            }
+          ],
+          "selects": {}
+        }
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "proc-macro-crate 1.3.1": {
+      "name": "proc-macro-crate",
+      "version": "1.3.1",
+      "package_url": "https://github.com/bkchr/proc-macro-crate",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/proc-macro-crate/1.3.1/download",
+          "sha256": "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "proc_macro_crate",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "proc_macro_crate",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "once_cell 1.17.1",
+              "target": "once_cell"
+            },
+            {
+              "id": "toml_edit 0.19.4",
+              "target": "toml_edit"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2021",
+        "version": "1.3.1"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "proc-macro2 1.0.51": {
+      "name": "proc-macro2",
+      "version": "1.0.51",
+      "package_url": "https://github.com/dtolnay/proc-macro2",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/proc-macro2/1.0.51/download",
+          "sha256": "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "proc_macro2",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "proc_macro2",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "proc-macro"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "proc-macro2 1.0.51",
+              "target": "build_script_build"
+            },
+            {
+              "id": "unicode-ident 1.0.6",
+              "target": "unicode_ident"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.0.51"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "quote 1.0.23": {
+      "name": "quote",
+      "version": "1.0.23",
+      "package_url": "https://github.com/dtolnay/quote",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/quote/1.0.23/download",
+          "sha256": "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "quote",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "quote",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "proc-macro"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "proc-macro2 1.0.51",
+              "target": "proc_macro2"
+            },
+            {
+              "id": "quote 1.0.23",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.0.23"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "regex 1.7.1": {
+      "name": "regex",
+      "version": "1.7.1",
+      "package_url": "https://github.com/rust-lang/regex",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/regex/1.7.1/download",
+          "sha256": "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "regex",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "regex",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "aho-corasick",
+            "default",
+            "memchr",
+            "perf",
+            "perf-cache",
+            "perf-dfa",
+            "perf-inline",
+            "perf-literal",
+            "std",
+            "unicode",
+            "unicode-age",
+            "unicode-bool",
+            "unicode-case",
+            "unicode-gencat",
+            "unicode-perl",
+            "unicode-script",
+            "unicode-segment"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "aho-corasick 0.7.20",
+              "target": "aho_corasick"
+            },
+            {
+              "id": "memchr 2.5.0",
+              "target": "memchr"
+            },
+            {
+              "id": "regex-syntax 0.6.28",
+              "target": "regex_syntax"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.7.1"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "regex-syntax 0.6.28": {
+      "name": "regex-syntax",
+      "version": "0.6.28",
+      "package_url": "https://github.com/rust-lang/regex",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/regex-syntax/0.6.28/download",
+          "sha256": "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "regex_syntax",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "regex_syntax",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "unicode",
+            "unicode-age",
+            "unicode-bool",
+            "unicode-case",
+            "unicode-gencat",
+            "unicode-perl",
+            "unicode-script",
+            "unicode-segment"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.6.28"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "reqwest 0.11.14": {
+      "name": "reqwest",
+      "version": "0.11.14",
+      "package_url": "https://github.com/seanmonstar/reqwest",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/reqwest/0.11.14/download",
+          "sha256": "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "reqwest",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "reqwest",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "__rustls",
+            "__tls",
+            "blocking",
+            "hyper-rustls",
+            "json",
+            "rustls",
+            "rustls-pemfile",
+            "rustls-tls",
+            "rustls-tls-webpki-roots",
+            "serde_json",
+            "tokio-rustls",
+            "webpki-roots"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "base64 0.21.0",
+              "target": "base64"
+            },
+            {
+              "id": "bytes 1.4.0",
+              "target": "bytes"
+            },
+            {
+              "id": "futures-core 0.3.26",
+              "target": "futures_core"
+            },
+            {
+              "id": "futures-util 0.3.26",
+              "target": "futures_util"
+            },
+            {
+              "id": "http 0.2.9",
+              "target": "http"
+            },
+            {
+              "id": "serde 1.0.152",
+              "target": "serde"
+            },
+            {
+              "id": "serde_json 1.0.93",
+              "target": "serde_json"
+            },
+            {
+              "id": "serde_urlencoded 0.7.1",
+              "target": "serde_urlencoded"
+            },
+            {
+              "id": "tower-service 0.3.2",
+              "target": "tower_service"
+            },
+            {
+              "id": "url 2.3.1",
+              "target": "url"
+            }
+          ],
+          "selects": {
+            "cfg(not(target_arch = \"wasm32\"))": [
+              {
+                "id": "encoding_rs 0.8.32",
+                "target": "encoding_rs"
+              },
+              {
+                "id": "h2 0.3.16",
+                "target": "h2"
+              },
+              {
+                "id": "http-body 0.4.5",
+                "target": "http_body"
+              },
+              {
+                "id": "hyper 0.14.24",
+                "target": "hyper"
+              },
+              {
+                "id": "hyper-rustls 0.23.2",
+                "target": "hyper_rustls"
+              },
+              {
+                "id": "ipnet 2.7.1",
+                "target": "ipnet"
+              },
+              {
+                "id": "log 0.4.17",
+                "target": "log"
+              },
+              {
+                "id": "mime 0.3.16",
+                "target": "mime"
+              },
+              {
+                "id": "once_cell 1.17.1",
+                "target": "once_cell"
+              },
+              {
+                "id": "percent-encoding 2.2.0",
+                "target": "percent_encoding"
+              },
+              {
+                "id": "pin-project-lite 0.2.9",
+                "target": "pin_project_lite"
+              },
+              {
+                "id": "rustls 0.20.8",
+                "target": "rustls"
+              },
+              {
+                "id": "rustls-pemfile 1.0.2",
+                "target": "rustls_pemfile"
+              },
+              {
+                "id": "tokio 1.26.0",
+                "target": "tokio"
+              },
+              {
+                "id": "tokio-rustls 0.23.4",
+                "target": "tokio_rustls"
+              },
+              {
+                "id": "webpki-roots 0.22.6",
+                "target": "webpki_roots"
+              }
+            ],
+            "cfg(target_arch = \"wasm32\")": [
+              {
+                "id": "js-sys 0.3.61",
+                "target": "js_sys"
+              },
+              {
+                "id": "wasm-bindgen 0.2.84",
+                "target": "wasm_bindgen"
+              },
+              {
+                "id": "wasm-bindgen-futures 0.4.34",
+                "target": "wasm_bindgen_futures"
+              },
+              {
+                "id": "web-sys 0.3.61",
+                "target": "web_sys"
+              }
+            ],
+            "cfg(windows)": [
+              {
+                "id": "winreg 0.10.1",
+                "target": "winreg"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "0.11.14"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "ring 0.16.20": {
+      "name": "ring",
+      "version": "0.16.20",
+      "package_url": "https://github.com/briansmith/ring",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/ring/0.16.20/download",
+          "sha256": "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "ring",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "ring",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "default",
+            "dev_urandom_fallback",
+            "once_cell"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "ring 0.16.20",
+              "target": "build_script_build"
+            },
+            {
+              "id": "untrusted 0.7.1",
+              "target": "untrusted"
+            }
+          ],
+          "selects": {
+            "cfg(all(target_arch = \"wasm32\", target_vendor = \"unknown\", target_os = \"unknown\", target_env = \"\"))": [
+              {
+                "id": "web-sys 0.3.61",
+                "target": "web_sys"
+              }
+            ],
+            "cfg(any(target_arch = \"x86\", target_arch = \"x86_64\", all(any(target_arch = \"aarch64\", target_arch = \"arm\"), any(target_os = \"android\", target_os = \"fuchsia\", target_os = \"linux\"))))": [
+              {
+                "id": "spin 0.5.2",
+                "target": "spin"
+              }
+            ],
+            "cfg(any(target_os = \"android\", target_os = \"linux\"))": [
+              {
+                "id": "libc 0.2.139",
+                "target": "libc"
+              },
+              {
+                "id": "once_cell 1.17.1",
+                "target": "once_cell"
+              }
+            ],
+            "cfg(any(target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"illumos\", target_os = \"netbsd\", target_os = \"openbsd\", target_os = \"solaris\"))": [
+              {
+                "id": "once_cell 1.17.1",
+                "target": "once_cell"
+              }
+            ],
+            "cfg(target_os = \"windows\")": [
+              {
+                "id": "winapi 0.3.9",
+                "target": "winapi"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "0.16.20"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "cc 1.0.79",
+              "target": "cc"
+            }
+          ],
+          "selects": {}
+        },
+        "links": "ring-asm"
+      },
+      "license": null,
+      "license_ids": [],
+      "license_file": "LICENSE"
+    },
+    "rustls 0.20.8": {
+      "name": "rustls",
+      "version": "0.20.8",
+      "package_url": "https://github.com/rustls/rustls",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/rustls/0.20.8/download",
+          "sha256": "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "rustls",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "rustls",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "dangerous_configuration",
+            "default",
+            "log",
+            "logging",
+            "tls12"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "log 0.4.17",
+              "target": "log"
+            },
+            {
+              "id": "ring 0.16.20",
+              "target": "ring"
+            },
+            {
+              "id": "rustls 0.20.8",
+              "target": "build_script_build"
+            },
+            {
+              "id": "sct 0.7.0",
+              "target": "sct"
+            },
+            {
+              "id": "webpki 0.22.0",
+              "target": "webpki"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.20.8"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "link_deps": {
+          "common": [
+            {
+              "id": "ring 0.16.20",
+              "target": "ring"
+            }
+          ],
+          "selects": {}
+        }
+      },
+      "license": "Apache-2.0/ISC/MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "ISC",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "rustls-ffi 0.8.2": {
+      "name": "rustls-ffi",
+      "version": "0.8.2",
+      "package_url": "https://github.com/rustls/rustls-ffi",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/rustls-ffi/0.8.2/download",
+          "sha256": "9da52707cca59e6eef8a78f3ad8d04024254a168ed1b41eb4dfa9616eace781a"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "rustls_ffi",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "rustls_ffi",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "no_log_capture"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "libc 0.2.139",
+              "target": "libc"
+            },
+            {
+              "id": "log 0.4.17",
+              "target": "log"
+            },
+            {
+              "id": "num_enum 0.5.11",
+              "target": "num_enum"
+            },
+            {
+              "id": "rustls 0.20.8",
+              "target": "rustls"
+            },
+            {
+              "id": "rustls-ffi 0.8.2",
+              "target": "build_script_build"
+            },
+            {
+              "id": "rustls-pemfile 0.2.1",
+              "target": "rustls_pemfile"
+            },
+            {
+              "id": "sct 0.7.0",
+              "target": "sct"
+            },
+            {
+              "id": "webpki 0.22.0",
+              "target": "webpki"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.8.2"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "links": "rustls_ffi"
+      },
+      "license": "Apache-2.0/ISC/MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "ISC",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "rustls-pemfile 0.2.1": {
+      "name": "rustls-pemfile",
+      "version": "0.2.1",
+      "package_url": "https://github.com/rustls/pemfile",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/rustls-pemfile/0.2.1/download",
+          "sha256": "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "rustls_pemfile",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "rustls_pemfile",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "base64 0.13.1",
+              "target": "base64"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.2.1"
+      },
+      "license": "Apache-2.0/ISC/MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "ISC",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "rustls-pemfile 1.0.2": {
+      "name": "rustls-pemfile",
+      "version": "1.0.2",
+      "package_url": "https://github.com/rustls/pemfile",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/rustls-pemfile/1.0.2/download",
+          "sha256": "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "rustls_pemfile",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "rustls_pemfile",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "base64 0.21.0",
+              "target": "base64"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.0.2"
+      },
+      "license": "Apache-2.0 OR ISC OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "ISC",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "rustversion 1.0.11": {
+      "name": "rustversion",
+      "version": "1.0.11",
+      "package_url": "https://github.com/dtolnay/rustversion",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/rustversion/1.0.11/download",
+          "sha256": "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70"
+        }
+      },
+      "targets": [
+        {
+          "ProcMacro": {
+            "crate_name": "rustversion",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build/build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "rustversion",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "rustversion 1.0.11",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.0.11"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "ryu 1.0.12": {
+      "name": "ryu",
+      "version": "1.0.12",
+      "package_url": "https://github.com/dtolnay/ryu",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/ryu/1.0.12/download",
+          "sha256": "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "ryu",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "ryu",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "1.0.12"
+      },
+      "license": "Apache-2.0 OR BSL-1.0",
+      "license_ids": [
+        "Apache-2.0",
+        "BSL-1.0"
+      ],
+      "license_file": null
+    },
+    "schannel 0.1.21": {
+      "name": "schannel",
+      "version": "0.1.21",
+      "package_url": "https://github.com/steffengy/schannel-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/schannel/0.1.21/download",
+          "sha256": "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "schannel",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "schannel",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "windows-sys 0.42.0",
+              "target": "windows_sys"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.1.21"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "sct 0.7.0": {
+      "name": "sct",
+      "version": "0.7.0",
+      "package_url": "https://github.com/ctz/sct.rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/sct/0.7.0/download",
+          "sha256": "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "sct",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "sct",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "ring 0.16.20",
+              "target": "ring"
+            },
+            {
+              "id": "untrusted 0.7.1",
+              "target": "untrusted"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.7.0"
+      },
+      "license": "Apache-2.0/ISC/MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "ISC",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "serde 1.0.152": {
+      "name": "serde",
+      "version": "1.0.152",
+      "package_url": "https://github.com/serde-rs/serde",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/serde/1.0.152/download",
+          "sha256": "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "serde",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "serde",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "derive",
+            "serde_derive",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "serde 1.0.152",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2015",
+        "proc_macro_deps": {
+          "common": [
+            {
+              "id": "serde_derive 1.0.152",
+              "target": "serde_derive"
+            }
+          ],
+          "selects": {}
+        },
+        "version": "1.0.152"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "serde_derive 1.0.152": {
+      "name": "serde_derive",
+      "version": "1.0.152",
+      "package_url": "https://github.com/serde-rs/serde",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/serde_derive/1.0.152/download",
+          "sha256": "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
+        }
+      },
+      "targets": [
+        {
+          "ProcMacro": {
+            "crate_name": "serde_derive",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "serde_derive",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "proc-macro2 1.0.51",
+              "target": "proc_macro2"
+            },
+            {
+              "id": "quote 1.0.23",
+              "target": "quote"
+            },
+            {
+              "id": "serde_derive 1.0.152",
+              "target": "build_script_build"
+            },
+            {
+              "id": "syn 1.0.109",
+              "target": "syn"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2015",
+        "version": "1.0.152"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "serde_json 1.0.93": {
+      "name": "serde_json",
+      "version": "1.0.93",
+      "package_url": "https://github.com/serde-rs/json",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/serde_json/1.0.93/download",
+          "sha256": "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "serde_json",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "serde_json",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "itoa 1.0.5",
+              "target": "itoa"
+            },
+            {
+              "id": "ryu 1.0.12",
+              "target": "ryu"
+            },
+            {
+              "id": "serde 1.0.152",
+              "target": "serde"
+            },
+            {
+              "id": "serde_json 1.0.93",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.0.93"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "serde_regex 1.1.0": {
+      "name": "serde_regex",
+      "version": "1.1.0",
+      "package_url": "https://github.com/tailhook/serde-regex",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/serde_regex/1.1.0/download",
+          "sha256": "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "serde_regex",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "serde_regex",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "regex 1.7.1",
+              "target": "regex"
+            },
+            {
+              "id": "serde 1.0.152",
+              "target": "serde"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.1.0"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "serde_urlencoded 0.7.1": {
+      "name": "serde_urlencoded",
+      "version": "0.7.1",
+      "package_url": "https://github.com/nox/serde_urlencoded",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/serde_urlencoded/0.7.1/download",
+          "sha256": "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "serde_urlencoded",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "serde_urlencoded",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "form_urlencoded 1.1.0",
+              "target": "form_urlencoded"
+            },
+            {
+              "id": "itoa 1.0.5",
+              "target": "itoa"
+            },
+            {
+              "id": "ryu 1.0.12",
+              "target": "ryu"
+            },
+            {
+              "id": "serde 1.0.152",
+              "target": "serde"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.7.1"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "signal-hook 0.3.15": {
+      "name": "signal-hook",
+      "version": "0.3.15",
+      "package_url": "https://github.com/vorner/signal-hook",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/signal-hook/0.3.15/download",
+          "sha256": "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "signal_hook",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "signal_hook",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "channel",
+            "iterator"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "libc 0.2.139",
+              "target": "libc"
+            },
+            {
+              "id": "signal-hook 0.3.15",
+              "target": "build_script_build"
+            },
+            {
+              "id": "signal-hook-registry 1.4.1",
+              "target": "signal_hook_registry"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.15"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "Apache-2.0/MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "signal-hook-registry 1.4.1": {
+      "name": "signal-hook-registry",
+      "version": "1.4.1",
+      "package_url": "https://github.com/vorner/signal-hook",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/signal-hook-registry/1.4.1/download",
+          "sha256": "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "signal_hook_registry",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "signal_hook_registry",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "libc 0.2.139",
+              "target": "libc"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2015",
+        "version": "1.4.1"
+      },
+      "license": "Apache-2.0/MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "similar 2.2.1": {
+      "name": "similar",
+      "version": "2.2.1",
+      "package_url": "https://github.com/mitsuhiko/similar",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/similar/2.2.1/download",
+          "sha256": "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "similar",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "similar",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "text"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "2.2.1"
+      },
+      "license": "Apache-2.0",
+      "license_ids": [
+        "Apache-2.0"
+      ],
+      "license_file": null
+    },
+    "slab 0.4.8": {
+      "name": "slab",
+      "version": "0.4.8",
+      "package_url": "https://github.com/tokio-rs/slab",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/slab/0.4.8/download",
+          "sha256": "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "slab",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "slab",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "slab 0.4.8",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.4.8"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "autocfg 1.1.0",
+              "target": "autocfg"
+            }
+          ],
+          "selects": {}
+        }
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "sluice 0.5.5": {
+      "name": "sluice",
+      "version": "0.5.5",
+      "package_url": "https://github.com/sagebind/sluice",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/sluice/0.5.5/download",
+          "sha256": "6d7400c0eff44aa2fcb5e31a5f24ba9716ed90138769e4977a2ba6014ae63eb5"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "sluice",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "sluice",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "async-channel 1.8.0",
+              "target": "async_channel"
+            },
+            {
+              "id": "futures-core 0.3.26",
+              "target": "futures_core"
+            },
+            {
+              "id": "futures-io 0.3.26",
+              "target": "futures_io"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.5.5"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "socket2 0.4.9": {
+      "name": "socket2",
+      "version": "0.4.9",
+      "package_url": "https://github.com/rust-lang/socket2",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/socket2/0.4.9/download",
+          "sha256": "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "socket2",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "socket2",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "all"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [],
+          "selects": {
+            "cfg(unix)": [
+              {
+                "id": "libc 0.2.139",
+                "target": "libc"
+              }
+            ],
+            "cfg(windows)": [
+              {
+                "id": "winapi 0.3.9",
+                "target": "winapi"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "0.4.9"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "spin 0.5.2": {
+      "name": "spin",
+      "version": "0.5.2",
+      "package_url": "https://github.com/mvdnes/spin-rs.git",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/spin/0.5.2/download",
+          "sha256": "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "spin",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "spin",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2015",
+        "version": "0.5.2"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "syn 1.0.109": {
+      "name": "syn",
+      "version": "1.0.109",
+      "package_url": "https://github.com/dtolnay/syn",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/syn/1.0.109/download",
+          "sha256": "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "syn",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "syn",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "clone-impls",
+            "default",
+            "derive",
+            "extra-traits",
+            "full",
+            "parsing",
+            "printing",
+            "proc-macro",
+            "quote",
+            "visit",
+            "visit-mut"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "proc-macro2 1.0.51",
+              "target": "proc_macro2"
+            },
+            {
+              "id": "quote 1.0.23",
+              "target": "quote"
+            },
+            {
+              "id": "syn 1.0.109",
+              "target": "build_script_build"
+            },
+            {
+              "id": "unicode-ident 1.0.6",
+              "target": "unicode_ident"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.0.109"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "tinyvec 1.6.0": {
+      "name": "tinyvec",
+      "version": "1.6.0",
+      "package_url": "https://github.com/Lokathor/tinyvec",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/tinyvec/1.6.0/download",
+          "sha256": "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "tinyvec",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "tinyvec",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "default",
+            "tinyvec_macros"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "tinyvec_macros 0.1.1",
+              "target": "tinyvec_macros"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.6.0"
+      },
+      "license": "Zlib OR Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT",
+        "Zlib"
+      ],
+      "license_file": null
+    },
+    "tinyvec_macros 0.1.1": {
+      "name": "tinyvec_macros",
+      "version": "0.1.1",
+      "package_url": "https://github.com/Soveu/tinyvec_macros",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/tinyvec_macros/0.1.1/download",
+          "sha256": "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "tinyvec_macros",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "tinyvec_macros",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "0.1.1"
+      },
+      "license": "MIT OR Apache-2.0 OR Zlib",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT",
+        "Zlib"
+      ],
+      "license_file": null
+    },
+    "tokio 1.26.0": {
+      "name": "tokio",
+      "version": "1.26.0",
+      "package_url": "https://github.com/tokio-rs/tokio",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/tokio/1.26.0/download",
+          "sha256": "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "tokio",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "tokio",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "libc",
+            "macros",
+            "mio",
+            "net",
+            "num_cpus",
+            "rt",
+            "rt-multi-thread",
+            "signal",
+            "signal-hook-registry",
+            "socket2",
+            "sync",
+            "time",
+            "tokio-macros"
+          ],
+          "selects": {
+            "aarch64-apple-darwin": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "aarch64-apple-ios": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "aarch64-apple-ios-sim": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "aarch64-fuchsia": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "aarch64-linux-android": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "aarch64-pc-windows-msvc": [
+              "bytes",
+              "io-util",
+              "memchr",
+              "windows-sys"
+            ],
+            "aarch64-unknown-linux-gnu": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "aarch64-unknown-nixos-gnu": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "aarch64-unknown-nto-qnx710": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "arm-unknown-linux-gnueabi": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "armv7-linux-androideabi": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "armv7-unknown-linux-gnueabi": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "i686-apple-darwin": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "i686-linux-android": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "i686-pc-windows-msvc": [
+              "bytes",
+              "io-util",
+              "memchr",
+              "windows-sys"
+            ],
+            "i686-unknown-freebsd": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "i686-unknown-linux-gnu": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "powerpc-unknown-linux-gnu": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "riscv32imc-unknown-none-elf": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "riscv64gc-unknown-none-elf": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "s390x-unknown-linux-gnu": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "thumbv7em-none-eabi": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "thumbv8m.main-none-eabi": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "x86_64-apple-darwin": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "x86_64-apple-ios": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "x86_64-fuchsia": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "x86_64-linux-android": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "x86_64-pc-windows-msvc": [
+              "bytes",
+              "io-util",
+              "memchr",
+              "windows-sys"
+            ],
+            "x86_64-unknown-freebsd": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "x86_64-unknown-linux-gnu": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "x86_64-unknown-nixos-gnu": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ],
+            "x86_64-unknown-none": [
+              "bytes",
+              "io-util",
+              "memchr"
+            ]
+          }
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "bytes 1.4.0",
+              "target": "bytes"
+            },
+            {
+              "id": "memchr 2.5.0",
+              "target": "memchr"
+            },
+            {
+              "id": "mio 0.8.6",
+              "target": "mio"
+            },
+            {
+              "id": "num_cpus 1.15.0",
+              "target": "num_cpus"
+            },
+            {
+              "id": "pin-project-lite 0.2.9",
+              "target": "pin_project_lite"
+            },
+            {
+              "id": "tokio 1.26.0",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {
+            "cfg(docsrs)": [
+              {
+                "id": "windows-sys 0.45.0",
+                "target": "windows_sys"
+              }
+            ],
+            "cfg(not(any(target_arch = \"wasm32\", target_arch = \"wasm64\")))": [
+              {
+                "id": "socket2 0.4.9",
+                "target": "socket2"
+              }
+            ],
+            "cfg(unix)": [
+              {
+                "id": "libc 0.2.139",
+                "target": "libc"
+              },
+              {
+                "id": "signal-hook-registry 1.4.1",
+                "target": "signal_hook_registry"
+              }
+            ],
+            "cfg(windows)": [
+              {
+                "id": "windows-sys 0.45.0",
+                "target": "windows_sys"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "proc_macro_deps": {
+          "common": [
+            {
+              "id": "tokio-macros 1.8.2",
+              "target": "tokio_macros"
+            }
+          ],
+          "selects": {}
+        },
+        "version": "1.26.0"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "autocfg 1.1.0",
+              "target": "autocfg"
+            }
+          ],
+          "selects": {}
+        }
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "tokio-macros 1.8.2": {
+      "name": "tokio-macros",
+      "version": "1.8.2",
+      "package_url": "https://github.com/tokio-rs/tokio",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/tokio-macros/1.8.2/download",
+          "sha256": "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
+        }
+      },
+      "targets": [
+        {
+          "ProcMacro": {
+            "crate_name": "tokio_macros",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "tokio_macros",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "proc-macro2 1.0.51",
+              "target": "proc_macro2"
+            },
+            {
+              "id": "quote 1.0.23",
+              "target": "quote"
+            },
+            {
+              "id": "syn 1.0.109",
+              "target": "syn"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.8.2"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "tokio-rustls 0.23.4": {
+      "name": "tokio-rustls",
+      "version": "0.23.4",
+      "package_url": "https://github.com/tokio-rs/tls",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/tokio-rustls/0.23.4/download",
+          "sha256": "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "tokio_rustls",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "tokio_rustls",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "logging",
+            "tls12"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "rustls 0.20.8",
+              "target": "rustls"
+            },
+            {
+              "id": "tokio 1.26.0",
+              "target": "tokio"
+            },
+            {
+              "id": "webpki 0.22.0",
+              "target": "webpki"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.23.4"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "tokio-util 0.7.7": {
+      "name": "tokio-util",
+      "version": "0.7.7",
+      "package_url": "https://github.com/tokio-rs/tokio",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/tokio-util/0.7.7/download",
+          "sha256": "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "tokio_util",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "tokio_util",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "codec",
+            "default",
+            "tracing"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "bytes 1.4.0",
+              "target": "bytes"
+            },
+            {
+              "id": "futures-core 0.3.26",
+              "target": "futures_core"
+            },
+            {
+              "id": "futures-sink 0.3.26",
+              "target": "futures_sink"
+            },
+            {
+              "id": "pin-project-lite 0.2.9",
+              "target": "pin_project_lite"
+            },
+            {
+              "id": "tokio 1.26.0",
+              "target": "tokio"
+            },
+            {
+              "id": "tracing 0.1.37",
+              "target": "tracing"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.7.7"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "toml_datetime 0.6.1": {
+      "name": "toml_datetime",
+      "version": "0.6.1",
+      "package_url": "https://github.com/toml-rs/toml",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/toml_datetime/0.6.1/download",
+          "sha256": "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "toml_datetime",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "toml_datetime",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2021",
+        "version": "0.6.1"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "toml_edit 0.19.4": {
+      "name": "toml_edit",
+      "version": "0.19.4",
+      "package_url": "https://github.com/ordian/toml_edit",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/toml_edit/0.19.4/download",
+          "sha256": "9a1eb0622d28f4b9c90adc4ea4b2b46b47663fde9ac5fafcb14a1369d5508825"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "toml_edit",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "toml_edit",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "indexmap 1.9.2",
+              "target": "indexmap"
+            },
+            {
+              "id": "toml_datetime 0.6.1",
+              "target": "toml_datetime"
+            },
+            {
+              "id": "winnow 0.3.3",
+              "target": "winnow"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2021",
+        "version": "0.19.4"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "tower-service 0.3.2": {
+      "name": "tower-service",
+      "version": "0.3.2",
+      "package_url": "https://github.com/tower-rs/tower",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/tower-service/0.3.2/download",
+          "sha256": "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "tower_service",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "tower_service",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "0.3.2"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "tracing 0.1.37": {
+      "name": "tracing",
+      "version": "0.1.37",
+      "package_url": "https://github.com/tokio-rs/tracing",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/tracing/0.1.37/download",
+          "sha256": "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "tracing",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "tracing",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "attributes",
+            "default",
+            "log",
+            "std",
+            "tracing-attributes"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "cfg-if 1.0.0",
+              "target": "cfg_if"
+            },
+            {
+              "id": "log 0.4.17",
+              "target": "log"
+            },
+            {
+              "id": "pin-project-lite 0.2.9",
+              "target": "pin_project_lite"
+            },
+            {
+              "id": "tracing-core 0.1.30",
+              "target": "tracing_core"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "proc_macro_deps": {
+          "common": [
+            {
+              "id": "tracing-attributes 0.1.23",
+              "target": "tracing_attributes"
+            }
+          ],
+          "selects": {}
+        },
+        "version": "0.1.37"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "tracing-attributes 0.1.23": {
+      "name": "tracing-attributes",
+      "version": "0.1.23",
+      "package_url": "https://github.com/tokio-rs/tracing",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/tracing-attributes/0.1.23/download",
+          "sha256": "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
+        }
+      },
+      "targets": [
+        {
+          "ProcMacro": {
+            "crate_name": "tracing_attributes",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "tracing_attributes",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "proc-macro2 1.0.51",
+              "target": "proc_macro2"
+            },
+            {
+              "id": "quote 1.0.23",
+              "target": "quote"
+            },
+            {
+              "id": "syn 1.0.109",
+              "target": "syn"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.1.23"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "tracing-core 0.1.30": {
+      "name": "tracing-core",
+      "version": "0.1.30",
+      "package_url": "https://github.com/tokio-rs/tracing",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/tracing-core/0.1.30/download",
+          "sha256": "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "tracing_core",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "tracing_core",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "once_cell",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "once_cell 1.17.1",
+              "target": "once_cell"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.1.30"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "tracing-futures 0.2.5": {
+      "name": "tracing-futures",
+      "version": "0.2.5",
+      "package_url": "https://github.com/tokio-rs/tracing",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/tracing-futures/0.2.5/download",
+          "sha256": "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "tracing_futures",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "tracing_futures",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "pin-project",
+            "std",
+            "std-future"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "pin-project 1.0.12",
+              "target": "pin_project"
+            },
+            {
+              "id": "tracing 0.1.37",
+              "target": "tracing"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.2.5"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "try-lock 0.2.4": {
+      "name": "try-lock",
+      "version": "0.2.4",
+      "package_url": "https://github.com/seanmonstar/try-lock",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/try-lock/0.2.4/download",
+          "sha256": "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "try_lock",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "try_lock",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2015",
+        "version": "0.2.4"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "typenum 1.16.0": {
+      "name": "typenum",
+      "version": "1.16.0",
+      "package_url": "https://github.com/paholg/typenum",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/typenum/1.16.0/download",
+          "sha256": "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "typenum",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_main",
+            "crate_root": "build/main.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "typenum",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "typenum 1.16.0",
+              "target": "build_script_main"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "1.16.0"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "unicode-bidi 0.3.10": {
+      "name": "unicode-bidi",
+      "version": "0.3.10",
+      "package_url": "https://github.com/servo/unicode-bidi",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/unicode-bidi/0.3.10/download",
+          "sha256": "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "unicode_bidi",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "unicode_bidi",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "hardcoded-data",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.10"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "unicode-ident 1.0.6": {
+      "name": "unicode-ident",
+      "version": "1.0.6",
+      "package_url": "https://github.com/dtolnay/unicode-ident",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/unicode-ident/1.0.6/download",
+          "sha256": "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "unicode_ident",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "unicode_ident",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "1.0.6"
+      },
+      "license": "(MIT OR Apache-2.0) AND Unicode-DFS-2016",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT",
+        "Unicode-DFS-2016"
+      ],
+      "license_file": null
+    },
+    "unicode-normalization 0.1.22": {
+      "name": "unicode-normalization",
+      "version": "0.1.22",
+      "package_url": "https://github.com/unicode-rs/unicode-normalization",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/unicode-normalization/0.1.22/download",
+          "sha256": "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "unicode_normalization",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "unicode_normalization",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "tinyvec 1.6.0",
+              "target": "tinyvec"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.1.22"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "untrusted 0.7.1": {
+      "name": "untrusted",
+      "version": "0.7.1",
+      "package_url": "https://github.com/briansmith/untrusted",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/untrusted/0.7.1/download",
+          "sha256": "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "untrusted",
+            "crate_root": "src/untrusted.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "untrusted",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "0.7.1"
+      },
+      "license": "ISC",
+      "license_ids": [
+        "ISC"
+      ],
+      "license_file": null
+    },
+    "url 2.3.1": {
+      "name": "url",
+      "version": "2.3.1",
+      "package_url": "https://github.com/servo/rust-url",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/url/2.3.1/download",
+          "sha256": "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "url",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "url",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "form_urlencoded 1.1.0",
+              "target": "form_urlencoded"
+            },
+            {
+              "id": "idna 0.3.0",
+              "target": "idna"
+            },
+            {
+              "id": "percent-encoding 2.2.0",
+              "target": "percent_encoding"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "2.3.1"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "value-bag 1.0.0-alpha.9": {
+      "name": "value-bag",
+      "version": "1.0.0-alpha.9",
+      "package_url": "https://github.com/sval-rs/value-bag",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/value-bag/1.0.0-alpha.9/download",
+          "sha256": "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "value_bag",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "value_bag",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "value-bag 1.0.0-alpha.9",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "proc_macro_deps": {
+          "common": [
+            {
+              "id": "ctor 0.1.26",
+              "target": "ctor"
+            }
+          ],
+          "selects": {}
+        },
+        "version": "1.0.0-alpha.9"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "version_check 0.9.4",
+              "target": "version_check",
+              "alias": "rustc"
+            }
+          ],
+          "selects": {}
+        }
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "vcpkg 0.2.15": {
+      "name": "vcpkg",
+      "version": "0.2.15",
+      "package_url": "https://github.com/mcgoo/vcpkg-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/vcpkg/0.2.15/download",
+          "sha256": "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "vcpkg",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "vcpkg",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2015",
+        "version": "0.2.15"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "version_check 0.9.4": {
+      "name": "version_check",
+      "version": "0.9.4",
+      "package_url": "https://github.com/SergioBenitez/version_check",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/version_check/0.9.4/download",
+          "sha256": "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "version_check",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "version_check",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2015",
+        "version": "0.9.4"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "waker-fn 1.1.0": {
+      "name": "waker-fn",
+      "version": "1.1.0",
+      "package_url": "https://github.com/stjepang/waker-fn",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/waker-fn/1.1.0/download",
+          "sha256": "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "waker_fn",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "waker_fn",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "edition": "2018",
+        "version": "1.1.0"
+      },
+      "license": "Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "want 0.3.0": {
+      "name": "want",
+      "version": "0.3.0",
+      "package_url": "https://github.com/seanmonstar/want",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/want/0.3.0/download",
+          "sha256": "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "want",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "want",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "log 0.4.17",
+              "target": "log"
+            },
+            {
+              "id": "try-lock 0.2.4",
+              "target": "try_lock"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.0"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "wasi 0.11.0+wasi-snapshot-preview1": {
+      "name": "wasi",
+      "version": "0.11.0+wasi-snapshot-preview1",
+      "package_url": "https://github.com/bytecodealliance/wasi",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/wasi/0.11.0+wasi-snapshot-preview1/download",
+          "sha256": "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "wasi",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "wasi",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.11.0+wasi-snapshot-preview1"
+      },
+      "license": "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "wasm-bindgen 0.2.84": {
+      "name": "wasm-bindgen",
+      "version": "0.2.84",
+      "package_url": "https://github.com/rustwasm/wasm-bindgen",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/wasm-bindgen/0.2.84/download",
+          "sha256": "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "wasm_bindgen",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "wasm_bindgen",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "default",
+            "spans",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "cfg-if 1.0.0",
+              "target": "cfg_if"
+            },
+            {
+              "id": "wasm-bindgen 0.2.84",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "proc_macro_deps": {
+          "common": [
+            {
+              "id": "wasm-bindgen-macro 0.2.84",
+              "target": "wasm_bindgen_macro"
+            }
+          ],
+          "selects": {}
+        },
+        "version": "0.2.84"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "wasm-bindgen-backend 0.2.84": {
+      "name": "wasm-bindgen-backend",
+      "version": "0.2.84",
+      "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/backend",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/wasm-bindgen-backend/0.2.84/download",
+          "sha256": "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "wasm_bindgen_backend",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "wasm_bindgen_backend",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "spans"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "bumpalo 3.12.0",
+              "target": "bumpalo"
+            },
+            {
+              "id": "log 0.4.17",
+              "target": "log"
+            },
+            {
+              "id": "once_cell 1.17.1",
+              "target": "once_cell"
+            },
+            {
+              "id": "proc-macro2 1.0.51",
+              "target": "proc_macro2"
+            },
+            {
+              "id": "quote 1.0.23",
+              "target": "quote"
+            },
+            {
+              "id": "syn 1.0.109",
+              "target": "syn"
+            },
+            {
+              "id": "wasm-bindgen-shared 0.2.84",
+              "target": "wasm_bindgen_shared"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.2.84"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "wasm-bindgen-futures 0.4.34": {
+      "name": "wasm-bindgen-futures",
+      "version": "0.4.34",
+      "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/futures",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/wasm-bindgen-futures/0.4.34/download",
+          "sha256": "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "wasm_bindgen_futures",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "wasm_bindgen_futures",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "cfg-if 1.0.0",
+              "target": "cfg_if"
+            },
+            {
+              "id": "js-sys 0.3.61",
+              "target": "js_sys"
+            },
+            {
+              "id": "wasm-bindgen 0.2.84",
+              "target": "wasm_bindgen"
+            }
+          ],
+          "selects": {
+            "cfg(target_feature = \"atomics\")": [
+              {
+                "id": "web-sys 0.3.61",
+                "target": "web_sys"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "0.4.34"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "wasm-bindgen-macro 0.2.84": {
+      "name": "wasm-bindgen-macro",
+      "version": "0.2.84",
+      "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/wasm-bindgen-macro/0.2.84/download",
+          "sha256": "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
+        }
+      },
+      "targets": [
+        {
+          "ProcMacro": {
+            "crate_name": "wasm_bindgen_macro",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "wasm_bindgen_macro",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "spans"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "quote 1.0.23",
+              "target": "quote"
+            },
+            {
+              "id": "wasm-bindgen-macro-support 0.2.84",
+              "target": "wasm_bindgen_macro_support"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.2.84"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "wasm-bindgen-macro-support 0.2.84": {
+      "name": "wasm-bindgen-macro-support",
+      "version": "0.2.84",
+      "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro-support",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/wasm-bindgen-macro-support/0.2.84/download",
+          "sha256": "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "wasm_bindgen_macro_support",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "wasm_bindgen_macro_support",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "spans"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "proc-macro2 1.0.51",
+              "target": "proc_macro2"
+            },
+            {
+              "id": "quote 1.0.23",
+              "target": "quote"
+            },
+            {
+              "id": "syn 1.0.109",
+              "target": "syn"
+            },
+            {
+              "id": "wasm-bindgen-backend 0.2.84",
+              "target": "wasm_bindgen_backend"
+            },
+            {
+              "id": "wasm-bindgen-shared 0.2.84",
+              "target": "wasm_bindgen_shared"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.2.84"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "wasm-bindgen-shared 0.2.84": {
+      "name": "wasm-bindgen-shared",
+      "version": "0.2.84",
+      "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/shared",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/wasm-bindgen-shared/0.2.84/download",
+          "sha256": "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "wasm_bindgen_shared",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "wasm_bindgen_shared",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "wasm-bindgen-shared 0.2.84",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.2.84"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ],
+        "links": "wasm_bindgen"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "web-sys 0.3.61": {
+      "name": "web-sys",
+      "version": "0.3.61",
+      "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/web-sys",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/web-sys/0.3.61/download",
+          "sha256": "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "web_sys",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "web_sys",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "Blob",
+            "BlobPropertyBag",
+            "EventTarget",
+            "File",
+            "FormData",
+            "Headers",
+            "ReadableStream",
+            "Request",
+            "RequestCredentials",
+            "RequestInit",
+            "RequestMode",
+            "Response",
+            "ServiceWorkerGlobalScope",
+            "Window",
+            "WorkerGlobalScope"
+          ],
+          "selects": {
+            "wasm32-unknown-unknown": [
+              "Crypto"
+            ]
+          }
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "js-sys 0.3.61",
+              "target": "js_sys"
+            },
+            {
+              "id": "wasm-bindgen 0.2.84",
+              "target": "wasm_bindgen"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.3.61"
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "webpki 0.22.0": {
+      "name": "webpki",
+      "version": "0.22.0",
+      "package_url": "https://github.com/briansmith/webpki",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/webpki/0.22.0/download",
+          "sha256": "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "webpki",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "webpki",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "std"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "ring 0.16.20",
+              "target": "ring"
+            },
+            {
+              "id": "untrusted 0.7.1",
+              "target": "untrusted"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.22.0"
+      },
+      "license": null,
+      "license_ids": [],
+      "license_file": "LICENSE"
+    },
+    "webpki-roots 0.22.6": {
+      "name": "webpki-roots",
+      "version": "0.22.6",
+      "package_url": "https://github.com/rustls/webpki-roots",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/webpki-roots/0.22.6/download",
+          "sha256": "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "webpki_roots",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "webpki_roots",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "webpki 0.22.0",
+              "target": "webpki"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.22.6"
+      },
+      "license": "MPL-2.0",
+      "license_ids": [
+        "MPL-2.0"
+      ],
+      "license_file": null
+    },
+    "wepoll-ffi 0.1.2": {
+      "name": "wepoll-ffi",
+      "version": "0.1.2",
+      "package_url": "https://github.com/aclysma/wepoll-ffi",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/wepoll-ffi/0.1.2/download",
+          "sha256": "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "wepoll_ffi",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "wepoll_ffi",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "null-overlapped-wakeups-patch"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "wepoll-ffi 0.1.2",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.1.2"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**",
+          "vendor/**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "cc 1.0.79",
+              "target": "cc"
+            }
+          ],
+          "selects": {}
+        }
+      },
+      "license": "MIT OR Apache-2.0 OR BSD-2-Clause",
+      "license_ids": [
+        "Apache-2.0",
+        "BSD-2-Clause",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "winapi 0.3.9": {
+      "name": "winapi",
+      "version": "0.3.9",
+      "package_url": "https://github.com/retep998/winapi-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/winapi/0.3.9/download",
+          "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "winapi",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "winapi",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "handleapi",
+            "impl-debug",
+            "impl-default",
+            "libloaderapi",
+            "minwinbase",
+            "minwindef",
+            "ntsecapi",
+            "timezoneapi",
+            "wincrypt",
+            "winerror",
+            "winnt",
+            "winreg",
+            "winsock2",
+            "ws2def",
+            "ws2ipdef",
+            "ws2tcpip",
+            "wtypesbase"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [
+            {
+              "id": "winapi 0.3.9",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {
+            "i686-pc-windows-gnu": [
+              {
+                "id": "winapi-i686-pc-windows-gnu 0.4.0",
+                "target": "winapi_i686_pc_windows_gnu"
+              }
+            ],
+            "x86_64-pc-windows-gnu": [
+              {
+                "id": "winapi-x86_64-pc-windows-gnu 0.4.0",
+                "target": "winapi_x86_64_pc_windows_gnu"
+              }
+            ]
+          }
+        },
+        "edition": "2015",
+        "version": "0.3.9"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "winapi-i686-pc-windows-gnu 0.4.0": {
+      "name": "winapi-i686-pc-windows-gnu",
+      "version": "0.4.0",
+      "package_url": "https://github.com/retep998/winapi-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download",
+          "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "winapi_i686_pc_windows_gnu",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "winapi_i686_pc_windows_gnu",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "winapi-i686-pc-windows-gnu 0.4.0",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2015",
+        "version": "0.4.0"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "winapi-x86_64-pc-windows-gnu 0.4.0": {
+      "name": "winapi-x86_64-pc-windows-gnu",
+      "version": "0.4.0",
+      "package_url": "https://github.com/retep998/winapi-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download",
+          "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "winapi_x86_64_pc_windows_gnu",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "winapi_x86_64_pc_windows_gnu",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "winapi-x86_64-pc-windows-gnu 0.4.0",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2015",
+        "version": "0.4.0"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT/Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "windows-sys 0.42.0": {
+      "name": "windows-sys",
+      "version": "0.42.0",
+      "package_url": "https://github.com/microsoft/windows-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/windows-sys/0.42.0/download",
+          "sha256": "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "windows_sys",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "windows_sys",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "Win32",
+            "Win32_Foundation",
+            "Win32_Networking",
+            "Win32_Networking_WinSock",
+            "Win32_Security",
+            "Win32_Security_Authentication",
+            "Win32_Security_Authentication_Identity",
+            "Win32_Security_Credentials",
+            "Win32_Security_Cryptography",
+            "Win32_System",
+            "Win32_System_IO",
+            "Win32_System_Memory",
+            "Win32_System_Threading",
+            "Win32_System_WindowsProgramming",
+            "default"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [],
+          "selects": {
+            "aarch64-pc-windows-gnullvm": [
+              {
+                "id": "windows_aarch64_gnullvm 0.42.1",
+                "target": "windows_aarch64_gnullvm"
+              }
+            ],
+            "aarch64-pc-windows-msvc": [
+              {
+                "id": "windows_aarch64_msvc 0.42.1",
+                "target": "windows_aarch64_msvc"
+              }
+            ],
+            "aarch64-uwp-windows-msvc": [
+              {
+                "id": "windows_aarch64_msvc 0.42.1",
+                "target": "windows_aarch64_msvc"
+              }
+            ],
+            "i686-pc-windows-gnu": [
+              {
+                "id": "windows_i686_gnu 0.42.1",
+                "target": "windows_i686_gnu"
+              }
+            ],
+            "i686-pc-windows-msvc": [
+              {
+                "id": "windows_i686_msvc 0.42.1",
+                "target": "windows_i686_msvc"
+              }
+            ],
+            "i686-uwp-windows-gnu": [
+              {
+                "id": "windows_i686_gnu 0.42.1",
+                "target": "windows_i686_gnu"
+              }
+            ],
+            "i686-uwp-windows-msvc": [
+              {
+                "id": "windows_i686_msvc 0.42.1",
+                "target": "windows_i686_msvc"
+              }
+            ],
+            "x86_64-pc-windows-gnu": [
+              {
+                "id": "windows_x86_64_gnu 0.42.1",
+                "target": "windows_x86_64_gnu"
+              }
+            ],
+            "x86_64-pc-windows-gnullvm": [
+              {
+                "id": "windows_x86_64_gnullvm 0.42.1",
+                "target": "windows_x86_64_gnullvm"
+              }
+            ],
+            "x86_64-pc-windows-msvc": [
+              {
+                "id": "windows_x86_64_msvc 0.42.1",
+                "target": "windows_x86_64_msvc"
+              }
+            ],
+            "x86_64-uwp-windows-gnu": [
+              {
+                "id": "windows_x86_64_gnu 0.42.1",
+                "target": "windows_x86_64_gnu"
+              }
+            ],
+            "x86_64-uwp-windows-msvc": [
+              {
+                "id": "windows_x86_64_msvc 0.42.1",
+                "target": "windows_x86_64_msvc"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "0.42.0"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "windows-sys 0.45.0": {
+      "name": "windows-sys",
+      "version": "0.45.0",
+      "package_url": "https://github.com/microsoft/windows-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/windows-sys/0.45.0/download",
+          "sha256": "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "windows_sys",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "windows_sys",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "Win32",
+            "Win32_Foundation",
+            "Win32_Networking",
+            "Win32_Networking_WinSock",
+            "Win32_Security",
+            "Win32_Storage",
+            "Win32_Storage_FileSystem",
+            "Win32_System",
+            "Win32_System_Console",
+            "Win32_System_IO",
+            "Win32_System_Pipes",
+            "Win32_System_SystemServices",
+            "Win32_System_WindowsProgramming",
+            "default"
+          ],
+          "selects": {}
+        },
+        "deps": {
+          "common": [],
+          "selects": {
+            "cfg(not(windows_raw_dylib))": [
+              {
+                "id": "windows-targets 0.42.1",
+                "target": "windows_targets"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "0.45.0"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "windows-targets 0.42.1": {
+      "name": "windows-targets",
+      "version": "0.42.1",
+      "package_url": "https://github.com/microsoft/windows-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/windows-targets/0.42.1/download",
+          "sha256": "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "windows_targets",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "windows_targets",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [],
+          "selects": {
+            "aarch64-pc-windows-gnullvm": [
+              {
+                "id": "windows_aarch64_gnullvm 0.42.1",
+                "target": "windows_aarch64_gnullvm"
+              }
+            ],
+            "aarch64-pc-windows-msvc": [
+              {
+                "id": "windows_aarch64_msvc 0.42.1",
+                "target": "windows_aarch64_msvc"
+              }
+            ],
+            "aarch64-uwp-windows-msvc": [
+              {
+                "id": "windows_aarch64_msvc 0.42.1",
+                "target": "windows_aarch64_msvc"
+              }
+            ],
+            "i686-pc-windows-gnu": [
+              {
+                "id": "windows_i686_gnu 0.42.1",
+                "target": "windows_i686_gnu"
+              }
+            ],
+            "i686-pc-windows-msvc": [
+              {
+                "id": "windows_i686_msvc 0.42.1",
+                "target": "windows_i686_msvc"
+              }
+            ],
+            "i686-uwp-windows-gnu": [
+              {
+                "id": "windows_i686_gnu 0.42.1",
+                "target": "windows_i686_gnu"
+              }
+            ],
+            "i686-uwp-windows-msvc": [
+              {
+                "id": "windows_i686_msvc 0.42.1",
+                "target": "windows_i686_msvc"
+              }
+            ],
+            "x86_64-pc-windows-gnu": [
+              {
+                "id": "windows_x86_64_gnu 0.42.1",
+                "target": "windows_x86_64_gnu"
+              }
+            ],
+            "x86_64-pc-windows-gnullvm": [
+              {
+                "id": "windows_x86_64_gnullvm 0.42.1",
+                "target": "windows_x86_64_gnullvm"
+              }
+            ],
+            "x86_64-pc-windows-msvc": [
+              {
+                "id": "windows_x86_64_msvc 0.42.1",
+                "target": "windows_x86_64_msvc"
+              }
+            ],
+            "x86_64-uwp-windows-gnu": [
+              {
+                "id": "windows_x86_64_gnu 0.42.1",
+                "target": "windows_x86_64_gnu"
+              }
+            ],
+            "x86_64-uwp-windows-msvc": [
+              {
+                "id": "windows_x86_64_msvc 0.42.1",
+                "target": "windows_x86_64_msvc"
+              }
+            ]
+          }
+        },
+        "edition": "2018",
+        "version": "0.42.1"
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "windows_aarch64_gnullvm 0.42.1": {
+      "name": "windows_aarch64_gnullvm",
+      "version": "0.42.1",
+      "package_url": "https://github.com/microsoft/windows-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/windows_aarch64_gnullvm/0.42.1/download",
+          "sha256": "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "windows_aarch64_gnullvm",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "windows_aarch64_gnullvm",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "windows_aarch64_gnullvm 0.42.1",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.42.1"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "windows_aarch64_msvc 0.42.1": {
+      "name": "windows_aarch64_msvc",
+      "version": "0.42.1",
+      "package_url": "https://github.com/microsoft/windows-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/windows_aarch64_msvc/0.42.1/download",
+          "sha256": "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "windows_aarch64_msvc",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "windows_aarch64_msvc",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "windows_aarch64_msvc 0.42.1",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.42.1"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "windows_i686_gnu 0.42.1": {
+      "name": "windows_i686_gnu",
+      "version": "0.42.1",
+      "package_url": "https://github.com/microsoft/windows-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/windows_i686_gnu/0.42.1/download",
+          "sha256": "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "windows_i686_gnu",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "windows_i686_gnu",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "windows_i686_gnu 0.42.1",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.42.1"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "windows_i686_msvc 0.42.1": {
+      "name": "windows_i686_msvc",
+      "version": "0.42.1",
+      "package_url": "https://github.com/microsoft/windows-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/windows_i686_msvc/0.42.1/download",
+          "sha256": "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "windows_i686_msvc",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "windows_i686_msvc",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "windows_i686_msvc 0.42.1",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.42.1"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "windows_x86_64_gnu 0.42.1": {
+      "name": "windows_x86_64_gnu",
+      "version": "0.42.1",
+      "package_url": "https://github.com/microsoft/windows-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/windows_x86_64_gnu/0.42.1/download",
+          "sha256": "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "windows_x86_64_gnu",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "windows_x86_64_gnu",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "windows_x86_64_gnu 0.42.1",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.42.1"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "windows_x86_64_gnullvm 0.42.1": {
+      "name": "windows_x86_64_gnullvm",
+      "version": "0.42.1",
+      "package_url": "https://github.com/microsoft/windows-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/windows_x86_64_gnullvm/0.42.1/download",
+          "sha256": "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "windows_x86_64_gnullvm",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "windows_x86_64_gnullvm",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "windows_x86_64_gnullvm 0.42.1",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.42.1"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "windows_x86_64_msvc 0.42.1": {
+      "name": "windows_x86_64_msvc",
+      "version": "0.42.1",
+      "package_url": "https://github.com/microsoft/windows-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/windows_x86_64_msvc/0.42.1/download",
+          "sha256": "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "windows_x86_64_msvc",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "windows_x86_64_msvc",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "windows_x86_64_msvc 0.42.1",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2018",
+        "version": "0.42.1"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT OR Apache-2.0",
+      "license_ids": [
+        "Apache-2.0",
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "winnow 0.3.3": {
+      "name": "winnow",
+      "version": "0.3.3",
+      "package_url": "https://github.com/winnow-rs/winnow",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/winnow/0.3.3/download",
+          "sha256": "faf09497b8f8b5ac5d3bb4d05c0a99be20f26fd3d5f2db7b0716e946d5103658"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "winnow",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "winnow",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "crate_features": {
+          "common": [
+            "alloc",
+            "default",
+            "std"
+          ],
+          "selects": {}
+        },
+        "edition": "2021",
+        "version": "0.3.3"
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    },
+    "winreg 0.10.1": {
+      "name": "winreg",
+      "version": "0.10.1",
+      "package_url": "https://github.com/gentoo90/winreg-rs",
+      "repository": {
+        "Http": {
+          "url": "https://crates.io/api/v1/crates/winreg/0.10.1/download",
+          "sha256": "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
+        }
+      },
+      "targets": [
+        {
+          "Library": {
+            "crate_name": "winreg",
+            "crate_root": "src/lib.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        },
+        {
+          "BuildScript": {
+            "crate_name": "build_script_build",
+            "crate_root": "build.rs",
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
+          }
+        }
+      ],
+      "library_target_name": "winreg",
+      "common_attrs": {
+        "compile_data_glob": [
+          "**"
+        ],
+        "deps": {
+          "common": [
+            {
+              "id": "winapi 0.3.9",
+              "target": "winapi"
+            },
+            {
+              "id": "winreg 0.10.1",
+              "target": "build_script_build"
+            }
+          ],
+          "selects": {}
+        },
+        "edition": "2015",
+        "version": "0.10.1"
+      },
+      "build_script_attrs": {
+        "data_glob": [
+          "**"
+        ]
+      },
+      "license": "MIT",
+      "license_ids": [
+        "MIT"
+      ],
+      "license_file": null
+    }
+  },
+  "binary_crates": [],
+  "workspace_members": {
+    "pkg_a 0.1.0": "multi_package/pkg_a",
+    "pkg_b 0.1.0": "multi_package/sub_pkgs/pkg_b",
+    "pkg_c 0.1.0": "multi_package/sub_pkgs/pkg_c"
+  },
+  "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-gnullvm": [],
+    "aarch64-pc-windows-msvc": [
+      "aarch64-pc-windows-msvc"
+    ],
+    "aarch64-unknown-linux-gnu": [
+      "aarch64-unknown-linux-gnu"
+    ],
+    "aarch64-unknown-nixos-gnu": [
+      "aarch64-unknown-nixos-gnu"
+    ],
+    "aarch64-unknown-nto-qnx710": [
+      "aarch64-unknown-nto-qnx710"
+    ],
+    "aarch64-uwp-windows-msvc": [],
+    "arm-unknown-linux-gnueabi": [
+      "arm-unknown-linux-gnueabi"
+    ],
+    "armv7-linux-androideabi": [
+      "armv7-linux-androideabi"
+    ],
+    "armv7-unknown-linux-gnueabi": [
+      "armv7-unknown-linux-gnueabi"
+    ],
+    "cfg(all(any(target_arch = \"x86_64\", target_arch = \"aarch64\"), target_os = \"hermit\"))": [],
+    "cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))": [
+      "wasm32-unknown-unknown"
+    ],
+    "cfg(all(target_arch = \"wasm32\", target_vendor = \"unknown\", target_os = \"unknown\", target_env = \"\"))": [
+      "wasm32-unknown-unknown"
+    ],
+    "cfg(any(target_arch = \"x86\", target_arch = \"x86_64\", all(any(target_arch = \"aarch64\", target_arch = \"arm\"), any(target_os = \"android\", target_os = \"fuchsia\", target_os = \"linux\"))))": [
+      "aarch64-fuchsia",
+      "aarch64-linux-android",
+      "aarch64-unknown-linux-gnu",
+      "aarch64-unknown-nixos-gnu",
+      "arm-unknown-linux-gnueabi",
+      "armv7-linux-androideabi",
+      "armv7-unknown-linux-gnueabi",
+      "i686-apple-darwin",
+      "i686-linux-android",
+      "i686-pc-windows-msvc",
+      "i686-unknown-freebsd",
+      "i686-unknown-linux-gnu",
+      "x86_64-apple-darwin",
+      "x86_64-apple-ios",
+      "x86_64-fuchsia",
+      "x86_64-linux-android",
+      "x86_64-pc-windows-msvc",
+      "x86_64-unknown-freebsd",
+      "x86_64-unknown-linux-gnu",
+      "x86_64-unknown-nixos-gnu",
+      "x86_64-unknown-none"
+    ],
+    "cfg(any(target_os = \"android\", target_os = \"linux\"))": [
+      "aarch64-linux-android",
+      "aarch64-unknown-linux-gnu",
+      "aarch64-unknown-nixos-gnu",
+      "arm-unknown-linux-gnueabi",
+      "armv7-linux-androideabi",
+      "armv7-unknown-linux-gnueabi",
+      "i686-linux-android",
+      "i686-unknown-linux-gnu",
+      "powerpc-unknown-linux-gnu",
+      "s390x-unknown-linux-gnu",
+      "x86_64-linux-android",
+      "x86_64-unknown-linux-gnu",
+      "x86_64-unknown-nixos-gnu"
+    ],
+    "cfg(any(target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"illumos\", target_os = \"netbsd\", target_os = \"openbsd\", target_os = \"solaris\"))": [
+      "i686-unknown-freebsd",
+      "x86_64-unknown-freebsd"
+    ],
+    "cfg(any(unix, target_os = \"fuchsia\", target_os = \"vxworks\"))": [
+      "aarch64-apple-darwin",
+      "aarch64-apple-ios",
+      "aarch64-apple-ios-sim",
+      "aarch64-fuchsia",
+      "aarch64-linux-android",
+      "aarch64-unknown-linux-gnu",
+      "aarch64-unknown-nixos-gnu",
+      "aarch64-unknown-nto-qnx710",
+      "arm-unknown-linux-gnueabi",
+      "armv7-linux-androideabi",
+      "armv7-unknown-linux-gnueabi",
+      "i686-apple-darwin",
+      "i686-linux-android",
+      "i686-unknown-freebsd",
+      "i686-unknown-linux-gnu",
+      "powerpc-unknown-linux-gnu",
+      "s390x-unknown-linux-gnu",
+      "x86_64-apple-darwin",
+      "x86_64-apple-ios",
+      "x86_64-fuchsia",
+      "x86_64-linux-android",
+      "x86_64-unknown-freebsd",
+      "x86_64-unknown-linux-gnu",
+      "x86_64-unknown-nixos-gnu"
+    ],
+    "cfg(docsrs)": [],
+    "cfg(not(any(target_arch = \"wasm32\", target_arch = \"wasm64\")))": [
+      "aarch64-apple-darwin",
+      "aarch64-apple-ios",
+      "aarch64-apple-ios-sim",
+      "aarch64-fuchsia",
+      "aarch64-linux-android",
+      "aarch64-pc-windows-msvc",
+      "aarch64-unknown-linux-gnu",
+      "aarch64-unknown-nixos-gnu",
+      "aarch64-unknown-nto-qnx710",
+      "arm-unknown-linux-gnueabi",
+      "armv7-linux-androideabi",
+      "armv7-unknown-linux-gnueabi",
+      "i686-apple-darwin",
+      "i686-linux-android",
+      "i686-pc-windows-msvc",
+      "i686-unknown-freebsd",
+      "i686-unknown-linux-gnu",
+      "powerpc-unknown-linux-gnu",
+      "riscv32imc-unknown-none-elf",
+      "riscv64gc-unknown-none-elf",
+      "s390x-unknown-linux-gnu",
+      "thumbv7em-none-eabi",
+      "thumbv8m.main-none-eabi",
+      "x86_64-apple-darwin",
+      "x86_64-apple-ios",
+      "x86_64-fuchsia",
+      "x86_64-linux-android",
+      "x86_64-pc-windows-msvc",
+      "x86_64-unknown-freebsd",
+      "x86_64-unknown-linux-gnu",
+      "x86_64-unknown-nixos-gnu",
+      "x86_64-unknown-none"
+    ],
+    "cfg(not(target_arch = \"wasm32\"))": [
+      "aarch64-apple-darwin",
+      "aarch64-apple-ios",
+      "aarch64-apple-ios-sim",
+      "aarch64-fuchsia",
+      "aarch64-linux-android",
+      "aarch64-pc-windows-msvc",
+      "aarch64-unknown-linux-gnu",
+      "aarch64-unknown-nixos-gnu",
+      "aarch64-unknown-nto-qnx710",
+      "arm-unknown-linux-gnueabi",
+      "armv7-linux-androideabi",
+      "armv7-unknown-linux-gnueabi",
+      "i686-apple-darwin",
+      "i686-linux-android",
+      "i686-pc-windows-msvc",
+      "i686-unknown-freebsd",
+      "i686-unknown-linux-gnu",
+      "powerpc-unknown-linux-gnu",
+      "riscv32imc-unknown-none-elf",
+      "riscv64gc-unknown-none-elf",
+      "s390x-unknown-linux-gnu",
+      "thumbv7em-none-eabi",
+      "thumbv8m.main-none-eabi",
+      "x86_64-apple-darwin",
+      "x86_64-apple-ios",
+      "x86_64-fuchsia",
+      "x86_64-linux-android",
+      "x86_64-pc-windows-msvc",
+      "x86_64-unknown-freebsd",
+      "x86_64-unknown-linux-gnu",
+      "x86_64-unknown-nixos-gnu",
+      "x86_64-unknown-none"
+    ],
+    "cfg(not(target_os = \"unknown\"))": [
+      "aarch64-apple-darwin",
+      "aarch64-apple-ios",
+      "aarch64-apple-ios-sim",
+      "aarch64-fuchsia",
+      "aarch64-linux-android",
+      "aarch64-pc-windows-msvc",
+      "aarch64-unknown-linux-gnu",
+      "aarch64-unknown-nixos-gnu",
+      "aarch64-unknown-nto-qnx710",
+      "arm-unknown-linux-gnueabi",
+      "armv7-linux-androideabi",
+      "armv7-unknown-linux-gnueabi",
+      "i686-apple-darwin",
+      "i686-linux-android",
+      "i686-pc-windows-msvc",
+      "i686-unknown-freebsd",
+      "i686-unknown-linux-gnu",
+      "powerpc-unknown-linux-gnu",
+      "riscv32imc-unknown-none-elf",
+      "riscv64gc-unknown-none-elf",
+      "s390x-unknown-linux-gnu",
+      "thumbv7em-none-eabi",
+      "thumbv8m.main-none-eabi",
+      "wasm32-wasi",
+      "x86_64-apple-darwin",
+      "x86_64-apple-ios",
+      "x86_64-fuchsia",
+      "x86_64-linux-android",
+      "x86_64-pc-windows-msvc",
+      "x86_64-unknown-freebsd",
+      "x86_64-unknown-linux-gnu",
+      "x86_64-unknown-nixos-gnu",
+      "x86_64-unknown-none"
+    ],
+    "cfg(not(windows))": [
+      "aarch64-apple-darwin",
+      "aarch64-apple-ios",
+      "aarch64-apple-ios-sim",
+      "aarch64-fuchsia",
+      "aarch64-linux-android",
+      "aarch64-unknown-linux-gnu",
+      "aarch64-unknown-nixos-gnu",
+      "aarch64-unknown-nto-qnx710",
+      "arm-unknown-linux-gnueabi",
+      "armv7-linux-androideabi",
+      "armv7-unknown-linux-gnueabi",
+      "i686-apple-darwin",
+      "i686-linux-android",
+      "i686-unknown-freebsd",
+      "i686-unknown-linux-gnu",
+      "powerpc-unknown-linux-gnu",
+      "riscv32imc-unknown-none-elf",
+      "riscv64gc-unknown-none-elf",
+      "s390x-unknown-linux-gnu",
+      "thumbv7em-none-eabi",
+      "thumbv8m.main-none-eabi",
+      "wasm32-unknown-unknown",
+      "wasm32-wasi",
+      "x86_64-apple-darwin",
+      "x86_64-apple-ios",
+      "x86_64-fuchsia",
+      "x86_64-linux-android",
+      "x86_64-unknown-freebsd",
+      "x86_64-unknown-linux-gnu",
+      "x86_64-unknown-nixos-gnu",
+      "x86_64-unknown-none"
+    ],
+    "cfg(not(windows_raw_dylib))": [
+      "aarch64-apple-darwin",
+      "aarch64-apple-ios",
+      "aarch64-apple-ios-sim",
+      "aarch64-fuchsia",
+      "aarch64-linux-android",
+      "aarch64-pc-windows-msvc",
+      "aarch64-unknown-linux-gnu",
+      "aarch64-unknown-nixos-gnu",
+      "aarch64-unknown-nto-qnx710",
+      "arm-unknown-linux-gnueabi",
+      "armv7-linux-androideabi",
+      "armv7-unknown-linux-gnueabi",
+      "i686-apple-darwin",
+      "i686-linux-android",
+      "i686-pc-windows-msvc",
+      "i686-unknown-freebsd",
+      "i686-unknown-linux-gnu",
+      "powerpc-unknown-linux-gnu",
+      "riscv32imc-unknown-none-elf",
+      "riscv64gc-unknown-none-elf",
+      "s390x-unknown-linux-gnu",
+      "thumbv7em-none-eabi",
+      "thumbv8m.main-none-eabi",
+      "wasm32-unknown-unknown",
+      "wasm32-wasi",
+      "x86_64-apple-darwin",
+      "x86_64-apple-ios",
+      "x86_64-fuchsia",
+      "x86_64-linux-android",
+      "x86_64-pc-windows-msvc",
+      "x86_64-unknown-freebsd",
+      "x86_64-unknown-linux-gnu",
+      "x86_64-unknown-nixos-gnu",
+      "x86_64-unknown-none"
+    ],
+    "cfg(target_arch = \"wasm32\")": [
+      "wasm32-unknown-unknown",
+      "wasm32-wasi"
+    ],
+    "cfg(target_env = \"msvc\")": [
+      "aarch64-pc-windows-msvc",
+      "i686-pc-windows-msvc",
+      "x86_64-pc-windows-msvc"
+    ],
+    "cfg(target_feature = \"atomics\")": [],
+    "cfg(target_os = \"wasi\")": [
+      "wasm32-wasi"
+    ],
+    "cfg(target_os = \"windows\")": [
+      "aarch64-pc-windows-msvc",
+      "i686-pc-windows-msvc",
+      "x86_64-pc-windows-msvc"
+    ],
+    "cfg(unix)": [
+      "aarch64-apple-darwin",
+      "aarch64-apple-ios",
+      "aarch64-apple-ios-sim",
+      "aarch64-fuchsia",
+      "aarch64-linux-android",
+      "aarch64-unknown-linux-gnu",
+      "aarch64-unknown-nixos-gnu",
+      "aarch64-unknown-nto-qnx710",
+      "arm-unknown-linux-gnueabi",
+      "armv7-linux-androideabi",
+      "armv7-unknown-linux-gnueabi",
+      "i686-apple-darwin",
+      "i686-linux-android",
+      "i686-unknown-freebsd",
+      "i686-unknown-linux-gnu",
+      "powerpc-unknown-linux-gnu",
+      "s390x-unknown-linux-gnu",
+      "x86_64-apple-darwin",
+      "x86_64-apple-ios",
+      "x86_64-fuchsia",
+      "x86_64-linux-android",
+      "x86_64-unknown-freebsd",
+      "x86_64-unknown-linux-gnu",
+      "x86_64-unknown-nixos-gnu"
+    ],
+    "cfg(windows)": [
+      "aarch64-pc-windows-msvc",
+      "i686-pc-windows-msvc",
+      "x86_64-pc-windows-msvc"
+    ],
+    "i686-apple-darwin": [
+      "i686-apple-darwin"
+    ],
+    "i686-linux-android": [
+      "i686-linux-android"
+    ],
+    "i686-pc-windows-gnu": [],
+    "i686-pc-windows-msvc": [
+      "i686-pc-windows-msvc"
+    ],
+    "i686-unknown-freebsd": [
+      "i686-unknown-freebsd"
+    ],
+    "i686-unknown-linux-gnu": [
+      "i686-unknown-linux-gnu"
+    ],
+    "i686-uwp-windows-gnu": [],
+    "i686-uwp-windows-msvc": [],
+    "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-gnu": [],
+    "x86_64-pc-windows-gnullvm": [],
+    "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-nixos-gnu": [
+      "x86_64-unknown-nixos-gnu"
+    ],
+    "x86_64-unknown-none": [
+      "x86_64-unknown-none"
+    ],
+    "x86_64-uwp-windows-gnu": [],
+    "x86_64-uwp-windows-msvc": []
+  },
+  "direct_deps": [
+    "anyhow 1.0.69",
+    "md-5 0.9.1",
+    "reqwest 0.11.14",
+    "rustls 0.20.8",
+    "rustls-pemfile 1.0.2"
+  ],
+  "direct_dev_deps": [
+    "hex-literal 0.3.4",
+    "httpmock 0.6.7"
+  ]
+}
diff --git a/crate_universe/test_data/metadata/git_repos/Cargo.lock b/crate_universe/test_data/metadata/git_repos/Cargo.lock
index 58405f4..3ac58d3 100644
--- a/crate_universe/test_data/metadata/git_repos/Cargo.lock
+++ b/crate_universe/test_data/metadata/git_repos/Cargo.lock
@@ -59,7 +59,7 @@
 [[package]]
 name = "tracing"
 version = "0.2.0"
-source = "git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0"
+source = "git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0"
 dependencies = [
  "cfg-if",
  "pin-project-lite",
@@ -70,7 +70,7 @@
 [[package]]
 name = "tracing-attributes"
 version = "0.2.0"
-source = "git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0"
+source = "git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -80,7 +80,7 @@
 [[package]]
 name = "tracing-core"
 version = "0.2.0"
-source = "git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0"
+source = "git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0"
 dependencies = [
  "lazy_static",
 ]
diff --git a/crate_universe/test_data/metadata/git_repos/Cargo.toml b/crate_universe/test_data/metadata/git_repos/Cargo.toml
index 6516f98..ecfb389 100644
--- a/crate_universe/test_data/metadata/git_repos/Cargo.toml
+++ b/crate_universe/test_data/metadata/git_repos/Cargo.toml
@@ -9,4 +9,5 @@
 path = "lib.rs"
 
 [dependencies]
-tracing = { git = "https://github.com/tokio-rs/tracing.git", rev = "1e09e50e8d15580b5929adbade9c782a6833e4a0" }
+tracing = { git = "https://github.com/tokio-rs/tracing.git", branch = "master" }
+
diff --git a/crate_universe/test_data/metadata/git_repos/metadata.json b/crate_universe/test_data/metadata/git_repos/metadata.json
index 725191f..db4f006 100644
--- a/crate_universe/test_data/metadata/git_repos/metadata.json
+++ b/crate_universe/test_data/metadata/git_repos/metadata.json
@@ -107,7 +107,7 @@
                     "registry": null,
                     "rename": null,
                     "req": "*",
-                    "source": "git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0",
+                    "source": "git+https://github.com/tokio-rs/tracing.git?branch=master",
                     "target": null,
                     "uses_default_features": true
                 }
@@ -1527,7 +1527,7 @@
                     "registry": null,
                     "rename": null,
                     "req": "^0.2",
-                    "source": "git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0",
+                    "source": "git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0",
                     "target": null,
                     "uses_default_features": true
                 },
@@ -1539,7 +1539,7 @@
                     "registry": null,
                     "rename": null,
                     "req": "^0.2",
-                    "source": "git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0",
+                    "source": "git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0",
                     "target": null,
                     "uses_default_features": false
                 },
@@ -1647,7 +1647,7 @@
                 ]
             },
             "homepage": "https://tokio.rs",
-            "id": "tracing 0.2.0 (git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0)",
+            "id": "tracing 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)",
             "keywords": [
                 "logging",
                 "tracing",
@@ -1674,7 +1674,7 @@
             "readme": "README.md",
             "repository": "https://github.com/tokio-rs/tracing",
             "rust_version": null,
-            "source": "git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0",
+            "source": "git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0",
             "targets": [
                 {
                     "crate_types": [
@@ -1979,7 +1979,7 @@
                     "registry": null,
                     "rename": null,
                     "req": "^0.2",
-                    "source": "git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0",
+                    "source": "git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0",
                     "target": null,
                     "uses_default_features": true
                 },
@@ -1991,7 +1991,7 @@
                     "registry": null,
                     "rename": null,
                     "req": "^0.2",
-                    "source": "git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0",
+                    "source": "git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0",
                     "target": null,
                     "uses_default_features": true
                 }
@@ -2001,7 +2001,7 @@
             "edition": "2018",
             "features": {},
             "homepage": "https://tokio.rs",
-            "id": "tracing-attributes 0.2.0 (git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0)",
+            "id": "tracing-attributes 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)",
             "keywords": [
                 "logging",
                 "tracing",
@@ -2019,7 +2019,7 @@
             "readme": "README.md",
             "repository": "https://github.com/tokio-rs/tracing",
             "rust_version": null,
-            "source": "git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0",
+            "source": "git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0",
             "targets": [
                 {
                     "crate_types": [
@@ -2205,7 +2205,7 @@
                 ]
             },
             "homepage": "https://tokio.rs",
-            "id": "tracing-core 0.2.0 (git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0)",
+            "id": "tracing-core 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)",
             "keywords": [
                 "logging",
                 "tracing",
@@ -2231,7 +2231,7 @@
             "readme": "README.md",
             "repository": "https://github.com/tokio-rs/tracing",
             "rust_version": null,
-            "source": "git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0",
+            "source": "git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0",
             "targets": [
                 {
                     "crate_types": [
@@ -2397,7 +2397,7 @@
             },
             {
                 "dependencies": [
-                    "tracing 0.2.0 (git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
+                    "tracing 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
                 ],
                 "deps": [
                     {
@@ -2408,7 +2408,7 @@
                             }
                         ],
                         "name": "tracing",
-                        "pkg": "tracing 0.2.0 (git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
+                        "pkg": "tracing 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
                     }
                 ],
                 "features": [],
@@ -2525,8 +2525,8 @@
                 "dependencies": [
                     "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
                     "pin-project-lite 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-                    "tracing-attributes 0.2.0 (git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0)",
-                    "tracing-core 0.2.0 (git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
+                    "tracing-attributes 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)",
+                    "tracing-core 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
                 ],
                 "deps": [
                     {
@@ -2557,7 +2557,7 @@
                             }
                         ],
                         "name": "tracing_attributes",
-                        "pkg": "tracing-attributes 0.2.0 (git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
+                        "pkg": "tracing-attributes 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
                     },
                     {
                         "dep_kinds": [
@@ -2567,7 +2567,7 @@
                             }
                         ],
                         "name": "tracing_core",
-                        "pkg": "tracing-core 0.2.0 (git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
+                        "pkg": "tracing-core 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
                     }
                 ],
                 "features": [
@@ -2577,7 +2577,7 @@
                     "std",
                     "tracing-attributes"
                 ],
-                "id": "tracing 0.2.0 (git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
+                "id": "tracing 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
             },
             {
                 "dependencies": [
@@ -2618,7 +2618,7 @@
                     }
                 ],
                 "features": [],
-                "id": "tracing-attributes 0.2.0 (git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
+                "id": "tracing-attributes 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
             },
             {
                 "dependencies": [
@@ -2641,7 +2641,7 @@
                     "lazy_static",
                     "std"
                 ],
-                "id": "tracing-core 0.2.0 (git+https://github.com/tokio-rs/tracing.git?rev=1e09e50e8d15580b5929adbade9c782a6833e4a0#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
+                "id": "tracing-core 0.2.0 (git+https://github.com/tokio-rs/tracing.git?branch=master#1e09e50e8d15580b5929adbade9c782a6833e4a0)"
             },
             {
                 "dependencies": [],
diff --git a/crate_universe/test_data/test_data_passing_crate/src/lib.rs b/crate_universe/test_data/test_data_passing_crate/src/lib.rs
index fa2a261..f2a5f81 100644
--- a/crate_universe/test_data/test_data_passing_crate/src/lib.rs
+++ b/crate_universe/test_data/test_data_passing_crate/src/lib.rs
@@ -1,7 +1,7 @@
-pub const fn get_opt_level() -> &'static str {
+pub(crate) const fn get_opt_level() -> &'static str {
     env!("BUILD_SCRIPT_OPT_LEVEL")
 }
 
-pub const fn get_out_dir() -> &'static str {
+pub(crate) const fn get_out_dir() -> &'static str {
     env!("BUILD_SCRIPT_OUT_DIR")
 }
diff --git a/crate_universe/tools/BUILD.bazel b/crate_universe/tools/BUILD.bazel
index 1677d9e..cc897fb 100644
--- a/crate_universe/tools/BUILD.bazel
+++ b/crate_universe/tools/BUILD.bazel
@@ -5,3 +5,8 @@
     ],
     visibility = ["//crate_universe:__subpackages__"],
 )
+
+sh_binary(
+    name = "vendor",
+    srcs = ["vendor.sh"],
+)
diff --git a/crate_universe/tools/cross_installer/src/main.rs b/crate_universe/tools/cross_installer/src/main.rs
index 24d9531..4fef601 100644
--- a/crate_universe/tools/cross_installer/src/main.rs
+++ b/crate_universe/tools/cross_installer/src/main.rs
@@ -11,11 +11,11 @@
     /// The path to an artifacts directory expecting to contain directories
     /// named after platform tripes with binaries inside.
     #[clap(long)]
-    pub output: PathBuf,
+    pub(crate) output: PathBuf,
 
     /// A url prefix where the artifacts can be found
     #[clap(long)]
-    pub target: String,
+    pub(crate) target: String,
 }
 
 /// This function is required until an upstream PR lands
diff --git a/crate_universe/tools/urls_generator/src/main.rs b/crate_universe/tools/urls_generator/src/main.rs
index a6f04a3..f72a3dd 100644
--- a/crate_universe/tools/urls_generator/src/main.rs
+++ b/crate_universe/tools/urls_generator/src/main.rs
@@ -15,21 +15,21 @@
     /// The path to an artifacts directory expecting to contain directories
     /// named after platform tripes with binaries inside.
     #[clap(long)]
-    pub artifacts_dir: PathBuf,
+    pub(crate) artifacts_dir: PathBuf,
 
     /// A url prefix where the artifacts can be found
     #[clap(long)]
-    pub url_prefix: String,
+    pub(crate) url_prefix: String,
 
     /// The path to a buildifier binary. If set, it will be ran on the module
     #[clap(long)]
-    pub buildifier: Option<PathBuf>,
+    pub(crate) buildifier: Option<PathBuf>,
 }
 
 struct Artifact {
-    pub url: String,
-    pub triple: String,
-    pub sha256: String,
+    pub(crate) url: String,
+    pub(crate) triple: String,
+    pub(crate) sha256: String,
 }
 
 fn calculate_sha256(file_path: &Path) -> String {
diff --git a/crate_universe/tools/vendor.sh b/crate_universe/tools/vendor.sh
new file mode 100755
index 0000000..8fe934f
--- /dev/null
+++ b/crate_universe/tools/vendor.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+# A script to re-vendor all vendors crates in this repository.
+# This should be ran whenever any crate rendering changes.
+
+vendor_workspace() {
+    workspace="$1"
+    echo "Vendoring all targets in workspace $workspace"
+    pushd $workspace >/dev/null
+    targets="$(bazel query 'kind("crates_vendor", //...)' 2>/dev/null)"
+    for target in $targets
+    do
+        bazel run $target
+    done
+    popd >/dev/null
+}
+
+if [[ -n "${BUILD_WORKSPACE_DIRECTORY:-}" ]]; then
+    cd "${BUILD_WORKSPACE_DIRECTORY:-}"
+fi
+
+workspaces="$(find . -type f -name WORKSPACE.bazel -o -name MODULE.bazel)"
+
+for workspace in $workspaces
+do
+    vendor_workspace "$(dirname "$workspace")"
+done
diff --git a/crate_universe/version.bzl b/crate_universe/version.bzl
index 6803ad5..a70cad9 100644
--- a/crate_universe/version.bzl
+++ b/crate_universe/version.bzl
@@ -1,3 +1,3 @@
 """ Version info for the `cargo-bazel` repository """
 
-VERSION = "0.10.0"
+VERSION = "0.11.0"
diff --git a/docs/.gitignore b/docs/.gitignore
deleted file mode 100644
index 648fc0e..0000000
--- a/docs/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-MODULE.bazel.lock
diff --git a/docs/crate_universe.md b/docs/crate_universe.md
index 02323db..ce5c847 100644
--- a/docs/crate_universe.md
+++ b/docs/crate_universe.md
@@ -292,8 +292,8 @@
 
 ```text
 [workspace]/
-    WORKSPACE
-    BUILD
+    WORKSPACE.bazel
+    BUILD.bazel
     Cargo.toml
     Cargo.Bazel.lock
     src/
@@ -350,7 +350,8 @@
 | Any of [`true`, `1`, `yes`, `on`, `workspace`] | `cargo update --workspace` |
 | Any of [`full`, `eager`, `all`] | `cargo update` |
 | `package_name` | `cargo upgrade --package package_name` |
-| `package_name@1.2.3` | `cargo upgrade --package package_name --precise 1.2.3` |
+| `package_name@1.2.3` | `cargo upgrade --package package_name@1.2.3` |
+| `package_name@1.2.3=4.5.6` | `cargo upgrade --package package_name@1.2.3 --precise=4.5.6` |
 
 If the `crates_repository` is used multiple times in the same Bazel workspace (e.g. for multiple independent
 Rust workspaces), it may additionally be useful to use the `CARGO_BAZEL_REPIN_ONLY` environment variable, which
diff --git a/docs/flatten.md b/docs/flatten.md
index 58ec9cb..14d2af6 100644
--- a/docs/flatten.md
+++ b/docs/flatten.md
@@ -1176,10 +1176,11 @@
 
 <pre>
 rust_toolchain(<a href="#rust_toolchain-name">name</a>, <a href="#rust_toolchain-allocator_library">allocator_library</a>, <a href="#rust_toolchain-binary_ext">binary_ext</a>, <a href="#rust_toolchain-cargo">cargo</a>, <a href="#rust_toolchain-clippy_driver">clippy_driver</a>, <a href="#rust_toolchain-debug_info">debug_info</a>,
-               <a href="#rust_toolchain-default_edition">default_edition</a>, <a href="#rust_toolchain-dylib_ext">dylib_ext</a>, <a href="#rust_toolchain-env">env</a>, <a href="#rust_toolchain-exec_triple">exec_triple</a>, <a href="#rust_toolchain-experimental_use_cc_common_link">experimental_use_cc_common_link</a>,
-               <a href="#rust_toolchain-extra_exec_rustc_flags">extra_exec_rustc_flags</a>, <a href="#rust_toolchain-extra_rustc_flags">extra_rustc_flags</a>, <a href="#rust_toolchain-global_allocator_library">global_allocator_library</a>, <a href="#rust_toolchain-llvm_cov">llvm_cov</a>,
-               <a href="#rust_toolchain-llvm_profdata">llvm_profdata</a>, <a href="#rust_toolchain-llvm_tools">llvm_tools</a>, <a href="#rust_toolchain-opt_level">opt_level</a>, <a href="#rust_toolchain-per_crate_rustc_flags">per_crate_rustc_flags</a>, <a href="#rust_toolchain-rust_doc">rust_doc</a>, <a href="#rust_toolchain-rust_std">rust_std</a>, <a href="#rust_toolchain-rustc">rustc</a>,
-               <a href="#rust_toolchain-rustc_lib">rustc_lib</a>, <a href="#rust_toolchain-rustfmt">rustfmt</a>, <a href="#rust_toolchain-staticlib_ext">staticlib_ext</a>, <a href="#rust_toolchain-stdlib_linkflags">stdlib_linkflags</a>, <a href="#rust_toolchain-target_json">target_json</a>, <a href="#rust_toolchain-target_triple">target_triple</a>)
+               <a href="#rust_toolchain-default_edition">default_edition</a>, <a href="#rust_toolchain-dylib_ext">dylib_ext</a>, <a href="#rust_toolchain-env">env</a>, <a href="#rust_toolchain-exec_triple">exec_triple</a>, <a href="#rust_toolchain-experimental_link_std_dylib">experimental_link_std_dylib</a>,
+               <a href="#rust_toolchain-experimental_use_cc_common_link">experimental_use_cc_common_link</a>, <a href="#rust_toolchain-extra_exec_rustc_flags">extra_exec_rustc_flags</a>, <a href="#rust_toolchain-extra_rustc_flags">extra_rustc_flags</a>,
+               <a href="#rust_toolchain-global_allocator_library">global_allocator_library</a>, <a href="#rust_toolchain-llvm_cov">llvm_cov</a>, <a href="#rust_toolchain-llvm_profdata">llvm_profdata</a>, <a href="#rust_toolchain-llvm_tools">llvm_tools</a>, <a href="#rust_toolchain-opt_level">opt_level</a>,
+               <a href="#rust_toolchain-per_crate_rustc_flags">per_crate_rustc_flags</a>, <a href="#rust_toolchain-rust_doc">rust_doc</a>, <a href="#rust_toolchain-rust_std">rust_std</a>, <a href="#rust_toolchain-rustc">rustc</a>, <a href="#rust_toolchain-rustc_lib">rustc_lib</a>, <a href="#rust_toolchain-rustfmt">rustfmt</a>, <a href="#rust_toolchain-staticlib_ext">staticlib_ext</a>,
+               <a href="#rust_toolchain-stdlib_linkflags">stdlib_linkflags</a>, <a href="#rust_toolchain-target_json">target_json</a>, <a href="#rust_toolchain-target_triple">target_triple</a>)
 </pre>
 
 Declares a Rust toolchain for use.
@@ -1241,6 +1242,7 @@
 | <a id="rust_toolchain-dylib_ext"></a>dylib_ext |  The extension for dynamic libraries created from rustc.   | String | required |  |
 | <a id="rust_toolchain-env"></a>env |  Environment variables to set in actions.   | <a href="https://bazel.build/rules/lib/dict">Dictionary: String -> String</a> | optional | <code>{}</code> |
 | <a id="rust_toolchain-exec_triple"></a>exec_triple |  The platform triple for the toolchains execution environment. For more details see: https://docs.bazel.build/versions/master/skylark/rules.html#configurations   | String | required |  |
+| <a id="rust_toolchain-experimental_link_std_dylib"></a>experimental_link_std_dylib |  Label to a boolean build setting that controls whether whether to link libstd dynamically.   | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>@rules_rust//rust/settings:experimental_link_std_dylib</code> |
 | <a id="rust_toolchain-experimental_use_cc_common_link"></a>experimental_use_cc_common_link |  Label to a boolean build setting that controls whether cc_common.link is used to link rust binaries.   | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>//rust/settings:experimental_use_cc_common_link</code> |
 | <a id="rust_toolchain-extra_exec_rustc_flags"></a>extra_exec_rustc_flags |  Extra flags to pass to rustc in exec configuration   | List of strings | optional | <code>[]</code> |
 | <a id="rust_toolchain-extra_rustc_flags"></a>extra_rustc_flags |  Extra flags to pass to rustc in non-exec configuration   | List of strings | optional | <code>[]</code> |
@@ -1446,7 +1448,7 @@
 <pre>
 CrateInfo(<a href="#CrateInfo-aliases">aliases</a>, <a href="#CrateInfo-compile_data">compile_data</a>, <a href="#CrateInfo-compile_data_targets">compile_data_targets</a>, <a href="#CrateInfo-data">data</a>, <a href="#CrateInfo-deps">deps</a>, <a href="#CrateInfo-edition">edition</a>, <a href="#CrateInfo-is_test">is_test</a>, <a href="#CrateInfo-metadata">metadata</a>, <a href="#CrateInfo-name">name</a>,
           <a href="#CrateInfo-output">output</a>, <a href="#CrateInfo-owner">owner</a>, <a href="#CrateInfo-proc_macro_deps">proc_macro_deps</a>, <a href="#CrateInfo-root">root</a>, <a href="#CrateInfo-rustc_env">rustc_env</a>, <a href="#CrateInfo-rustc_env_files">rustc_env_files</a>, <a href="#CrateInfo-rustc_output">rustc_output</a>,
-          <a href="#CrateInfo-rustc_rmeta_output">rustc_rmeta_output</a>, <a href="#CrateInfo-srcs">srcs</a>, <a href="#CrateInfo-type">type</a>, <a href="#CrateInfo-wrapped_crate_type">wrapped_crate_type</a>)
+          <a href="#CrateInfo-rustc_rmeta_output">rustc_rmeta_output</a>, <a href="#CrateInfo-srcs">srcs</a>, <a href="#CrateInfo-std_dylib">std_dylib</a>, <a href="#CrateInfo-type">type</a>, <a href="#CrateInfo-wrapped_crate_type">wrapped_crate_type</a>)
 </pre>
 
 A provider containing general Crate information.
@@ -1474,6 +1476,7 @@
 | <a id="CrateInfo-rustc_output"></a>rustc_output |  File: The output from rustc from producing the output file. It is optional.    |
 | <a id="CrateInfo-rustc_rmeta_output"></a>rustc_rmeta_output |  File: The rmeta file produced for this crate. It is optional.    |
 | <a id="CrateInfo-srcs"></a>srcs |  depset[File]: All source Files that are part of the crate.    |
+| <a id="CrateInfo-std_dylib"></a>std_dylib |  File: libstd.so file    |
 | <a id="CrateInfo-type"></a>type |  str: The type of this crate (see [rustc --crate-type](https://doc.rust-lang.org/rustc/command-line-arguments.html#--crate-type-a-list-of-types-of-crates-for-the-compiler-to-emit)).    |
 | <a id="CrateInfo-wrapped_crate_type"></a>wrapped_crate_type |  str, optional: The original crate type for targets generated using a previously defined crate (typically tests using the <code>rust_test::crate</code> attribute)    |
 
@@ -1533,8 +1536,8 @@
 
 <pre>
 StdLibInfo(<a href="#StdLibInfo-alloc_files">alloc_files</a>, <a href="#StdLibInfo-between_alloc_and_core_files">between_alloc_and_core_files</a>, <a href="#StdLibInfo-between_core_and_std_files">between_core_and_std_files</a>, <a href="#StdLibInfo-core_files">core_files</a>,
-           <a href="#StdLibInfo-dot_a_files">dot_a_files</a>, <a href="#StdLibInfo-memchr_files">memchr_files</a>, <a href="#StdLibInfo-panic_files">panic_files</a>, <a href="#StdLibInfo-self_contained_files">self_contained_files</a>, <a href="#StdLibInfo-srcs">srcs</a>, <a href="#StdLibInfo-std_files">std_files</a>, <a href="#StdLibInfo-std_rlibs">std_rlibs</a>,
-           <a href="#StdLibInfo-test_files">test_files</a>)
+           <a href="#StdLibInfo-dot_a_files">dot_a_files</a>, <a href="#StdLibInfo-memchr_files">memchr_files</a>, <a href="#StdLibInfo-panic_files">panic_files</a>, <a href="#StdLibInfo-self_contained_files">self_contained_files</a>, <a href="#StdLibInfo-srcs">srcs</a>, <a href="#StdLibInfo-std_dylib">std_dylib</a>, <a href="#StdLibInfo-std_files">std_files</a>,
+           <a href="#StdLibInfo-std_rlibs">std_rlibs</a>, <a href="#StdLibInfo-test_files">test_files</a>)
 </pre>
 
 A collection of files either found within the `rust-stdlib` artifact or generated based on existing files.
@@ -1553,6 +1556,7 @@
 | <a id="StdLibInfo-panic_files"></a>panic_files |  Depset[File]: <code>.a</code> files associated with <code>panic_unwind</code> and <code>panic_abort</code>.    |
 | <a id="StdLibInfo-self_contained_files"></a>self_contained_files |  List[File]: All <code>.o</code> files from the <code>self-contained</code> directory.    |
 | <a id="StdLibInfo-srcs"></a>srcs |  List[Target]: All targets from the original <code>srcs</code> attribute.    |
+| <a id="StdLibInfo-std_dylib"></a>std_dylib |  File: libstd.so file    |
 | <a id="StdLibInfo-std_files"></a>std_files |  Depset[File]: <code>.a</code> files associated with the <code>std</code> module.    |
 | <a id="StdLibInfo-std_rlibs"></a>std_rlibs |  List[File]: All <code>.rlib</code> files    |
 | <a id="StdLibInfo-test_files"></a>test_files |  Depset[File]: <code>.a</code> files associated with the <code>test</code> module.    |
diff --git a/docs/providers.md b/docs/providers.md
index 87a3792..bed0a6f 100644
--- a/docs/providers.md
+++ b/docs/providers.md
@@ -12,7 +12,7 @@
 <pre>
 CrateInfo(<a href="#CrateInfo-aliases">aliases</a>, <a href="#CrateInfo-compile_data">compile_data</a>, <a href="#CrateInfo-compile_data_targets">compile_data_targets</a>, <a href="#CrateInfo-data">data</a>, <a href="#CrateInfo-deps">deps</a>, <a href="#CrateInfo-edition">edition</a>, <a href="#CrateInfo-is_test">is_test</a>, <a href="#CrateInfo-metadata">metadata</a>, <a href="#CrateInfo-name">name</a>,
           <a href="#CrateInfo-output">output</a>, <a href="#CrateInfo-owner">owner</a>, <a href="#CrateInfo-proc_macro_deps">proc_macro_deps</a>, <a href="#CrateInfo-root">root</a>, <a href="#CrateInfo-rustc_env">rustc_env</a>, <a href="#CrateInfo-rustc_env_files">rustc_env_files</a>, <a href="#CrateInfo-rustc_output">rustc_output</a>,
-          <a href="#CrateInfo-rustc_rmeta_output">rustc_rmeta_output</a>, <a href="#CrateInfo-srcs">srcs</a>, <a href="#CrateInfo-type">type</a>, <a href="#CrateInfo-wrapped_crate_type">wrapped_crate_type</a>)
+          <a href="#CrateInfo-rustc_rmeta_output">rustc_rmeta_output</a>, <a href="#CrateInfo-srcs">srcs</a>, <a href="#CrateInfo-std_dylib">std_dylib</a>, <a href="#CrateInfo-type">type</a>, <a href="#CrateInfo-wrapped_crate_type">wrapped_crate_type</a>)
 </pre>
 
 A provider containing general Crate information.
@@ -40,6 +40,7 @@
 | <a id="CrateInfo-rustc_output"></a>rustc_output |  File: The output from rustc from producing the output file. It is optional.    |
 | <a id="CrateInfo-rustc_rmeta_output"></a>rustc_rmeta_output |  File: The rmeta file produced for this crate. It is optional.    |
 | <a id="CrateInfo-srcs"></a>srcs |  depset[File]: All source Files that are part of the crate.    |
+| <a id="CrateInfo-std_dylib"></a>std_dylib |  File: libstd.so file    |
 | <a id="CrateInfo-type"></a>type |  str: The type of this crate (see [rustc --crate-type](https://doc.rust-lang.org/rustc/command-line-arguments.html#--crate-type-a-list-of-types-of-crates-for-the-compiler-to-emit)).    |
 | <a id="CrateInfo-wrapped_crate_type"></a>wrapped_crate_type |  str, optional: The original crate type for targets generated using a previously defined crate (typically tests using the <code>rust_test::crate</code> attribute)    |
 
@@ -79,8 +80,8 @@
 
 <pre>
 StdLibInfo(<a href="#StdLibInfo-alloc_files">alloc_files</a>, <a href="#StdLibInfo-between_alloc_and_core_files">between_alloc_and_core_files</a>, <a href="#StdLibInfo-between_core_and_std_files">between_core_and_std_files</a>, <a href="#StdLibInfo-core_files">core_files</a>,
-           <a href="#StdLibInfo-dot_a_files">dot_a_files</a>, <a href="#StdLibInfo-memchr_files">memchr_files</a>, <a href="#StdLibInfo-panic_files">panic_files</a>, <a href="#StdLibInfo-self_contained_files">self_contained_files</a>, <a href="#StdLibInfo-srcs">srcs</a>, <a href="#StdLibInfo-std_files">std_files</a>, <a href="#StdLibInfo-std_rlibs">std_rlibs</a>,
-           <a href="#StdLibInfo-test_files">test_files</a>)
+           <a href="#StdLibInfo-dot_a_files">dot_a_files</a>, <a href="#StdLibInfo-memchr_files">memchr_files</a>, <a href="#StdLibInfo-panic_files">panic_files</a>, <a href="#StdLibInfo-self_contained_files">self_contained_files</a>, <a href="#StdLibInfo-srcs">srcs</a>, <a href="#StdLibInfo-std_dylib">std_dylib</a>, <a href="#StdLibInfo-std_files">std_files</a>,
+           <a href="#StdLibInfo-std_rlibs">std_rlibs</a>, <a href="#StdLibInfo-test_files">test_files</a>)
 </pre>
 
 A collection of files either found within the `rust-stdlib` artifact or generated based on existing files.
@@ -99,6 +100,7 @@
 | <a id="StdLibInfo-panic_files"></a>panic_files |  Depset[File]: <code>.a</code> files associated with <code>panic_unwind</code> and <code>panic_abort</code>.    |
 | <a id="StdLibInfo-self_contained_files"></a>self_contained_files |  List[File]: All <code>.o</code> files from the <code>self-contained</code> directory.    |
 | <a id="StdLibInfo-srcs"></a>srcs |  List[Target]: All targets from the original <code>srcs</code> attribute.    |
+| <a id="StdLibInfo-std_dylib"></a>std_dylib |  File: libstd.so file    |
 | <a id="StdLibInfo-std_files"></a>std_files |  Depset[File]: <code>.a</code> files associated with the <code>std</code> module.    |
 | <a id="StdLibInfo-std_rlibs"></a>std_rlibs |  List[File]: All <code>.rlib</code> files    |
 | <a id="StdLibInfo-test_files"></a>test_files |  Depset[File]: <code>.a</code> files associated with the <code>test</code> module.    |
diff --git a/docs/rust_repositories.md b/docs/rust_repositories.md
index 944f4e4..20d2981 100644
--- a/docs/rust_repositories.md
+++ b/docs/rust_repositories.md
@@ -37,10 +37,11 @@
 
 <pre>
 rust_toolchain(<a href="#rust_toolchain-name">name</a>, <a href="#rust_toolchain-allocator_library">allocator_library</a>, <a href="#rust_toolchain-binary_ext">binary_ext</a>, <a href="#rust_toolchain-cargo">cargo</a>, <a href="#rust_toolchain-clippy_driver">clippy_driver</a>, <a href="#rust_toolchain-debug_info">debug_info</a>,
-               <a href="#rust_toolchain-default_edition">default_edition</a>, <a href="#rust_toolchain-dylib_ext">dylib_ext</a>, <a href="#rust_toolchain-env">env</a>, <a href="#rust_toolchain-exec_triple">exec_triple</a>, <a href="#rust_toolchain-experimental_use_cc_common_link">experimental_use_cc_common_link</a>,
-               <a href="#rust_toolchain-extra_exec_rustc_flags">extra_exec_rustc_flags</a>, <a href="#rust_toolchain-extra_rustc_flags">extra_rustc_flags</a>, <a href="#rust_toolchain-global_allocator_library">global_allocator_library</a>, <a href="#rust_toolchain-llvm_cov">llvm_cov</a>,
-               <a href="#rust_toolchain-llvm_profdata">llvm_profdata</a>, <a href="#rust_toolchain-llvm_tools">llvm_tools</a>, <a href="#rust_toolchain-opt_level">opt_level</a>, <a href="#rust_toolchain-per_crate_rustc_flags">per_crate_rustc_flags</a>, <a href="#rust_toolchain-rust_doc">rust_doc</a>, <a href="#rust_toolchain-rust_std">rust_std</a>, <a href="#rust_toolchain-rustc">rustc</a>,
-               <a href="#rust_toolchain-rustc_lib">rustc_lib</a>, <a href="#rust_toolchain-rustfmt">rustfmt</a>, <a href="#rust_toolchain-staticlib_ext">staticlib_ext</a>, <a href="#rust_toolchain-stdlib_linkflags">stdlib_linkflags</a>, <a href="#rust_toolchain-target_json">target_json</a>, <a href="#rust_toolchain-target_triple">target_triple</a>)
+               <a href="#rust_toolchain-default_edition">default_edition</a>, <a href="#rust_toolchain-dylib_ext">dylib_ext</a>, <a href="#rust_toolchain-env">env</a>, <a href="#rust_toolchain-exec_triple">exec_triple</a>, <a href="#rust_toolchain-experimental_link_std_dylib">experimental_link_std_dylib</a>,
+               <a href="#rust_toolchain-experimental_use_cc_common_link">experimental_use_cc_common_link</a>, <a href="#rust_toolchain-extra_exec_rustc_flags">extra_exec_rustc_flags</a>, <a href="#rust_toolchain-extra_rustc_flags">extra_rustc_flags</a>,
+               <a href="#rust_toolchain-global_allocator_library">global_allocator_library</a>, <a href="#rust_toolchain-llvm_cov">llvm_cov</a>, <a href="#rust_toolchain-llvm_profdata">llvm_profdata</a>, <a href="#rust_toolchain-llvm_tools">llvm_tools</a>, <a href="#rust_toolchain-opt_level">opt_level</a>,
+               <a href="#rust_toolchain-per_crate_rustc_flags">per_crate_rustc_flags</a>, <a href="#rust_toolchain-rust_doc">rust_doc</a>, <a href="#rust_toolchain-rust_std">rust_std</a>, <a href="#rust_toolchain-rustc">rustc</a>, <a href="#rust_toolchain-rustc_lib">rustc_lib</a>, <a href="#rust_toolchain-rustfmt">rustfmt</a>, <a href="#rust_toolchain-staticlib_ext">staticlib_ext</a>,
+               <a href="#rust_toolchain-stdlib_linkflags">stdlib_linkflags</a>, <a href="#rust_toolchain-target_json">target_json</a>, <a href="#rust_toolchain-target_triple">target_triple</a>)
 </pre>
 
 Declares a Rust toolchain for use.
@@ -102,6 +103,7 @@
 | <a id="rust_toolchain-dylib_ext"></a>dylib_ext |  The extension for dynamic libraries created from rustc.   | String | required |  |
 | <a id="rust_toolchain-env"></a>env |  Environment variables to set in actions.   | <a href="https://bazel.build/rules/lib/dict">Dictionary: String -> String</a> | optional | <code>{}</code> |
 | <a id="rust_toolchain-exec_triple"></a>exec_triple |  The platform triple for the toolchains execution environment. For more details see: https://docs.bazel.build/versions/master/skylark/rules.html#configurations   | String | required |  |
+| <a id="rust_toolchain-experimental_link_std_dylib"></a>experimental_link_std_dylib |  Label to a boolean build setting that controls whether whether to link libstd dynamically.   | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>@rules_rust//rust/settings:experimental_link_std_dylib</code> |
 | <a id="rust_toolchain-experimental_use_cc_common_link"></a>experimental_use_cc_common_link |  Label to a boolean build setting that controls whether cc_common.link is used to link rust binaries.   | <a href="https://bazel.build/concepts/labels">Label</a> | optional | <code>//rust/settings:experimental_use_cc_common_link</code> |
 | <a id="rust_toolchain-extra_exec_rustc_flags"></a>extra_exec_rustc_flags |  Extra flags to pass to rustc in exec configuration   | List of strings | optional | <code>[]</code> |
 | <a id="rust_toolchain-extra_rustc_flags"></a>extra_rustc_flags |  Extra flags to pass to rustc in non-exec configuration   | List of strings | optional | <code>[]</code> |
diff --git a/examples/.bazelrc b/examples/.bazelrc
index aeb9ab4..05952d1 100644
--- a/examples/.bazelrc
+++ b/examples/.bazelrc
@@ -18,6 +18,9 @@
 # https://github.com/bazelbuild/rules_rust/issues/2181
 common --noenable_bzlmod
 
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
+
 # This import should always be last to allow users to override
 # settings for local development.
 try-import %workspace%/user.bazelrc
diff --git a/examples/android/.bazelrc b/examples/android/.bazelrc
index 52bb082..97fd915 100644
--- a/examples/android/.bazelrc
+++ b/examples/android/.bazelrc
@@ -8,3 +8,6 @@
 # TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
 # https://github.com/bazelbuild/rules_rust/issues/2181
 common --noenable_bzlmod
+
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
diff --git a/examples/bzlmod/all_crate_deps/.bazelrc b/examples/bzlmod/all_crate_deps/.bazelrc
index 825e315..c18c1cb 100644
--- a/examples/bzlmod/all_crate_deps/.bazelrc
+++ b/examples/bzlmod/all_crate_deps/.bazelrc
@@ -4,3 +4,6 @@
 build:windows --enable_runfiles
 
 build --experimental_enable_bzlmod
+
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
diff --git a/examples/bzlmod/all_crate_deps/.gitignore b/examples/bzlmod/all_crate_deps/.gitignore
index 2f0f755..a6ef824 100644
--- a/examples/bzlmod/all_crate_deps/.gitignore
+++ b/examples/bzlmod/all_crate_deps/.gitignore
@@ -1,2 +1 @@
 /bazel-*
-/MODULE.bazel.lock
diff --git a/examples/bzlmod/cross_compile/.bazelrc b/examples/bzlmod/cross_compile/.bazelrc
index e2ece0c..1f17c8b 100644
--- a/examples/bzlmod/cross_compile/.bazelrc
+++ b/examples/bzlmod/cross_compile/.bazelrc
@@ -1 +1,4 @@
 build --experimental_enable_bzlmod
+
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
diff --git a/examples/bzlmod/cross_compile/.gitignore b/examples/bzlmod/cross_compile/.gitignore
index 2f0f755..a6ef824 100644
--- a/examples/bzlmod/cross_compile/.gitignore
+++ b/examples/bzlmod/cross_compile/.gitignore
@@ -1,2 +1 @@
 /bazel-*
-/MODULE.bazel.lock
diff --git a/examples/bzlmod/hello_world/.bazelrc b/examples/bzlmod/hello_world/.bazelrc
index 825e315..c18c1cb 100644
--- a/examples/bzlmod/hello_world/.bazelrc
+++ b/examples/bzlmod/hello_world/.bazelrc
@@ -4,3 +4,6 @@
 build:windows --enable_runfiles
 
 build --experimental_enable_bzlmod
+
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
diff --git a/examples/bzlmod/hello_world/.gitignore b/examples/bzlmod/hello_world/.gitignore
index 2f0f755..a6ef824 100644
--- a/examples/bzlmod/hello_world/.gitignore
+++ b/examples/bzlmod/hello_world/.gitignore
@@ -1,2 +1 @@
 /bazel-*
-/MODULE.bazel.lock
diff --git a/examples/bzlmod/hello_world/third-party/crates/BUILD.anyhow-1.0.77.bazel b/examples/bzlmod/hello_world/third-party/crates/BUILD.anyhow-1.0.77.bazel
index e7c71b4..fd7cc7a 100644
--- a/examples/bzlmod/hello_world/third-party/crates/BUILD.anyhow-1.0.77.bazel
+++ b/examples/bzlmod/hello_world/third-party/crates/BUILD.anyhow-1.0.77.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "anyhow",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "anyhow_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "anyhow_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":anyhow_build_script",
+    actual = ":anyhow_bs",
     tags = ["manual"],
 )
diff --git a/examples/bzlmod/hello_world/third-party/crates/BUILD.bazel b/examples/bzlmod/hello_world/third-party/crates/BUILD.bazel
index 3d05beb..d1de62c 100644
--- a/examples/bzlmod/hello_world/third-party/crates/BUILD.bazel
+++ b/examples/bzlmod/hello_world/third-party/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/examples/bzlmod/hello_world/third-party/crates/defs.bzl b/examples/bzlmod/hello_world/third-party/crates/defs.bzl
index 901c605..6fd9db1 100644
--- a/examples/bzlmod/hello_world/third-party/crates/defs.bzl
+++ b/examples/bzlmod/hello_world/third-party/crates/defs.bzl
@@ -295,7 +295,7 @@
 _NORMAL_DEPENDENCIES = {
     "third-party": {
         _COMMON_CONDITION: {
-            "anyhow": "@vendor__anyhow-1.0.77//:anyhow",
+            "anyhow": Label("@vendor__anyhow-1.0.77//:anyhow"),
         },
     },
 }
diff --git a/examples/cargo_manifest_dir/external_crate/.bazelrc b/examples/cargo_manifest_dir/external_crate/.bazelrc
new file mode 100644
index 0000000..7344b7f
--- /dev/null
+++ b/examples/cargo_manifest_dir/external_crate/.bazelrc
@@ -0,0 +1,4 @@
+common --noenable_bzlmod
+
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
diff --git a/examples/crate_universe/.bazelrc b/examples/crate_universe/.bazelrc
index 7b05ff9..117415b 100644
--- a/examples/crate_universe/.bazelrc
+++ b/examples/crate_universe/.bazelrc
@@ -22,6 +22,9 @@
 # https://github.com/bazelbuild/rules_rust/issues/2181
 common --noenable_bzlmod
 
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
+
 # This import should always be last to allow users to override
 # settings for local development.
 try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_alias_annotation_none.json b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_alias_annotation_none.json
index ae8b640..2f3577e 100644
--- a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_alias_annotation_none.json
+++ b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_alias_annotation_none.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "069d9a3ce48fc020eaed4fe2c585c02e256b4334dfbf53ac3eaa1ffa2f6bdb24",
+  "checksum": "29b3baa67c12dc0f5ff62bd02183029b2bb2b9894ee84774c77871de8c0023e1",
   "crates": {
     "direct-cargo-bazel-deps 0.0.1": {
       "name": "direct-cargo-bazel-deps",
@@ -11,9 +11,12 @@
           "Library": {
             "crate_name": "direct_cargo_bazel_deps",
             "crate_root": ".direct_cargo_bazel_deps.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -53,18 +56,24 @@
           "Library": {
             "crate_name": "test_data_passing_crate",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_alias_annotation_opt.json b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_alias_annotation_opt.json
index a6d3643..a2ce7f7 100644
--- a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_alias_annotation_opt.json
+++ b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_alias_annotation_opt.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "52302405da8a6d64fa19c200186b94910d4b16ebd2b5b3dc8cb14d249e9d5dd5",
+  "checksum": "4991fe7d81e0ebe9a35949068c388a69d999ee729634d48b2be11820a8615e60",
   "crates": {
     "direct-cargo-bazel-deps 0.0.1": {
       "name": "direct-cargo-bazel-deps",
@@ -11,9 +11,12 @@
           "Library": {
             "crate_name": "direct_cargo_bazel_deps",
             "crate_root": ".direct_cargo_bazel_deps.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -53,18 +56,24 @@
           "Library": {
             "crate_name": "test_data_passing_crate",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_custom_annotation_none.json b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_custom_annotation_none.json
index dbdfc05..4210b1b 100644
--- a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_custom_annotation_none.json
+++ b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_custom_annotation_none.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "0b2e808b50cb3ccaa5876502646593bdd02cf78c2f7546b18c229e60b3e584c2",
+  "checksum": "b86b7a7cb303025c3eaff9cb49e779e55a9034b1892fb6cf2403e87803a3f6db",
   "crates": {
     "direct-cargo-bazel-deps 0.0.1": {
       "name": "direct-cargo-bazel-deps",
@@ -11,9 +11,12 @@
           "Library": {
             "crate_name": "direct_cargo_bazel_deps",
             "crate_root": ".direct_cargo_bazel_deps.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -53,18 +56,24 @@
           "Library": {
             "crate_name": "test_data_passing_crate",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_dbg_annotation_fastbuild.json b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_dbg_annotation_fastbuild.json
index 4cc4467..5896beb 100644
--- a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_dbg_annotation_fastbuild.json
+++ b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_dbg_annotation_fastbuild.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "afd9b80c31fdbf82c99afc8d6a7e2c3ec3c9aa6d1346964f2311d997968c42e6",
+  "checksum": "f0c92e0ffd9cc767600b88da2d1f670e32ecdf4a5919b799c2e2c13c707f231a",
   "crates": {
     "direct-cargo-bazel-deps 0.0.1": {
       "name": "direct-cargo-bazel-deps",
@@ -11,9 +11,12 @@
           "Library": {
             "crate_name": "direct_cargo_bazel_deps",
             "crate_root": ".direct_cargo_bazel_deps.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -53,18 +56,24 @@
           "Library": {
             "crate_name": "test_data_passing_crate",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_alias.json b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_alias.json
index f843c51..3f6a13f 100644
--- a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_alias.json
+++ b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_alias.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "89c15a6379f2c0c4bc3841eb09dc4b817b34368f1b6cea4a34120420845742f0",
+  "checksum": "b0bb4ae2ee3d60a8962badb7f4cd08d3ae607e9488c73f2240d8b3b4aab2b042",
   "crates": {
     "direct-cargo-bazel-deps 0.0.1": {
       "name": "direct-cargo-bazel-deps",
@@ -11,9 +11,12 @@
           "Library": {
             "crate_name": "direct_cargo_bazel_deps",
             "crate_root": ".direct_cargo_bazel_deps.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -53,18 +56,24 @@
           "Library": {
             "crate_name": "test_data_passing_crate",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_dbg.json b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_dbg.json
index a5ac94b..8ecd533 100644
--- a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_dbg.json
+++ b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_dbg.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "1b82dda14557e4dbc7c3bd4f159c573a3fce9e560481dbfccfb41c46930dea50",
+  "checksum": "a8e4b52992734f8c2f9b2353c83a4aefc9b02e848b7a7644de12e2d87e63d58f",
   "crates": {
     "direct-cargo-bazel-deps 0.0.1": {
       "name": "direct-cargo-bazel-deps",
@@ -11,9 +11,12 @@
           "Library": {
             "crate_name": "direct_cargo_bazel_deps",
             "crate_root": ".direct_cargo_bazel_deps.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -53,18 +56,24 @@
           "Library": {
             "crate_name": "test_data_passing_crate",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_none.json b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_none.json
index 56f782e..734ada8 100644
--- a/examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_none.json
+++ b/examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_none.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "432537abb426db0a2a09d08700df6c65ae4cbb65bb0b83d50819a1c0d83ba06e",
+  "checksum": "f0b40c08fea2a32274119fabd0fe0a1249565eaa8833b50377a2e099f39b9da9",
   "crates": {
     "direct-cargo-bazel-deps 0.0.1": {
       "name": "direct-cargo-bazel-deps",
@@ -11,9 +11,12 @@
           "Library": {
             "crate_name": "direct_cargo_bazel_deps",
             "crate_root": ".direct_cargo_bazel_deps.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -53,18 +56,24 @@
           "Library": {
             "crate_name": "test_data_passing_crate",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/cargo_aliases/.bazelrc b/examples/crate_universe/cargo_aliases/.bazelrc
index d7379de..a67f1ba 100644
--- a/examples/crate_universe/cargo_aliases/.bazelrc
+++ b/examples/crate_universe/cargo_aliases/.bazelrc
@@ -17,6 +17,9 @@
 # https://github.com/bazelbuild/rules_rust/issues/2181
 common --noenable_bzlmod
 
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
+
 # This import should always be last to allow users to override
 # settings for local development.
 try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/cargo_aliases/cargo-bazel-lock.json b/examples/crate_universe/cargo_aliases/cargo-bazel-lock.json
index c949d9e..8564e40 100644
--- a/examples/crate_universe/cargo_aliases/cargo-bazel-lock.json
+++ b/examples/crate_universe/cargo_aliases/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "f49f6ba336f2f3e4fd2fcf0f6ab09cb73e486a3afc432fb0beed8788354ba2d5",
+  "checksum": "7a7d4f7cf7145a4d932de0a192ea334f5d608280e9913a541d018eb3f8d81861",
   "crates": {
     "aho-corasick 0.7.20": {
       "name": "aho-corasick",
@@ -16,9 +16,12 @@
           "Library": {
             "crate_name": "aho_corasick",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -63,9 +66,12 @@
           "Library": {
             "crate_name": "aliases",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -132,9 +138,12 @@
           "Library": {
             "crate_name": "atty",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -190,9 +199,12 @@
           "Library": {
             "crate_name": "autocfg",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -226,9 +238,12 @@
           "Library": {
             "crate_name": "bitflags",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -268,9 +283,12 @@
           "Library": {
             "crate_name": "cfg_if",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -304,9 +322,12 @@
           "Library": {
             "crate_name": "clap",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -401,9 +422,12 @@
           "ProcMacro": {
             "crate_name": "clap_derive",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -468,9 +492,12 @@
           "Library": {
             "crate_name": "clap_lex",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -513,9 +540,12 @@
           "ProcMacro": {
             "crate_name": "ctor",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -562,9 +592,12 @@
           "Library": {
             "crate_name": "env_logger",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -633,9 +666,12 @@
           "Library": {
             "crate_name": "getrandom",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -697,9 +733,12 @@
           "Library": {
             "crate_name": "hashbrown",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -739,9 +778,12 @@
           "Library": {
             "crate_name": "heck",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -781,9 +823,12 @@
           "Library": {
             "crate_name": "hermit_abi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -826,9 +871,12 @@
           "Library": {
             "crate_name": "humantime",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -862,18 +910,24 @@
           "Library": {
             "crate_name": "indexmap",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -940,18 +994,24 @@
           "Library": {
             "crate_name": "libc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -999,9 +1059,12 @@
           "Library": {
             "crate_name": "log",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1051,18 +1114,24 @@
           "Library": {
             "crate_name": "log",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1120,18 +1189,24 @@
           "Library": {
             "crate_name": "memchr",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1189,18 +1264,24 @@
           "Library": {
             "crate_name": "names",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1263,18 +1344,24 @@
           "Library": {
             "crate_name": "names",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1337,9 +1424,12 @@
           "Library": {
             "crate_name": "once_cell",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1382,9 +1472,12 @@
           "Library": {
             "crate_name": "os_str_bytes",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1424,9 +1517,12 @@
           "Library": {
             "crate_name": "ppv_lite86",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1467,18 +1563,24 @@
           "Library": {
             "crate_name": "proc_macro_error",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1564,18 +1666,24 @@
           "ProcMacro": {
             "crate_name": "proc_macro_error_attr",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1640,18 +1748,24 @@
           "Library": {
             "crate_name": "proc_macro2",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1710,18 +1824,24 @@
           "Library": {
             "crate_name": "quote",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1780,9 +1900,12 @@
           "Library": {
             "crate_name": "rand",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1848,9 +1971,12 @@
           "Library": {
             "crate_name": "rand_chacha",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1903,9 +2029,12 @@
           "Library": {
             "crate_name": "rand_core",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1956,9 +2085,12 @@
           "Library": {
             "crate_name": "regex",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2022,9 +2154,12 @@
           "Library": {
             "crate_name": "regex_syntax",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2058,9 +2193,12 @@
           "Library": {
             "crate_name": "strsim",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2093,18 +2231,24 @@
           "Library": {
             "crate_name": "syn",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2177,9 +2321,12 @@
           "Library": {
             "crate_name": "termcolor",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2224,9 +2371,12 @@
           "Library": {
             "crate_name": "textwrap",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2259,9 +2409,12 @@
           "Library": {
             "crate_name": "unicode_ident",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2296,18 +2449,24 @@
           "Library": {
             "crate_name": "value_bag",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2374,9 +2533,12 @@
           "Library": {
             "crate_name": "version_check",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2410,9 +2572,12 @@
           "Library": {
             "crate_name": "wasi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2453,18 +2618,24 @@
           "Library": {
             "crate_name": "winapi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2541,18 +2712,24 @@
           "Library": {
             "crate_name": "winapi_i686_pc_windows_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2600,9 +2777,12 @@
           "Library": {
             "crate_name": "winapi_util",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2647,18 +2827,24 @@
           "Library": {
             "crate_name": "winapi_x86_64_pc_windows_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/cargo_conditional_deps/cargo-bazel-lock.json b/examples/crate_universe/cargo_conditional_deps/cargo-bazel-lock.json
index 1486311..5fa9d16 100644
--- a/examples/crate_universe/cargo_conditional_deps/cargo-bazel-lock.json
+++ b/examples/crate_universe/cargo_conditional_deps/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "2d7a358a0e1c54e3234e710ce1b80d2b1032bfeeda471a1c5b80adc8465d53e3",
+  "checksum": "2a380523a8d2af44db9039a1159b146be87a517dc1b8d9bf8fafc9760a7a0a4f",
   "crates": {
     "autocfg 1.1.0": {
       "name": "autocfg",
@@ -16,9 +16,12 @@
           "Library": {
             "crate_name": "autocfg",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -52,9 +55,12 @@
           "Library": {
             "crate_name": "bitflags",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -94,9 +100,12 @@
           "Library": {
             "crate_name": "cfg_if",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -159,18 +168,24 @@
           "Library": {
             "crate_name": "libc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -226,18 +241,24 @@
           "Library": {
             "crate_name": "memoffset",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -299,9 +320,12 @@
           "Library": {
             "crate_name": "nix",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -406,9 +430,12 @@
           "Library": {
             "crate_name": "pin_utils",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -442,9 +469,12 @@
           "Library": {
             "crate_name": "static_assertions",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/cargo_remote/.bazelrc b/examples/crate_universe/cargo_remote/.bazelrc
index d7379de..a67f1ba 100644
--- a/examples/crate_universe/cargo_remote/.bazelrc
+++ b/examples/crate_universe/cargo_remote/.bazelrc
@@ -17,6 +17,9 @@
 # https://github.com/bazelbuild/rules_rust/issues/2181
 common --noenable_bzlmod
 
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
+
 # This import should always be last to allow users to override
 # settings for local development.
 try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/cargo_workspace/.bazelrc b/examples/crate_universe/cargo_workspace/.bazelrc
index d7379de..a67f1ba 100644
--- a/examples/crate_universe/cargo_workspace/.bazelrc
+++ b/examples/crate_universe/cargo_workspace/.bazelrc
@@ -17,6 +17,9 @@
 # https://github.com/bazelbuild/rules_rust/issues/2181
 common --noenable_bzlmod
 
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
+
 # This import should always be last to allow users to override
 # settings for local development.
 try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/cargo_workspace/cargo-bazel-lock.json b/examples/crate_universe/cargo_workspace/cargo-bazel-lock.json
index 4e1fd7e..1a70ba0 100644
--- a/examples/crate_universe/cargo_workspace/cargo-bazel-lock.json
+++ b/examples/crate_universe/cargo_workspace/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "68e396a2434b899051338825a4adb5526046b8ba4bdb5ccb0b944500f886ca50",
+  "checksum": "3a89d0898e33ad0841990f0b56fa2807eaceb8b98f565c50ebfb59095bef8df9",
   "crates": {
     "ansi_term 0.12.1": {
       "name": "ansi_term",
@@ -16,9 +16,12 @@
           "Library": {
             "crate_name": "ansi_term",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -62,9 +65,12 @@
           "Library": {
             "crate_name": "atty",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -120,9 +126,12 @@
           "Library": {
             "crate_name": "bitflags",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -162,9 +171,12 @@
           "Library": {
             "crate_name": "cfg_if",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -198,9 +210,12 @@
           "Library": {
             "crate_name": "clap",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -281,9 +296,12 @@
           "Library": {
             "crate_name": "ferris_says",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -334,18 +352,24 @@
           "Library": {
             "crate_name": "getrandom",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -416,9 +440,12 @@
           "Library": {
             "crate_name": "hermit_abi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -461,18 +488,24 @@
           "Library": {
             "crate_name": "libc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -547,9 +580,12 @@
           "Library": {
             "crate_name": "ppv_lite86",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -585,9 +621,12 @@
           "Library": {
             "crate_name": "printer",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -627,9 +666,12 @@
           "Library": {
             "crate_name": "rand",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -707,9 +749,12 @@
           "Library": {
             "crate_name": "rand_chacha",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -762,9 +807,12 @@
           "Library": {
             "crate_name": "rand_core",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -815,9 +863,12 @@
           "Library": {
             "crate_name": "rand_hc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -855,9 +906,12 @@
           "Library": {
             "crate_name": "rng",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -897,9 +951,12 @@
           "Library": {
             "crate_name": "smallvec",
             "crate_root": "lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -939,9 +996,12 @@
           "Library": {
             "crate_name": "smawk",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -974,9 +1034,12 @@
           "Library": {
             "crate_name": "strsim",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1009,9 +1072,12 @@
           "Library": {
             "crate_name": "textwrap",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1053,9 +1119,12 @@
           "Library": {
             "crate_name": "textwrap",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1109,9 +1178,12 @@
           "Library": {
             "crate_name": "unicode_width",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1151,9 +1223,12 @@
           "Library": {
             "crate_name": "vec_map",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1187,9 +1262,12 @@
           "Library": {
             "crate_name": "wasi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1230,18 +1308,24 @@
           "Library": {
             "crate_name": "winapi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1315,18 +1399,24 @@
           "Library": {
             "crate_name": "winapi_i686_pc_windows_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1374,18 +1464,24 @@
           "Library": {
             "crate_name": "winapi_x86_64_pc_windows_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/multi_package/.bazelrc b/examples/crate_universe/multi_package/.bazelrc
index d7379de..a67f1ba 100644
--- a/examples/crate_universe/multi_package/.bazelrc
+++ b/examples/crate_universe/multi_package/.bazelrc
@@ -17,6 +17,9 @@
 # https://github.com/bazelbuild/rules_rust/issues/2181
 common --noenable_bzlmod
 
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
+
 # This import should always be last to allow users to override
 # settings for local development.
 try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/multi_package/cargo-bazel-lock.json b/examples/crate_universe/multi_package/cargo-bazel-lock.json
index 0d09550..78ffb86 100644
--- a/examples/crate_universe/multi_package/cargo-bazel-lock.json
+++ b/examples/crate_universe/multi_package/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "603273b65da5f602cc1785126b545ccf4eabdbf8ded9b0a1f951e963cefc2ad0",
+  "checksum": "d94d3a74aa0e73ed1c9b8bd803bb6ecaaeaf258f7c3a937d4783aaf5891b31b0",
   "crates": {
     "aho-corasick 0.7.20": {
       "name": "aho-corasick",
@@ -16,9 +16,12 @@
           "Library": {
             "crate_name": "aho_corasick",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -68,18 +71,24 @@
           "Library": {
             "crate_name": "anyhow",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -134,9 +143,12 @@
           "Library": {
             "crate_name": "assert_json_diff",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -182,9 +194,12 @@
           "Library": {
             "crate_name": "async_channel",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -235,9 +250,12 @@
           "Library": {
             "crate_name": "async_executor",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -300,9 +318,12 @@
           "Library": {
             "crate_name": "async_global_executor",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -376,18 +397,24 @@
           "Library": {
             "crate_name": "async_io",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -493,9 +520,12 @@
           "Library": {
             "crate_name": "async_lock",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -538,9 +568,12 @@
           "Library": {
             "crate_name": "async_object_pool",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -582,18 +615,24 @@
           "Library": {
             "crate_name": "async_process",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -691,9 +730,12 @@
           "Library": {
             "crate_name": "async_std",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -841,9 +883,12 @@
           "Library": {
             "crate_name": "async_task",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -884,18 +929,24 @@
           "ProcMacro": {
             "crate_name": "async_trait",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -955,9 +1006,12 @@
           "Library": {
             "crate_name": "atomic_waker",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -991,9 +1045,12 @@
           "Library": {
             "crate_name": "autocfg",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1027,9 +1084,12 @@
           "Library": {
             "crate_name": "base64",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1070,9 +1130,12 @@
           "Library": {
             "crate_name": "base64",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1113,9 +1176,12 @@
           "Library": {
             "crate_name": "block_buffer",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1158,9 +1224,12 @@
           "Library": {
             "crate_name": "blocking",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1223,9 +1292,12 @@
           "Library": {
             "crate_name": "bumpalo",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1265,9 +1337,12 @@
           "Library": {
             "crate_name": "bytes",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1307,9 +1382,12 @@
           "Library": {
             "crate_name": "castaway",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1358,9 +1436,12 @@
           "Library": {
             "crate_name": "cc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1394,9 +1475,12 @@
           "Library": {
             "crate_name": "cfg_if",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1430,9 +1514,12 @@
           "Library": {
             "crate_name": "concurrent_queue",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1482,18 +1569,24 @@
           "Library": {
             "crate_name": "crossbeam_utils",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1552,9 +1645,12 @@
           "ProcMacro": {
             "crate_name": "ctor",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1601,18 +1697,24 @@
           "Library": {
             "crate_name": "curl",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1699,9 +1801,12 @@
           "Library": {
             "crate_name": "curl_sys",
             "crate_root": "lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1778,9 +1883,12 @@
           "Library": {
             "crate_name": "digest",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1830,9 +1938,12 @@
           "Library": {
             "crate_name": "encoding_rs",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1883,9 +1994,12 @@
           "Library": {
             "crate_name": "event_listener",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1919,9 +2033,12 @@
           "Library": {
             "crate_name": "fastrand",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1966,9 +2083,12 @@
           "Library": {
             "crate_name": "fnv",
             "crate_root": "lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2009,9 +2129,12 @@
           "Library": {
             "crate_name": "form_urlencoded",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2054,18 +2177,24 @@
           "Library": {
             "crate_name": "futures_channel",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2125,18 +2254,24 @@
           "Library": {
             "crate_name": "futures_core",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2192,9 +2327,12 @@
           "Library": {
             "crate_name": "futures_io",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2235,9 +2373,12 @@
           "Library": {
             "crate_name": "futures_lite",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2639,9 +2780,12 @@
           "ProcMacro": {
             "crate_name": "futures_macro",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2692,9 +2836,12 @@
           "Library": {
             "crate_name": "futures_sink",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2736,18 +2883,24 @@
           "Library": {
             "crate_name": "futures_task",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2802,18 +2955,24 @@
           "Library": {
             "crate_name": "futures_util",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2913,18 +3072,24 @@
           "Library": {
             "crate_name": "generic_array",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2984,9 +3149,12 @@
           "Library": {
             "crate_name": "gloo_timers",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3050,9 +3218,12 @@
           "Library": {
             "crate_name": "h2",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3134,9 +3305,12 @@
           "Library": {
             "crate_name": "hashbrown",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3176,9 +3350,12 @@
           "Library": {
             "crate_name": "hermit_abi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3221,9 +3398,12 @@
           "ProcMacro": {
             "crate_name": "hex_literal",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3257,9 +3437,12 @@
           "Library": {
             "crate_name": "http",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3310,9 +3493,12 @@
           "Library": {
             "crate_name": "http_body",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3362,18 +3548,24 @@
           "Library": {
             "crate_name": "httparse",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3428,9 +3620,12 @@
           "Library": {
             "crate_name": "httpdate",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3467,9 +3662,12 @@
           "Library": {
             "crate_name": "httpmock",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3594,9 +3792,12 @@
           "Library": {
             "crate_name": "hyper",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3901,9 +4102,12 @@
           "Library": {
             "crate_name": "hyper_rustls",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3963,9 +4167,12 @@
           "Library": {
             "crate_name": "idna",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4012,18 +4219,24 @@
           "Library": {
             "crate_name": "indexmap",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4185,9 +4398,12 @@
           "Library": {
             "crate_name": "instant",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4229,9 +4445,12 @@
           "Library": {
             "crate_name": "ipnet",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4274,18 +4493,24 @@
           "Library": {
             "crate_name": "isahc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4439,9 +4664,12 @@
           "Library": {
             "crate_name": "itoa",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4475,9 +4703,12 @@
           "Library": {
             "crate_name": "js_sys",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4520,9 +4751,12 @@
           "Library": {
             "crate_name": "kv_log_macro",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4565,9 +4799,12 @@
           "Library": {
             "crate_name": "lazy_static",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4601,9 +4838,12 @@
           "Library": {
             "crate_name": "levenshtein",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4636,18 +4876,24 @@
           "Library": {
             "crate_name": "libc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4702,18 +4948,24 @@
           "Library": {
             "crate_name": "libnghttp2_sys",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4779,18 +5031,24 @@
           "Library": {
             "crate_name": "libz_sys",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4869,18 +5127,24 @@
           "Library": {
             "crate_name": "log",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4943,9 +5207,12 @@
           "Library": {
             "crate_name": "md5",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5003,18 +5270,24 @@
           "Library": {
             "crate_name": "memchr",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5069,9 +5342,12 @@
           "Library": {
             "crate_name": "mime",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5105,9 +5381,12 @@
           "Library": {
             "crate_name": "mio",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5181,9 +5460,12 @@
           "Library": {
             "crate_name": "num_cpus",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5234,9 +5516,12 @@
           "Library": {
             "crate_name": "num_enum",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5287,9 +5572,12 @@
           "ProcMacro": {
             "crate_name": "num_enum_derive",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5352,9 +5640,12 @@
           "Library": {
             "crate_name": "once_cell",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5397,9 +5688,12 @@
           "Library": {
             "crate_name": "opaque_debug",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5433,9 +5727,12 @@
           "Library": {
             "crate_name": "parking",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5469,9 +5766,12 @@
           "Library": {
             "crate_name": "percent_encoding",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5512,9 +5812,12 @@
           "Library": {
             "crate_name": "pin_project",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5557,9 +5860,12 @@
           "ProcMacro": {
             "crate_name": "pin_project_internal",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5610,9 +5916,12 @@
           "Library": {
             "crate_name": "pin_project_lite",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5646,9 +5955,12 @@
           "Library": {
             "crate_name": "pin_utils",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5682,9 +5994,12 @@
           "Library": {
             "crate_name": "pkg_config",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5713,9 +6028,12 @@
           "Library": {
             "crate_name": "pkg_a",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5763,9 +6081,12 @@
           "Library": {
             "crate_name": "pkg_b",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5804,9 +6125,12 @@
           "Library": {
             "crate_name": "pkg_c",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5855,18 +6179,24 @@
           "Library": {
             "crate_name": "polling",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5955,9 +6285,12 @@
           "Library": {
             "crate_name": "proc_macro_crate",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6004,18 +6337,24 @@
           "Library": {
             "crate_name": "proc_macro2",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6074,18 +6413,24 @@
           "Library": {
             "crate_name": "quote",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6144,9 +6489,12 @@
           "Library": {
             "crate_name": "regex",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6219,9 +6567,12 @@
           "Library": {
             "crate_name": "regex_syntax",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6269,9 +6620,12 @@
           "Library": {
             "crate_name": "reqwest",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6458,18 +6812,24 @@
           "Library": {
             "crate_name": "ring",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6572,18 +6932,24 @@
           "Library": {
             "crate_name": "rustls",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6667,18 +7033,24 @@
           "Library": {
             "crate_name": "rustls_ffi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6762,9 +7134,12 @@
           "Library": {
             "crate_name": "rustls_pemfile",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6808,9 +7183,12 @@
           "Library": {
             "crate_name": "rustls_pemfile",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6854,18 +7232,24 @@
           "ProcMacro": {
             "crate_name": "rustversion",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build/build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6913,9 +7297,12 @@
           "Library": {
             "crate_name": "ryu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6949,9 +7336,12 @@
           "Library": {
             "crate_name": "schannel",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -6993,9 +7383,12 @@
           "Library": {
             "crate_name": "sct",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7043,18 +7436,24 @@
           "Library": {
             "crate_name": "serde",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7120,18 +7519,24 @@
           "ProcMacro": {
             "crate_name": "serde_derive",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7197,18 +7602,24 @@
           "Library": {
             "crate_name": "serde_json",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7275,9 +7686,12 @@
           "Library": {
             "crate_name": "serde_regex",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7324,9 +7738,12 @@
           "Library": {
             "crate_name": "serde_urlencoded",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7381,18 +7798,24 @@
           "Library": {
             "crate_name": "signal_hook",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7455,9 +7878,12 @@
           "Library": {
             "crate_name": "signal_hook_registry",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7500,9 +7926,12 @@
           "Library": {
             "crate_name": "similar",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7542,18 +7971,24 @@
           "Library": {
             "crate_name": "slab",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7616,9 +8051,12 @@
           "Library": {
             "crate_name": "sluice",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7668,9 +8106,12 @@
           "Library": {
             "crate_name": "socket2",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7727,9 +8168,12 @@
           "Library": {
             "crate_name": "spin",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7762,18 +8206,24 @@
           "Library": {
             "crate_name": "syn",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7849,9 +8299,12 @@
           "Library": {
             "crate_name": "tinyvec",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7903,9 +8356,12 @@
           "Library": {
             "crate_name": "tinyvec_macros",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -7940,18 +8396,24 @@
           "Library": {
             "crate_name": "tokio",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8248,9 +8710,12 @@
           "ProcMacro": {
             "crate_name": "tokio_macros",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8300,9 +8765,12 @@
           "Library": {
             "crate_name": "tokio_rustls",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8361,9 +8829,12 @@
           "Library": {
             "crate_name": "tokio_util",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8433,9 +8904,12 @@
           "Library": {
             "crate_name": "toml_datetime",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8469,9 +8943,12 @@
           "Library": {
             "crate_name": "toml_edit",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8528,9 +9005,12 @@
           "Library": {
             "crate_name": "tower_service",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8563,9 +9043,12 @@
           "Library": {
             "crate_name": "tracing",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8638,9 +9121,12 @@
           "ProcMacro": {
             "crate_name": "tracing_attributes",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8690,9 +9176,12 @@
           "Library": {
             "crate_name": "tracing_core",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8741,9 +9230,12 @@
           "Library": {
             "crate_name": "tracing_futures",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8797,9 +9289,12 @@
           "Library": {
             "crate_name": "try_lock",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8832,18 +9327,24 @@
           "Library": {
             "crate_name": "typenum",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_main",
             "crate_root": "build/main.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8891,9 +9392,12 @@
           "Library": {
             "crate_name": "unicode_bidi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8935,9 +9439,12 @@
           "Library": {
             "crate_name": "unicode_ident",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -8972,9 +9479,12 @@
           "Library": {
             "crate_name": "unicode_normalization",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9024,9 +9534,12 @@
           "Library": {
             "crate_name": "untrusted",
             "crate_root": "src/untrusted.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9059,9 +9572,12 @@
           "Library": {
             "crate_name": "url",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9118,18 +9634,24 @@
           "Library": {
             "crate_name": "value_bag",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9196,9 +9718,12 @@
           "Library": {
             "crate_name": "vcpkg",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9232,9 +9757,12 @@
           "Library": {
             "crate_name": "version_check",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9268,9 +9796,12 @@
           "Library": {
             "crate_name": "waker_fn",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9304,9 +9835,12 @@
           "Library": {
             "crate_name": "want",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9352,9 +9886,12 @@
           "Library": {
             "crate_name": "wasi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9395,18 +9932,24 @@
           "Library": {
             "crate_name": "wasm_bindgen",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9475,9 +10018,12 @@
           "Library": {
             "crate_name": "wasm_bindgen_backend",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9550,9 +10096,12 @@
           "Library": {
             "crate_name": "wasm_bindgen_futures",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9610,9 +10159,12 @@
           "ProcMacro": {
             "crate_name": "wasm_bindgen_macro",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9665,9 +10217,12 @@
           "Library": {
             "crate_name": "wasm_bindgen_macro_support",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9732,18 +10287,24 @@
           "Library": {
             "crate_name": "wasm_bindgen_shared",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9792,9 +10353,12 @@
           "Library": {
             "crate_name": "web_sys",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9865,9 +10429,12 @@
           "Library": {
             "crate_name": "webpki",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9918,9 +10485,12 @@
           "Library": {
             "crate_name": "webpki_roots",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -9962,18 +10532,24 @@
           "Library": {
             "crate_name": "wepoll_ffi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10038,18 +10614,24 @@
           "Library": {
             "crate_name": "winapi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10132,18 +10714,24 @@
           "Library": {
             "crate_name": "winapi_i686_pc_windows_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10191,18 +10779,24 @@
           "Library": {
             "crate_name": "winapi_x86_64_pc_windows_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10250,9 +10844,12 @@
           "Library": {
             "crate_name": "windows_sys",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10383,9 +10980,12 @@
           "Library": {
             "crate_name": "windows_sys",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10449,9 +11049,12 @@
           "Library": {
             "crate_name": "windows_targets",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10562,18 +11165,24 @@
           "Library": {
             "crate_name": "windows_aarch64_gnullvm",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10621,18 +11230,24 @@
           "Library": {
             "crate_name": "windows_aarch64_msvc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10680,18 +11295,24 @@
           "Library": {
             "crate_name": "windows_i686_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10739,18 +11360,24 @@
           "Library": {
             "crate_name": "windows_i686_msvc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10798,18 +11425,24 @@
           "Library": {
             "crate_name": "windows_x86_64_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10857,18 +11490,24 @@
           "Library": {
             "crate_name": "windows_x86_64_gnullvm",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10916,18 +11555,24 @@
           "Library": {
             "crate_name": "windows_x86_64_msvc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -10975,9 +11620,12 @@
           "Library": {
             "crate_name": "winnow",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -11018,18 +11666,24 @@
           "Library": {
             "crate_name": "winreg",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/no_cargo_manifests/.bazelrc b/examples/crate_universe/no_cargo_manifests/.bazelrc
index d7379de..a67f1ba 100644
--- a/examples/crate_universe/no_cargo_manifests/.bazelrc
+++ b/examples/crate_universe/no_cargo_manifests/.bazelrc
@@ -17,6 +17,9 @@
 # https://github.com/bazelbuild/rules_rust/issues/2181
 common --noenable_bzlmod
 
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
+
 # This import should always be last to allow users to override
 # settings for local development.
 try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/no_cargo_manifests/cargo-bazel-lock.json b/examples/crate_universe/no_cargo_manifests/cargo-bazel-lock.json
index 4b9e521..6e76d9a 100644
--- a/examples/crate_universe/no_cargo_manifests/cargo-bazel-lock.json
+++ b/examples/crate_universe/no_cargo_manifests/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "b789ad8693fe893daabbe0875f38e06607bec516761081b82fc407bb5560f6d9",
+  "checksum": "cc41998fcd293f1342341b866946d99336cf5f4db6641ad7c44ea3305093dc99",
   "crates": {
     "async-trait 0.1.64": {
       "name": "async-trait",
@@ -16,18 +16,24 @@
           "ProcMacro": {
             "crate_name": "async_trait",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -87,9 +93,12 @@
           "Library": {
             "crate_name": "autocfg",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -123,9 +132,12 @@
           "Library": {
             "crate_name": "axum",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -267,9 +279,12 @@
           "Library": {
             "crate_name": "axum_core",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -336,9 +351,12 @@
           "Library": {
             "crate_name": "bitflags",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -378,9 +396,12 @@
           "Library": {
             "crate_name": "bytes",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -420,9 +441,12 @@
           "Library": {
             "crate_name": "cfg_if",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -451,9 +475,12 @@
           "Library": {
             "crate_name": "direct_cargo_bazel_deps",
             "crate_root": ".direct_cargo_bazel_deps.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -529,9 +556,12 @@
           "Library": {
             "crate_name": "fnv",
             "crate_root": "lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -572,9 +602,12 @@
           "Library": {
             "crate_name": "form_urlencoded",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -617,18 +650,24 @@
           "Library": {
             "crate_name": "futures_channel",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -688,18 +727,24 @@
           "Library": {
             "crate_name": "futures_core",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -755,9 +800,12 @@
           "Library": {
             "crate_name": "futures_sink",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -799,18 +847,24 @@
           "Library": {
             "crate_name": "futures_task",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -864,18 +918,24 @@
           "Library": {
             "crate_name": "futures_util",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -945,9 +1005,12 @@
           "Library": {
             "crate_name": "h2",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1029,9 +1092,12 @@
           "Library": {
             "crate_name": "hashbrown",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1071,9 +1137,12 @@
           "Library": {
             "crate_name": "hermit_abi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1116,9 +1185,12 @@
           "Library": {
             "crate_name": "http",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1169,9 +1241,12 @@
           "Library": {
             "crate_name": "http_body",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1221,9 +1296,12 @@
           "Library": {
             "crate_name": "http_range_header",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1256,18 +1334,24 @@
           "Library": {
             "crate_name": "httparse",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1322,9 +1406,12 @@
           "Library": {
             "crate_name": "httpdate",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1358,9 +1445,12 @@
           "Library": {
             "crate_name": "hyper",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1478,18 +1568,24 @@
           "Library": {
             "crate_name": "indexmap",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1556,9 +1652,12 @@
           "Library": {
             "crate_name": "itoa",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1592,9 +1691,12 @@
           "Library": {
             "crate_name": "lazy_static",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1628,18 +1730,24 @@
           "Library": {
             "crate_name": "libc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1694,18 +1802,24 @@
           "Library": {
             "crate_name": "lock_api",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1766,18 +1880,24 @@
           "Library": {
             "crate_name": "log",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1835,9 +1955,12 @@
           "Library": {
             "crate_name": "matchit",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1876,18 +1999,24 @@
           "Library": {
             "crate_name": "memchr",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1942,9 +2071,12 @@
           "Library": {
             "crate_name": "mime",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1978,9 +2110,12 @@
           "Library": {
             "crate_name": "mio",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2054,9 +2189,12 @@
           "Library": {
             "crate_name": "nu_ansi_term",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2105,9 +2243,12 @@
           "Library": {
             "crate_name": "num_cpus",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2158,9 +2299,12 @@
           "Library": {
             "crate_name": "once_cell",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2203,9 +2347,12 @@
           "Library": {
             "crate_name": "overload",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2238,9 +2385,12 @@
           "Library": {
             "crate_name": "parking_lot",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2293,18 +2443,24 @@
           "Library": {
             "crate_name": "parking_lot_core",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2379,9 +2535,12 @@
           "Library": {
             "crate_name": "percent_encoding",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2422,9 +2581,12 @@
           "Library": {
             "crate_name": "pin_project",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2467,9 +2629,12 @@
           "ProcMacro": {
             "crate_name": "pin_project_internal",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2520,9 +2685,12 @@
           "Library": {
             "crate_name": "pin_project_lite",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2556,9 +2724,12 @@
           "Library": {
             "crate_name": "pin_utils",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2592,18 +2763,24 @@
           "Library": {
             "crate_name": "proc_macro2",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2662,18 +2839,24 @@
           "Library": {
             "crate_name": "quote",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2732,9 +2915,12 @@
           "Library": {
             "crate_name": "syscall",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2776,9 +2962,12 @@
           "Library": {
             "crate_name": "ryu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2812,9 +3001,12 @@
           "Library": {
             "crate_name": "scopeguard",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2848,18 +3040,24 @@
           "Library": {
             "crate_name": "serde",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2914,18 +3112,24 @@
           "Library": {
             "crate_name": "serde_json",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2993,9 +3197,12 @@
           "Library": {
             "crate_name": "serde_urlencoded",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3050,9 +3257,12 @@
           "Library": {
             "crate_name": "sharded_slab",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3094,9 +3304,12 @@
           "Library": {
             "crate_name": "signal_hook_registry",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3139,18 +3352,24 @@
           "Library": {
             "crate_name": "slab",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3213,9 +3432,12 @@
           "Library": {
             "crate_name": "smallvec",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3249,9 +3471,12 @@
           "Library": {
             "crate_name": "socket2",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3308,18 +3533,24 @@
           "Library": {
             "crate_name": "syn",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3395,9 +3626,12 @@
           "Library": {
             "crate_name": "sync_wrapper",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3430,9 +3664,12 @@
           "Library": {
             "crate_name": "thread_local",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3479,18 +3716,24 @@
           "Library": {
             "crate_name": "tokio",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3645,9 +3888,12 @@
           "ProcMacro": {
             "crate_name": "tokio_macros",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3697,9 +3943,12 @@
           "Library": {
             "crate_name": "tokio_util",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3769,9 +4018,12 @@
           "Library": {
             "crate_name": "tower",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3863,9 +4115,12 @@
           "Library": {
             "crate_name": "tower_http",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3962,9 +4217,12 @@
           "Library": {
             "crate_name": "tower_layer",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -3997,9 +4255,12 @@
           "Library": {
             "crate_name": "tower_service",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4032,9 +4293,12 @@
           "Library": {
             "crate_name": "tracing",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4107,9 +4371,12 @@
           "ProcMacro": {
             "crate_name": "tracing_attributes",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4159,9 +4426,12 @@
           "Library": {
             "crate_name": "tracing_core",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4218,9 +4488,12 @@
           "Library": {
             "crate_name": "tracing_log",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4277,9 +4550,12 @@
           "Library": {
             "crate_name": "tracing_subscriber",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4357,9 +4633,12 @@
           "Library": {
             "crate_name": "try_lock",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4392,9 +4671,12 @@
           "Library": {
             "crate_name": "unicode_ident",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4429,18 +4711,24 @@
           "Library": {
             "crate_name": "valuable",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4487,9 +4775,12 @@
           "Library": {
             "crate_name": "want",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4535,9 +4826,12 @@
           "Library": {
             "crate_name": "wasi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4578,18 +4872,24 @@
           "Library": {
             "crate_name": "winapi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4662,18 +4962,24 @@
           "Library": {
             "crate_name": "winapi_i686_pc_windows_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4721,18 +5027,24 @@
           "Library": {
             "crate_name": "winapi_x86_64_pc_windows_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4780,9 +5092,12 @@
           "Library": {
             "crate_name": "windows_sys",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4848,9 +5163,12 @@
           "Library": {
             "crate_name": "windows_targets",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -4961,18 +5279,24 @@
           "Library": {
             "crate_name": "windows_aarch64_gnullvm",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5020,18 +5344,24 @@
           "Library": {
             "crate_name": "windows_aarch64_msvc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5079,18 +5409,24 @@
           "Library": {
             "crate_name": "windows_i686_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5138,18 +5474,24 @@
           "Library": {
             "crate_name": "windows_i686_msvc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5197,18 +5539,24 @@
           "Library": {
             "crate_name": "windows_x86_64_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5256,18 +5604,24 @@
           "Library": {
             "crate_name": "windows_x86_64_gnullvm",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -5315,18 +5669,24 @@
           "Library": {
             "crate_name": "windows_x86_64_msvc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/using_cxx/cargo-bazel-lock.json b/examples/crate_universe/using_cxx/cargo-bazel-lock.json
index efec0d5..d61c94a 100644
--- a/examples/crate_universe/using_cxx/cargo-bazel-lock.json
+++ b/examples/crate_universe/using_cxx/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "b23eaf7d0d91235393a475b1e85eecfd1f47511800f125e9ad162ea92c446a60",
+  "checksum": "f17fc799775800c4a232c296398b58013d3d9b87605fcd8fee480528b6f8c34e",
   "crates": {
     "cc 1.0.82": {
       "name": "cc",
@@ -16,9 +16,12 @@
           "Library": {
             "crate_name": "cc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -63,9 +66,12 @@
           "Library": {
             "crate_name": "cxx",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -135,9 +141,12 @@
           "Library": {
             "crate_name": "cxxbridge_flags",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -177,9 +186,12 @@
           "ProcMacro": {
             "crate_name": "cxxbridge_macro",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -225,9 +237,12 @@
           "Library": {
             "crate_name": "direct_cargo_bazel_deps",
             "crate_root": ".direct_cargo_bazel_deps.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -267,18 +282,24 @@
           "Library": {
             "crate_name": "libc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -333,18 +354,24 @@
           "Library": {
             "crate_name": "link_cplusplus",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -408,18 +435,24 @@
           "Library": {
             "crate_name": "proc_macro2",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -478,9 +511,12 @@
           "Library": {
             "crate_name": "quote",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -530,9 +566,12 @@
           "Library": {
             "crate_name": "syn",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -596,9 +635,12 @@
           "Library": {
             "crate_name": "unicode_ident",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.Bazel.lock b/examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.Bazel.lock
index 06bd97a..924e48f 100644
--- a/examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.Bazel.lock
+++ b/examples/crate_universe/using_cxx/cxxbridge-cmd.Cargo.Bazel.lock
@@ -1,5 +1,5 @@
 {
-  "checksum": "5a5716fa6c9c8c05bdafa329f492ba9ce05e07e2031fbfae645158db5ceb1ca8",
+  "checksum": "3d3e005e08dd2662d2957883c2776ddc1f334e05a643d302e0fd0325f0427514",
   "crates": {
     "anstyle 1.0.1": {
       "name": "anstyle",
@@ -16,9 +16,12 @@
           "Library": {
             "crate_name": "anstyle",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -59,9 +62,12 @@
           "Library": {
             "crate_name": "clap",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -114,9 +120,12 @@
           "Library": {
             "crate_name": "clap_builder",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -177,9 +186,12 @@
           "Library": {
             "crate_name": "clap_lex",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -213,9 +225,12 @@
           "Library": {
             "crate_name": "codespan_reporting",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -307,18 +322,24 @@
           "Library": {
             "crate_name": "proc_macro2",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -376,9 +397,12 @@
           "Library": {
             "crate_name": "quote",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -421,9 +445,12 @@
           "Library": {
             "crate_name": "strsim",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -456,9 +483,12 @@
           "Library": {
             "crate_name": "syn",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -519,9 +549,12 @@
           "Library": {
             "crate_name": "termcolor",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -566,9 +599,12 @@
           "Library": {
             "crate_name": "unicode_ident",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -603,9 +639,12 @@
           "Library": {
             "crate_name": "unicode_width",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -645,18 +684,24 @@
           "Library": {
             "crate_name": "winapi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -732,18 +777,24 @@
           "Library": {
             "crate_name": "winapi_i686_pc_windows_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -791,9 +842,12 @@
           "Library": {
             "crate_name": "winapi_util",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -838,18 +892,24 @@
           "Library": {
             "crate_name": "winapi_x86_64_pc_windows_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         },
         {
           "BuildScript": {
             "crate_name": "build_script_build",
             "crate_root": "build.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.atty-0.2.14.bazel b/examples/crate_universe/vendor_external/crates/BUILD.atty-0.2.14.bazel
index 678ee58..7e901b1 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.atty-0.2.14.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.atty-0.2.14.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "atty",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.autocfg-1.1.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.autocfg-1.1.0.bazel
index 97b1711..4d45e69 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.autocfg-1.1.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.autocfg-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "autocfg",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.bazel b/examples/crate_universe/vendor_external/crates/BUILD.bazel
index a4e6787..1e13336 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.bitflags-1.3.2.bazel b/examples/crate_universe/vendor_external/crates/BUILD.bitflags-1.3.2.bazel
index 363e68a..941b2c6 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.bitflags-1.3.2.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.bitflags-1.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.cfg-if-1.0.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.cfg-if-1.0.0.bazel
index fec5555..ed07507 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.cfg-if-1.0.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.cfg-if-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.clap-3.1.5.bazel b/examples/crate_universe/vendor_external/crates/BUILD.clap-3.1.5.bazel
index 3070381..7cf7c3e 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.clap-3.1.5.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.clap-3.1.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "clap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.clap_derive-3.1.4.bazel b/examples/crate_universe/vendor_external/crates/BUILD.clap_derive-3.1.4.bazel
index 4c2fd60..7245499 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.clap_derive-3.1.4.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.clap_derive-3.1.4.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "clap_derive",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.form_urlencoded-1.0.1.bazel b/examples/crate_universe/vendor_external/crates/BUILD.form_urlencoded-1.0.1.bazel
index 4a0daaa..fa8aef1 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.form_urlencoded-1.0.1.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.form_urlencoded-1.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "form_urlencoded",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.getrandom-0.2.5.bazel b/examples/crate_universe/vendor_external/crates/BUILD.getrandom-0.2.5.bazel
index 682400c..8792e5d 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.getrandom-0.2.5.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.getrandom-0.2.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "getrandom",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.hashbrown-0.11.2.bazel b/examples/crate_universe/vendor_external/crates/BUILD.hashbrown-0.11.2.bazel
index f125591..99e8181 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.hashbrown-0.11.2.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.hashbrown-0.11.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hashbrown",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.heck-0.4.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.heck-0.4.0.bazel
index cfd64c8..fd92c8a 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.heck-0.4.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.heck-0.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "heck",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.hermit-abi-0.1.19.bazel b/examples/crate_universe/vendor_external/crates/BUILD.hermit-abi-0.1.19.bazel
index 5775fcf..cb04dfd 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.hermit-abi-0.1.19.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.hermit-abi-0.1.19.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.idna-0.2.3.bazel b/examples/crate_universe/vendor_external/crates/BUILD.idna-0.2.3.bazel
index 100924b..05b4c1e 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.idna-0.2.3.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.idna-0.2.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "idna",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.indexmap-1.8.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.indexmap-1.8.0.bazel
index 7495044..a78ec45 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.indexmap-1.8.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.indexmap-1.8.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "indexmap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "indexmap_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "indexmap_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "std",
     ],
@@ -94,6 +101,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -123,6 +131,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":indexmap_build_script",
+    actual = ":indexmap_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.lazy_static-1.4.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.lazy_static-1.4.0.bazel
index 41d4d39..cdf5e06 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.lazy_static-1.4.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.lazy_static-1.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "lazy_static",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.libc-0.2.119.bazel b/examples/crate_universe/vendor_external/crates/BUILD.libc-0.2.119.bazel
index 5d33fb9..25d7fc1 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.libc-0.2.119.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.libc-0.2.119.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.matches-0.1.9.bazel b/examples/crate_universe/vendor_external/crates/BUILD.matches-0.1.9.bazel
index dca299d..818710c 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.matches-0.1.9.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.matches-0.1.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "matches",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.memchr-2.4.1.bazel b/examples/crate_universe/vendor_external/crates/BUILD.memchr-2.4.1.bazel
index 94be49f..a1f9e7f 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.memchr-2.4.1.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.memchr-2.4.1.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "memchr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "memchr_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "memchr_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":memchr_build_script",
+    actual = ":memchr_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.os_str_bytes-6.0.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.os_str_bytes-6.0.0.bazel
index ab9e50f..0aa9ea4 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.os_str_bytes-6.0.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.os_str_bytes-6.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "os_str_bytes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.percent-encoding-2.1.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.percent-encoding-2.1.0.bazel
index abf14c2..c067672 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.percent-encoding-2.1.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.percent-encoding-2.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "percent_encoding",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.ppv-lite86-0.2.16.bazel b/examples/crate_universe/vendor_external/crates/BUILD.ppv-lite86-0.2.16.bazel
index 172db04..31e9db8 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.ppv-lite86-0.2.16.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.ppv-lite86-0.2.16.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ppv_lite86",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.proc-macro-error-1.0.4.bazel b/examples/crate_universe/vendor_external/crates/BUILD.proc-macro-error-1.0.4.bazel
index 0de153b..30a95a0 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.proc-macro-error-1.0.4.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.proc-macro-error-1.0.4.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "proc_macro_error",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -92,8 +96,11 @@
 )
 
 cargo_build_script(
-    name = "proc-macro-error_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro-error_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "syn",
@@ -103,6 +110,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -132,6 +140,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro-error_build_script",
+    actual = ":proc-macro-error_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.proc-macro-error-attr-1.0.4.bazel b/examples/crate_universe/vendor_external/crates/BUILD.proc-macro-error-attr-1.0.4.bazel
index 85635c0..dcfd5b1 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.proc-macro-error-attr-1.0.4.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.proc-macro-error-attr-1.0.4.bazel
@@ -13,9 +13,13 @@
 
 rust_proc_macro(
     name = "proc_macro_error_attr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -83,12 +87,16 @@
 )
 
 cargo_build_script(
-    name = "proc-macro-error-attr_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro-error-attr_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -118,6 +126,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro-error-attr_build_script",
+    actual = ":proc-macro-error-attr_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.proc-macro2-1.0.36.bazel b/examples/crate_universe/vendor_external/crates/BUILD.proc-macro2-1.0.36.bazel
index f96ad1b..6c55958 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.proc-macro2-1.0.36.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.proc-macro2-1.0.36.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -87,8 +91,11 @@
 )
 
 cargo_build_script(
-    name = "proc-macro2_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro2_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -98,6 +105,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -124,6 +132,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro2_build_script",
+    actual = ":proc-macro2_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.pulldown-cmark-0.8.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.pulldown-cmark-0.8.0.bazel
index e52e511..45937d1 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.pulldown-cmark-0.8.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.pulldown-cmark-0.8.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "pulldown_cmark",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -84,12 +88,16 @@
 )
 
 cargo_build_script(
-    name = "pulldown-cmark_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "pulldown-cmark_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -116,6 +124,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":pulldown-cmark_build_script",
+    actual = ":pulldown-cmark_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.quote-1.0.15.bazel b/examples/crate_universe/vendor_external/crates/BUILD.quote-1.0.15.bazel
index 130a1ab..0bc6dcc 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.quote-1.0.15.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.quote-1.0.15.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.rand-0.8.5.bazel b/examples/crate_universe/vendor_external/crates/BUILD.rand-0.8.5.bazel
index 750e407..668164d 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.rand-0.8.5.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.rand-0.8.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.rand_chacha-0.3.1.bazel b/examples/crate_universe/vendor_external/crates/BUILD.rand_chacha-0.3.1.bazel
index 5ed96fc..ffd76ac 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.rand_chacha-0.3.1.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.rand_chacha-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand_chacha",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.rand_core-0.6.3.bazel b/examples/crate_universe/vendor_external/crates/BUILD.rand_core-0.6.3.bazel
index 71bb142..149683e 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.rand_core-0.6.3.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.rand_core-0.6.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.regex-1.5.4.bazel b/examples/crate_universe/vendor_external/crates/BUILD.regex-1.5.4.bazel
index 12ae3d7..fdfd80a 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.regex-1.5.4.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.regex-1.5.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.regex-syntax-0.6.25.bazel b/examples/crate_universe/vendor_external/crates/BUILD.regex-syntax-0.6.25.bazel
index cd79737..43741e2 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.regex-syntax-0.6.25.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.regex-syntax-0.6.25.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex_syntax",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.semver-1.0.6.bazel b/examples/crate_universe/vendor_external/crates/BUILD.semver-1.0.6.bazel
index 7c52b9e..b9bfb7f 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.semver-1.0.6.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.semver-1.0.6.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "semver",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "semver_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "semver_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":semver_build_script",
+    actual = ":semver_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.serde-1.0.136.bazel b/examples/crate_universe/vendor_external/crates/BUILD.serde-1.0.136.bazel
index 8d5f5a8..c11ac1a 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.serde-1.0.136.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.serde-1.0.136.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "serde_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":serde_build_script",
+    actual = ":serde_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.strsim-0.10.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.strsim-0.10.0.bazel
index 37b42dc..542e900 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.strsim-0.10.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.strsim-0.10.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "strsim",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.syn-1.0.86.bazel b/examples/crate_universe/vendor_external/crates/BUILD.syn-1.0.86.bazel
index eadf626..97d8a91 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.syn-1.0.86.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.syn-1.0.86.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -94,8 +98,11 @@
 )
 
 cargo_build_script(
-    name = "syn_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "syn_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "clone-impls",
         "default",
@@ -110,6 +117,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -136,6 +144,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":syn_build_script",
+    actual = ":syn_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.termcolor-1.1.3.bazel b/examples/crate_universe/vendor_external/crates/BUILD.termcolor-1.1.3.bazel
index 5ae5ade..ede3f2c 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.termcolor-1.1.3.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.termcolor-1.1.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "termcolor",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.textwrap-0.15.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.textwrap-0.15.0.bazel
index 4880785..1d33c55 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.textwrap-0.15.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.textwrap-0.15.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "textwrap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.tinyvec-1.5.1.bazel b/examples/crate_universe/vendor_external/crates/BUILD.tinyvec-1.5.1.bazel
index a6f1d7b..d6a5943 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.tinyvec-1.5.1.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.tinyvec-1.5.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tinyvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.tinyvec_macros-0.1.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.tinyvec_macros-0.1.0.bazel
index 9e918fb..44fc264 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.tinyvec_macros-0.1.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.tinyvec_macros-0.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tinyvec_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.toml-0.5.8.bazel b/examples/crate_universe/vendor_external/crates/BUILD.toml-0.5.8.bazel
index 9ac6e80..7633611 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.toml-0.5.8.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.toml-0.5.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "toml",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.unicase-2.6.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.unicase-2.6.0.bazel
index 3296fa4..f06b145 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.unicase-2.6.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.unicase-2.6.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "unicase",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "unicase_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "unicase_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -116,6 +124,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":unicase_build_script",
+    actual = ":unicase_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.unicode-bidi-0.3.7.bazel b/examples/crate_universe/vendor_external/crates/BUILD.unicode-bidi-0.3.7.bazel
index 39f011c..3ccb638 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.unicode-bidi-0.3.7.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.unicode-bidi-0.3.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_bidi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.unicode-normalization-0.1.19.bazel b/examples/crate_universe/vendor_external/crates/BUILD.unicode-normalization-0.1.19.bazel
index 606467b..a778add 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.unicode-normalization-0.1.19.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.unicode-normalization-0.1.19.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_normalization",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.unicode-xid-0.2.2.bazel b/examples/crate_universe/vendor_external/crates/BUILD.unicode-xid-0.2.2.bazel
index a8dabca..512aaf5 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.unicode-xid-0.2.2.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.unicode-xid-0.2.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_xid",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.url-2.2.2.bazel b/examples/crate_universe/vendor_external/crates/BUILD.url-2.2.2.bazel
index e56c539..bc18e45 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.url-2.2.2.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.url-2.2.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "url",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.version-sync-0.9.4.bazel b/examples/crate_universe/vendor_external/crates/BUILD.version-sync-0.9.4.bazel
index 16a7e5e..89814c9 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.version-sync-0.9.4.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.version-sync-0.9.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "version_sync",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.version_check-0.9.4.bazel b/examples/crate_universe/vendor_external/crates/BUILD.version_check-0.9.4.bazel
index 4e4b825..34fe6b1 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.version_check-0.9.4.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.version_check-0.9.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "version_check",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.wasi-0.10.2+wasi-snapshot-preview1.bazel b/examples/crate_universe/vendor_external/crates/BUILD.wasi-0.10.2+wasi-snapshot-preview1.bazel
index 26294b8..5e0ef45 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.wasi-0.10.2+wasi-snapshot-preview1.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.wasi-0.10.2+wasi-snapshot-preview1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.winapi-0.3.9.bazel b/examples/crate_universe/vendor_external/crates/BUILD.winapi-0.3.9.bazel
index 6063a5e..efd2323 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.winapi-0.3.9.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.winapi-0.3.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -94,8 +98,11 @@
 )
 
 cargo_build_script(
-    name = "winapi_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "consoleapi",
         "errhandlingapi",
@@ -113,6 +120,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -139,6 +147,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi_build_script",
+    actual = ":winapi_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
index 5b60f56..7cdfd03 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_i686_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-i686-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-i686-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-i686-pc-windows-gnu_build_script",
+    actual = ":winapi-i686-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.winapi-util-0.1.5.bazel b/examples/crate_universe/vendor_external/crates/BUILD.winapi-util-0.1.5.bazel
index 5537e39..38f55bf 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.winapi-util-0.1.5.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.winapi-util-0.1.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "winapi_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_external/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/examples/crate_universe/vendor_external/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
index 154955a..721e8d4 100644
--- a/examples/crate_universe/vendor_external/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
+++ b/examples/crate_universe/vendor_external/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_x86_64_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-x86_64-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-x86_64-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-x86_64-pc-windows-gnu_build_script",
+    actual = ":winapi-x86_64-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_external/crates/defs.bzl b/examples/crate_universe/vendor_external/crates/defs.bzl
index 58ef991..be0def6 100644
--- a/examples/crate_universe/vendor_external/crates/defs.bzl
+++ b/examples/crate_universe/vendor_external/crates/defs.bzl
@@ -295,8 +295,8 @@
 _NORMAL_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "clap": "@crates_vendor__clap-3.1.5//:clap",
-            "rand": "@crates_vendor__rand-0.8.5//:rand",
+            "clap": Label("@crates_vendor__clap-3.1.5//:clap"),
+            "rand": Label("@crates_vendor__rand-0.8.5//:rand"),
         },
     },
 }
@@ -311,7 +311,7 @@
 _NORMAL_DEV_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "version-sync": "@crates_vendor__version-sync-0.9.4//:version_sync",
+            "version-sync": Label("@crates_vendor__version-sync-0.9.4//:version_sync"),
         },
     },
 }
diff --git a/examples/crate_universe/vendor_local_manifests/crates/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/BUILD.bazel
index 0cc7aca..7a94abe 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/BUILD.bazel
@@ -12,15 +12,21 @@
     [
         "cargo-bazel.json",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/examples/crate_universe/vendor_local_manifests/crates/addr2line-0.21.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/addr2line-0.21.0/BUILD.bazel
index d121969..a340fd2 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/addr2line-0.21.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/addr2line-0.21.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "addr2line",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/adler-1.0.2/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/adler-1.0.2/BUILD.bazel
index 518b88f..d2b619d 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/adler-1.0.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/adler-1.0.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "adler",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/async-stream-0.3.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/async-stream-0.3.5/BUILD.bazel
index fb6f07a..c33f41d 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/async-stream-0.3.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/async-stream-0.3.5/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "async_stream",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/async-stream-impl-0.3.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/async-stream-impl-0.3.5/BUILD.bazel
index 9d20ff8..a930204 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/async-stream-impl-0.3.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/async-stream-impl-0.3.5/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "async_stream_impl",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "//vendor_local_manifests/crates/proc-macro2-1.0.78:proc_macro2",
         "//vendor_local_manifests/crates/quote-1.0.35:quote",
-        "//vendor_local_manifests/crates/syn-2.0.48:syn",
+        "//vendor_local_manifests/crates/syn-2.0.50:syn",
     ],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/autocfg-1.1.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/autocfg-1.1.0/BUILD.bazel
index b44b8b1..fa74447 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/autocfg-1.1.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/autocfg-1.1.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "autocfg",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/backtrace-0.3.69/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/backtrace-0.3.69/BUILD.bazel
index 22b5a42..ca4c4f5 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/backtrace-0.3.69/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/backtrace-0.3.69/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "backtrace",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -271,12 +275,16 @@
 )
 
 cargo_build_script(
-    name = "backtrace_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "backtrace_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -300,12 +308,12 @@
     version = "0.3.69",
     visibility = ["//visibility:private"],
     deps = [
-        "//vendor_local_manifests/crates/cc-1.0.83:cc",
+        "//vendor_local_manifests/crates/cc-1.0.86:cc",
     ],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":backtrace_build_script",
+    actual = ":backtrace_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/bitflags-1.3.2/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/bitflags-1.3.2/BUILD.bazel
index 6773a92..4db5540 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/bitflags-1.3.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/bitflags-1.3.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/bitflags-2.4.2/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/bitflags-2.4.2/BUILD.bazel
index 5bff6ad..6e70b8e 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/bitflags-2.4.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/bitflags-2.4.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/bytes-1.5.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/bytes-1.5.0/BUILD.bazel
index a569204..fdaa04e 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/bytes-1.5.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/bytes-1.5.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bytes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/cc-1.0.83/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/cc-1.0.83/BUILD.bazel
deleted file mode 100644
index f15997a..0000000
--- a/examples/crate_universe/vendor_local_manifests/crates/cc-1.0.83/BUILD.bazel
+++ /dev/null
@@ -1,152 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//vendor_local_manifests:crates_vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
-    name = "cc",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=cc",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    target_compatible_with = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [],
-        "@rules_rust//rust/platform:aarch64-linux-android": [],
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:i686-apple-darwin": [],
-        "@rules_rust//rust/platform:i686-linux-android": [],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
-        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
-        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
-        "@rules_rust//rust/platform:wasm32-wasi": [],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [],
-        "@rules_rust//rust/platform:x86_64-linux-android": [],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-none": [],
-        "//conditions:default": ["@platforms//:incompatible"],
-    }),
-    version = "1.0.83",
-    deps = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-linux-android": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-apple-darwin": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-linux-android": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-linux-android": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
-            "//vendor_local_manifests/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "//conditions:default": [],
-    }),
-)
diff --git a/examples/crate_universe/vendor_local_manifests/crates/hermit-abi-0.3.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/cc-1.0.86/BUILD.bazel
similarity index 93%
copy from examples/crate_universe/vendor_local_manifests/crates/hermit-abi-0.3.5/BUILD.bazel
copy to examples/crate_universe/vendor_local_manifests/crates/cc-1.0.86/BUILD.bazel
index f91a858..834db3a 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/hermit-abi-0.3.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/cc-1.0.86/BUILD.bazel
@@ -11,10 +11,14 @@
 package(default_visibility = ["//visibility:public"])
 
 rust_library(
-    name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    name = "cc",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -25,13 +29,13 @@
         ],
     ),
     crate_root = "src/lib.rs",
-    edition = "2021",
+    edition = "2018",
     rustc_flags = [
         "--cap-lints=allow",
     ],
     tags = [
         "cargo-bazel",
-        "crate-name=hermit-abi",
+        "crate-name=cc",
         "manual",
         "noclippy",
         "norustfmt",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.3.5",
+    version = "1.0.86",
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/cfg-if-1.0.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/cfg-if-1.0.0/BUILD.bazel
index fe0cdd5..e61026e 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/cfg-if-1.0.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/cfg-if-1.0.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/defs.bzl b/examples/crate_universe/vendor_local_manifests/crates/defs.bzl
index cf21773..c4f0e08 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/defs.bzl
+++ b/examples/crate_universe/vendor_local_manifests/crates/defs.bzl
@@ -293,7 +293,7 @@
 _NORMAL_DEPENDENCIES = {
     "vendor_local_manifests": {
         _COMMON_CONDITION: {
-            "tokio": "//vendor_local_manifests/crates/tokio-1.36.0:tokio",
+            "tokio": Label("//vendor_local_manifests/crates/tokio-1.36.0:tokio"),
         },
     },
 }
@@ -308,8 +308,8 @@
 _NORMAL_DEV_DEPENDENCIES = {
     "vendor_local_manifests": {
         _COMMON_CONDITION: {
-            "tempfile": "//vendor_local_manifests/crates/tempfile-3.10.0:tempfile",
-            "tokio-test": "//vendor_local_manifests/crates/tokio-test-0.4.3:tokio_test",
+            "tempfile": Label("//vendor_local_manifests/crates/tempfile-3.10.0:tempfile"),
+            "tokio-test": Label("//vendor_local_manifests/crates/tokio-test-0.4.3:tokio_test"),
         },
     },
 }
diff --git a/examples/crate_universe/vendor_local_manifests/crates/errno-0.3.8/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/errno-0.3.8/BUILD.bazel
index 0b4114d..2cb40ca 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/errno-0.3.8/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/errno-0.3.8/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "errno",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/fastrand-2.0.1/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/fastrand-2.0.1/BUILD.bazel
index 063b336..d454d63 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/fastrand-2.0.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/fastrand-2.0.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fastrand",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/futures-core-0.3.30/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/futures-core-0.3.30/BUILD.bazel
index 138cb3d..39310dd 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/futures-core-0.3.30/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/futures-core-0.3.30/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/gimli-0.28.1/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/gimli-0.28.1/BUILD.bazel
index f765859..a8f6803 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/gimli-0.28.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/gimli-0.28.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gimli",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/hermit-abi-0.3.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/hermit-abi-0.3.6/BUILD.bazel
similarity index 95%
rename from examples/crate_universe/vendor_local_manifests/crates/hermit-abi-0.3.5/BUILD.bazel
rename to examples/crate_universe/vendor_local_manifests/crates/hermit-abi-0.3.6/BUILD.bazel
index f91a858..fdf6d4d 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/hermit-abi-0.3.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/hermit-abi-0.3.6/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.3.5",
+    version = "0.3.6",
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/libc-0.2.153/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/libc-0.2.153/BUILD.bazel
index 19e5261..95c03ad 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/libc-0.2.153/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/libc-0.2.153/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -141,8 +145,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -207,6 +214,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -233,6 +241,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/linux-raw-sys-0.4.13/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/linux-raw-sys-0.4.13/BUILD.bazel
index d527327..3bcab5a 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/linux-raw-sys-0.4.13/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/linux-raw-sys-0.4.13/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "linux_raw_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/lock_api-0.4.11/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/lock_api-0.4.11/BUILD.bazel
index dba89d0..642102c 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/lock_api-0.4.11/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/lock_api-0.4.11/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "lock_api",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "lock_api_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "lock_api_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "atomic_usize",
         "default",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -125,6 +133,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":lock_api_build_script",
+    actual = ":lock_api_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/memchr-2.7.1/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/memchr-2.7.1/BUILD.bazel
index 6d9cf9a..907930c 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/memchr-2.7.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/memchr-2.7.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "memchr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/miniz_oxide-0.7.2/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/miniz_oxide-0.7.2/BUILD.bazel
index 285fa10..51b7be7 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/miniz_oxide-0.7.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/miniz_oxide-0.7.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "miniz_oxide",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/mio-0.8.10/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/mio-0.8.10/BUILD.bazel
index e48db09..a779ad1 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/mio-0.8.10/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/mio-0.8.10/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/num_cpus-1.16.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/num_cpus-1.16.0/BUILD.bazel
index 92b4abe..a4871ed 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/num_cpus-1.16.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/num_cpus-1.16.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_cpus",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/object-0.32.2/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/object-0.32.2/BUILD.bazel
index a4c5805..09e4e02 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/object-0.32.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/object-0.32.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "object",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/parking_lot-0.12.1/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/parking_lot-0.12.1/BUILD.bazel
index 3737824..497aabe 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/parking_lot-0.12.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/parking_lot-0.12.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "parking_lot",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/parking_lot_core-0.9.9/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/parking_lot_core-0.9.9/BUILD.bazel
index 4bc1d54..05ab5ec 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/parking_lot_core-0.9.9/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/parking_lot_core-0.9.9/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "parking_lot_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -166,12 +170,16 @@
 )
 
 cargo_build_script(
-    name = "parking_lot_core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "parking_lot_core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -198,6 +206,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":parking_lot_core_build_script",
+    actual = ":parking_lot_core_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/pin-project-lite-0.2.13/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/pin-project-lite-0.2.13/BUILD.bazel
index b28d2d7..5eb07ac 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/pin-project-lite-0.2.13/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/pin-project-lite-0.2.13/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_project_lite",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/proc-macro2-1.0.78/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/proc-macro2-1.0.78/BUILD.bazel
index aeb4754..254c971 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/proc-macro2-1.0.78/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/proc-macro2-1.0.78/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "proc-macro2_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro2_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro2_build_script",
+    actual = ":proc-macro2_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/quote-1.0.35/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/quote-1.0.35/BUILD.bazel
index b808176..eb9d6bf 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/quote-1.0.35/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/quote-1.0.35/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/redox_syscall-0.4.1/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/redox_syscall-0.4.1/BUILD.bazel
index 95b488d..10a1b36 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/redox_syscall-0.4.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/redox_syscall-0.4.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syscall",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/rustc-demangle-0.1.23/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/rustc-demangle-0.1.23/BUILD.bazel
index 5eb7af4..086b88e 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/rustc-demangle-0.1.23/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/rustc-demangle-0.1.23/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rustc_demangle",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/rustix-0.38.31/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/rustix-0.38.31/BUILD.bazel
index b9b6691..fe982c5 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/rustix-0.38.31/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/rustix-0.38.31/BUILD.bazel
@@ -13,7 +13,10 @@
 
 rust_library(
     name = "rustix",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     aliases = select({
         "@rules_rust//rust/platform:aarch64-apple-darwin": {
             "//vendor_local_manifests/crates/errno-0.3.8:errno": "libc_errno",  # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = "linux", target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "riscv64", all(rustix_use_experimental_asm, target_arch = "powerpc64"), all(rustix_use_experimental_asm, target_arch = "mips"), all(rustix_use_experimental_asm, target_arch = "mips32r6"), all(rustix_use_experimental_asm, target_arch = "mips64"), all(rustix_use_experimental_asm, target_arch = "mips64r6"), target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64")))))))
@@ -100,6 +103,7 @@
     }),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -310,8 +314,11 @@
 )
 
 cargo_build_script(
-    name = "rustix_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rustix_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "alloc",
         "default",
@@ -323,6 +330,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -349,6 +357,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rustix_build_script",
+    actual = ":rustix_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/scopeguard-1.2.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/scopeguard-1.2.0/BUILD.bazel
index f36ea78..eb88d93 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/scopeguard-1.2.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/scopeguard-1.2.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "scopeguard",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/signal-hook-registry-1.4.1/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/signal-hook-registry-1.4.1/BUILD.bazel
index 45a50a7..b48dd67 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/signal-hook-registry-1.4.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/signal-hook-registry-1.4.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "signal_hook_registry",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/smallvec-1.13.1/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/smallvec-1.13.1/BUILD.bazel
index 5626afa..b459b07 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/smallvec-1.13.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/smallvec-1.13.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "smallvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/socket2-0.5.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/socket2-0.5.5/BUILD.bazel
index 35bc577..3795fe4 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/socket2-0.5.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/socket2-0.5.5/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "socket2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/syn-2.0.48/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/syn-2.0.50/BUILD.bazel
similarity index 96%
rename from examples/crate_universe/vendor_local_manifests/crates/syn-2.0.48/BUILD.bazel
rename to examples/crate_universe/vendor_local_manifests/crates/syn-2.0.50/BUILD.bazel
index 1175cea..e746a97 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/syn-2.0.48/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/syn-2.0.50/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -84,7 +88,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "2.0.48",
+    version = "2.0.50",
     deps = [
         "//vendor_local_manifests/crates/proc-macro2-1.0.78:proc_macro2",
         "//vendor_local_manifests/crates/quote-1.0.35:quote",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/tempfile-3.10.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/tempfile-3.10.0/BUILD.bazel
index dcd792f..85a2ebf 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/tempfile-3.10.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/tempfile-3.10.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tempfile",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/tokio-1.36.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/tokio-1.36.0/BUILD.bazel
index 37e3d9b..c0daac6 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/tokio-1.36.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/tokio-1.36.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/tokio-macros-2.2.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/tokio-macros-2.2.0/BUILD.bazel
index 20fecb3..3473533 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/tokio-macros-2.2.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/tokio-macros-2.2.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "tokio_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "//vendor_local_manifests/crates/proc-macro2-1.0.78:proc_macro2",
         "//vendor_local_manifests/crates/quote-1.0.35:quote",
-        "//vendor_local_manifests/crates/syn-2.0.48:syn",
+        "//vendor_local_manifests/crates/syn-2.0.50:syn",
     ],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/tokio-stream-0.1.14/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/tokio-stream-0.1.14/BUILD.bazel
index 6f5baf2..1e0257d 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/tokio-stream-0.1.14/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/tokio-stream-0.1.14/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_stream",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/tokio-test-0.4.3/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/tokio-test-0.4.3/BUILD.bazel
index 57f46c6..b2192fe 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/tokio-test-0.4.3/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/tokio-test-0.4.3/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_test",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/unicode-ident-1.0.12/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/unicode-ident-1.0.12/BUILD.bazel
index 1faa2f6..f363225 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/unicode-ident-1.0.12/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/unicode-ident-1.0.12/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_ident",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/wasi-0.11.0+wasi-snapshot-preview1/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/wasi-0.11.0+wasi-snapshot-preview1/BUILD.bazel
index ed1c874..154cea6 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/wasi-0.11.0+wasi-snapshot-preview1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/wasi-0.11.0+wasi-snapshot-preview1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows-sys-0.48.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows-sys-0.48.0/BUILD.bazel
index 2b84a04..6c3f69c 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows-sys-0.48.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows-sys-0.48.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows-sys-0.52.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows-sys-0.52.0/BUILD.bazel
index bc46698..266188a 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows-sys-0.52.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows-sys-0.52.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -82,6 +86,6 @@
     }),
     version = "0.52.0",
     deps = [
-        "//vendor_local_manifests/crates/windows-targets-0.52.0:windows_targets",
+        "//vendor_local_manifests/crates/windows-targets-0.52.3:windows_targets",
     ],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows-targets-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows-targets-0.48.5/BUILD.bazel
index fd9cee3..cfe7118 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows-targets-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows-targets-0.48.5/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows-targets-0.52.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows-targets-0.52.3/BUILD.bazel
similarity index 89%
rename from examples/crate_universe/vendor_local_manifests/crates/windows-targets-0.52.0/BUILD.bazel
rename to examples/crate_universe/vendor_local_manifests/crates/windows-targets-0.52.3/BUILD.bazel
index d84efef..2e47468 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows-targets-0.52.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows-targets-0.52.3/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,25 +77,25 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = select({
         "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
-            "//vendor_local_manifests/crates/windows_aarch64_msvc-0.52.0:windows_aarch64_msvc",  # cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
+            "//vendor_local_manifests/crates/windows_aarch64_msvc-0.52.3:windows_aarch64_msvc",  # cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:i686-pc-windows-msvc": [
-            "//vendor_local_manifests/crates/windows_i686_msvc-0.52.0:windows_i686_msvc",  # cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
+            "//vendor_local_manifests/crates/windows_i686_msvc-0.52.3:windows_i686_msvc",  # cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
-            "//vendor_local_manifests/crates/windows_i686_gnu-0.52.0:windows_i686_gnu",  # cfg(all(target_arch = "x86", target_env = "gnu", not(windows_raw_dylib)))
+            "//vendor_local_manifests/crates/windows_i686_gnu-0.52.3:windows_i686_gnu",  # cfg(all(target_arch = "x86", target_env = "gnu", not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
-            "//vendor_local_manifests/crates/windows_x86_64_msvc-0.52.0:windows_x86_64_msvc",  # cfg(all(target_arch = "x86_64", target_env = "msvc", not(windows_raw_dylib)))
+            "//vendor_local_manifests/crates/windows_x86_64_msvc-0.52.3:windows_x86_64_msvc",  # cfg(all(target_arch = "x86_64", target_env = "msvc", not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
-            "//vendor_local_manifests/crates/windows_x86_64_gnu-0.52.0:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
+            "//vendor_local_manifests/crates/windows_x86_64_gnu-0.52.3:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
-            "//vendor_local_manifests/crates/windows_x86_64_gnu-0.52.0:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
+            "//vendor_local_manifests/crates/windows_x86_64_gnu-0.52.3:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
         ],
         "//conditions:default": [],
     }),
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_gnullvm-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_gnullvm-0.48.5/BUILD.bazel
index 13eaad2..87bda40 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_gnullvm-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_gnullvm-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_gnullvm-0.52.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_gnullvm-0.52.3/BUILD.bazel
similarity index 91%
rename from examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_gnullvm-0.52.0/BUILD.bazel
rename to examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_gnullvm-0.52.3/BUILD.bazel
index e0ef402..3f64ccc 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_gnullvm-0.52.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_gnullvm-0.52.3/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "//vendor_local_manifests/crates/windows_aarch64_gnullvm-0.52.0:build_script_build",
+        "//vendor_local_manifests/crates/windows_aarch64_gnullvm-0.52.3:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_msvc-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_msvc-0.48.5/BUILD.bazel
index d89a323..626d76f 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_msvc-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_msvc-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_msvc-0.52.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_msvc-0.52.3/BUILD.bazel
similarity index 91%
rename from examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_msvc-0.52.0/BUILD.bazel
rename to examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_msvc-0.52.3/BUILD.bazel
index be6186b..fc88b1e 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_msvc-0.52.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_aarch64_msvc-0.52.3/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "//vendor_local_manifests/crates/windows_aarch64_msvc-0.52.0:build_script_build",
+        "//vendor_local_manifests/crates/windows_aarch64_msvc-0.52.3:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_i686_gnu-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_i686_gnu-0.48.5/BUILD.bazel
index 508126f..e8b0b40 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_i686_gnu-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_i686_gnu-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_i686_gnu-0.52.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_i686_gnu-0.52.3/BUILD.bazel
similarity index 90%
rename from examples/crate_universe/vendor_local_manifests/crates/windows_i686_gnu-0.52.0/BUILD.bazel
rename to examples/crate_universe/vendor_local_manifests/crates/windows_i686_gnu-0.52.3/BUILD.bazel
index 2285c24..9ca67c7 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_i686_gnu-0.52.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_i686_gnu-0.52.3/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "//vendor_local_manifests/crates/windows_i686_gnu-0.52.0:build_script_build",
+        "//vendor_local_manifests/crates/windows_i686_gnu-0.52.3:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_i686_msvc-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_i686_msvc-0.48.5/BUILD.bazel
index 8d7db4a..d4558ca 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_i686_msvc-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_i686_msvc-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_i686_msvc-0.52.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_i686_msvc-0.52.3/BUILD.bazel
similarity index 91%
rename from examples/crate_universe/vendor_local_manifests/crates/windows_i686_msvc-0.52.0/BUILD.bazel
rename to examples/crate_universe/vendor_local_manifests/crates/windows_i686_msvc-0.52.3/BUILD.bazel
index 1b7d565..d29e369 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_i686_msvc-0.52.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_i686_msvc-0.52.3/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "//vendor_local_manifests/crates/windows_i686_msvc-0.52.0:build_script_build",
+        "//vendor_local_manifests/crates/windows_i686_msvc-0.52.3:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnu-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnu-0.48.5/BUILD.bazel
index e870ea0..023ff3a 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnu-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnu-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnu-0.52.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnu-0.52.3/BUILD.bazel
similarity index 91%
rename from examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnu-0.52.0/BUILD.bazel
rename to examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnu-0.52.3/BUILD.bazel
index 123f3bf..2e162f5 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnu-0.52.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnu-0.52.3/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "//vendor_local_manifests/crates/windows_x86_64_gnu-0.52.0:build_script_build",
+        "//vendor_local_manifests/crates/windows_x86_64_gnu-0.52.3:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnullvm-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnullvm-0.48.5/BUILD.bazel
index 9e69142..31ce5bb 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnullvm-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnullvm-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnullvm-0.52.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnullvm-0.52.3/BUILD.bazel
similarity index 91%
rename from examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnullvm-0.52.0/BUILD.bazel
rename to examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnullvm-0.52.3/BUILD.bazel
index e6f0718..9218e5e 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnullvm-0.52.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_gnullvm-0.52.3/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "//vendor_local_manifests/crates/windows_x86_64_gnullvm-0.52.0:build_script_build",
+        "//vendor_local_manifests/crates/windows_x86_64_gnullvm-0.52.3:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_msvc-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_msvc-0.48.5/BUILD.bazel
index 1f766bf..f84ab7f 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_msvc-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_msvc-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_msvc-0.52.0/BUILD.bazel b/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_msvc-0.52.3/BUILD.bazel
similarity index 91%
rename from examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_msvc-0.52.0/BUILD.bazel
rename to examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_msvc-0.52.3/BUILD.bazel
index f234bfc..289348c 100644
--- a/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_msvc-0.52.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_manifests/crates/windows_x86_64_msvc-0.52.3/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "//vendor_local_manifests/crates/windows_x86_64_msvc-0.52.0:build_script_build",
+        "//vendor_local_manifests/crates/windows_x86_64_msvc-0.52.3:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/BUILD.bazel
index 8173a5b..e86b781 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/BUILD.bazel
@@ -12,15 +12,21 @@
     [
         "cargo-bazel.json",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
@@ -44,7 +50,7 @@
 
 alias(
     name = "serde_json",
-    actual = "//vendor_local_pkgs/crates/serde_json-1.0.113:serde_json",
+    actual = "//vendor_local_pkgs/crates/serde_json-1.0.114:serde_json",
     tags = ["manual"],
 )
 
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/addr2line-0.21.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/addr2line-0.21.0/BUILD.bazel
index 6047bdc..2bd9017 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/addr2line-0.21.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/addr2line-0.21.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "addr2line",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/adler-1.0.2/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/adler-1.0.2/BUILD.bazel
index 7d669f0..cc3a32d 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/adler-1.0.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/adler-1.0.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "adler",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/async-trait-0.1.77/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/async-trait-0.1.77/BUILD.bazel
index 6f694a3..2f7c73e 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/async-trait-0.1.77/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/async-trait-0.1.77/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_proc_macro(
     name = "async_trait",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -79,17 +83,21 @@
         "//vendor_local_pkgs/crates/async-trait-0.1.77:build_script_build",
         "//vendor_local_pkgs/crates/proc-macro2-1.0.78:proc_macro2",
         "//vendor_local_pkgs/crates/quote-1.0.35:quote",
-        "//vendor_local_pkgs/crates/syn-2.0.48:syn",
+        "//vendor_local_pkgs/crates/syn-2.0.50:syn",
     ],
 )
 
 cargo_build_script(
-    name = "async-trait_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "async-trait_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -116,6 +124,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":async-trait_build_script",
+    actual = ":async-trait_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/autocfg-1.1.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/autocfg-1.1.0/BUILD.bazel
index db834fc..edbf159 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/autocfg-1.1.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/autocfg-1.1.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "autocfg",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/axum-0.4.8/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/axum-0.4.8/BUILD.bazel
index 4c87a82..2309f01 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/axum-0.4.8/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/axum-0.4.8/BUILD.bazel
@@ -12,12 +12,16 @@
 
 rust_library(
     name = "axum",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = [
             "**",
             "**/*.md",
         ],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -100,8 +104,8 @@
         "//vendor_local_pkgs/crates/mime-0.3.17:mime",
         "//vendor_local_pkgs/crates/percent-encoding-2.3.1:percent_encoding",
         "//vendor_local_pkgs/crates/pin-project-lite-0.2.13:pin_project_lite",
-        "//vendor_local_pkgs/crates/serde-1.0.196:serde",
-        "//vendor_local_pkgs/crates/serde_json-1.0.113:serde_json",
+        "//vendor_local_pkgs/crates/serde-1.0.197:serde",
+        "//vendor_local_pkgs/crates/serde_json-1.0.114:serde_json",
         "//vendor_local_pkgs/crates/serde_urlencoded-0.7.1:serde_urlencoded",
         "//vendor_local_pkgs/crates/sync_wrapper-0.1.2:sync_wrapper",
         "//vendor_local_pkgs/crates/tokio-1.36.0:tokio",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/axum-core-0.1.2/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/axum-core-0.1.2/BUILD.bazel
index 6aa71cc..8a0cc25 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/axum-core-0.1.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/axum-core-0.1.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "axum_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/backtrace-0.3.69/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/backtrace-0.3.69/BUILD.bazel
index e7dd26e..32a2ae5 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/backtrace-0.3.69/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/backtrace-0.3.69/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "backtrace",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -271,12 +275,16 @@
 )
 
 cargo_build_script(
-    name = "backtrace_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "backtrace_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -300,12 +308,12 @@
     version = "0.3.69",
     visibility = ["//visibility:private"],
     deps = [
-        "//vendor_local_pkgs/crates/cc-1.0.83:cc",
+        "//vendor_local_pkgs/crates/cc-1.0.86:cc",
     ],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":backtrace_build_script",
+    actual = ":backtrace_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/bitflags-1.3.2/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/bitflags-1.3.2/BUILD.bazel
index 2d02717..798d4d1 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/bitflags-1.3.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/bitflags-1.3.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/bytes-1.5.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/bytes-1.5.0/BUILD.bazel
index 6001b72..fc4a64b 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/bytes-1.5.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/bytes-1.5.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bytes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/cc-1.0.83/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/cc-1.0.83/BUILD.bazel
deleted file mode 100644
index 9758fff..0000000
--- a/examples/crate_universe/vendor_local_pkgs/crates/cc-1.0.83/BUILD.bazel
+++ /dev/null
@@ -1,152 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//vendor_local_pkgs:crates_vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
-    name = "cc",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=cc",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    target_compatible_with = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [],
-        "@rules_rust//rust/platform:aarch64-linux-android": [],
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:i686-apple-darwin": [],
-        "@rules_rust//rust/platform:i686-linux-android": [],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
-        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
-        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
-        "@rules_rust//rust/platform:wasm32-wasi": [],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [],
-        "@rules_rust//rust/platform:x86_64-linux-android": [],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-none": [],
-        "//conditions:default": ["@platforms//:incompatible"],
-    }),
-    version = "1.0.83",
-    deps = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-linux-android": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-apple-darwin": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-linux-android": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-linux-android": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
-            "//vendor_local_pkgs/crates/libc-0.2.153:libc",  # cfg(unix)
-        ],
-        "//conditions:default": [],
-    }),
-)
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/ryu-1.0.16/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/cc-1.0.86/BUILD.bazel
similarity index 94%
copy from examples/crate_universe/vendor_local_pkgs/crates/ryu-1.0.16/BUILD.bazel
copy to examples/crate_universe/vendor_local_pkgs/crates/cc-1.0.86/BUILD.bazel
index d04425d..1f2fcbc 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/ryu-1.0.16/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/cc-1.0.86/BUILD.bazel
@@ -11,10 +11,14 @@
 package(default_visibility = ["//visibility:public"])
 
 rust_library(
-    name = "ryu",
-    srcs = glob(["**/*.rs"]),
+    name = "cc",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -31,7 +35,7 @@
     ],
     tags = [
         "cargo-bazel",
-        "crate-name=ryu",
+        "crate-name=cc",
         "manual",
         "noclippy",
         "norustfmt",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.16",
+    version = "1.0.86",
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/cfg-if-1.0.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/cfg-if-1.0.0/BUILD.bazel
index f942e4a..86594c4 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/cfg-if-1.0.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/cfg-if-1.0.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/defs.bzl b/examples/crate_universe/vendor_local_pkgs/crates/defs.bzl
index 49c508e..bcacd82 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/defs.bzl
+++ b/examples/crate_universe/vendor_local_pkgs/crates/defs.bzl
@@ -293,16 +293,16 @@
 _NORMAL_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "axum": "//vendor_local_pkgs/crates/axum-0.4.8:axum",
-            "hyper": "//vendor_local_pkgs/crates/hyper-0.14.28:hyper",
-            "mime": "//vendor_local_pkgs/crates/mime-0.3.17:mime",
-            "serde_json": "//vendor_local_pkgs/crates/serde_json-1.0.113:serde_json",
-            "socket2": "//vendor_local_pkgs/crates/socket2-0.4.10:socket2",
-            "tokio": "//vendor_local_pkgs/crates/tokio-1.36.0:tokio",
-            "tower": "//vendor_local_pkgs/crates/tower-0.4.13:tower",
-            "tower-http": "//vendor_local_pkgs/crates/tower-http-0.2.5:tower_http",
-            "tracing": "//vendor_local_pkgs/crates/tracing-0.1.40:tracing",
-            "tracing-subscriber": "//vendor_local_pkgs/crates/tracing-subscriber-0.3.18:tracing_subscriber",
+            "axum": Label("//vendor_local_pkgs/crates/axum-0.4.8:axum"),
+            "hyper": Label("//vendor_local_pkgs/crates/hyper-0.14.28:hyper"),
+            "mime": Label("//vendor_local_pkgs/crates/mime-0.3.17:mime"),
+            "serde_json": Label("//vendor_local_pkgs/crates/serde_json-1.0.114:serde_json"),
+            "socket2": Label("//vendor_local_pkgs/crates/socket2-0.4.10:socket2"),
+            "tokio": Label("//vendor_local_pkgs/crates/tokio-1.36.0:tokio"),
+            "tower": Label("//vendor_local_pkgs/crates/tower-0.4.13:tower"),
+            "tower-http": Label("//vendor_local_pkgs/crates/tower-http-0.2.5:tower_http"),
+            "tracing": Label("//vendor_local_pkgs/crates/tracing-0.1.40:tracing"),
+            "tracing-subscriber": Label("//vendor_local_pkgs/crates/tracing-subscriber-0.3.18:tracing_subscriber"),
         },
     },
 }
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/equivalent-1.0.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/equivalent-1.0.1/BUILD.bazel
index f881a63..260508a 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/equivalent-1.0.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/equivalent-1.0.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "equivalent",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/fnv-1.0.7/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/fnv-1.0.7/BUILD.bazel
index 81e170a..ade9637 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/fnv-1.0.7/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/fnv-1.0.7/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fnv",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/form_urlencoded-1.2.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/form_urlencoded-1.2.1/BUILD.bazel
index 4b428dd..ba4e70b 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/form_urlencoded-1.2.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/form_urlencoded-1.2.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "form_urlencoded",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/futures-channel-0.3.30/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/futures-channel-0.3.30/BUILD.bazel
index f81c29f..05512be 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/futures-channel-0.3.30/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/futures-channel-0.3.30/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_channel",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/futures-core-0.3.30/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/futures-core-0.3.30/BUILD.bazel
index e6a7cf2..3344a97 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/futures-core-0.3.30/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/futures-core-0.3.30/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/futures-sink-0.3.30/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/futures-sink-0.3.30/BUILD.bazel
index 5b4de8c..9790f35 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/futures-sink-0.3.30/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/futures-sink-0.3.30/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_sink",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/futures-task-0.3.30/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/futures-task-0.3.30/BUILD.bazel
index 4d3df05..a49d647 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/futures-task-0.3.30/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/futures-task-0.3.30/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_task",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/futures-util-0.3.30/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/futures-util-0.3.30/BUILD.bazel
index 7f3f82d..5546514 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/futures-util-0.3.30/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/futures-util-0.3.30/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/gimli-0.28.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/gimli-0.28.1/BUILD.bazel
index a28b81c..86a7319 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/gimli-0.28.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/gimli-0.28.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gimli",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/h2-0.3.24/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/h2-0.3.24/BUILD.bazel
index 93cf7fb..d2d2afd 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/h2-0.3.24/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/h2-0.3.24/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "h2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/hashbrown-0.14.3/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/hashbrown-0.14.3/BUILD.bazel
index 81c6b41..92e22f1 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/hashbrown-0.14.3/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/hashbrown-0.14.3/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hashbrown",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/hermit-abi-0.3.5/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/hermit-abi-0.3.6/BUILD.bazel
similarity index 95%
rename from examples/crate_universe/vendor_local_pkgs/crates/hermit-abi-0.3.5/BUILD.bazel
rename to examples/crate_universe/vendor_local_pkgs/crates/hermit-abi-0.3.6/BUILD.bazel
index 9b7fb48..d76cec5 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/hermit-abi-0.3.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/hermit-abi-0.3.6/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.3.5",
+    version = "0.3.6",
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/http-0.2.11/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/http-0.2.11/BUILD.bazel
index 5742689..852c6e4 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/http-0.2.11/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/http-0.2.11/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "http",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/http-body-0.4.6/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/http-body-0.4.6/BUILD.bazel
index df5c0f7..a6b7ef5 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/http-body-0.4.6/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/http-body-0.4.6/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "http_body",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/http-range-header-0.3.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/http-range-header-0.3.1/BUILD.bazel
index fb90e5f..6ca7c8c 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/http-range-header-0.3.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/http-range-header-0.3.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "http_range_header",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/httparse-1.8.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/httparse-1.8.0/BUILD.bazel
index c832f62..08a455c 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/httparse-1.8.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/httparse-1.8.0/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "httparse",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "httparse_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "httparse_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":httparse_build_script",
+    actual = ":httparse_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/httpdate-1.0.3/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/httpdate-1.0.3/BUILD.bazel
index 6f303d3..5f4756a 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/httpdate-1.0.3/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/httpdate-1.0.3/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "httpdate",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/hyper-0.14.28/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/hyper-0.14.28/BUILD.bazel
index 69bc37e..f4fba56 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/hyper-0.14.28/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/hyper-0.14.28/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hyper",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/indexmap-2.2.3/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/indexmap-2.2.3/BUILD.bazel
index c55adc7..8378c01 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/indexmap-2.2.3/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/indexmap-2.2.3/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "indexmap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/itoa-1.0.10/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/itoa-1.0.10/BUILD.bazel
index 54830d7..50537d5 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/itoa-1.0.10/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/itoa-1.0.10/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "itoa",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/lazy_static-1.4.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/lazy_static-1.4.0/BUILD.bazel
index 59d1d89..9e07c7c 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/lazy_static-1.4.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/lazy_static-1.4.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "lazy_static",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/libc-0.2.153/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/libc-0.2.153/BUILD.bazel
index 52642ba..37701cd 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/libc-0.2.153/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/libc-0.2.153/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/lock_api-0.4.11/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/lock_api-0.4.11/BUILD.bazel
index dfdeb0b..721b102 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/lock_api-0.4.11/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/lock_api-0.4.11/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "lock_api",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "lock_api_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "lock_api_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "atomic_usize",
         "default",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -125,6 +133,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":lock_api_build_script",
+    actual = ":lock_api_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/log-0.4.20/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/log-0.4.20/BUILD.bazel
index 15aa078..f912e51 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/log-0.4.20/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/log-0.4.20/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/matchit-0.4.6/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/matchit-0.4.6/BUILD.bazel
index 9dc4dec..fa45fea 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/matchit-0.4.6/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/matchit-0.4.6/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "matchit",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/memchr-2.7.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/memchr-2.7.1/BUILD.bazel
index 66ff9c2..71d7301 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/memchr-2.7.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/memchr-2.7.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "memchr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/mime-0.3.17/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/mime-0.3.17/BUILD.bazel
index 662eac7..2a4a0b3 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/mime-0.3.17/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/mime-0.3.17/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mime",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/miniz_oxide-0.7.2/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/miniz_oxide-0.7.2/BUILD.bazel
index e61cc1e..e919654 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/miniz_oxide-0.7.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/miniz_oxide-0.7.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "miniz_oxide",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/mio-0.8.10/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/mio-0.8.10/BUILD.bazel
index 5e9d495..90833a9 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/mio-0.8.10/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/mio-0.8.10/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/nu-ansi-term-0.46.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/nu-ansi-term-0.46.0/BUILD.bazel
index 0f0351f..923b8a0 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/nu-ansi-term-0.46.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/nu-ansi-term-0.46.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "nu_ansi_term",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/num_cpus-1.16.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/num_cpus-1.16.0/BUILD.bazel
index 442d853..71da6aa 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/num_cpus-1.16.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/num_cpus-1.16.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_cpus",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/object-0.32.2/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/object-0.32.2/BUILD.bazel
index 28eed94..d6cfc73 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/object-0.32.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/object-0.32.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "object",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/once_cell-1.19.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/once_cell-1.19.0/BUILD.bazel
index fc64ea1..25a93dd 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/once_cell-1.19.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/once_cell-1.19.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "once_cell",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/overload-0.1.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/overload-0.1.1/BUILD.bazel
index b502896..54a09c0 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/overload-0.1.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/overload-0.1.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "overload",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/parking_lot-0.12.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/parking_lot-0.12.1/BUILD.bazel
index 17bb1c6..c0cb777 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/parking_lot-0.12.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/parking_lot-0.12.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "parking_lot",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/parking_lot_core-0.9.9/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/parking_lot_core-0.9.9/BUILD.bazel
index a94a3fa..076c84d 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/parking_lot_core-0.9.9/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/parking_lot_core-0.9.9/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "parking_lot_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -166,12 +170,16 @@
 )
 
 cargo_build_script(
-    name = "parking_lot_core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "parking_lot_core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -198,6 +206,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":parking_lot_core_build_script",
+    actual = ":parking_lot_core_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/percent-encoding-2.3.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/percent-encoding-2.3.1/BUILD.bazel
index 994c6e7..99dcb84 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/percent-encoding-2.3.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/percent-encoding-2.3.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "percent_encoding",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/pin-project-1.1.4/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/pin-project-1.1.4/BUILD.bazel
index da3521a..e9bbc37 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/pin-project-1.1.4/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/pin-project-1.1.4/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_project",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/pin-project-internal-1.1.4/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/pin-project-internal-1.1.4/BUILD.bazel
index e352aa8..618f88e 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/pin-project-internal-1.1.4/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/pin-project-internal-1.1.4/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "pin_project_internal",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "//vendor_local_pkgs/crates/proc-macro2-1.0.78:proc_macro2",
         "//vendor_local_pkgs/crates/quote-1.0.35:quote",
-        "//vendor_local_pkgs/crates/syn-2.0.48:syn",
+        "//vendor_local_pkgs/crates/syn-2.0.50:syn",
     ],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/pin-project-lite-0.2.13/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/pin-project-lite-0.2.13/BUILD.bazel
index 0fe8a88..81b5933 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/pin-project-lite-0.2.13/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/pin-project-lite-0.2.13/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_project_lite",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/pin-utils-0.1.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/pin-utils-0.1.0/BUILD.bazel
index 3039155..cda6ab4 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/pin-utils-0.1.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/pin-utils-0.1.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_utils",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/proc-macro2-1.0.78/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/proc-macro2-1.0.78/BUILD.bazel
index edcc2a8..73b8ed1 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/proc-macro2-1.0.78/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/proc-macro2-1.0.78/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "proc-macro2_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro2_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro2_build_script",
+    actual = ":proc-macro2_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/quote-1.0.35/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/quote-1.0.35/BUILD.bazel
index e0c873d..19d5c6e 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/quote-1.0.35/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/quote-1.0.35/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/redox_syscall-0.4.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/redox_syscall-0.4.1/BUILD.bazel
index 7fec629..8323004 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/redox_syscall-0.4.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/redox_syscall-0.4.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syscall",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/rustc-demangle-0.1.23/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/rustc-demangle-0.1.23/BUILD.bazel
index 5c4036a..51df058 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/rustc-demangle-0.1.23/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/rustc-demangle-0.1.23/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rustc_demangle",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/ryu-1.0.16/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/ryu-1.0.17/BUILD.bazel
similarity index 95%
rename from examples/crate_universe/vendor_local_pkgs/crates/ryu-1.0.16/BUILD.bazel
rename to examples/crate_universe/vendor_local_pkgs/crates/ryu-1.0.17/BUILD.bazel
index d04425d..9e3a0ee 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/ryu-1.0.16/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/ryu-1.0.17/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ryu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.16",
+    version = "1.0.17",
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/scopeguard-1.2.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/scopeguard-1.2.0/BUILD.bazel
index 7826bdc..86f49a8 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/scopeguard-1.2.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/scopeguard-1.2.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "scopeguard",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/serde-1.0.196/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/serde-1.0.197/BUILD.bazel
similarity index 91%
rename from examples/crate_universe/vendor_local_pkgs/crates/serde-1.0.196/BUILD.bazel
rename to examples/crate_universe/vendor_local_pkgs/crates/serde-1.0.197/BUILD.bazel
index 54a2592..7988f26 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/serde-1.0.196/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/serde-1.0.197/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -78,15 +82,18 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.196",
+    version = "1.0.197",
     deps = [
-        "//vendor_local_pkgs/crates/serde-1.0.196:build_script_build",
+        "//vendor_local_pkgs/crates/serde-1.0.197:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "serde_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -115,12 +123,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "1.0.196",
+    version = "1.0.197",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":serde_build_script",
+    actual = ":serde_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/serde_derive-1.0.196/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/serde_derive-1.0.197/BUILD.bazel
similarity index 94%
rename from examples/crate_universe/vendor_local_pkgs/crates/serde_derive-1.0.196/BUILD.bazel
rename to examples/crate_universe/vendor_local_pkgs/crates/serde_derive-1.0.197/BUILD.bazel
index 5c89ce0..4c0409b 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/serde_derive-1.0.196/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/serde_derive-1.0.197/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "serde_derive",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,10 +77,10 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.196",
+    version = "1.0.197",
     deps = [
         "//vendor_local_pkgs/crates/proc-macro2-1.0.78:proc_macro2",
         "//vendor_local_pkgs/crates/quote-1.0.35:quote",
-        "//vendor_local_pkgs/crates/syn-2.0.48:syn",
+        "//vendor_local_pkgs/crates/syn-2.0.50:syn",
     ],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/serde_json-1.0.113/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/serde_json-1.0.114/BUILD.bazel
similarity index 89%
rename from examples/crate_universe/vendor_local_pkgs/crates/serde_json-1.0.113/BUILD.bazel
rename to examples/crate_universe/vendor_local_pkgs/crates/serde_json-1.0.114/BUILD.bazel
index fcdd963..7417385 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/serde_json-1.0.113/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/serde_json-1.0.114/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde_json",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -79,18 +83,21 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.113",
+    version = "1.0.114",
     deps = [
         "//vendor_local_pkgs/crates/itoa-1.0.10:itoa",
-        "//vendor_local_pkgs/crates/ryu-1.0.16:ryu",
-        "//vendor_local_pkgs/crates/serde-1.0.196:serde",
-        "//vendor_local_pkgs/crates/serde_json-1.0.113:build_script_build",
+        "//vendor_local_pkgs/crates/ryu-1.0.17:ryu",
+        "//vendor_local_pkgs/crates/serde-1.0.197:serde",
+        "//vendor_local_pkgs/crates/serde_json-1.0.114:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "serde_json_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_json_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "raw_value",
@@ -100,6 +107,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -120,12 +128,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "1.0.113",
+    version = "1.0.114",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":serde_json_build_script",
+    actual = ":serde_json_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/serde_urlencoded-0.7.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/serde_urlencoded-0.7.1/BUILD.bazel
index 8c9a7e3..e221b84 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/serde_urlencoded-0.7.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/serde_urlencoded-0.7.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "serde_urlencoded",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,7 +81,7 @@
     deps = [
         "//vendor_local_pkgs/crates/form_urlencoded-1.2.1:form_urlencoded",
         "//vendor_local_pkgs/crates/itoa-1.0.10:itoa",
-        "//vendor_local_pkgs/crates/ryu-1.0.16:ryu",
-        "//vendor_local_pkgs/crates/serde-1.0.196:serde",
+        "//vendor_local_pkgs/crates/ryu-1.0.17:ryu",
+        "//vendor_local_pkgs/crates/serde-1.0.197:serde",
     ],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/sharded-slab-0.1.7/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/sharded-slab-0.1.7/BUILD.bazel
index 37a8a6a..86c0423 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/sharded-slab-0.1.7/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/sharded-slab-0.1.7/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "sharded_slab",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/signal-hook-registry-1.4.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/signal-hook-registry-1.4.1/BUILD.bazel
index cffbcf1..8d58ab1 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/signal-hook-registry-1.4.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/signal-hook-registry-1.4.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "signal_hook_registry",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/slab-0.4.9/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/slab-0.4.9/BUILD.bazel
index c1a3b86..717655d 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/slab-0.4.9/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/slab-0.4.9/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "slab",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "slab_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "slab_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -124,6 +132,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":slab_build_script",
+    actual = ":slab_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/smallvec-1.13.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/smallvec-1.13.1/BUILD.bazel
index d941bc7..6627f1c 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/smallvec-1.13.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/smallvec-1.13.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "smallvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/socket2-0.4.10/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/socket2-0.4.10/BUILD.bazel
index f972608..92c627a 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/socket2-0.4.10/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/socket2-0.4.10/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "socket2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/socket2-0.5.5/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/socket2-0.5.5/BUILD.bazel
index 4fba886..4181011 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/socket2-0.5.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/socket2-0.5.5/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "socket2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/syn-2.0.48/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/syn-2.0.50/BUILD.bazel
similarity index 96%
rename from examples/crate_universe/vendor_local_pkgs/crates/syn-2.0.48/BUILD.bazel
rename to examples/crate_universe/vendor_local_pkgs/crates/syn-2.0.50/BUILD.bazel
index d7bbc9d..1e6bc5e 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/syn-2.0.48/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/syn-2.0.50/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,7 +89,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "2.0.48",
+    version = "2.0.50",
     deps = [
         "//vendor_local_pkgs/crates/proc-macro2-1.0.78:proc_macro2",
         "//vendor_local_pkgs/crates/quote-1.0.35:quote",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/sync_wrapper-0.1.2/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/sync_wrapper-0.1.2/BUILD.bazel
index 07f2e63..42b98ea 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/sync_wrapper-0.1.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/sync_wrapper-0.1.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "sync_wrapper",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/thread_local-1.1.7/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/thread_local-1.1.8/BUILD.bazel
similarity index 95%
rename from examples/crate_universe/vendor_local_pkgs/crates/thread_local-1.1.7/BUILD.bazel
rename to examples/crate_universe/vendor_local_pkgs/crates/thread_local-1.1.8/BUILD.bazel
index 28ccdf7..6737054 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/thread_local-1.1.7/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/thread_local-1.1.8/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "thread_local",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,7 +77,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.1.7",
+    version = "1.1.8",
     deps = [
         "//vendor_local_pkgs/crates/cfg-if-1.0.0:cfg_if",
         "//vendor_local_pkgs/crates/once_cell-1.19.0:once_cell",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/tokio-1.36.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/tokio-1.36.0/BUILD.bazel
index 92da768..e6147a2 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/tokio-1.36.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/tokio-1.36.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/tokio-macros-2.2.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/tokio-macros-2.2.0/BUILD.bazel
index 4a49fca..12cb275 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/tokio-macros-2.2.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/tokio-macros-2.2.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "tokio_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "//vendor_local_pkgs/crates/proc-macro2-1.0.78:proc_macro2",
         "//vendor_local_pkgs/crates/quote-1.0.35:quote",
-        "//vendor_local_pkgs/crates/syn-2.0.48:syn",
+        "//vendor_local_pkgs/crates/syn-2.0.50:syn",
     ],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/tokio-util-0.7.10/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/tokio-util-0.7.10/BUILD.bazel
index ef14988..bd6a9b6 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/tokio-util-0.7.10/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/tokio-util-0.7.10/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/tower-0.4.13/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/tower-0.4.13/BUILD.bazel
index 3834212..54af636 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/tower-0.4.13/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/tower-0.4.13/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/tower-http-0.2.5/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/tower-http-0.2.5/BUILD.bazel
index 053d44b..933f070 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/tower-http-0.2.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/tower-http-0.2.5/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower_http",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/tower-layer-0.3.2/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/tower-layer-0.3.2/BUILD.bazel
index 082b269..b40bddd 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/tower-layer-0.3.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/tower-layer-0.3.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower_layer",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/tower-service-0.3.2/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/tower-service-0.3.2/BUILD.bazel
index a7aaad7..c7f4f02 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/tower-service-0.3.2/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/tower-service-0.3.2/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower_service",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/tracing-0.1.40/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/tracing-0.1.40/BUILD.bazel
index c5e8a4d..eb78d32 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/tracing-0.1.40/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/tracing-0.1.40/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/tracing-attributes-0.1.27/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/tracing-attributes-0.1.27/BUILD.bazel
index 67dd5ca..a4910ea 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/tracing-attributes-0.1.27/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/tracing-attributes-0.1.27/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "tracing_attributes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "//vendor_local_pkgs/crates/proc-macro2-1.0.78:proc_macro2",
         "//vendor_local_pkgs/crates/quote-1.0.35:quote",
-        "//vendor_local_pkgs/crates/syn-2.0.48:syn",
+        "//vendor_local_pkgs/crates/syn-2.0.50:syn",
     ],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/tracing-core-0.1.32/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/tracing-core-0.1.32/BUILD.bazel
index 538f390..794073c 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/tracing-core-0.1.32/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/tracing-core-0.1.32/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/tracing-log-0.2.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/tracing-log-0.2.0/BUILD.bazel
index 66e59fb..c95080e 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/tracing-log-0.2.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/tracing-log-0.2.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/tracing-subscriber-0.3.18/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/tracing-subscriber-0.3.18/BUILD.bazel
index ad0cf5f..9268175 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/tracing-subscriber-0.3.18/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/tracing-subscriber-0.3.18/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_subscriber",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -91,7 +95,7 @@
         "//vendor_local_pkgs/crates/nu-ansi-term-0.46.0:nu_ansi_term",
         "//vendor_local_pkgs/crates/sharded-slab-0.1.7:sharded_slab",
         "//vendor_local_pkgs/crates/smallvec-1.13.1:smallvec",
-        "//vendor_local_pkgs/crates/thread_local-1.1.7:thread_local",
+        "//vendor_local_pkgs/crates/thread_local-1.1.8:thread_local",
         "//vendor_local_pkgs/crates/tracing-core-0.1.32:tracing_core",
         "//vendor_local_pkgs/crates/tracing-log-0.2.0:tracing_log",
     ],
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/try-lock-0.2.5/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/try-lock-0.2.5/BUILD.bazel
index 2e982a6..3fdfe65 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/try-lock-0.2.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/try-lock-0.2.5/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "try_lock",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/unicode-ident-1.0.12/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/unicode-ident-1.0.12/BUILD.bazel
index 36eaf23..71b876d 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/unicode-ident-1.0.12/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/unicode-ident-1.0.12/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_ident",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/valuable-0.1.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/valuable-0.1.0/BUILD.bazel
index 95c3c47..bf31f87 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/valuable-0.1.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/valuable-0.1.0/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "valuable",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "valuable_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "valuable_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":valuable_build_script",
+    actual = ":valuable_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/want-0.3.1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/want-0.3.1/BUILD.bazel
index 5786cc2..df65828 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/want-0.3.1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/want-0.3.1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "want",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/wasi-0.11.0+wasi-snapshot-preview1/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/wasi-0.11.0+wasi-snapshot-preview1/BUILD.bazel
index 233a6c2..f75804b 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/wasi-0.11.0+wasi-snapshot-preview1/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/wasi-0.11.0+wasi-snapshot-preview1/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/winapi-0.3.9/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/winapi-0.3.9/BUILD.bazel
index ec788f6..cc026ab 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/winapi-0.3.9/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/winapi-0.3.9/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -90,8 +94,11 @@
 )
 
 cargo_build_script(
-    name = "winapi_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "consoleapi",
         "errhandlingapi",
@@ -105,6 +112,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -131,6 +139,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi_build_script",
+    actual = ":winapi_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/winapi-i686-pc-windows-gnu-0.4.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/winapi-i686-pc-windows-gnu-0.4.0/BUILD.bazel
index b33426c..b34adb3 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/winapi-i686-pc-windows-gnu-0.4.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/winapi-i686-pc-windows-gnu-0.4.0/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_i686_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-i686-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-i686-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-i686-pc-windows-gnu_build_script",
+    actual = ":winapi-i686-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/winapi-x86_64-pc-windows-gnu-0.4.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/winapi-x86_64-pc-windows-gnu-0.4.0/BUILD.bazel
index 450366a..f8ad813 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/winapi-x86_64-pc-windows-gnu-0.4.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/winapi-x86_64-pc-windows-gnu-0.4.0/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_x86_64_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-x86_64-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-x86_64-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-x86_64-pc-windows-gnu_build_script",
+    actual = ":winapi-x86_64-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/windows-sys-0.48.0/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/windows-sys-0.48.0/BUILD.bazel
index 4e01685..8e56f00 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/windows-sys-0.48.0/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/windows-sys-0.48.0/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/windows-targets-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/windows-targets-0.48.5/BUILD.bazel
index f026067..b4ce0cc 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/windows-targets-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/windows-targets-0.48.5/BUILD.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/windows_aarch64_gnullvm-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/windows_aarch64_gnullvm-0.48.5/BUILD.bazel
index 914b392..a249cfb 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/windows_aarch64_gnullvm-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/windows_aarch64_gnullvm-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/windows_aarch64_msvc-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/windows_aarch64_msvc-0.48.5/BUILD.bazel
index c580c9f..eedf595 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/windows_aarch64_msvc-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/windows_aarch64_msvc-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/windows_i686_gnu-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/windows_i686_gnu-0.48.5/BUILD.bazel
index c7ce50b..1a785c6 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/windows_i686_gnu-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/windows_i686_gnu-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/windows_i686_msvc-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/windows_i686_msvc-0.48.5/BUILD.bazel
index b0dc0b6..0983018 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/windows_i686_msvc-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/windows_i686_msvc-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/windows_x86_64_gnu-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/windows_x86_64_gnu-0.48.5/BUILD.bazel
index d181094..3cdc60d 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/windows_x86_64_gnu-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/windows_x86_64_gnu-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/windows_x86_64_gnullvm-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/windows_x86_64_gnullvm-0.48.5/BUILD.bazel
index 2b6cbc1..d1ef414 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/windows_x86_64_gnullvm-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/windows_x86_64_gnullvm-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_local_pkgs/crates/windows_x86_64_msvc-0.48.5/BUILD.bazel b/examples/crate_universe/vendor_local_pkgs/crates/windows_x86_64_msvc-0.48.5/BUILD.bazel
index 4e8be7b..f9ec551 100644
--- a/examples/crate_universe/vendor_local_pkgs/crates/windows_x86_64_msvc-0.48.5/BUILD.bazel
+++ b/examples/crate_universe/vendor_local_pkgs/crates/windows_x86_64_msvc-0.48.5/BUILD.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.addr2line-0.21.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.addr2line-0.21.0.bazel
index 3989eb1..d54f6d1 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.addr2line-0.21.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.addr2line-0.21.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "addr2line",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.adler-1.0.2.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.adler-1.0.2.bazel
index 1d2f884..4f5128a 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.adler-1.0.2.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.adler-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "adler",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.async-stream-0.3.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.async-stream-0.3.5.bazel
index ce325a7..2422cc2 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.async-stream-0.3.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.async-stream-0.3.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "async_stream",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.async-stream-impl-0.3.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.async-stream-impl-0.3.5.bazel
index 8c5a335..7507c93 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.async-stream-impl-0.3.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.async-stream-impl-0.3.5.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "async_stream_impl",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "@cvm__proc-macro2-1.0.78//:proc_macro2",
         "@cvm__quote-1.0.35//:quote",
-        "@cvm__syn-2.0.48//:syn",
+        "@cvm__syn-2.0.50//:syn",
     ],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.autocfg-1.1.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.autocfg-1.1.0.bazel
index cbb72a5..90e4866 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.autocfg-1.1.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.autocfg-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "autocfg",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.backtrace-0.3.69.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.backtrace-0.3.69.bazel
index bdf2ea2..c5fc7b5 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.backtrace-0.3.69.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.backtrace-0.3.69.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "backtrace",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -271,12 +275,16 @@
 )
 
 cargo_build_script(
-    name = "backtrace_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "backtrace_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -300,12 +308,12 @@
     version = "0.3.69",
     visibility = ["//visibility:private"],
     deps = [
-        "@cvm__cc-1.0.83//:cc",
+        "@cvm__cc-1.0.86//:cc",
     ],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":backtrace_build_script",
+    actual = ":backtrace_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bazel
index 11a6db1..6f2eb74 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bitflags-1.3.2.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bitflags-1.3.2.bazel
index d34f956..210c6b7 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bitflags-1.3.2.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bitflags-1.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bitflags-2.4.2.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bitflags-2.4.2.bazel
index 3d1255a..99a67cf 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bitflags-2.4.2.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bitflags-2.4.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bytes-1.5.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bytes-1.5.0.bazel
index b9bae82..e3a7a14 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bytes-1.5.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.bytes-1.5.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bytes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.cc-1.0.83.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.cc-1.0.83.bazel
deleted file mode 100644
index 7a8b0e2..0000000
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.cc-1.0.83.bazel
+++ /dev/null
@@ -1,152 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//vendor_remote_manifests:crates_vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
-    name = "cc",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=cc",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    target_compatible_with = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [],
-        "@rules_rust//rust/platform:aarch64-linux-android": [],
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:i686-apple-darwin": [],
-        "@rules_rust//rust/platform:i686-linux-android": [],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
-        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
-        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
-        "@rules_rust//rust/platform:wasm32-wasi": [],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [],
-        "@rules_rust//rust/platform:x86_64-linux-android": [],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-none": [],
-        "//conditions:default": ["@platforms//:incompatible"],
-    }),
-    version = "1.0.83",
-    deps = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-linux-android": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-apple-darwin": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-linux-android": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-linux-android": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
-            "@cvm__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "//conditions:default": [],
-    }),
-)
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.cc-1.0.86.bazel
similarity index 93%
copy from examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel
copy to examples/crate_universe/vendor_remote_manifests/crates/BUILD.cc-1.0.86.bazel
index 805fd95..56f75e0 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.cc-1.0.86.bazel
@@ -11,10 +11,14 @@
 package(default_visibility = ["//visibility:public"])
 
 rust_library(
-    name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    name = "cc",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -25,13 +29,13 @@
         ],
     ),
     crate_root = "src/lib.rs",
-    edition = "2021",
+    edition = "2018",
     rustc_flags = [
         "--cap-lints=allow",
     ],
     tags = [
         "cargo-bazel",
-        "crate-name=hermit-abi",
+        "crate-name=cc",
         "manual",
         "noclippy",
         "norustfmt",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.3.5",
+    version = "1.0.86",
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.cfg-if-1.0.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.cfg-if-1.0.0.bazel
index 910db43..b409278 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.cfg-if-1.0.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.cfg-if-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.errno-0.3.8.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.errno-0.3.8.bazel
index 8ea3a3d..0513cdd 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.errno-0.3.8.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.errno-0.3.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "errno",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.fastrand-2.0.1.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.fastrand-2.0.1.bazel
index 9876b26..96c5ab2 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.fastrand-2.0.1.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.fastrand-2.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fastrand",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.futures-core-0.3.30.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.futures-core-0.3.30.bazel
index 07ac6a6..75e219b 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.futures-core-0.3.30.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.futures-core-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.gimli-0.28.1.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.gimli-0.28.1.bazel
index 118a999..c29ed33 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.gimli-0.28.1.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.gimli-0.28.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gimli",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.6.bazel
similarity index 95%
rename from examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel
rename to examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.6.bazel
index 805fd95..3bb8563 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.3.5",
+    version = "0.3.6",
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.libc-0.2.153.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.libc-0.2.153.bazel
index f7b40f0..df9271a 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.libc-0.2.153.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.libc-0.2.153.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -141,8 +145,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -207,6 +214,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -233,6 +241,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.linux-raw-sys-0.4.13.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.linux-raw-sys-0.4.13.bazel
index 7736b74..5547983 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.linux-raw-sys-0.4.13.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.linux-raw-sys-0.4.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "linux_raw_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.lock_api-0.4.11.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.lock_api-0.4.11.bazel
index 7bbd1c2..dcef582 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.lock_api-0.4.11.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.lock_api-0.4.11.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "lock_api",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "lock_api_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "lock_api_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "atomic_usize",
         "default",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -125,6 +133,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":lock_api_build_script",
+    actual = ":lock_api_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.memchr-2.7.1.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.memchr-2.7.1.bazel
index 660cbb2..3409930 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.memchr-2.7.1.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.memchr-2.7.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "memchr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.miniz_oxide-0.7.2.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.miniz_oxide-0.7.2.bazel
index 0dd0fd5..a634d5f 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.miniz_oxide-0.7.2.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.miniz_oxide-0.7.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "miniz_oxide",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.mio-0.8.10.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.mio-0.8.10.bazel
index a778b8a..d1949b6 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.mio-0.8.10.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.mio-0.8.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.num_cpus-1.16.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.num_cpus-1.16.0.bazel
index 68aa573..a70e84e 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.num_cpus-1.16.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.num_cpus-1.16.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_cpus",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.object-0.32.2.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.object-0.32.2.bazel
index 10ef864..991e427 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.object-0.32.2.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.object-0.32.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "object",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.parking_lot-0.12.1.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.parking_lot-0.12.1.bazel
index c65dade..9337578 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.parking_lot-0.12.1.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.parking_lot-0.12.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "parking_lot",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.parking_lot_core-0.9.9.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.parking_lot_core-0.9.9.bazel
index b2a31ce..7fd7dc7 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.parking_lot_core-0.9.9.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.parking_lot_core-0.9.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "parking_lot_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -166,12 +170,16 @@
 )
 
 cargo_build_script(
-    name = "parking_lot_core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "parking_lot_core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -198,6 +206,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":parking_lot_core_build_script",
+    actual = ":parking_lot_core_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.pin-project-lite-0.2.13.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.pin-project-lite-0.2.13.bazel
index a5d278c..d0f4749 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.pin-project-lite-0.2.13.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.pin-project-lite-0.2.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_project_lite",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.proc-macro2-1.0.78.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.proc-macro2-1.0.78.bazel
index 3ade945..cb4f492 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.proc-macro2-1.0.78.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.proc-macro2-1.0.78.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "proc-macro2_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro2_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro2_build_script",
+    actual = ":proc-macro2_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.quote-1.0.35.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.quote-1.0.35.bazel
index f6b56ab..05c6e39 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.quote-1.0.35.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.quote-1.0.35.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.redox_syscall-0.4.1.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.redox_syscall-0.4.1.bazel
index 9e1a962..98032fb 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.redox_syscall-0.4.1.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.redox_syscall-0.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syscall",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.rustc-demangle-0.1.23.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.rustc-demangle-0.1.23.bazel
index f919d07..e1ebd60 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.rustc-demangle-0.1.23.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.rustc-demangle-0.1.23.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rustc_demangle",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.rustix-0.38.31.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.rustix-0.38.31.bazel
index c32b718..bcbcb0f 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.rustix-0.38.31.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.rustix-0.38.31.bazel
@@ -13,7 +13,10 @@
 
 rust_library(
     name = "rustix",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     aliases = select({
         "@rules_rust//rust/platform:aarch64-apple-darwin": {
             "@cvm__errno-0.3.8//:errno": "libc_errno",  # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = "linux", target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "riscv64", all(rustix_use_experimental_asm, target_arch = "powerpc64"), all(rustix_use_experimental_asm, target_arch = "mips"), all(rustix_use_experimental_asm, target_arch = "mips32r6"), all(rustix_use_experimental_asm, target_arch = "mips64"), all(rustix_use_experimental_asm, target_arch = "mips64r6"), target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64")))))))
@@ -100,6 +103,7 @@
     }),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -310,8 +314,11 @@
 )
 
 cargo_build_script(
-    name = "rustix_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rustix_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "alloc",
         "default",
@@ -323,6 +330,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -349,6 +357,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rustix_build_script",
+    actual = ":rustix_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.scopeguard-1.2.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.scopeguard-1.2.0.bazel
index 6562668..9bb9e70 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.scopeguard-1.2.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.scopeguard-1.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "scopeguard",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.signal-hook-registry-1.4.1.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.signal-hook-registry-1.4.1.bazel
index 0897358..5a20cba 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.signal-hook-registry-1.4.1.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.signal-hook-registry-1.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "signal_hook_registry",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.smallvec-1.13.1.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.smallvec-1.13.1.bazel
index f3a4744..2629a45 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.smallvec-1.13.1.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.smallvec-1.13.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "smallvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.socket2-0.5.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.socket2-0.5.5.bazel
index 97e4778..79e2683 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.socket2-0.5.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.socket2-0.5.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "socket2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.syn-2.0.48.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.syn-2.0.50.bazel
similarity index 96%
rename from examples/crate_universe/vendor_remote_manifests/crates/BUILD.syn-2.0.48.bazel
rename to examples/crate_universe/vendor_remote_manifests/crates/BUILD.syn-2.0.50.bazel
index 46b7196..f16c82a 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.syn-2.0.48.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.syn-2.0.50.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -84,7 +88,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "2.0.48",
+    version = "2.0.50",
     deps = [
         "@cvm__proc-macro2-1.0.78//:proc_macro2",
         "@cvm__quote-1.0.35//:quote",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tempfile-3.10.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tempfile-3.10.0.bazel
index 080edb8..95a7a5b 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tempfile-3.10.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tempfile-3.10.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tempfile",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-1.36.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-1.36.0.bazel
index 584d980..acceea3 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-1.36.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-1.36.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-macros-2.2.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-macros-2.2.0.bazel
index 08392bc..7e602b4 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-macros-2.2.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-macros-2.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "tokio_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "@cvm__proc-macro2-1.0.78//:proc_macro2",
         "@cvm__quote-1.0.35//:quote",
-        "@cvm__syn-2.0.48//:syn",
+        "@cvm__syn-2.0.50//:syn",
     ],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-stream-0.1.14.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-stream-0.1.14.bazel
index fefcc8c..7dd2730 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-stream-0.1.14.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-stream-0.1.14.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_stream",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-test-0.4.3.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-test-0.4.3.bazel
index f5e0338..122270b 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-test-0.4.3.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.tokio-test-0.4.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_test",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.unicode-ident-1.0.12.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.unicode-ident-1.0.12.bazel
index 7c2ee3c..75b5b56 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.unicode-ident-1.0.12.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.unicode-ident-1.0.12.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_ident",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
index 2186fde..9d13188 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-sys-0.48.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-sys-0.48.0.bazel
index 90e305c..3b6a871 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-sys-0.48.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-sys-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-sys-0.52.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-sys-0.52.0.bazel
index e674f1f..29a440f 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-sys-0.52.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-sys-0.52.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -82,6 +86,6 @@
     }),
     version = "0.52.0",
     deps = [
-        "@cvm__windows-targets-0.52.0//:windows_targets",
+        "@cvm__windows-targets-0.52.3//:windows_targets",
     ],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-targets-0.48.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-targets-0.48.5.bazel
index a039a12..2340c9f 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-targets-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-targets-0.48.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-targets-0.52.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-targets-0.52.3.bazel
similarity index 89%
rename from examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-targets-0.52.0.bazel
rename to examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-targets-0.52.3.bazel
index ac0782a..9dc3195 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-targets-0.52.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows-targets-0.52.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,25 +77,25 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = select({
         "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
-            "@cvm__windows_aarch64_msvc-0.52.0//:windows_aarch64_msvc",  # cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
+            "@cvm__windows_aarch64_msvc-0.52.3//:windows_aarch64_msvc",  # cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:i686-pc-windows-msvc": [
-            "@cvm__windows_i686_msvc-0.52.0//:windows_i686_msvc",  # cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
+            "@cvm__windows_i686_msvc-0.52.3//:windows_i686_msvc",  # cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
-            "@cvm__windows_i686_gnu-0.52.0//:windows_i686_gnu",  # cfg(all(target_arch = "x86", target_env = "gnu", not(windows_raw_dylib)))
+            "@cvm__windows_i686_gnu-0.52.3//:windows_i686_gnu",  # cfg(all(target_arch = "x86", target_env = "gnu", not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
-            "@cvm__windows_x86_64_msvc-0.52.0//:windows_x86_64_msvc",  # cfg(all(target_arch = "x86_64", target_env = "msvc", not(windows_raw_dylib)))
+            "@cvm__windows_x86_64_msvc-0.52.3//:windows_x86_64_msvc",  # cfg(all(target_arch = "x86_64", target_env = "msvc", not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
-            "@cvm__windows_x86_64_gnu-0.52.0//:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
+            "@cvm__windows_x86_64_gnu-0.52.3//:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
-            "@cvm__windows_x86_64_gnu-0.52.0//:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
+            "@cvm__windows_x86_64_gnu-0.52.3//:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
         ],
         "//conditions:default": [],
     }),
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel
index 88800fa..fd4e8e0 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.52.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.52.3.bazel
similarity index 90%
rename from examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.52.0.bazel
rename to examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.52.3.bazel
index afa45e0..57bd323 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.52.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@cvm__windows_aarch64_gnullvm-0.52.0//:build_script_build",
+        "@cvm__windows_aarch64_gnullvm-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel
index 187fb08..d071120 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.52.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.52.3.bazel
similarity index 90%
rename from examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.52.0.bazel
rename to examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.52.3.bazel
index 50dc7af..4237a8f 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.52.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@cvm__windows_aarch64_msvc-0.52.0//:build_script_build",
+        "@cvm__windows_aarch64_msvc-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.48.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.48.5.bazel
index bef44a5..b862c19 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.0.bazel
deleted file mode 100644
index 05270e6..0000000
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.0.bazel
+++ /dev/null
@@ -1,118 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//vendor_remote_manifests:crates_vendor
-###############################################################################
-
-load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
-    name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2021",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=windows_i686_gnu",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    target_compatible_with = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [],
-        "@rules_rust//rust/platform:aarch64-linux-android": [],
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:i686-apple-darwin": [],
-        "@rules_rust//rust/platform:i686-linux-android": [],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
-        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
-        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
-        "@rules_rust//rust/platform:wasm32-wasi": [],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [],
-        "@rules_rust//rust/platform:x86_64-linux-android": [],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-none": [],
-        "//conditions:default": ["@platforms//:incompatible"],
-    }),
-    version = "0.52.0",
-    deps = [
-        "@cvm__windows_i686_gnu-0.52.0//:build_script_build",
-    ],
-)
-
-cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
-    crate_name = "build_script_build",
-    crate_root = "build.rs",
-    data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    edition = "2021",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=windows_i686_gnu",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "0.52.0",
-    visibility = ["//visibility:private"],
-)
-
-alias(
-    name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
-    tags = ["manual"],
-)
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.3.bazel
similarity index 90%
rename from examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.0.bazel
rename to examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.3.bazel
index fc107f3..274cfee 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@crates_vendor_manifests__windows_i686_gnu-0.52.0//:build_script_build",
+        "@cvm__windows_i686_gnu-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.48.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.48.5.bazel
index ecd1c82..2ee0339 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.52.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.52.3.bazel
similarity index 90%
rename from examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.52.0.bazel
rename to examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.52.3.bazel
index 3647145..972316b 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.52.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@cvm__windows_i686_msvc-0.52.0//:build_script_build",
+        "@cvm__windows_i686_msvc-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel
index 76f02f6..1ad2aa4 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.0.bazel
deleted file mode 100644
index 2a3e3a4..0000000
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.0.bazel
+++ /dev/null
@@ -1,118 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//vendor_remote_manifests:crates_vendor
-###############################################################################
-
-load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
-    name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2021",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=windows_x86_64_gnu",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    target_compatible_with = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [],
-        "@rules_rust//rust/platform:aarch64-linux-android": [],
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:i686-apple-darwin": [],
-        "@rules_rust//rust/platform:i686-linux-android": [],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
-        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
-        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
-        "@rules_rust//rust/platform:wasm32-wasi": [],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [],
-        "@rules_rust//rust/platform:x86_64-linux-android": [],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-none": [],
-        "//conditions:default": ["@platforms//:incompatible"],
-    }),
-    version = "0.52.0",
-    deps = [
-        "@cvm__windows_x86_64_gnu-0.52.0//:build_script_build",
-    ],
-)
-
-cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
-    crate_name = "build_script_build",
-    crate_root = "build.rs",
-    data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    edition = "2021",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=windows_x86_64_gnu",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "0.52.0",
-    visibility = ["//visibility:private"],
-)
-
-alias(
-    name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
-    tags = ["manual"],
-)
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.3.bazel
similarity index 90%
copy from examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.0.bazel
copy to examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.3.bazel
index de13e00..abe6b10 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@crates_vendor_manifests__windows_x86_64_gnu-0.52.0//:build_script_build",
+        "@cvm__windows_x86_64_gnu-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel
index f5306f4..96b78b4 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.52.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.52.3.bazel
similarity index 90%
rename from examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.52.0.bazel
rename to examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.52.3.bazel
index 3d94a00..2da206a 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.52.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@cvm__windows_x86_64_gnullvm-0.52.0//:build_script_build",
+        "@cvm__windows_x86_64_gnullvm-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel
index f9e16f4..b717628 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.0.bazel
deleted file mode 100644
index 8f0fa46..0000000
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.0.bazel
+++ /dev/null
@@ -1,118 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//vendor_remote_manifests:crates_vendor
-###############################################################################
-
-load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
-    name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2021",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=windows_x86_64_msvc",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    target_compatible_with = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [],
-        "@rules_rust//rust/platform:aarch64-linux-android": [],
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:i686-apple-darwin": [],
-        "@rules_rust//rust/platform:i686-linux-android": [],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
-        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
-        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
-        "@rules_rust//rust/platform:wasm32-wasi": [],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [],
-        "@rules_rust//rust/platform:x86_64-linux-android": [],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-none": [],
-        "//conditions:default": ["@platforms//:incompatible"],
-    }),
-    version = "0.52.0",
-    deps = [
-        "@cvm__windows_x86_64_msvc-0.52.0//:build_script_build",
-    ],
-)
-
-cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
-    crate_name = "build_script_build",
-    crate_root = "build.rs",
-    data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    edition = "2021",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=windows_x86_64_msvc",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "0.52.0",
-    visibility = ["//visibility:private"],
-)
-
-alias(
-    name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
-    tags = ["manual"],
-)
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.0.bazel b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.3.bazel
similarity index 90%
copy from examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.0.bazel
copy to examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.3.bazel
index 9ea4e83..77b3e60 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.0.bazel
+++ b/examples/crate_universe/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@crates_vendor_manifests__windows_x86_64_msvc-0.52.0//:build_script_build",
+        "@cvm__windows_x86_64_msvc-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/defs.bzl b/examples/crate_universe/vendor_remote_manifests/crates/defs.bzl
index 6606959..ab197d1 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/defs.bzl
+++ b/examples/crate_universe/vendor_remote_manifests/crates/defs.bzl
@@ -295,7 +295,7 @@
 _NORMAL_DEPENDENCIES = {
     "vendor_remote_manifests": {
         _COMMON_CONDITION: {
-            "tokio": "@cvm__tokio-1.36.0//:tokio",
+            "tokio": Label("@cvm__tokio-1.36.0//:tokio"),
         },
     },
 }
@@ -310,8 +310,8 @@
 _NORMAL_DEV_DEPENDENCIES = {
     "vendor_remote_manifests": {
         _COMMON_CONDITION: {
-            "tempfile": "@cvm__tempfile-3.10.0//:tempfile",
-            "tokio-test": "@cvm__tokio-test-0.4.3//:tokio_test",
+            "tempfile": Label("@cvm__tempfile-3.10.0//:tempfile"),
+            "tokio-test": Label("@cvm__tokio-test-0.4.3//:tokio_test"),
         },
     },
 }
@@ -522,12 +522,12 @@
 
     maybe(
         http_archive,
-        name = "cvm__cc-1.0.83",
-        sha256 = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0",
+        name = "cvm__cc-1.0.86",
+        sha256 = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/cc/1.0.83/download"],
-        strip_prefix = "cc-1.0.83",
-        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.cc-1.0.83.bazel"),
+        urls = ["https://crates.io/api/v1/crates/cc/1.0.86/download"],
+        strip_prefix = "cc-1.0.86",
+        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.cc-1.0.86.bazel"),
     )
 
     maybe(
@@ -582,12 +582,12 @@
 
     maybe(
         http_archive,
-        name = "cvm__hermit-abi-0.3.5",
-        sha256 = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3",
+        name = "cvm__hermit-abi-0.3.6",
+        sha256 = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/hermit-abi/0.3.5/download"],
-        strip_prefix = "hermit-abi-0.3.5",
-        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.hermit-abi-0.3.5.bazel"),
+        urls = ["https://crates.io/api/v1/crates/hermit-abi/0.3.6/download"],
+        strip_prefix = "hermit-abi-0.3.6",
+        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.hermit-abi-0.3.6.bazel"),
     )
 
     maybe(
@@ -792,12 +792,12 @@
 
     maybe(
         http_archive,
-        name = "cvm__syn-2.0.48",
-        sha256 = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f",
+        name = "cvm__syn-2.0.50",
+        sha256 = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/syn/2.0.48/download"],
-        strip_prefix = "syn-2.0.48",
-        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.syn-2.0.48.bazel"),
+        urls = ["https://crates.io/api/v1/crates/syn/2.0.50/download"],
+        strip_prefix = "syn-2.0.50",
+        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.syn-2.0.50.bazel"),
     )
 
     maybe(
@@ -902,12 +902,12 @@
 
     maybe(
         http_archive,
-        name = "cvm__windows-targets-0.52.0",
-        sha256 = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd",
+        name = "cvm__windows-targets-0.52.3",
+        sha256 = "d380ba1dc7187569a8a9e91ed34b8ccfc33123bbacb8c0aed2d1ad7f3ef2dc5f",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows-targets/0.52.0/download"],
-        strip_prefix = "windows-targets-0.52.0",
-        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows-targets-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows-targets/0.52.3/download"],
+        strip_prefix = "windows-targets-0.52.3",
+        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows-targets-0.52.3.bazel"),
     )
 
     maybe(
@@ -922,12 +922,12 @@
 
     maybe(
         http_archive,
-        name = "cvm__windows_aarch64_gnullvm-0.52.0",
-        sha256 = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea",
+        name = "cvm__windows_aarch64_gnullvm-0.52.3",
+        sha256 = "68e5dcfb9413f53afd9c8f86e56a7b4d86d9a2fa26090ea2dc9e40fba56c6ec6",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_aarch64_gnullvm/0.52.0/download"],
-        strip_prefix = "windows_aarch64_gnullvm-0.52.0",
-        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_aarch64_gnullvm-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_aarch64_gnullvm/0.52.3/download"],
+        strip_prefix = "windows_aarch64_gnullvm-0.52.3",
+        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_aarch64_gnullvm-0.52.3.bazel"),
     )
 
     maybe(
@@ -942,12 +942,12 @@
 
     maybe(
         http_archive,
-        name = "cvm__windows_aarch64_msvc-0.52.0",
-        sha256 = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef",
+        name = "cvm__windows_aarch64_msvc-0.52.3",
+        sha256 = "8dab469ebbc45798319e69eebf92308e541ce46760b49b18c6b3fe5e8965b30f",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_aarch64_msvc/0.52.0/download"],
-        strip_prefix = "windows_aarch64_msvc-0.52.0",
-        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_aarch64_msvc-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_aarch64_msvc/0.52.3/download"],
+        strip_prefix = "windows_aarch64_msvc-0.52.3",
+        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_aarch64_msvc-0.52.3.bazel"),
     )
 
     maybe(
@@ -962,12 +962,12 @@
 
     maybe(
         http_archive,
-        name = "cvm__windows_i686_gnu-0.52.0",
-        sha256 = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313",
+        name = "cvm__windows_i686_gnu-0.52.3",
+        sha256 = "2a4e9b6a7cac734a8b4138a4e1044eac3404d8326b6c0f939276560687a033fb",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_i686_gnu/0.52.0/download"],
-        strip_prefix = "windows_i686_gnu-0.52.0",
-        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_i686_gnu-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_i686_gnu/0.52.3/download"],
+        strip_prefix = "windows_i686_gnu-0.52.3",
+        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_i686_gnu-0.52.3.bazel"),
     )
 
     maybe(
@@ -982,12 +982,12 @@
 
     maybe(
         http_archive,
-        name = "cvm__windows_i686_msvc-0.52.0",
-        sha256 = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a",
+        name = "cvm__windows_i686_msvc-0.52.3",
+        sha256 = "28b0ec9c422ca95ff34a78755cfa6ad4a51371da2a5ace67500cf7ca5f232c58",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_i686_msvc/0.52.0/download"],
-        strip_prefix = "windows_i686_msvc-0.52.0",
-        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_i686_msvc-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_i686_msvc/0.52.3/download"],
+        strip_prefix = "windows_i686_msvc-0.52.3",
+        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_i686_msvc-0.52.3.bazel"),
     )
 
     maybe(
@@ -1002,12 +1002,12 @@
 
     maybe(
         http_archive,
-        name = "cvm__windows_x86_64_gnu-0.52.0",
-        sha256 = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd",
+        name = "cvm__windows_x86_64_gnu-0.52.3",
+        sha256 = "704131571ba93e89d7cd43482277d6632589b18ecf4468f591fbae0a8b101614",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_x86_64_gnu/0.52.0/download"],
-        strip_prefix = "windows_x86_64_gnu-0.52.0",
-        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_x86_64_gnu-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_x86_64_gnu/0.52.3/download"],
+        strip_prefix = "windows_x86_64_gnu-0.52.3",
+        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_x86_64_gnu-0.52.3.bazel"),
     )
 
     maybe(
@@ -1022,12 +1022,12 @@
 
     maybe(
         http_archive,
-        name = "cvm__windows_x86_64_gnullvm-0.52.0",
-        sha256 = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e",
+        name = "cvm__windows_x86_64_gnullvm-0.52.3",
+        sha256 = "42079295511643151e98d61c38c0acc444e52dd42ab456f7ccfd5152e8ecf21c",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_x86_64_gnullvm/0.52.0/download"],
-        strip_prefix = "windows_x86_64_gnullvm-0.52.0",
-        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_x86_64_gnullvm-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_x86_64_gnullvm/0.52.3/download"],
+        strip_prefix = "windows_x86_64_gnullvm-0.52.3",
+        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_x86_64_gnullvm-0.52.3.bazel"),
     )
 
     maybe(
@@ -1042,12 +1042,12 @@
 
     maybe(
         http_archive,
-        name = "cvm__windows_x86_64_msvc-0.52.0",
-        sha256 = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04",
+        name = "cvm__windows_x86_64_msvc-0.52.3",
+        sha256 = "0770833d60a970638e989b3fa9fd2bb1aaadcf88963d1659fd7d9990196ed2d6",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_x86_64_msvc/0.52.0/download"],
-        strip_prefix = "windows_x86_64_msvc-0.52.0",
-        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_x86_64_msvc-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_x86_64_msvc/0.52.3/download"],
+        strip_prefix = "windows_x86_64_msvc-0.52.3",
+        build_file = Label("@examples//vendor_remote_manifests/crates:BUILD.windows_x86_64_msvc-0.52.3.bazel"),
     )
 
     return [
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.addr2line-0.21.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.addr2line-0.21.0.bazel
index 7b0ed84..1eb3325 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.addr2line-0.21.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.addr2line-0.21.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "addr2line",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.adler-1.0.2.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.adler-1.0.2.bazel
index 933e02a..35272a2 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.adler-1.0.2.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.adler-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "adler",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.async-trait-0.1.77.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.async-trait-0.1.77.bazel
index cd2f13b..9f5a22b 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.async-trait-0.1.77.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.async-trait-0.1.77.bazel
@@ -13,9 +13,13 @@
 
 rust_proc_macro(
     name = "async_trait",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -79,17 +83,21 @@
         "@crates_vendor_pkgs__async-trait-0.1.77//:build_script_build",
         "@crates_vendor_pkgs__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_pkgs__quote-1.0.35//:quote",
-        "@crates_vendor_pkgs__syn-2.0.48//:syn",
+        "@crates_vendor_pkgs__syn-2.0.50//:syn",
     ],
 )
 
 cargo_build_script(
-    name = "async-trait_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "async-trait_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -116,6 +124,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":async-trait_build_script",
+    actual = ":async-trait_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.autocfg-1.1.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.autocfg-1.1.0.bazel
index 07fc12b..3927b50 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.autocfg-1.1.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.autocfg-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "autocfg",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.axum-0.4.8.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.axum-0.4.8.bazel
index 1e19da6..8e933fc 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.axum-0.4.8.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.axum-0.4.8.bazel
@@ -12,12 +12,16 @@
 
 rust_library(
     name = "axum",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = [
             "**",
             "**/*.md",
         ],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -100,8 +104,8 @@
         "@crates_vendor_pkgs__mime-0.3.17//:mime",
         "@crates_vendor_pkgs__percent-encoding-2.3.1//:percent_encoding",
         "@crates_vendor_pkgs__pin-project-lite-0.2.13//:pin_project_lite",
-        "@crates_vendor_pkgs__serde-1.0.196//:serde",
-        "@crates_vendor_pkgs__serde_json-1.0.113//:serde_json",
+        "@crates_vendor_pkgs__serde-1.0.197//:serde",
+        "@crates_vendor_pkgs__serde_json-1.0.114//:serde_json",
         "@crates_vendor_pkgs__serde_urlencoded-0.7.1//:serde_urlencoded",
         "@crates_vendor_pkgs__sync_wrapper-0.1.2//:sync_wrapper",
         "@crates_vendor_pkgs__tokio-1.36.0//:tokio",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.axum-core-0.1.2.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.axum-core-0.1.2.bazel
index 66ead66..75b3a65 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.axum-core-0.1.2.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.axum-core-0.1.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "axum_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.backtrace-0.3.69.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.backtrace-0.3.69.bazel
index 9919fa7..fcffb80 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.backtrace-0.3.69.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.backtrace-0.3.69.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "backtrace",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -271,12 +275,16 @@
 )
 
 cargo_build_script(
-    name = "backtrace_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "backtrace_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -300,12 +308,12 @@
     version = "0.3.69",
     visibility = ["//visibility:private"],
     deps = [
-        "@crates_vendor_pkgs__cc-1.0.83//:cc",
+        "@crates_vendor_pkgs__cc-1.0.86//:cc",
     ],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":backtrace_build_script",
+    actual = ":backtrace_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.bazel
index 2b53731..636590a 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
@@ -45,7 +51,7 @@
 
 alias(
     name = "serde_json",
-    actual = "@crates_vendor_pkgs__serde_json-1.0.113//:serde_json",
+    actual = "@crates_vendor_pkgs__serde_json-1.0.114//:serde_json",
     tags = ["manual"],
 )
 
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.bitflags-1.3.2.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.bitflags-1.3.2.bazel
index 7f5dda9..baf0236 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.bitflags-1.3.2.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.bitflags-1.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.bytes-1.5.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.bytes-1.5.0.bazel
index 80042bc..fac1fc7 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.bytes-1.5.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.bytes-1.5.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bytes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.cc-1.0.83.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.cc-1.0.83.bazel
deleted file mode 100644
index 0692a48..0000000
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.cc-1.0.83.bazel
+++ /dev/null
@@ -1,152 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     See https://github.com/bazelbuild/rules_rust/blob/main/examples/crate_universe/vendor_local_pkgs/BUILD.bazel
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
-    name = "cc",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=cc",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    target_compatible_with = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [],
-        "@rules_rust//rust/platform:aarch64-linux-android": [],
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:i686-apple-darwin": [],
-        "@rules_rust//rust/platform:i686-linux-android": [],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
-        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
-        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
-        "@rules_rust//rust/platform:wasm32-wasi": [],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [],
-        "@rules_rust//rust/platform:x86_64-linux-android": [],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-none": [],
-        "//conditions:default": ["@platforms//:incompatible"],
-    }),
-    version = "1.0.83",
-    deps = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-linux-android": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-apple-darwin": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-linux-android": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-linux-android": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "//conditions:default": [],
-    }),
-)
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.ryu-1.0.16.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.cc-1.0.86.bazel
similarity index 94%
copy from examples/crate_universe/vendor_remote_pkgs/crates/BUILD.ryu-1.0.16.bazel
copy to examples/crate_universe/vendor_remote_pkgs/crates/BUILD.cc-1.0.86.bazel
index 203cf11..8baf22e 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.ryu-1.0.16.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.cc-1.0.86.bazel
@@ -11,10 +11,14 @@
 package(default_visibility = ["//visibility:public"])
 
 rust_library(
-    name = "ryu",
-    srcs = glob(["**/*.rs"]),
+    name = "cc",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -31,7 +35,7 @@
     ],
     tags = [
         "cargo-bazel",
-        "crate-name=ryu",
+        "crate-name=cc",
         "manual",
         "noclippy",
         "norustfmt",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.16",
+    version = "1.0.86",
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.cfg-if-1.0.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.cfg-if-1.0.0.bazel
index 5ec85e5..205ae78 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.cfg-if-1.0.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.cfg-if-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.equivalent-1.0.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.equivalent-1.0.1.bazel
index 3c27109..1277d7c 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.equivalent-1.0.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.equivalent-1.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "equivalent",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.fnv-1.0.7.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.fnv-1.0.7.bazel
index cc6df01..299b6b8 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.fnv-1.0.7.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.fnv-1.0.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fnv",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.form_urlencoded-1.2.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.form_urlencoded-1.2.1.bazel
index 2ecc3ac..2f0f429 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.form_urlencoded-1.2.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.form_urlencoded-1.2.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "form_urlencoded",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-channel-0.3.30.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-channel-0.3.30.bazel
index 8714e0c..77814f7 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-channel-0.3.30.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-channel-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_channel",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-core-0.3.30.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-core-0.3.30.bazel
index e02c0c5..ad0475c 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-core-0.3.30.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-core-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-sink-0.3.30.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-sink-0.3.30.bazel
index be35a38..5f88f41 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-sink-0.3.30.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-sink-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_sink",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-task-0.3.30.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-task-0.3.30.bazel
index d09798b..7014c13 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-task-0.3.30.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-task-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_task",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-util-0.3.30.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-util-0.3.30.bazel
index 12a0aa0..56de8dd 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-util-0.3.30.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.futures-util-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.gimli-0.28.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.gimli-0.28.1.bazel
index 009449a..cee3f8a 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.gimli-0.28.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.gimli-0.28.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gimli",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.h2-0.3.24.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.h2-0.3.24.bazel
index 42ffae5..20b5793 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.h2-0.3.24.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.h2-0.3.24.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "h2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hashbrown-0.14.3.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hashbrown-0.14.3.bazel
index 402fb69..0bdf416 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hashbrown-0.14.3.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hashbrown-0.14.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hashbrown",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hermit-abi-0.3.5.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hermit-abi-0.3.6.bazel
similarity index 95%
rename from examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hermit-abi-0.3.5.bazel
rename to examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hermit-abi-0.3.6.bazel
index 1ec530b..a660b55 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hermit-abi-0.3.5.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hermit-abi-0.3.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.3.5",
+    version = "0.3.6",
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.http-0.2.11.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.http-0.2.11.bazel
index 3d5b09b..cf90a34 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.http-0.2.11.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.http-0.2.11.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "http",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.http-body-0.4.6.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.http-body-0.4.6.bazel
index 0a8c2b5..84ad54d 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.http-body-0.4.6.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.http-body-0.4.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "http_body",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.http-range-header-0.3.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.http-range-header-0.3.1.bazel
index 86e91b7..18a9995 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.http-range-header-0.3.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.http-range-header-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "http_range_header",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.httparse-1.8.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.httparse-1.8.0.bazel
index 24aa56c..f36ada4 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.httparse-1.8.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.httparse-1.8.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "httparse",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "httparse_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "httparse_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":httparse_build_script",
+    actual = ":httparse_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.httpdate-1.0.3.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.httpdate-1.0.3.bazel
index a27665f..0c5abb1 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.httpdate-1.0.3.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.httpdate-1.0.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "httpdate",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hyper-0.14.28.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hyper-0.14.28.bazel
index 7c6a756..af346ba 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hyper-0.14.28.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.hyper-0.14.28.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hyper",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.indexmap-2.2.3.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.indexmap-2.2.3.bazel
index a876003..3addc18 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.indexmap-2.2.3.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.indexmap-2.2.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "indexmap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.itoa-1.0.10.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.itoa-1.0.10.bazel
index 715fdc8..cca8e35 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.itoa-1.0.10.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.itoa-1.0.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "itoa",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.lazy_static-1.4.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.lazy_static-1.4.0.bazel
index 8fdc3a1..d343d67 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.lazy_static-1.4.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.lazy_static-1.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "lazy_static",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.libc-0.2.153.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.libc-0.2.153.bazel
index 6db05d7..ce2f179 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.libc-0.2.153.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.libc-0.2.153.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.lock_api-0.4.11.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.lock_api-0.4.11.bazel
index b372179..aa389cc 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.lock_api-0.4.11.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.lock_api-0.4.11.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "lock_api",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "lock_api_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "lock_api_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "atomic_usize",
         "default",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -125,6 +133,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":lock_api_build_script",
+    actual = ":lock_api_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.log-0.4.20.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.log-0.4.20.bazel
index db46f38..319e82c 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.log-0.4.20.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.log-0.4.20.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.matchit-0.4.6.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.matchit-0.4.6.bazel
index 885d340..7f4dd09 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.matchit-0.4.6.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.matchit-0.4.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "matchit",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.memchr-2.7.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.memchr-2.7.1.bazel
index 5303d8f..2a5e93d 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.memchr-2.7.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.memchr-2.7.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "memchr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.mime-0.3.17.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.mime-0.3.17.bazel
index bae3b09..1619dc7 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.mime-0.3.17.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.mime-0.3.17.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mime",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.miniz_oxide-0.7.2.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.miniz_oxide-0.7.2.bazel
index bba34cf..1cad7ab 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.miniz_oxide-0.7.2.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.miniz_oxide-0.7.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "miniz_oxide",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.mio-0.8.10.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.mio-0.8.10.bazel
index 64758b4..1211945 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.mio-0.8.10.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.mio-0.8.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.nu-ansi-term-0.46.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.nu-ansi-term-0.46.0.bazel
index 0d63db3..eeedc6d 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.nu-ansi-term-0.46.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.nu-ansi-term-0.46.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "nu_ansi_term",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.num_cpus-1.16.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.num_cpus-1.16.0.bazel
index 4461105..ee2d252 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.num_cpus-1.16.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.num_cpus-1.16.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_cpus",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.object-0.32.2.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.object-0.32.2.bazel
index e04251e..4953beb 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.object-0.32.2.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.object-0.32.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "object",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.once_cell-1.19.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.once_cell-1.19.0.bazel
index c437f65..4662446 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.once_cell-1.19.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.once_cell-1.19.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "once_cell",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.overload-0.1.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.overload-0.1.1.bazel
index 4d33b7d..6359228 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.overload-0.1.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.overload-0.1.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "overload",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.parking_lot-0.12.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.parking_lot-0.12.1.bazel
index 7d8ac96..e6f28b7 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.parking_lot-0.12.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.parking_lot-0.12.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "parking_lot",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.parking_lot_core-0.9.9.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.parking_lot_core-0.9.9.bazel
index 5dfa609..9ee8d82 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.parking_lot_core-0.9.9.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.parking_lot_core-0.9.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "parking_lot_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -166,12 +170,16 @@
 )
 
 cargo_build_script(
-    name = "parking_lot_core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "parking_lot_core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -198,6 +206,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":parking_lot_core_build_script",
+    actual = ":parking_lot_core_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.percent-encoding-2.3.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.percent-encoding-2.3.1.bazel
index f9602a2..7a3d1f1 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.percent-encoding-2.3.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.percent-encoding-2.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "percent_encoding",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-project-1.1.4.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-project-1.1.4.bazel
index cb3d767..ee6526a 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-project-1.1.4.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-project-1.1.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_project",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-project-internal-1.1.4.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-project-internal-1.1.4.bazel
index 85019c4..73409d7 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-project-internal-1.1.4.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-project-internal-1.1.4.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "pin_project_internal",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "@crates_vendor_pkgs__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_pkgs__quote-1.0.35//:quote",
-        "@crates_vendor_pkgs__syn-2.0.48//:syn",
+        "@crates_vendor_pkgs__syn-2.0.50//:syn",
     ],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-project-lite-0.2.13.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-project-lite-0.2.13.bazel
index af0d1a5..dcfab4b 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-project-lite-0.2.13.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-project-lite-0.2.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_project_lite",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-utils-0.1.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-utils-0.1.0.bazel
index cad257e..d14eded 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-utils-0.1.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.pin-utils-0.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_utils",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.proc-macro2-1.0.78.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.proc-macro2-1.0.78.bazel
index 6d1f67b..94c851d 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.proc-macro2-1.0.78.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.proc-macro2-1.0.78.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "proc-macro2_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro2_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro2_build_script",
+    actual = ":proc-macro2_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.quote-1.0.35.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.quote-1.0.35.bazel
index 989c79a..4c632c5 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.quote-1.0.35.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.quote-1.0.35.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.redox_syscall-0.4.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.redox_syscall-0.4.1.bazel
index f68d3c1..0ea4734 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.redox_syscall-0.4.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.redox_syscall-0.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syscall",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.rustc-demangle-0.1.23.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.rustc-demangle-0.1.23.bazel
index 175abc7..4efd746 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.rustc-demangle-0.1.23.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.rustc-demangle-0.1.23.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rustc_demangle",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.ryu-1.0.16.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.ryu-1.0.17.bazel
similarity index 95%
rename from examples/crate_universe/vendor_remote_pkgs/crates/BUILD.ryu-1.0.16.bazel
rename to examples/crate_universe/vendor_remote_pkgs/crates/BUILD.ryu-1.0.17.bazel
index 203cf11..40441a2 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.ryu-1.0.16.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.ryu-1.0.17.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ryu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.16",
+    version = "1.0.17",
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.scopeguard-1.2.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.scopeguard-1.2.0.bazel
index 44eefa8..d5f21bb 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.scopeguard-1.2.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.scopeguard-1.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "scopeguard",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde-1.0.196.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde-1.0.197.bazel
similarity index 91%
rename from examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde-1.0.196.bazel
rename to examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde-1.0.197.bazel
index 5b1f307..83e2d4b 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde-1.0.196.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde-1.0.197.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -78,15 +82,18 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.196",
+    version = "1.0.197",
     deps = [
-        "@crates_vendor_pkgs__serde-1.0.196//:build_script_build",
+        "@crates_vendor_pkgs__serde-1.0.197//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "serde_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -115,12 +123,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "1.0.196",
+    version = "1.0.197",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":serde_build_script",
+    actual = ":serde_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_derive-1.0.196.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_derive-1.0.197.bazel
similarity index 94%
rename from examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_derive-1.0.196.bazel
rename to examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_derive-1.0.197.bazel
index e01b085..57ff1c9 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_derive-1.0.196.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_derive-1.0.197.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "serde_derive",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,10 +77,10 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.196",
+    version = "1.0.197",
     deps = [
         "@crates_vendor_pkgs__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_pkgs__quote-1.0.35//:quote",
-        "@crates_vendor_pkgs__syn-2.0.48//:syn",
+        "@crates_vendor_pkgs__syn-2.0.50//:syn",
     ],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_json-1.0.113.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_json-1.0.114.bazel
similarity index 89%
rename from examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_json-1.0.113.bazel
rename to examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_json-1.0.114.bazel
index 6656a1e..36ff5ea 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_json-1.0.113.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_json-1.0.114.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde_json",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -79,18 +83,21 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.113",
+    version = "1.0.114",
     deps = [
         "@crates_vendor_pkgs__itoa-1.0.10//:itoa",
-        "@crates_vendor_pkgs__ryu-1.0.16//:ryu",
-        "@crates_vendor_pkgs__serde-1.0.196//:serde",
-        "@crates_vendor_pkgs__serde_json-1.0.113//:build_script_build",
+        "@crates_vendor_pkgs__ryu-1.0.17//:ryu",
+        "@crates_vendor_pkgs__serde-1.0.197//:serde",
+        "@crates_vendor_pkgs__serde_json-1.0.114//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "serde_json_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_json_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "raw_value",
@@ -100,6 +107,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -120,12 +128,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "1.0.113",
+    version = "1.0.114",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":serde_json_build_script",
+    actual = ":serde_json_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_urlencoded-0.7.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_urlencoded-0.7.1.bazel
index 023f00d..3e219db 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_urlencoded-0.7.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.serde_urlencoded-0.7.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "serde_urlencoded",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,7 +81,7 @@
     deps = [
         "@crates_vendor_pkgs__form_urlencoded-1.2.1//:form_urlencoded",
         "@crates_vendor_pkgs__itoa-1.0.10//:itoa",
-        "@crates_vendor_pkgs__ryu-1.0.16//:ryu",
-        "@crates_vendor_pkgs__serde-1.0.196//:serde",
+        "@crates_vendor_pkgs__ryu-1.0.17//:ryu",
+        "@crates_vendor_pkgs__serde-1.0.197//:serde",
     ],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.sharded-slab-0.1.7.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.sharded-slab-0.1.7.bazel
index b1dc22d..e6da7c3 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.sharded-slab-0.1.7.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.sharded-slab-0.1.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "sharded_slab",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.signal-hook-registry-1.4.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.signal-hook-registry-1.4.1.bazel
index 18bccb5..2683389 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.signal-hook-registry-1.4.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.signal-hook-registry-1.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "signal_hook_registry",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.slab-0.4.9.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.slab-0.4.9.bazel
index 5cb4674..e54ed79 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.slab-0.4.9.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.slab-0.4.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "slab",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "slab_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "slab_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -124,6 +132,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":slab_build_script",
+    actual = ":slab_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.smallvec-1.13.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.smallvec-1.13.1.bazel
index 878f916..5cadf7d 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.smallvec-1.13.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.smallvec-1.13.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "smallvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.socket2-0.4.10.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.socket2-0.4.10.bazel
index 7185228..5976af0 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.socket2-0.4.10.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.socket2-0.4.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "socket2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.socket2-0.5.5.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.socket2-0.5.5.bazel
index d8ba914..00aca6d 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.socket2-0.5.5.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.socket2-0.5.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "socket2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.syn-2.0.48.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.syn-2.0.50.bazel
similarity index 96%
rename from examples/crate_universe/vendor_remote_pkgs/crates/BUILD.syn-2.0.48.bazel
rename to examples/crate_universe/vendor_remote_pkgs/crates/BUILD.syn-2.0.50.bazel
index eae83bf..2388254 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.syn-2.0.48.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.syn-2.0.50.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,7 +89,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "2.0.48",
+    version = "2.0.50",
     deps = [
         "@crates_vendor_pkgs__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_pkgs__quote-1.0.35//:quote",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.sync_wrapper-0.1.2.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.sync_wrapper-0.1.2.bazel
index fdd947d..b23354a 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.sync_wrapper-0.1.2.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.sync_wrapper-0.1.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "sync_wrapper",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.thread_local-1.1.7.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.thread_local-1.1.8.bazel
similarity index 95%
rename from examples/crate_universe/vendor_remote_pkgs/crates/BUILD.thread_local-1.1.7.bazel
rename to examples/crate_universe/vendor_remote_pkgs/crates/BUILD.thread_local-1.1.8.bazel
index 7f54136..1af1a9d 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.thread_local-1.1.7.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.thread_local-1.1.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "thread_local",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,7 +77,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.1.7",
+    version = "1.1.8",
     deps = [
         "@crates_vendor_pkgs__cfg-if-1.0.0//:cfg_if",
         "@crates_vendor_pkgs__once_cell-1.19.0//:once_cell",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tokio-1.36.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tokio-1.36.0.bazel
index 2abc177..79a02b5 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tokio-1.36.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tokio-1.36.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tokio-macros-2.2.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tokio-macros-2.2.0.bazel
index 86f4018..d9fa19c 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tokio-macros-2.2.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tokio-macros-2.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "tokio_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "@crates_vendor_pkgs__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_pkgs__quote-1.0.35//:quote",
-        "@crates_vendor_pkgs__syn-2.0.48//:syn",
+        "@crates_vendor_pkgs__syn-2.0.50//:syn",
     ],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tokio-util-0.7.10.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tokio-util-0.7.10.bazel
index 3b42c96..83e3861 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tokio-util-0.7.10.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tokio-util-0.7.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-0.4.13.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-0.4.13.bazel
index 16efd15..57a2076 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-0.4.13.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-0.4.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-http-0.2.5.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-http-0.2.5.bazel
index 36e6294..00f8006 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-http-0.2.5.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-http-0.2.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower_http",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-layer-0.3.2.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-layer-0.3.2.bazel
index 4e48908..1059def 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-layer-0.3.2.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-layer-0.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower_layer",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-service-0.3.2.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-service-0.3.2.bazel
index 7017240..fa4797d0 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-service-0.3.2.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tower-service-0.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower_service",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-0.1.40.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-0.1.40.bazel
index 31f08f8..6122675 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-0.1.40.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-0.1.40.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-attributes-0.1.27.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-attributes-0.1.27.bazel
index 2421c6d..a04b131 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-attributes-0.1.27.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-attributes-0.1.27.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "tracing_attributes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "@crates_vendor_pkgs__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_pkgs__quote-1.0.35//:quote",
-        "@crates_vendor_pkgs__syn-2.0.48//:syn",
+        "@crates_vendor_pkgs__syn-2.0.50//:syn",
     ],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-core-0.1.32.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-core-0.1.32.bazel
index 2bf7b44..15d2f0c 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-core-0.1.32.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-core-0.1.32.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-log-0.2.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-log-0.2.0.bazel
index 938cfb6..9214d0a 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-log-0.2.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-log-0.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-subscriber-0.3.18.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-subscriber-0.3.18.bazel
index ba45da3..2ebb845 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-subscriber-0.3.18.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.tracing-subscriber-0.3.18.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_subscriber",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -91,7 +95,7 @@
         "@crates_vendor_pkgs__nu-ansi-term-0.46.0//:nu_ansi_term",
         "@crates_vendor_pkgs__sharded-slab-0.1.7//:sharded_slab",
         "@crates_vendor_pkgs__smallvec-1.13.1//:smallvec",
-        "@crates_vendor_pkgs__thread_local-1.1.7//:thread_local",
+        "@crates_vendor_pkgs__thread_local-1.1.8//:thread_local",
         "@crates_vendor_pkgs__tracing-core-0.1.32//:tracing_core",
         "@crates_vendor_pkgs__tracing-log-0.2.0//:tracing_log",
     ],
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.try-lock-0.2.5.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.try-lock-0.2.5.bazel
index ffaaaac..101dff4 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.try-lock-0.2.5.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.try-lock-0.2.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "try_lock",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.unicode-ident-1.0.12.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.unicode-ident-1.0.12.bazel
index 533f1b6..4770f0a 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.unicode-ident-1.0.12.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.unicode-ident-1.0.12.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_ident",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.valuable-0.1.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.valuable-0.1.0.bazel
index 5f199a5..5319862 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.valuable-0.1.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.valuable-0.1.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "valuable",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "valuable_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "valuable_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":valuable_build_script",
+    actual = ":valuable_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.want-0.3.1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.want-0.3.1.bazel
index 12771ac..5f23f7c 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.want-0.3.1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.want-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "want",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
index 386fb13..8bad54d 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.winapi-0.3.9.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.winapi-0.3.9.bazel
index 524f8eb..43e7513 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.winapi-0.3.9.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.winapi-0.3.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -90,8 +94,11 @@
 )
 
 cargo_build_script(
-    name = "winapi_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "consoleapi",
         "errhandlingapi",
@@ -105,6 +112,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -131,6 +139,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi_build_script",
+    actual = ":winapi_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
index 9077882..3e5436b 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_i686_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-i686-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-i686-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-i686-pc-windows-gnu_build_script",
+    actual = ":winapi-i686-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
index e437385..24d87a6 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_x86_64_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-x86_64-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-x86_64-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-x86_64-pc-windows-gnu_build_script",
+    actual = ":winapi-x86_64-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows-sys-0.48.0.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows-sys-0.48.0.bazel
index 243933f..0913264 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows-sys-0.48.0.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows-sys-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows-targets-0.48.5.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows-targets-0.48.5.bazel
index d8d1a56..f77ddcd 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows-targets-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows-targets-0.48.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel
index a2c9986..cb65a2e 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel
index 91fdd68..e7b6ffc 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_i686_gnu-0.48.5.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_i686_gnu-0.48.5.bazel
index a8b2454..ae4557d 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_i686_gnu-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_i686_gnu-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_i686_msvc-0.48.5.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_i686_msvc-0.48.5.bazel
index 0197902..5b3f35f 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_i686_msvc-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_i686_msvc-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel
index e8183d8..b8c82e5 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel
index 774d1ff..560b153 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel
index e588559..10c2c09 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe/vendor_remote_pkgs/crates/defs.bzl b/examples/crate_universe/vendor_remote_pkgs/crates/defs.bzl
index a783a15..115ceb2 100644
--- a/examples/crate_universe/vendor_remote_pkgs/crates/defs.bzl
+++ b/examples/crate_universe/vendor_remote_pkgs/crates/defs.bzl
@@ -295,16 +295,16 @@
 _NORMAL_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "axum": "@crates_vendor_pkgs__axum-0.4.8//:axum",
-            "hyper": "@crates_vendor_pkgs__hyper-0.14.28//:hyper",
-            "mime": "@crates_vendor_pkgs__mime-0.3.17//:mime",
-            "serde_json": "@crates_vendor_pkgs__serde_json-1.0.113//:serde_json",
-            "socket2": "@crates_vendor_pkgs__socket2-0.4.10//:socket2",
-            "tokio": "@crates_vendor_pkgs__tokio-1.36.0//:tokio",
-            "tower": "@crates_vendor_pkgs__tower-0.4.13//:tower",
-            "tower-http": "@crates_vendor_pkgs__tower-http-0.2.5//:tower_http",
-            "tracing": "@crates_vendor_pkgs__tracing-0.1.40//:tracing",
-            "tracing-subscriber": "@crates_vendor_pkgs__tracing-subscriber-0.3.18//:tracing_subscriber",
+            "axum": Label("@crates_vendor_pkgs__axum-0.4.8//:axum"),
+            "hyper": Label("@crates_vendor_pkgs__hyper-0.14.28//:hyper"),
+            "mime": Label("@crates_vendor_pkgs__mime-0.3.17//:mime"),
+            "serde_json": Label("@crates_vendor_pkgs__serde_json-1.0.114//:serde_json"),
+            "socket2": Label("@crates_vendor_pkgs__socket2-0.4.10//:socket2"),
+            "tokio": Label("@crates_vendor_pkgs__tokio-1.36.0//:tokio"),
+            "tower": Label("@crates_vendor_pkgs__tower-0.4.13//:tower"),
+            "tower-http": Label("@crates_vendor_pkgs__tower-http-0.2.5//:tower_http"),
+            "tracing": Label("@crates_vendor_pkgs__tracing-0.1.40//:tracing"),
+            "tracing-subscriber": Label("@crates_vendor_pkgs__tracing-subscriber-0.3.18//:tracing_subscriber"),
         },
     },
 }
@@ -524,12 +524,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__cc-1.0.83",
-        sha256 = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0",
+        name = "crates_vendor_pkgs__cc-1.0.86",
+        sha256 = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/cc/1.0.83/download"],
-        strip_prefix = "cc-1.0.83",
-        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.cc-1.0.83.bazel"),
+        urls = ["https://crates.io/api/v1/crates/cc/1.0.86/download"],
+        strip_prefix = "cc-1.0.86",
+        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.cc-1.0.86.bazel"),
     )
 
     maybe(
@@ -654,12 +654,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__hermit-abi-0.3.5",
-        sha256 = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3",
+        name = "crates_vendor_pkgs__hermit-abi-0.3.6",
+        sha256 = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/hermit-abi/0.3.5/download"],
-        strip_prefix = "hermit-abi-0.3.5",
-        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.hermit-abi-0.3.5.bazel"),
+        urls = ["https://crates.io/api/v1/crates/hermit-abi/0.3.6/download"],
+        strip_prefix = "hermit-abi-0.3.6",
+        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.hermit-abi-0.3.6.bazel"),
     )
 
     maybe(
@@ -994,12 +994,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__ryu-1.0.16",
-        sha256 = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c",
+        name = "crates_vendor_pkgs__ryu-1.0.17",
+        sha256 = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/ryu/1.0.16/download"],
-        strip_prefix = "ryu-1.0.16",
-        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.ryu-1.0.16.bazel"),
+        urls = ["https://crates.io/api/v1/crates/ryu/1.0.17/download"],
+        strip_prefix = "ryu-1.0.17",
+        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.ryu-1.0.17.bazel"),
     )
 
     maybe(
@@ -1014,32 +1014,32 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__serde-1.0.196",
-        sha256 = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32",
+        name = "crates_vendor_pkgs__serde-1.0.197",
+        sha256 = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/serde/1.0.196/download"],
-        strip_prefix = "serde-1.0.196",
-        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.serde-1.0.196.bazel"),
+        urls = ["https://crates.io/api/v1/crates/serde/1.0.197/download"],
+        strip_prefix = "serde-1.0.197",
+        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.serde-1.0.197.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__serde_derive-1.0.196",
-        sha256 = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67",
+        name = "crates_vendor_pkgs__serde_derive-1.0.197",
+        sha256 = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/serde_derive/1.0.196/download"],
-        strip_prefix = "serde_derive-1.0.196",
-        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.serde_derive-1.0.196.bazel"),
+        urls = ["https://crates.io/api/v1/crates/serde_derive/1.0.197/download"],
+        strip_prefix = "serde_derive-1.0.197",
+        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.serde_derive-1.0.197.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__serde_json-1.0.113",
-        sha256 = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79",
+        name = "crates_vendor_pkgs__serde_json-1.0.114",
+        sha256 = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/serde_json/1.0.113/download"],
-        strip_prefix = "serde_json-1.0.113",
-        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.serde_json-1.0.113.bazel"),
+        urls = ["https://crates.io/api/v1/crates/serde_json/1.0.114/download"],
+        strip_prefix = "serde_json-1.0.114",
+        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.serde_json-1.0.114.bazel"),
     )
 
     maybe(
@@ -1114,12 +1114,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__syn-2.0.48",
-        sha256 = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f",
+        name = "crates_vendor_pkgs__syn-2.0.50",
+        sha256 = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/syn/2.0.48/download"],
-        strip_prefix = "syn-2.0.48",
-        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.syn-2.0.48.bazel"),
+        urls = ["https://crates.io/api/v1/crates/syn/2.0.50/download"],
+        strip_prefix = "syn-2.0.50",
+        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.syn-2.0.50.bazel"),
     )
 
     maybe(
@@ -1134,12 +1134,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__thread_local-1.1.7",
-        sha256 = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152",
+        name = "crates_vendor_pkgs__thread_local-1.1.8",
+        sha256 = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/thread_local/1.1.7/download"],
-        strip_prefix = "thread_local-1.1.7",
-        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.thread_local-1.1.7.bazel"),
+        urls = ["https://crates.io/api/v1/crates/thread_local/1.1.8/download"],
+        strip_prefix = "thread_local-1.1.8",
+        build_file = Label("@examples//vendor_remote_pkgs/crates:BUILD.thread_local-1.1.8.bazel"),
     )
 
     maybe(
@@ -1436,7 +1436,7 @@
         struct(repo = "crates_vendor_pkgs__axum-0.4.8", is_dev_dep = False),
         struct(repo = "crates_vendor_pkgs__hyper-0.14.28", is_dev_dep = False),
         struct(repo = "crates_vendor_pkgs__mime-0.3.17", is_dev_dep = False),
-        struct(repo = "crates_vendor_pkgs__serde_json-1.0.113", is_dev_dep = False),
+        struct(repo = "crates_vendor_pkgs__serde_json-1.0.114", is_dev_dep = False),
         struct(repo = "crates_vendor_pkgs__socket2-0.4.10", is_dev_dep = False),
         struct(repo = "crates_vendor_pkgs__tokio-1.36.0", is_dev_dep = False),
         struct(repo = "crates_vendor_pkgs__tower-0.4.13", is_dev_dep = False),
diff --git a/examples/crate_universe_unnamed/.bazelrc b/examples/crate_universe_unnamed/.bazelrc
index aeb9ab4..05952d1 100644
--- a/examples/crate_universe_unnamed/.bazelrc
+++ b/examples/crate_universe_unnamed/.bazelrc
@@ -18,6 +18,9 @@
 # https://github.com/bazelbuild/rules_rust/issues/2181
 common --noenable_bzlmod
 
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
+
 # This import should always be last to allow users to override
 # settings for local development.
 try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.addr2line-0.21.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.addr2line-0.21.0.bazel
index b216a30..fd9afb3 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.addr2line-0.21.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.addr2line-0.21.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "addr2line",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.adler-1.0.2.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.adler-1.0.2.bazel
index 1d2f884..4f5128a 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.adler-1.0.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.adler-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "adler",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.async-stream-0.3.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.async-stream-0.3.5.bazel
index 30b42b2..6f102e7 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.async-stream-0.3.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.async-stream-0.3.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "async_stream",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.async-stream-impl-0.3.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.async-stream-impl-0.3.5.bazel
index ba2d0fb..858df2e 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.async-stream-impl-0.3.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.async-stream-impl-0.3.5.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "async_stream_impl",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "@crates_vendor_manifests__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_manifests__quote-1.0.35//:quote",
-        "@crates_vendor_manifests__syn-2.0.48//:syn",
+        "@crates_vendor_manifests__syn-2.0.50//:syn",
     ],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.autocfg-1.1.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.autocfg-1.1.0.bazel
index cbb72a5..90e4866 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.autocfg-1.1.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.autocfg-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "autocfg",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.backtrace-0.3.69.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.backtrace-0.3.69.bazel
index fbd6ac9..2639851 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.backtrace-0.3.69.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.backtrace-0.3.69.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "backtrace",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -271,12 +275,16 @@
 )
 
 cargo_build_script(
-    name = "backtrace_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "backtrace_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -300,12 +308,12 @@
     version = "0.3.69",
     visibility = ["//visibility:private"],
     deps = [
-        "@crates_vendor_manifests__cc-1.0.83//:cc",
+        "@crates_vendor_manifests__cc-1.0.86//:cc",
     ],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":backtrace_build_script",
+    actual = ":backtrace_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bazel
index ef05994..f5092a7 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bitflags-1.3.2.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bitflags-1.3.2.bazel
index d34f956..210c6b7 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bitflags-1.3.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bitflags-1.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bitflags-2.4.2.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bitflags-2.4.2.bazel
index 3d1255a..99a67cf 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bitflags-2.4.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bitflags-2.4.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bytes-1.5.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bytes-1.5.0.bazel
index b9bae82..e3a7a14 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bytes-1.5.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.bytes-1.5.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bytes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.cc-1.0.83.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.cc-1.0.83.bazel
deleted file mode 100644
index 592860f..0000000
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.cc-1.0.83.bazel
+++ /dev/null
@@ -1,152 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//vendor_remote_manifests:crates_vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
-    name = "cc",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=cc",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    target_compatible_with = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [],
-        "@rules_rust//rust/platform:aarch64-linux-android": [],
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:i686-apple-darwin": [],
-        "@rules_rust//rust/platform:i686-linux-android": [],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
-        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
-        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
-        "@rules_rust//rust/platform:wasm32-wasi": [],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [],
-        "@rules_rust//rust/platform:x86_64-linux-android": [],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-none": [],
-        "//conditions:default": ["@platforms//:incompatible"],
-    }),
-    version = "1.0.83",
-    deps = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-linux-android": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-apple-darwin": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-linux-android": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-linux-android": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
-            "@crates_vendor_manifests__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "//conditions:default": [],
-    }),
-)
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.cc-1.0.86.bazel
similarity index 93%
copy from examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel
copy to examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.cc-1.0.86.bazel
index 805fd95..56f75e0 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.cc-1.0.86.bazel
@@ -11,10 +11,14 @@
 package(default_visibility = ["//visibility:public"])
 
 rust_library(
-    name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    name = "cc",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -25,13 +29,13 @@
         ],
     ),
     crate_root = "src/lib.rs",
-    edition = "2021",
+    edition = "2018",
     rustc_flags = [
         "--cap-lints=allow",
     ],
     tags = [
         "cargo-bazel",
-        "crate-name=hermit-abi",
+        "crate-name=cc",
         "manual",
         "noclippy",
         "norustfmt",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.3.5",
+    version = "1.0.86",
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.cfg-if-1.0.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.cfg-if-1.0.0.bazel
index 910db43..b409278 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.cfg-if-1.0.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.cfg-if-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.errno-0.3.8.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.errno-0.3.8.bazel
index 5231ba7..2c49942 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.errno-0.3.8.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.errno-0.3.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "errno",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.fastrand-2.0.1.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.fastrand-2.0.1.bazel
index 9876b26..96c5ab2 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.fastrand-2.0.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.fastrand-2.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fastrand",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.futures-core-0.3.30.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.futures-core-0.3.30.bazel
index 07ac6a6..75e219b 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.futures-core-0.3.30.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.futures-core-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.gimli-0.28.1.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.gimli-0.28.1.bazel
index 118a999..c29ed33 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.gimli-0.28.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.gimli-0.28.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gimli",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel
deleted file mode 100644
index 805fd95..0000000
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel
+++ /dev/null
@@ -1,77 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//vendor_remote_manifests:crates_vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
-    name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2021",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=hermit-abi",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    target_compatible_with = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [],
-        "@rules_rust//rust/platform:aarch64-linux-android": [],
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:i686-apple-darwin": [],
-        "@rules_rust//rust/platform:i686-linux-android": [],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
-        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
-        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
-        "@rules_rust//rust/platform:wasm32-wasi": [],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [],
-        "@rules_rust//rust/platform:x86_64-linux-android": [],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-none": [],
-        "//conditions:default": ["@platforms//:incompatible"],
-    }),
-    version = "0.3.5",
-)
diff --git a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.6.bazel
similarity index 95%
copy from examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel
copy to examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.6.bazel
index 805fd95..3bb8563 100644
--- a/examples/crate_universe/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.hermit-abi-0.3.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.3.5",
+    version = "0.3.6",
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.libc-0.2.153.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.libc-0.2.153.bazel
index 6cd2733..53f01d5 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.libc-0.2.153.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.libc-0.2.153.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -141,8 +145,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -207,6 +214,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -233,6 +241,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.linux-raw-sys-0.4.13.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.linux-raw-sys-0.4.13.bazel
index 7736b74..5547983 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.linux-raw-sys-0.4.13.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.linux-raw-sys-0.4.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "linux_raw_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.lock_api-0.4.11.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.lock_api-0.4.11.bazel
index d51790e..23b1998 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.lock_api-0.4.11.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.lock_api-0.4.11.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "lock_api",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "lock_api_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "lock_api_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "atomic_usize",
         "default",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -125,6 +133,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":lock_api_build_script",
+    actual = ":lock_api_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.memchr-2.7.1.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.memchr-2.7.1.bazel
index 660cbb2..3409930 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.memchr-2.7.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.memchr-2.7.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "memchr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.miniz_oxide-0.7.2.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.miniz_oxide-0.7.2.bazel
index 9a7f539..02dd4da 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.miniz_oxide-0.7.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.miniz_oxide-0.7.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "miniz_oxide",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.mio-0.8.10.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.mio-0.8.10.bazel
index 39796c4..2ba43b0 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.mio-0.8.10.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.mio-0.8.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.num_cpus-1.16.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.num_cpus-1.16.0.bazel
index 9df730e..005e4d6 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.num_cpus-1.16.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.num_cpus-1.16.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_cpus",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.object-0.32.2.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.object-0.32.2.bazel
index 0556d43..f06bc6a 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.object-0.32.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.object-0.32.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "object",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.parking_lot-0.12.1.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.parking_lot-0.12.1.bazel
index 173f07d..1350cb5 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.parking_lot-0.12.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.parking_lot-0.12.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "parking_lot",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.parking_lot_core-0.9.9.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.parking_lot_core-0.9.9.bazel
index cd2bc52..53d590d 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.parking_lot_core-0.9.9.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.parking_lot_core-0.9.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "parking_lot_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -166,12 +170,16 @@
 )
 
 cargo_build_script(
-    name = "parking_lot_core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "parking_lot_core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -198,6 +206,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":parking_lot_core_build_script",
+    actual = ":parking_lot_core_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.pin-project-lite-0.2.13.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.pin-project-lite-0.2.13.bazel
index a5d278c..d0f4749 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.pin-project-lite-0.2.13.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.pin-project-lite-0.2.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_project_lite",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.proc-macro2-1.0.78.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.proc-macro2-1.0.78.bazel
index ad8fc53..ce49554 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.proc-macro2-1.0.78.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.proc-macro2-1.0.78.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "proc-macro2_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro2_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro2_build_script",
+    actual = ":proc-macro2_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.quote-1.0.35.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.quote-1.0.35.bazel
index 5755c2a..5278e7d 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.quote-1.0.35.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.quote-1.0.35.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.redox_syscall-0.4.1.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.redox_syscall-0.4.1.bazel
index a246b71..0e0133e 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.redox_syscall-0.4.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.redox_syscall-0.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syscall",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.rustc-demangle-0.1.23.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.rustc-demangle-0.1.23.bazel
index f919d07..e1ebd60 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.rustc-demangle-0.1.23.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.rustc-demangle-0.1.23.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rustc_demangle",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.rustix-0.38.31.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.rustix-0.38.31.bazel
index 622a525..3793a6e 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.rustix-0.38.31.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.rustix-0.38.31.bazel
@@ -13,7 +13,10 @@
 
 rust_library(
     name = "rustix",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     aliases = select({
         "@rules_rust//rust/platform:aarch64-apple-darwin": {
             "@crates_vendor_manifests__errno-0.3.8//:errno": "libc_errno",  # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = "linux", target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "riscv64", all(rustix_use_experimental_asm, target_arch = "powerpc64"), all(rustix_use_experimental_asm, target_arch = "mips"), all(rustix_use_experimental_asm, target_arch = "mips32r6"), all(rustix_use_experimental_asm, target_arch = "mips64"), all(rustix_use_experimental_asm, target_arch = "mips64r6"), target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64")))))))
@@ -100,6 +103,7 @@
     }),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -310,8 +314,11 @@
 )
 
 cargo_build_script(
-    name = "rustix_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rustix_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "alloc",
         "default",
@@ -323,6 +330,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -349,6 +357,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rustix_build_script",
+    actual = ":rustix_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.scopeguard-1.2.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.scopeguard-1.2.0.bazel
index 6562668..9bb9e70 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.scopeguard-1.2.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.scopeguard-1.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "scopeguard",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.signal-hook-registry-1.4.1.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.signal-hook-registry-1.4.1.bazel
index 621e313..ec8d405 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.signal-hook-registry-1.4.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.signal-hook-registry-1.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "signal_hook_registry",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.smallvec-1.13.1.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.smallvec-1.13.1.bazel
index f3a4744..2629a45 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.smallvec-1.13.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.smallvec-1.13.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "smallvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.socket2-0.5.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.socket2-0.5.5.bazel
index 0b10ce2..9333f3e 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.socket2-0.5.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.socket2-0.5.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "socket2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.syn-2.0.48.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.syn-2.0.50.bazel
similarity index 96%
rename from examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.syn-2.0.48.bazel
rename to examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.syn-2.0.50.bazel
index 785d6a1..dffcacb 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.syn-2.0.48.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.syn-2.0.50.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -84,7 +88,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "2.0.48",
+    version = "2.0.50",
     deps = [
         "@crates_vendor_manifests__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_manifests__quote-1.0.35//:quote",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tempfile-3.10.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tempfile-3.10.0.bazel
index ea122d2..304d672 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tempfile-3.10.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tempfile-3.10.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tempfile",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-1.36.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-1.36.0.bazel
index cd0c24d..3a3c542 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-1.36.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-1.36.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-macros-2.2.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-macros-2.2.0.bazel
index 2f97368..0a978db 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-macros-2.2.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-macros-2.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "tokio_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "@crates_vendor_manifests__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_manifests__quote-1.0.35//:quote",
-        "@crates_vendor_manifests__syn-2.0.48//:syn",
+        "@crates_vendor_manifests__syn-2.0.50//:syn",
     ],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-stream-0.1.14.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-stream-0.1.14.bazel
index 01eae6a..60f3db9 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-stream-0.1.14.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-stream-0.1.14.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_stream",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-test-0.4.3.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-test-0.4.3.bazel
index 9a1007f..3148efa 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-test-0.4.3.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.tokio-test-0.4.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_test",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.unicode-ident-1.0.12.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.unicode-ident-1.0.12.bazel
index 7c2ee3c..75b5b56 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.unicode-ident-1.0.12.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.unicode-ident-1.0.12.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_ident",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
index 2186fde..9d13188 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-sys-0.48.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-sys-0.48.0.bazel
index 2fa2aca..5f42b3d 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-sys-0.48.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-sys-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-sys-0.52.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-sys-0.52.0.bazel
index c8e7c92..706f3cb 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-sys-0.52.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-sys-0.52.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -82,6 +86,6 @@
     }),
     version = "0.52.0",
     deps = [
-        "@crates_vendor_manifests__windows-targets-0.52.0//:windows_targets",
+        "@crates_vendor_manifests__windows-targets-0.52.3//:windows_targets",
     ],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-targets-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-targets-0.48.5.bazel
index 579527d..f10b810 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-targets-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-targets-0.48.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-targets-0.52.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-targets-0.52.3.bazel
similarity index 89%
rename from examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-targets-0.52.0.bazel
rename to examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-targets-0.52.3.bazel
index 9155242..6f3e4fb 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-targets-0.52.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows-targets-0.52.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,25 +77,25 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = select({
         "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
-            "@crates_vendor_manifests__windows_aarch64_msvc-0.52.0//:windows_aarch64_msvc",  # cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
+            "@crates_vendor_manifests__windows_aarch64_msvc-0.52.3//:windows_aarch64_msvc",  # cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:i686-pc-windows-msvc": [
-            "@crates_vendor_manifests__windows_i686_msvc-0.52.0//:windows_i686_msvc",  # cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
+            "@crates_vendor_manifests__windows_i686_msvc-0.52.3//:windows_i686_msvc",  # cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
-            "@crates_vendor_manifests__windows_i686_gnu-0.52.0//:windows_i686_gnu",  # cfg(all(target_arch = "x86", target_env = "gnu", not(windows_raw_dylib)))
+            "@crates_vendor_manifests__windows_i686_gnu-0.52.3//:windows_i686_gnu",  # cfg(all(target_arch = "x86", target_env = "gnu", not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
-            "@crates_vendor_manifests__windows_x86_64_msvc-0.52.0//:windows_x86_64_msvc",  # cfg(all(target_arch = "x86_64", target_env = "msvc", not(windows_raw_dylib)))
+            "@crates_vendor_manifests__windows_x86_64_msvc-0.52.3//:windows_x86_64_msvc",  # cfg(all(target_arch = "x86_64", target_env = "msvc", not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
-            "@crates_vendor_manifests__windows_x86_64_gnu-0.52.0//:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
+            "@crates_vendor_manifests__windows_x86_64_gnu-0.52.3//:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
         ],
         "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
-            "@crates_vendor_manifests__windows_x86_64_gnu-0.52.0//:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
+            "@crates_vendor_manifests__windows_x86_64_gnu-0.52.3//:windows_x86_64_gnu",  # cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
         ],
         "//conditions:default": [],
     }),
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel
index 432e53e..e340830 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.52.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.52.3.bazel
similarity index 91%
rename from examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.52.0.bazel
rename to examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.52.3.bazel
index fa25911..21e81f0 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.52.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_gnullvm-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@crates_vendor_manifests__windows_aarch64_gnullvm-0.52.0//:build_script_build",
+        "@crates_vendor_manifests__windows_aarch64_gnullvm-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel
index f8a0ad3..da0d456 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.52.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.52.3.bazel
similarity index 90%
rename from examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.52.0.bazel
rename to examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.52.3.bazel
index 321cf2a..df0f9fe 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.52.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_aarch64_msvc-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@crates_vendor_manifests__windows_aarch64_msvc-0.52.0//:build_script_build",
+        "@crates_vendor_manifests__windows_aarch64_msvc-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.48.5.bazel
index 88c9674..05ef325 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.3.bazel
similarity index 90%
copy from examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.0.bazel
copy to examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.3.bazel
index fc107f3..082a0c9 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_gnu-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@crates_vendor_manifests__windows_i686_gnu-0.52.0//:build_script_build",
+        "@crates_vendor_manifests__windows_i686_gnu-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.48.5.bazel
index 482f649..ad459f0 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.52.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.52.3.bazel
similarity index 90%
rename from examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.52.0.bazel
rename to examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.52.3.bazel
index 5b7ce5c..0c1279f 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.52.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_i686_msvc-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@crates_vendor_manifests__windows_i686_msvc-0.52.0//:build_script_build",
+        "@crates_vendor_manifests__windows_i686_msvc-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel
index 2d9c5f3..48cb95c 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.3.bazel
similarity index 90%
rename from examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.0.bazel
rename to examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.3.bazel
index de13e00..eea7898 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnu-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@crates_vendor_manifests__windows_x86_64_gnu-0.52.0//:build_script_build",
+        "@crates_vendor_manifests__windows_x86_64_gnu-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel
index ac727c0..0a0a0a3 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.52.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.52.3.bazel
similarity index 90%
rename from examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.52.0.bazel
rename to examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.52.3.bazel
index 5976a0f..5d3e39e 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.52.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_gnullvm-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@crates_vendor_manifests__windows_x86_64_gnullvm-0.52.0//:build_script_build",
+        "@crates_vendor_manifests__windows_x86_64_gnullvm-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel
index 28643c0..03003a7 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.0.bazel b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.3.bazel
similarity index 90%
rename from examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.0.bazel
rename to examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.3.bazel
index 9ea4e83..2761f07 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/BUILD.windows_x86_64_msvc-0.52.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.52.0",
+    version = "0.52.3",
     deps = [
-        "@crates_vendor_manifests__windows_x86_64_msvc-0.52.0//:build_script_build",
+        "@crates_vendor_manifests__windows_x86_64_msvc-0.52.3//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,12 +115,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.52.0",
+    version = "0.52.3",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/defs.bzl b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/defs.bzl
index b2ac754..e26b4b1 100644
--- a/examples/crate_universe_unnamed/vendor_remote_manifests/crates/defs.bzl
+++ b/examples/crate_universe_unnamed/vendor_remote_manifests/crates/defs.bzl
@@ -295,7 +295,7 @@
 _NORMAL_DEPENDENCIES = {
     "vendor_remote_manifests": {
         _COMMON_CONDITION: {
-            "tokio": "@crates_vendor_manifests__tokio-1.36.0//:tokio",
+            "tokio": Label("@crates_vendor_manifests__tokio-1.36.0//:tokio"),
         },
     },
 }
@@ -310,8 +310,8 @@
 _NORMAL_DEV_DEPENDENCIES = {
     "vendor_remote_manifests": {
         _COMMON_CONDITION: {
-            "tempfile": "@crates_vendor_manifests__tempfile-3.10.0//:tempfile",
-            "tokio-test": "@crates_vendor_manifests__tokio-test-0.4.3//:tokio_test",
+            "tempfile": Label("@crates_vendor_manifests__tempfile-3.10.0//:tempfile"),
+            "tokio-test": Label("@crates_vendor_manifests__tokio-test-0.4.3//:tokio_test"),
         },
     },
 }
@@ -522,12 +522,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_manifests__cc-1.0.83",
-        sha256 = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0",
+        name = "crates_vendor_manifests__cc-1.0.86",
+        sha256 = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/cc/1.0.83/download"],
-        strip_prefix = "cc-1.0.83",
-        build_file = Label("@//vendor_remote_manifests/crates:BUILD.cc-1.0.83.bazel"),
+        urls = ["https://crates.io/api/v1/crates/cc/1.0.86/download"],
+        strip_prefix = "cc-1.0.86",
+        build_file = Label("@//vendor_remote_manifests/crates:BUILD.cc-1.0.86.bazel"),
     )
 
     maybe(
@@ -582,12 +582,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_manifests__hermit-abi-0.3.5",
-        sha256 = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3",
+        name = "crates_vendor_manifests__hermit-abi-0.3.6",
+        sha256 = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/hermit-abi/0.3.5/download"],
-        strip_prefix = "hermit-abi-0.3.5",
-        build_file = Label("@//vendor_remote_manifests/crates:BUILD.hermit-abi-0.3.5.bazel"),
+        urls = ["https://crates.io/api/v1/crates/hermit-abi/0.3.6/download"],
+        strip_prefix = "hermit-abi-0.3.6",
+        build_file = Label("@//vendor_remote_manifests/crates:BUILD.hermit-abi-0.3.6.bazel"),
     )
 
     maybe(
@@ -792,12 +792,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_manifests__syn-2.0.48",
-        sha256 = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f",
+        name = "crates_vendor_manifests__syn-2.0.50",
+        sha256 = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/syn/2.0.48/download"],
-        strip_prefix = "syn-2.0.48",
-        build_file = Label("@//vendor_remote_manifests/crates:BUILD.syn-2.0.48.bazel"),
+        urls = ["https://crates.io/api/v1/crates/syn/2.0.50/download"],
+        strip_prefix = "syn-2.0.50",
+        build_file = Label("@//vendor_remote_manifests/crates:BUILD.syn-2.0.50.bazel"),
     )
 
     maybe(
@@ -902,12 +902,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_manifests__windows-targets-0.52.0",
-        sha256 = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd",
+        name = "crates_vendor_manifests__windows-targets-0.52.3",
+        sha256 = "d380ba1dc7187569a8a9e91ed34b8ccfc33123bbacb8c0aed2d1ad7f3ef2dc5f",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows-targets/0.52.0/download"],
-        strip_prefix = "windows-targets-0.52.0",
-        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows-targets-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows-targets/0.52.3/download"],
+        strip_prefix = "windows-targets-0.52.3",
+        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows-targets-0.52.3.bazel"),
     )
 
     maybe(
@@ -922,12 +922,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_manifests__windows_aarch64_gnullvm-0.52.0",
-        sha256 = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea",
+        name = "crates_vendor_manifests__windows_aarch64_gnullvm-0.52.3",
+        sha256 = "68e5dcfb9413f53afd9c8f86e56a7b4d86d9a2fa26090ea2dc9e40fba56c6ec6",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_aarch64_gnullvm/0.52.0/download"],
-        strip_prefix = "windows_aarch64_gnullvm-0.52.0",
-        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_aarch64_gnullvm-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_aarch64_gnullvm/0.52.3/download"],
+        strip_prefix = "windows_aarch64_gnullvm-0.52.3",
+        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_aarch64_gnullvm-0.52.3.bazel"),
     )
 
     maybe(
@@ -942,12 +942,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_manifests__windows_aarch64_msvc-0.52.0",
-        sha256 = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef",
+        name = "crates_vendor_manifests__windows_aarch64_msvc-0.52.3",
+        sha256 = "8dab469ebbc45798319e69eebf92308e541ce46760b49b18c6b3fe5e8965b30f",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_aarch64_msvc/0.52.0/download"],
-        strip_prefix = "windows_aarch64_msvc-0.52.0",
-        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_aarch64_msvc-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_aarch64_msvc/0.52.3/download"],
+        strip_prefix = "windows_aarch64_msvc-0.52.3",
+        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_aarch64_msvc-0.52.3.bazel"),
     )
 
     maybe(
@@ -962,12 +962,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_manifests__windows_i686_gnu-0.52.0",
-        sha256 = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313",
+        name = "crates_vendor_manifests__windows_i686_gnu-0.52.3",
+        sha256 = "2a4e9b6a7cac734a8b4138a4e1044eac3404d8326b6c0f939276560687a033fb",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_i686_gnu/0.52.0/download"],
-        strip_prefix = "windows_i686_gnu-0.52.0",
-        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_i686_gnu-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_i686_gnu/0.52.3/download"],
+        strip_prefix = "windows_i686_gnu-0.52.3",
+        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_i686_gnu-0.52.3.bazel"),
     )
 
     maybe(
@@ -982,12 +982,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_manifests__windows_i686_msvc-0.52.0",
-        sha256 = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a",
+        name = "crates_vendor_manifests__windows_i686_msvc-0.52.3",
+        sha256 = "28b0ec9c422ca95ff34a78755cfa6ad4a51371da2a5ace67500cf7ca5f232c58",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_i686_msvc/0.52.0/download"],
-        strip_prefix = "windows_i686_msvc-0.52.0",
-        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_i686_msvc-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_i686_msvc/0.52.3/download"],
+        strip_prefix = "windows_i686_msvc-0.52.3",
+        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_i686_msvc-0.52.3.bazel"),
     )
 
     maybe(
@@ -1002,12 +1002,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_manifests__windows_x86_64_gnu-0.52.0",
-        sha256 = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd",
+        name = "crates_vendor_manifests__windows_x86_64_gnu-0.52.3",
+        sha256 = "704131571ba93e89d7cd43482277d6632589b18ecf4468f591fbae0a8b101614",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_x86_64_gnu/0.52.0/download"],
-        strip_prefix = "windows_x86_64_gnu-0.52.0",
-        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_x86_64_gnu-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_x86_64_gnu/0.52.3/download"],
+        strip_prefix = "windows_x86_64_gnu-0.52.3",
+        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_x86_64_gnu-0.52.3.bazel"),
     )
 
     maybe(
@@ -1022,12 +1022,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_manifests__windows_x86_64_gnullvm-0.52.0",
-        sha256 = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e",
+        name = "crates_vendor_manifests__windows_x86_64_gnullvm-0.52.3",
+        sha256 = "42079295511643151e98d61c38c0acc444e52dd42ab456f7ccfd5152e8ecf21c",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_x86_64_gnullvm/0.52.0/download"],
-        strip_prefix = "windows_x86_64_gnullvm-0.52.0",
-        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_x86_64_gnullvm-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_x86_64_gnullvm/0.52.3/download"],
+        strip_prefix = "windows_x86_64_gnullvm-0.52.3",
+        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_x86_64_gnullvm-0.52.3.bazel"),
     )
 
     maybe(
@@ -1042,12 +1042,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_manifests__windows_x86_64_msvc-0.52.0",
-        sha256 = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04",
+        name = "crates_vendor_manifests__windows_x86_64_msvc-0.52.3",
+        sha256 = "0770833d60a970638e989b3fa9fd2bb1aaadcf88963d1659fd7d9990196ed2d6",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/windows_x86_64_msvc/0.52.0/download"],
-        strip_prefix = "windows_x86_64_msvc-0.52.0",
-        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_x86_64_msvc-0.52.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/windows_x86_64_msvc/0.52.3/download"],
+        strip_prefix = "windows_x86_64_msvc-0.52.3",
+        build_file = Label("@//vendor_remote_manifests/crates:BUILD.windows_x86_64_msvc-0.52.3.bazel"),
     )
 
     return [
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.addr2line-0.21.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.addr2line-0.21.0.bazel
index 2b3cd14..d49f9b6 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.addr2line-0.21.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.addr2line-0.21.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "addr2line",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.adler-1.0.2.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.adler-1.0.2.bazel
index 24961b7..5ba1a95 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.adler-1.0.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.adler-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "adler",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.async-trait-0.1.77.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.async-trait-0.1.77.bazel
index 28bde7a..5c336bc 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.async-trait-0.1.77.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.async-trait-0.1.77.bazel
@@ -13,9 +13,13 @@
 
 rust_proc_macro(
     name = "async_trait",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -79,17 +83,21 @@
         "@crates_vendor_pkgs__async-trait-0.1.77//:build_script_build",
         "@crates_vendor_pkgs__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_pkgs__quote-1.0.35//:quote",
-        "@crates_vendor_pkgs__syn-2.0.48//:syn",
+        "@crates_vendor_pkgs__syn-2.0.50//:syn",
     ],
 )
 
 cargo_build_script(
-    name = "async-trait_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "async-trait_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -116,6 +124,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":async-trait_build_script",
+    actual = ":async-trait_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.autocfg-1.1.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.autocfg-1.1.0.bazel
index 4f622f3..c3ab39d 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.autocfg-1.1.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.autocfg-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "autocfg",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.axum-0.4.8.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.axum-0.4.8.bazel
index f47a46c..6fee28c 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.axum-0.4.8.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.axum-0.4.8.bazel
@@ -12,12 +12,16 @@
 
 rust_library(
     name = "axum",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = [
             "**",
             "**/*.md",
         ],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -100,8 +104,8 @@
         "@crates_vendor_pkgs__mime-0.3.17//:mime",
         "@crates_vendor_pkgs__percent-encoding-2.3.1//:percent_encoding",
         "@crates_vendor_pkgs__pin-project-lite-0.2.13//:pin_project_lite",
-        "@crates_vendor_pkgs__serde-1.0.196//:serde",
-        "@crates_vendor_pkgs__serde_json-1.0.113//:serde_json",
+        "@crates_vendor_pkgs__serde-1.0.197//:serde",
+        "@crates_vendor_pkgs__serde_json-1.0.114//:serde_json",
         "@crates_vendor_pkgs__serde_urlencoded-0.7.1//:serde_urlencoded",
         "@crates_vendor_pkgs__sync_wrapper-0.1.2//:sync_wrapper",
         "@crates_vendor_pkgs__tokio-1.36.0//:tokio",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.axum-core-0.1.2.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.axum-core-0.1.2.bazel
index 3a1c0f8..5018e4f 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.axum-core-0.1.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.axum-core-0.1.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "axum_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.backtrace-0.3.69.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.backtrace-0.3.69.bazel
index d3e53fe..b24e014 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.backtrace-0.3.69.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.backtrace-0.3.69.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "backtrace",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -271,12 +275,16 @@
 )
 
 cargo_build_script(
-    name = "backtrace_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "backtrace_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -300,12 +308,12 @@
     version = "0.3.69",
     visibility = ["//visibility:private"],
     deps = [
-        "@crates_vendor_pkgs__cc-1.0.83//:cc",
+        "@crates_vendor_pkgs__cc-1.0.86//:cc",
     ],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":backtrace_build_script",
+    actual = ":backtrace_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.bazel
index 03ceda0..e033512 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
@@ -45,7 +51,7 @@
 
 alias(
     name = "serde_json",
-    actual = "@crates_vendor_pkgs__serde_json-1.0.113//:serde_json",
+    actual = "@crates_vendor_pkgs__serde_json-1.0.114//:serde_json",
     tags = ["manual"],
 )
 
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.bitflags-1.3.2.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.bitflags-1.3.2.bazel
index 67e4e01..b80c738 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.bitflags-1.3.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.bitflags-1.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.bytes-1.5.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.bytes-1.5.0.bazel
index 7cd6229..6ae13e0 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.bytes-1.5.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.bytes-1.5.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bytes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.cc-1.0.83.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.cc-1.0.83.bazel
deleted file mode 100644
index a6efb11..0000000
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.cc-1.0.83.bazel
+++ /dev/null
@@ -1,152 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//vendor_remote_pkgs:crates_vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
-    name = "cc",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=cc",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    target_compatible_with = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [],
-        "@rules_rust//rust/platform:aarch64-linux-android": [],
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:i686-apple-darwin": [],
-        "@rules_rust//rust/platform:i686-linux-android": [],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
-        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
-        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
-        "@rules_rust//rust/platform:wasm32-wasi": [],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [],
-        "@rules_rust//rust/platform:x86_64-linux-android": [],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-none": [],
-        "//conditions:default": ["@platforms//:incompatible"],
-    }),
-    version = "1.0.83",
-    deps = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-linux-android": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-apple-darwin": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-linux-android": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-linux-android": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [
-            "@crates_vendor_pkgs__libc-0.2.153//:libc",  # cfg(unix)
-        ],
-        "//conditions:default": [],
-    }),
-)
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.ryu-1.0.16.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.cc-1.0.86.bazel
similarity index 94%
copy from examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.ryu-1.0.16.bazel
copy to examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.cc-1.0.86.bazel
index 5dbc4bd..382bf26 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.ryu-1.0.16.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.cc-1.0.86.bazel
@@ -11,10 +11,14 @@
 package(default_visibility = ["//visibility:public"])
 
 rust_library(
-    name = "ryu",
-    srcs = glob(["**/*.rs"]),
+    name = "cc",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -31,7 +35,7 @@
     ],
     tags = [
         "cargo-bazel",
-        "crate-name=ryu",
+        "crate-name=cc",
         "manual",
         "noclippy",
         "norustfmt",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.16",
+    version = "1.0.86",
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.cfg-if-1.0.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.cfg-if-1.0.0.bazel
index fc7cb86..d39d662 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.cfg-if-1.0.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.cfg-if-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.equivalent-1.0.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.equivalent-1.0.1.bazel
index bb53d66..ad36c2a 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.equivalent-1.0.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.equivalent-1.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "equivalent",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.fnv-1.0.7.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.fnv-1.0.7.bazel
index 8158b13..e52eb26 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.fnv-1.0.7.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.fnv-1.0.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fnv",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.form_urlencoded-1.2.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.form_urlencoded-1.2.1.bazel
index 100e2ef..e31ffb7 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.form_urlencoded-1.2.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.form_urlencoded-1.2.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "form_urlencoded",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-channel-0.3.30.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-channel-0.3.30.bazel
index 4585dd3..0e780d0 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-channel-0.3.30.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-channel-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_channel",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-core-0.3.30.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-core-0.3.30.bazel
index 3c97cd6..9f34b8e 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-core-0.3.30.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-core-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-sink-0.3.30.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-sink-0.3.30.bazel
index 0f0431c..c2ddb5a 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-sink-0.3.30.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-sink-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_sink",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-task-0.3.30.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-task-0.3.30.bazel
index 60f6e11..8815585 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-task-0.3.30.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-task-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_task",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-util-0.3.30.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-util-0.3.30.bazel
index 33a6ad3..a837b02 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-util-0.3.30.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.futures-util-0.3.30.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.gimli-0.28.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.gimli-0.28.1.bazel
index 05e321e..c9f6cf7 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.gimli-0.28.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.gimli-0.28.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gimli",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.h2-0.3.24.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.h2-0.3.24.bazel
index 9441fa2..e5ef7ac 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.h2-0.3.24.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.h2-0.3.24.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "h2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hashbrown-0.14.3.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hashbrown-0.14.3.bazel
index e9bc5bb..dc71736 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hashbrown-0.14.3.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hashbrown-0.14.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hashbrown",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hermit-abi-0.3.5.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hermit-abi-0.3.6.bazel
similarity index 95%
rename from examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hermit-abi-0.3.5.bazel
rename to examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hermit-abi-0.3.6.bazel
index 808025d..7b01f8d 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hermit-abi-0.3.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hermit-abi-0.3.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.3.5",
+    version = "0.3.6",
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.http-0.2.11.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.http-0.2.11.bazel
index 696d58b..fd8fdd3 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.http-0.2.11.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.http-0.2.11.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "http",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.http-body-0.4.6.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.http-body-0.4.6.bazel
index 4b92e31..006d92e 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.http-body-0.4.6.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.http-body-0.4.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "http_body",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.http-range-header-0.3.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.http-range-header-0.3.1.bazel
index 934d2e5..fa5ba40 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.http-range-header-0.3.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.http-range-header-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "http_range_header",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.httparse-1.8.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.httparse-1.8.0.bazel
index 96a0799..87f9bbd 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.httparse-1.8.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.httparse-1.8.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "httparse",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "httparse_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "httparse_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":httparse_build_script",
+    actual = ":httparse_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.httpdate-1.0.3.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.httpdate-1.0.3.bazel
index 990ea3a..0b5ea58 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.httpdate-1.0.3.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.httpdate-1.0.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "httpdate",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hyper-0.14.28.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hyper-0.14.28.bazel
index 2c2e01d..0fa1fd7 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hyper-0.14.28.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.hyper-0.14.28.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hyper",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.indexmap-2.2.3.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.indexmap-2.2.3.bazel
index 5e0e9b7..2c3ddb1 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.indexmap-2.2.3.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.indexmap-2.2.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "indexmap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.itoa-1.0.10.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.itoa-1.0.10.bazel
index 8b77b52..6c0aed8 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.itoa-1.0.10.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.itoa-1.0.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "itoa",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.lazy_static-1.4.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.lazy_static-1.4.0.bazel
index 9a47035..fa438a3 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.lazy_static-1.4.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.lazy_static-1.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "lazy_static",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.libc-0.2.153.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.libc-0.2.153.bazel
index 4a900b9..8d803e7 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.libc-0.2.153.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.libc-0.2.153.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.lock_api-0.4.11.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.lock_api-0.4.11.bazel
index 2dc2e88..ed44384 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.lock_api-0.4.11.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.lock_api-0.4.11.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "lock_api",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "lock_api_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "lock_api_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "atomic_usize",
         "default",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -125,6 +133,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":lock_api_build_script",
+    actual = ":lock_api_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.log-0.4.20.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.log-0.4.20.bazel
index 89b7d57..059b09e 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.log-0.4.20.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.log-0.4.20.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.matchit-0.4.6.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.matchit-0.4.6.bazel
index c0f3807..f57a85b 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.matchit-0.4.6.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.matchit-0.4.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "matchit",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.memchr-2.7.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.memchr-2.7.1.bazel
index 1c552e0..a021d73 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.memchr-2.7.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.memchr-2.7.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "memchr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.mime-0.3.17.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.mime-0.3.17.bazel
index 63c8e94..fce9d7a 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.mime-0.3.17.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.mime-0.3.17.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mime",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.miniz_oxide-0.7.2.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.miniz_oxide-0.7.2.bazel
index 50cd792..287d91c 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.miniz_oxide-0.7.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.miniz_oxide-0.7.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "miniz_oxide",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.mio-0.8.10.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.mio-0.8.10.bazel
index 50e573d..281cc94 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.mio-0.8.10.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.mio-0.8.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.nu-ansi-term-0.46.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.nu-ansi-term-0.46.0.bazel
index 04ae555..b7576fd 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.nu-ansi-term-0.46.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.nu-ansi-term-0.46.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "nu_ansi_term",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.num_cpus-1.16.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.num_cpus-1.16.0.bazel
index 6a5c91f..6ec7029 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.num_cpus-1.16.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.num_cpus-1.16.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_cpus",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.object-0.32.2.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.object-0.32.2.bazel
index 837eee1..6edd707 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.object-0.32.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.object-0.32.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "object",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.once_cell-1.19.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.once_cell-1.19.0.bazel
index 3d9fd1d..9359ff9 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.once_cell-1.19.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.once_cell-1.19.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "once_cell",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.overload-0.1.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.overload-0.1.1.bazel
index f88ca38..3947d8b 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.overload-0.1.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.overload-0.1.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "overload",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.parking_lot-0.12.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.parking_lot-0.12.1.bazel
index 51baf23..c010428 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.parking_lot-0.12.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.parking_lot-0.12.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "parking_lot",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.parking_lot_core-0.9.9.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.parking_lot_core-0.9.9.bazel
index 6d9fcd2..51f006d 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.parking_lot_core-0.9.9.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.parking_lot_core-0.9.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "parking_lot_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -166,12 +170,16 @@
 )
 
 cargo_build_script(
-    name = "parking_lot_core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "parking_lot_core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -198,6 +206,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":parking_lot_core_build_script",
+    actual = ":parking_lot_core_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.percent-encoding-2.3.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.percent-encoding-2.3.1.bazel
index 53e84d6..db56f7e 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.percent-encoding-2.3.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.percent-encoding-2.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "percent_encoding",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-project-1.1.4.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-project-1.1.4.bazel
index df6df9f..c408c2b 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-project-1.1.4.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-project-1.1.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_project",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-project-internal-1.1.4.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-project-internal-1.1.4.bazel
index 1c4fd0c..bb4d8de 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-project-internal-1.1.4.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-project-internal-1.1.4.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "pin_project_internal",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "@crates_vendor_pkgs__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_pkgs__quote-1.0.35//:quote",
-        "@crates_vendor_pkgs__syn-2.0.48//:syn",
+        "@crates_vendor_pkgs__syn-2.0.50//:syn",
     ],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-project-lite-0.2.13.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-project-lite-0.2.13.bazel
index 646a66c..f83f674 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-project-lite-0.2.13.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-project-lite-0.2.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_project_lite",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-utils-0.1.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-utils-0.1.0.bazel
index 4f06a68..869b5d2 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-utils-0.1.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.pin-utils-0.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_utils",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.proc-macro2-1.0.78.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.proc-macro2-1.0.78.bazel
index d099861..f75da6f 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.proc-macro2-1.0.78.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.proc-macro2-1.0.78.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "proc-macro2_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro2_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro2_build_script",
+    actual = ":proc-macro2_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.quote-1.0.35.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.quote-1.0.35.bazel
index f74c496..09b9835 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.quote-1.0.35.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.quote-1.0.35.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.redox_syscall-0.4.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.redox_syscall-0.4.1.bazel
index 48200aa..2f629c1 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.redox_syscall-0.4.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.redox_syscall-0.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syscall",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.rustc-demangle-0.1.23.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.rustc-demangle-0.1.23.bazel
index a111ec8..6302c80 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.rustc-demangle-0.1.23.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.rustc-demangle-0.1.23.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rustc_demangle",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.ryu-1.0.16.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.ryu-1.0.17.bazel
similarity index 95%
rename from examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.ryu-1.0.16.bazel
rename to examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.ryu-1.0.17.bazel
index 5dbc4bd..16b7abd 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.ryu-1.0.16.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.ryu-1.0.17.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ryu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,5 +77,5 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.16",
+    version = "1.0.17",
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.scopeguard-1.2.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.scopeguard-1.2.0.bazel
index 0879ced..c4edfc5 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.scopeguard-1.2.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.scopeguard-1.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "scopeguard",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde-1.0.196.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde-1.0.197.bazel
similarity index 91%
rename from examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde-1.0.196.bazel
rename to examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde-1.0.197.bazel
index e563a0d..c99b657 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde-1.0.196.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde-1.0.197.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -78,15 +82,18 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.196",
+    version = "1.0.197",
     deps = [
-        "@crates_vendor_pkgs__serde-1.0.196//:build_script_build",
+        "@crates_vendor_pkgs__serde-1.0.197//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "serde_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -115,12 +123,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "1.0.196",
+    version = "1.0.197",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":serde_build_script",
+    actual = ":serde_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_derive-1.0.196.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_derive-1.0.197.bazel
similarity index 94%
rename from examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_derive-1.0.196.bazel
rename to examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_derive-1.0.197.bazel
index a6d9be2..2f0f85c 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_derive-1.0.196.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_derive-1.0.197.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "serde_derive",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,10 +77,10 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.196",
+    version = "1.0.197",
     deps = [
         "@crates_vendor_pkgs__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_pkgs__quote-1.0.35//:quote",
-        "@crates_vendor_pkgs__syn-2.0.48//:syn",
+        "@crates_vendor_pkgs__syn-2.0.50//:syn",
     ],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_json-1.0.113.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_json-1.0.114.bazel
similarity index 89%
rename from examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_json-1.0.113.bazel
rename to examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_json-1.0.114.bazel
index 4ffb62f..4846944 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_json-1.0.113.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_json-1.0.114.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde_json",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -79,18 +83,21 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.0.113",
+    version = "1.0.114",
     deps = [
         "@crates_vendor_pkgs__itoa-1.0.10//:itoa",
-        "@crates_vendor_pkgs__ryu-1.0.16//:ryu",
-        "@crates_vendor_pkgs__serde-1.0.196//:serde",
-        "@crates_vendor_pkgs__serde_json-1.0.113//:build_script_build",
+        "@crates_vendor_pkgs__ryu-1.0.17//:ryu",
+        "@crates_vendor_pkgs__serde-1.0.197//:serde",
+        "@crates_vendor_pkgs__serde_json-1.0.114//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "serde_json_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_json_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "raw_value",
@@ -100,6 +107,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -120,12 +128,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "1.0.113",
+    version = "1.0.114",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":serde_json_build_script",
+    actual = ":serde_json_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_urlencoded-0.7.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_urlencoded-0.7.1.bazel
index 5440c99..15add40 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_urlencoded-0.7.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.serde_urlencoded-0.7.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "serde_urlencoded",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,7 +81,7 @@
     deps = [
         "@crates_vendor_pkgs__form_urlencoded-1.2.1//:form_urlencoded",
         "@crates_vendor_pkgs__itoa-1.0.10//:itoa",
-        "@crates_vendor_pkgs__ryu-1.0.16//:ryu",
-        "@crates_vendor_pkgs__serde-1.0.196//:serde",
+        "@crates_vendor_pkgs__ryu-1.0.17//:ryu",
+        "@crates_vendor_pkgs__serde-1.0.197//:serde",
     ],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.sharded-slab-0.1.7.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.sharded-slab-0.1.7.bazel
index 4c6d482..b2cbe22 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.sharded-slab-0.1.7.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.sharded-slab-0.1.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "sharded_slab",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.signal-hook-registry-1.4.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.signal-hook-registry-1.4.1.bazel
index 6f26cad..bd3fb22 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.signal-hook-registry-1.4.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.signal-hook-registry-1.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "signal_hook_registry",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.slab-0.4.9.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.slab-0.4.9.bazel
index be39572..8fe4fa6 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.slab-0.4.9.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.slab-0.4.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "slab",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "slab_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "slab_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -124,6 +132,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":slab_build_script",
+    actual = ":slab_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.smallvec-1.13.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.smallvec-1.13.1.bazel
index eade971..01aee62 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.smallvec-1.13.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.smallvec-1.13.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "smallvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.socket2-0.4.10.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.socket2-0.4.10.bazel
index 0b6594f..fbe9744 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.socket2-0.4.10.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.socket2-0.4.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "socket2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.socket2-0.5.5.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.socket2-0.5.5.bazel
index 4129895..d9107d7 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.socket2-0.5.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.socket2-0.5.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "socket2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.syn-2.0.48.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.syn-2.0.50.bazel
similarity index 96%
rename from examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.syn-2.0.48.bazel
rename to examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.syn-2.0.50.bazel
index 626f763..501a099 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.syn-2.0.48.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.syn-2.0.50.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,7 +89,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "2.0.48",
+    version = "2.0.50",
     deps = [
         "@crates_vendor_pkgs__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_pkgs__quote-1.0.35//:quote",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.sync_wrapper-0.1.2.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.sync_wrapper-0.1.2.bazel
index 41df87d..ab9a441 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.sync_wrapper-0.1.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.sync_wrapper-0.1.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "sync_wrapper",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.thread_local-1.1.7.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.thread_local-1.1.8.bazel
similarity index 95%
rename from examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.thread_local-1.1.7.bazel
rename to examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.thread_local-1.1.8.bazel
index ea1a2cb..5df4ade 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.thread_local-1.1.7.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.thread_local-1.1.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "thread_local",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,7 +77,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "1.1.7",
+    version = "1.1.8",
     deps = [
         "@crates_vendor_pkgs__cfg-if-1.0.0//:cfg_if",
         "@crates_vendor_pkgs__once_cell-1.19.0//:once_cell",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tokio-1.36.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tokio-1.36.0.bazel
index d089ee7..3c8de93 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tokio-1.36.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tokio-1.36.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tokio-macros-2.2.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tokio-macros-2.2.0.bazel
index 2d235c6..6a042a2 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tokio-macros-2.2.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tokio-macros-2.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "tokio_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "@crates_vendor_pkgs__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_pkgs__quote-1.0.35//:quote",
-        "@crates_vendor_pkgs__syn-2.0.48//:syn",
+        "@crates_vendor_pkgs__syn-2.0.50//:syn",
     ],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tokio-util-0.7.10.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tokio-util-0.7.10.bazel
index 9e4d955..e39b2cb 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tokio-util-0.7.10.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tokio-util-0.7.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-0.4.13.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-0.4.13.bazel
index 582ea13..914a925 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-0.4.13.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-0.4.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-http-0.2.5.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-http-0.2.5.bazel
index 3015097..0c2299a 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-http-0.2.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-http-0.2.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower_http",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-layer-0.3.2.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-layer-0.3.2.bazel
index 01f2a73..fd5bfc7 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-layer-0.3.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-layer-0.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower_layer",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-service-0.3.2.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-service-0.3.2.bazel
index 6ce5f7d..55e937a 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-service-0.3.2.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tower-service-0.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower_service",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-0.1.40.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-0.1.40.bazel
index 088ebb9..c6b2fdd 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-0.1.40.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-0.1.40.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-attributes-0.1.27.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-attributes-0.1.27.bazel
index cd8c965..126d83e 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-attributes-0.1.27.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-attributes-0.1.27.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "tracing_attributes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -77,6 +81,6 @@
     deps = [
         "@crates_vendor_pkgs__proc-macro2-1.0.78//:proc_macro2",
         "@crates_vendor_pkgs__quote-1.0.35//:quote",
-        "@crates_vendor_pkgs__syn-2.0.48//:syn",
+        "@crates_vendor_pkgs__syn-2.0.50//:syn",
     ],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-core-0.1.32.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-core-0.1.32.bazel
index 2f208d0..db05a70 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-core-0.1.32.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-core-0.1.32.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-log-0.2.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-log-0.2.0.bazel
index 4943a5c..5abdb57 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-log-0.2.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-log-0.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-subscriber-0.3.18.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-subscriber-0.3.18.bazel
index 073c4cf..776b767 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-subscriber-0.3.18.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.tracing-subscriber-0.3.18.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_subscriber",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -91,7 +95,7 @@
         "@crates_vendor_pkgs__nu-ansi-term-0.46.0//:nu_ansi_term",
         "@crates_vendor_pkgs__sharded-slab-0.1.7//:sharded_slab",
         "@crates_vendor_pkgs__smallvec-1.13.1//:smallvec",
-        "@crates_vendor_pkgs__thread_local-1.1.7//:thread_local",
+        "@crates_vendor_pkgs__thread_local-1.1.8//:thread_local",
         "@crates_vendor_pkgs__tracing-core-0.1.32//:tracing_core",
         "@crates_vendor_pkgs__tracing-log-0.2.0//:tracing_log",
     ],
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.try-lock-0.2.5.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.try-lock-0.2.5.bazel
index 6d3e363..5730a10 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.try-lock-0.2.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.try-lock-0.2.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "try_lock",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.unicode-ident-1.0.12.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.unicode-ident-1.0.12.bazel
index 94e7ccf..49fdebd 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.unicode-ident-1.0.12.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.unicode-ident-1.0.12.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_ident",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.valuable-0.1.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.valuable-0.1.0.bazel
index d817511..0e91010 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.valuable-0.1.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.valuable-0.1.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "valuable",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "valuable_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "valuable_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":valuable_build_script",
+    actual = ":valuable_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.want-0.3.1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.want-0.3.1.bazel
index e8a213a..6816241 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.want-0.3.1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.want-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "want",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
index 1c18377..d59fdf7 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.winapi-0.3.9.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.winapi-0.3.9.bazel
index e19309f..3604f47 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.winapi-0.3.9.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.winapi-0.3.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -90,8 +94,11 @@
 )
 
 cargo_build_script(
-    name = "winapi_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "consoleapi",
         "errhandlingapi",
@@ -105,6 +112,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -131,6 +139,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi_build_script",
+    actual = ":winapi_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
index 3ed28b1..b2ed075 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_i686_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-i686-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-i686-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-i686-pc-windows-gnu_build_script",
+    actual = ":winapi-i686-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
index b2a0e62..6942b31 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_x86_64_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-x86_64-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-x86_64-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-x86_64-pc-windows-gnu_build_script",
+    actual = ":winapi-x86_64-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows-sys-0.48.0.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows-sys-0.48.0.bazel
index 3009bbb..74fafd4 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows-sys-0.48.0.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows-sys-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows-targets-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows-targets-0.48.5.bazel
index 02223b4..a8518f5 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows-targets-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows-targets-0.48.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel
index 257960c..423d446 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_aarch64_gnullvm-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel
index 3ab47bf..f012d7c 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_aarch64_msvc-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_i686_gnu-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_i686_gnu-0.48.5.bazel
index f7c9837..e469a0e 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_i686_gnu-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_i686_gnu-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_i686_msvc-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_i686_msvc-0.48.5.bazel
index 025d8eb..670b364 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_i686_msvc-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_i686_msvc-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel
index 4f469f0..7d68b24 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnu-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel
index de2be47..48b91ba 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_x86_64_gnullvm-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel
index b4a4103..f5d1184 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/BUILD.windows_x86_64_msvc-0.48.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/defs.bzl b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/defs.bzl
index c82ad9f..2de2b9b 100644
--- a/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/defs.bzl
+++ b/examples/crate_universe_unnamed/vendor_remote_pkgs/crates/defs.bzl
@@ -295,16 +295,16 @@
 _NORMAL_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "axum": "@crates_vendor_pkgs__axum-0.4.8//:axum",
-            "hyper": "@crates_vendor_pkgs__hyper-0.14.28//:hyper",
-            "mime": "@crates_vendor_pkgs__mime-0.3.17//:mime",
-            "serde_json": "@crates_vendor_pkgs__serde_json-1.0.113//:serde_json",
-            "socket2": "@crates_vendor_pkgs__socket2-0.4.10//:socket2",
-            "tokio": "@crates_vendor_pkgs__tokio-1.36.0//:tokio",
-            "tower": "@crates_vendor_pkgs__tower-0.4.13//:tower",
-            "tower-http": "@crates_vendor_pkgs__tower-http-0.2.5//:tower_http",
-            "tracing": "@crates_vendor_pkgs__tracing-0.1.40//:tracing",
-            "tracing-subscriber": "@crates_vendor_pkgs__tracing-subscriber-0.3.18//:tracing_subscriber",
+            "axum": Label("@crates_vendor_pkgs__axum-0.4.8//:axum"),
+            "hyper": Label("@crates_vendor_pkgs__hyper-0.14.28//:hyper"),
+            "mime": Label("@crates_vendor_pkgs__mime-0.3.17//:mime"),
+            "serde_json": Label("@crates_vendor_pkgs__serde_json-1.0.114//:serde_json"),
+            "socket2": Label("@crates_vendor_pkgs__socket2-0.4.10//:socket2"),
+            "tokio": Label("@crates_vendor_pkgs__tokio-1.36.0//:tokio"),
+            "tower": Label("@crates_vendor_pkgs__tower-0.4.13//:tower"),
+            "tower-http": Label("@crates_vendor_pkgs__tower-http-0.2.5//:tower_http"),
+            "tracing": Label("@crates_vendor_pkgs__tracing-0.1.40//:tracing"),
+            "tracing-subscriber": Label("@crates_vendor_pkgs__tracing-subscriber-0.3.18//:tracing_subscriber"),
         },
     },
 }
@@ -524,12 +524,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__cc-1.0.83",
-        sha256 = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0",
+        name = "crates_vendor_pkgs__cc-1.0.86",
+        sha256 = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/cc/1.0.83/download"],
-        strip_prefix = "cc-1.0.83",
-        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.cc-1.0.83.bazel"),
+        urls = ["https://crates.io/api/v1/crates/cc/1.0.86/download"],
+        strip_prefix = "cc-1.0.86",
+        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.cc-1.0.86.bazel"),
     )
 
     maybe(
@@ -654,12 +654,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__hermit-abi-0.3.5",
-        sha256 = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3",
+        name = "crates_vendor_pkgs__hermit-abi-0.3.6",
+        sha256 = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/hermit-abi/0.3.5/download"],
-        strip_prefix = "hermit-abi-0.3.5",
-        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.hermit-abi-0.3.5.bazel"),
+        urls = ["https://crates.io/api/v1/crates/hermit-abi/0.3.6/download"],
+        strip_prefix = "hermit-abi-0.3.6",
+        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.hermit-abi-0.3.6.bazel"),
     )
 
     maybe(
@@ -994,12 +994,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__ryu-1.0.16",
-        sha256 = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c",
+        name = "crates_vendor_pkgs__ryu-1.0.17",
+        sha256 = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/ryu/1.0.16/download"],
-        strip_prefix = "ryu-1.0.16",
-        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.ryu-1.0.16.bazel"),
+        urls = ["https://crates.io/api/v1/crates/ryu/1.0.17/download"],
+        strip_prefix = "ryu-1.0.17",
+        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.ryu-1.0.17.bazel"),
     )
 
     maybe(
@@ -1014,32 +1014,32 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__serde-1.0.196",
-        sha256 = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32",
+        name = "crates_vendor_pkgs__serde-1.0.197",
+        sha256 = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/serde/1.0.196/download"],
-        strip_prefix = "serde-1.0.196",
-        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.serde-1.0.196.bazel"),
+        urls = ["https://crates.io/api/v1/crates/serde/1.0.197/download"],
+        strip_prefix = "serde-1.0.197",
+        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.serde-1.0.197.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__serde_derive-1.0.196",
-        sha256 = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67",
+        name = "crates_vendor_pkgs__serde_derive-1.0.197",
+        sha256 = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/serde_derive/1.0.196/download"],
-        strip_prefix = "serde_derive-1.0.196",
-        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.serde_derive-1.0.196.bazel"),
+        urls = ["https://crates.io/api/v1/crates/serde_derive/1.0.197/download"],
+        strip_prefix = "serde_derive-1.0.197",
+        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.serde_derive-1.0.197.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__serde_json-1.0.113",
-        sha256 = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79",
+        name = "crates_vendor_pkgs__serde_json-1.0.114",
+        sha256 = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/serde_json/1.0.113/download"],
-        strip_prefix = "serde_json-1.0.113",
-        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.serde_json-1.0.113.bazel"),
+        urls = ["https://crates.io/api/v1/crates/serde_json/1.0.114/download"],
+        strip_prefix = "serde_json-1.0.114",
+        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.serde_json-1.0.114.bazel"),
     )
 
     maybe(
@@ -1114,12 +1114,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__syn-2.0.48",
-        sha256 = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f",
+        name = "crates_vendor_pkgs__syn-2.0.50",
+        sha256 = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/syn/2.0.48/download"],
-        strip_prefix = "syn-2.0.48",
-        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.syn-2.0.48.bazel"),
+        urls = ["https://crates.io/api/v1/crates/syn/2.0.50/download"],
+        strip_prefix = "syn-2.0.50",
+        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.syn-2.0.50.bazel"),
     )
 
     maybe(
@@ -1134,12 +1134,12 @@
 
     maybe(
         http_archive,
-        name = "crates_vendor_pkgs__thread_local-1.1.7",
-        sha256 = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152",
+        name = "crates_vendor_pkgs__thread_local-1.1.8",
+        sha256 = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/thread_local/1.1.7/download"],
-        strip_prefix = "thread_local-1.1.7",
-        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.thread_local-1.1.7.bazel"),
+        urls = ["https://crates.io/api/v1/crates/thread_local/1.1.8/download"],
+        strip_prefix = "thread_local-1.1.8",
+        build_file = Label("@//vendor_remote_pkgs/crates:BUILD.thread_local-1.1.8.bazel"),
     )
 
     maybe(
@@ -1436,7 +1436,7 @@
         struct(repo = "crates_vendor_pkgs__axum-0.4.8", is_dev_dep = False),
         struct(repo = "crates_vendor_pkgs__hyper-0.14.28", is_dev_dep = False),
         struct(repo = "crates_vendor_pkgs__mime-0.3.17", is_dev_dep = False),
-        struct(repo = "crates_vendor_pkgs__serde_json-1.0.113", is_dev_dep = False),
+        struct(repo = "crates_vendor_pkgs__serde_json-1.0.114", is_dev_dep = False),
         struct(repo = "crates_vendor_pkgs__socket2-0.4.10", is_dev_dep = False),
         struct(repo = "crates_vendor_pkgs__tokio-1.36.0", is_dev_dep = False),
         struct(repo = "crates_vendor_pkgs__tower-0.4.13", is_dev_dep = False),
diff --git a/examples/ios/.bazelrc b/examples/ios/.bazelrc
index 7c4827a..da35d76 100644
--- a/examples/ios/.bazelrc
+++ b/examples/ios/.bazelrc
@@ -11,3 +11,6 @@
 # TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
 # https://github.com/bazelbuild/rules_rust/issues/2181
 common --noenable_bzlmod
+
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
diff --git a/examples/ios/WORKSPACE.bazel b/examples/ios/WORKSPACE.bazel
index 36791fb..769e036 100644
--- a/examples/ios/WORKSPACE.bazel
+++ b/examples/ios/WORKSPACE.bazel
@@ -26,8 +26,8 @@
 
 http_archive(
     name = "build_bazel_rules_apple",
-    sha256 = "841b8d1bd270ee19c75c5e953be1b58ace0ecb35ed97c56f53c28392ef86e0d7",
-    url = "https://github.com/bazelbuild/rules_apple/releases/download/3.2.0/rules_apple.3.2.0.tar.gz",
+    sha256 = "65eafafe94b8573e74160b7f587d091a0fa34d69e6d2c41c4afb1eef140383ec",
+    url = "https://github.com/bazelbuild/rules_apple/releases/download/3.3.0/rules_apple.3.3.0.tar.gz",
 )
 
 load(
diff --git a/examples/ios_build/.bazelrc b/examples/ios_build/.bazelrc
index 7c4827a..da35d76 100644
--- a/examples/ios_build/.bazelrc
+++ b/examples/ios_build/.bazelrc
@@ -11,3 +11,6 @@
 # TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
 # https://github.com/bazelbuild/rules_rust/issues/2181
 common --noenable_bzlmod
+
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
diff --git a/examples/ios_build/3rdparty/crates/BUILD.bazel b/examples/ios_build/3rdparty/crates/BUILD.bazel
index ed9283e..1395e50 100644
--- a/examples/ios_build/3rdparty/crates/BUILD.bazel
+++ b/examples/ios_build/3rdparty/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/examples/ios_build/3rdparty/crates/BUILD.cc-1.0.73.bazel b/examples/ios_build/3rdparty/crates/BUILD.cc-1.0.73.bazel
index 11082f6..dca29ca 100644
--- a/examples/ios_build/3rdparty/crates/BUILD.cc-1.0.73.bazel
+++ b/examples/ios_build/3rdparty/crates/BUILD.cc-1.0.73.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/ios_build/3rdparty/crates/BUILD.jobserver-0.1.25.bazel b/examples/ios_build/3rdparty/crates/BUILD.jobserver-0.1.25.bazel
index b453f9a..b8eeee8 100644
--- a/examples/ios_build/3rdparty/crates/BUILD.jobserver-0.1.25.bazel
+++ b/examples/ios_build/3rdparty/crates/BUILD.jobserver-0.1.25.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "jobserver",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/ios_build/3rdparty/crates/BUILD.libc-0.2.134.bazel b/examples/ios_build/3rdparty/crates/BUILD.libc-0.2.134.bazel
index 2bdf5aa..abb1f26 100644
--- a/examples/ios_build/3rdparty/crates/BUILD.libc-0.2.134.bazel
+++ b/examples/ios_build/3rdparty/crates/BUILD.libc-0.2.134.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/examples/ios_build/3rdparty/crates/BUILD.zstd-0.11.2+zstd.1.5.2.bazel b/examples/ios_build/3rdparty/crates/BUILD.zstd-0.11.2+zstd.1.5.2.bazel
index 9a5cac1..7cf72b7 100644
--- a/examples/ios_build/3rdparty/crates/BUILD.zstd-0.11.2+zstd.1.5.2.bazel
+++ b/examples/ios_build/3rdparty/crates/BUILD.zstd-0.11.2+zstd.1.5.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "zstd",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/ios_build/3rdparty/crates/BUILD.zstd-safe-5.0.2+zstd.1.5.2.bazel b/examples/ios_build/3rdparty/crates/BUILD.zstd-safe-5.0.2+zstd.1.5.2.bazel
index d7d1660..a0260d0 100644
--- a/examples/ios_build/3rdparty/crates/BUILD.zstd-safe-5.0.2+zstd.1.5.2.bazel
+++ b/examples/ios_build/3rdparty/crates/BUILD.zstd-safe-5.0.2+zstd.1.5.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "zstd_safe",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -89,8 +93,11 @@
 )
 
 cargo_build_script(
-    name = "zstd-safe_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "zstd-safe_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "arrays",
         "legacy",
@@ -101,6 +108,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -130,6 +138,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":zstd-safe_build_script",
+    actual = ":zstd-safe_bs",
     tags = ["manual"],
 )
diff --git a/examples/ios_build/3rdparty/crates/BUILD.zstd-sys-2.0.1+zstd.1.5.2.bazel b/examples/ios_build/3rdparty/crates/BUILD.zstd-sys-2.0.1+zstd.1.5.2.bazel
index 3132a02..973adb3 100644
--- a/examples/ios_build/3rdparty/crates/BUILD.zstd-sys-2.0.1+zstd.1.5.2.bazel
+++ b/examples/ios_build/3rdparty/crates/BUILD.zstd-sys-2.0.1+zstd.1.5.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "zstd_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -87,8 +91,11 @@
 )
 
 cargo_build_script(
-    name = "zstd-sys_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "zstd-sys_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "legacy",
         "std",
@@ -98,6 +105,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -128,6 +136,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":zstd-sys_build_script",
+    actual = ":zstd-sys_bs",
     tags = ["manual"],
 )
diff --git a/examples/ios_build/3rdparty/crates/defs.bzl b/examples/ios_build/3rdparty/crates/defs.bzl
index e19841c..33c169f 100644
--- a/examples/ios_build/3rdparty/crates/defs.bzl
+++ b/examples/ios_build/3rdparty/crates/defs.bzl
@@ -295,7 +295,7 @@
 _NORMAL_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "zstd": "@ios_build__zstd-0.11.2-zstd.1.5.2//:zstd",
+            "zstd": Label("@ios_build__zstd-0.11.2-zstd.1.5.2//:zstd"),
         },
     },
 }
diff --git a/examples/nix_cross_compiling/.bazelrc b/examples/nix_cross_compiling/.bazelrc
index 6686d26..9be4b2c 100644
--- a/examples/nix_cross_compiling/.bazelrc
+++ b/examples/nix_cross_compiling/.bazelrc
@@ -4,6 +4,9 @@
 build --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
 build --incompatible_enable_cc_toolchain_resolution=true
 
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
+
 # Require Platform Transitions
 ## This works by setting the targte platform to an invalid platform
 ## and each `x_binary()` and `x_library()` rule unfortunately needs
diff --git a/examples/nix_cross_compiling/MODULE.bazel.lock b/examples/nix_cross_compiling/MODULE.bazel.lock
deleted file mode 100644
index ecfce83..0000000
--- a/examples/nix_cross_compiling/MODULE.bazel.lock
+++ /dev/null
@@ -1,1227 +0,0 @@
-{
-  "lockFileVersion": 3,
-  "moduleFileHash": "0e3e315145ac7ee7a4e0ac825e1c5e03c068ec1254dd42c3caaecb27e921dc4d",
-  "flags": {
-    "cmdRegistries": [
-      "https://bcr.bazel.build/"
-    ],
-    "cmdModuleOverrides": {},
-    "allowedYankedVersions": [],
-    "envVarAllowedYankedVersions": "",
-    "ignoreDevDependency": false,
-    "directDependenciesMode": "WARNING",
-    "compatibilityMode": "ERROR"
-  },
-  "localOverrideHashes": {
-    "bazel_tools": "922ea6752dc9105de5af957f7a99a6933c0a6a712d23df6aad16a9c399f7e787"
-  },
-  "moduleDepGraph": {
-    "<root>": {
-      "name": "",
-      "version": "",
-      "key": "<root>",
-      "repoName": "",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      }
-    },
-    "bazel_tools@_": {
-      "name": "bazel_tools",
-      "version": "",
-      "key": "bazel_tools@_",
-      "repoName": "bazel_tools",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "@local_config_cc_toolchains//:all",
-        "@local_config_sh//:local_sh_toolchain"
-      ],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@bazel_tools//tools/cpp:cc_configure.bzl",
-          "extensionName": "cc_configure_extension",
-          "usingModule": "bazel_tools@_",
-          "location": {
-            "file": "@@bazel_tools//:MODULE.bazel",
-            "line": 17,
-            "column": 29
-          },
-          "imports": {
-            "local_config_cc": "local_config_cc",
-            "local_config_cc_toolchains": "local_config_cc_toolchains"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        },
-        {
-          "extensionBzlFile": "@bazel_tools//tools/osx:xcode_configure.bzl",
-          "extensionName": "xcode_configure_extension",
-          "usingModule": "bazel_tools@_",
-          "location": {
-            "file": "@@bazel_tools//:MODULE.bazel",
-            "line": 21,
-            "column": 32
-          },
-          "imports": {
-            "local_config_xcode": "local_config_xcode"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        },
-        {
-          "extensionBzlFile": "@rules_java//java:extensions.bzl",
-          "extensionName": "toolchains",
-          "usingModule": "bazel_tools@_",
-          "location": {
-            "file": "@@bazel_tools//:MODULE.bazel",
-            "line": 24,
-            "column": 32
-          },
-          "imports": {
-            "local_jdk": "local_jdk",
-            "remote_java_tools": "remote_java_tools",
-            "remote_java_tools_linux": "remote_java_tools_linux",
-            "remote_java_tools_windows": "remote_java_tools_windows",
-            "remote_java_tools_darwin_x86_64": "remote_java_tools_darwin_x86_64",
-            "remote_java_tools_darwin_arm64": "remote_java_tools_darwin_arm64"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        },
-        {
-          "extensionBzlFile": "@bazel_tools//tools/sh:sh_configure.bzl",
-          "extensionName": "sh_configure_extension",
-          "usingModule": "bazel_tools@_",
-          "location": {
-            "file": "@@bazel_tools//:MODULE.bazel",
-            "line": 35,
-            "column": 39
-          },
-          "imports": {
-            "local_config_sh": "local_config_sh"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        },
-        {
-          "extensionBzlFile": "@bazel_tools//tools/test:extensions.bzl",
-          "extensionName": "remote_coverage_tools_extension",
-          "usingModule": "bazel_tools@_",
-          "location": {
-            "file": "@@bazel_tools//:MODULE.bazel",
-            "line": 39,
-            "column": 48
-          },
-          "imports": {
-            "remote_coverage_tools": "remote_coverage_tools"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        },
-        {
-          "extensionBzlFile": "@bazel_tools//tools/android:android_extensions.bzl",
-          "extensionName": "remote_android_tools_extensions",
-          "usingModule": "bazel_tools@_",
-          "location": {
-            "file": "@@bazel_tools//:MODULE.bazel",
-            "line": 42,
-            "column": 42
-          },
-          "imports": {
-            "android_gmaven_r8": "android_gmaven_r8",
-            "android_tools": "android_tools"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "rules_cc": "rules_cc@0.0.9",
-        "rules_java": "rules_java@7.1.0",
-        "rules_license": "rules_license@0.0.7",
-        "rules_proto": "rules_proto@4.0.0",
-        "rules_python": "rules_python@0.4.0",
-        "platforms": "platforms@0.0.7",
-        "com_google_protobuf": "protobuf@3.19.6",
-        "zlib": "zlib@1.3",
-        "build_bazel_apple_support": "apple_support@1.5.0",
-        "local_config_platform": "local_config_platform@_"
-      }
-    },
-    "local_config_platform@_": {
-      "name": "local_config_platform",
-      "version": "",
-      "key": "local_config_platform@_",
-      "repoName": "local_config_platform",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "platforms": "platforms@0.0.7",
-        "bazel_tools": "bazel_tools@_"
-      }
-    },
-    "rules_cc@0.0.9": {
-      "name": "rules_cc",
-      "version": "0.0.9",
-      "key": "rules_cc@0.0.9",
-      "repoName": "rules_cc",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "@local_config_cc_toolchains//:all"
-      ],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@bazel_tools//tools/cpp:cc_configure.bzl",
-          "extensionName": "cc_configure_extension",
-          "usingModule": "rules_cc@0.0.9",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel",
-            "line": 9,
-            "column": 29
-          },
-          "imports": {
-            "local_config_cc_toolchains": "local_config_cc_toolchains"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "platforms": "platforms@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_cc~0.0.9",
-          "urls": [
-            "https://github.com/bazelbuild/rules_cc/releases/download/0.0.9/rules_cc-0.0.9.tar.gz"
-          ],
-          "integrity": "sha256-IDeHW5pEVtzkp50RKorohbvEqtlo5lh9ym5k86CQDN8=",
-          "strip_prefix": "rules_cc-0.0.9",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/rules_cc/0.0.9/patches/module_dot_bazel_version.patch": "sha256-mM+qzOI0SgAdaJBlWOSMwMPKpaA9b7R37Hj/tp5bb4g="
-          },
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "rules_java@7.1.0": {
-      "name": "rules_java",
-      "version": "7.1.0",
-      "key": "rules_java@7.1.0",
-      "repoName": "rules_java",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "//toolchains:all",
-        "@local_jdk//:runtime_toolchain_definition",
-        "@local_jdk//:bootstrap_runtime_toolchain_definition",
-        "@remotejdk11_linux_toolchain_config_repo//:all",
-        "@remotejdk11_linux_aarch64_toolchain_config_repo//:all",
-        "@remotejdk11_linux_ppc64le_toolchain_config_repo//:all",
-        "@remotejdk11_linux_s390x_toolchain_config_repo//:all",
-        "@remotejdk11_macos_toolchain_config_repo//:all",
-        "@remotejdk11_macos_aarch64_toolchain_config_repo//:all",
-        "@remotejdk11_win_toolchain_config_repo//:all",
-        "@remotejdk11_win_arm64_toolchain_config_repo//:all",
-        "@remotejdk17_linux_toolchain_config_repo//:all",
-        "@remotejdk17_linux_aarch64_toolchain_config_repo//:all",
-        "@remotejdk17_linux_ppc64le_toolchain_config_repo//:all",
-        "@remotejdk17_linux_s390x_toolchain_config_repo//:all",
-        "@remotejdk17_macos_toolchain_config_repo//:all",
-        "@remotejdk17_macos_aarch64_toolchain_config_repo//:all",
-        "@remotejdk17_win_toolchain_config_repo//:all",
-        "@remotejdk17_win_arm64_toolchain_config_repo//:all",
-        "@remotejdk21_linux_toolchain_config_repo//:all",
-        "@remotejdk21_linux_aarch64_toolchain_config_repo//:all",
-        "@remotejdk21_macos_toolchain_config_repo//:all",
-        "@remotejdk21_macos_aarch64_toolchain_config_repo//:all",
-        "@remotejdk21_win_toolchain_config_repo//:all"
-      ],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@rules_java//java:extensions.bzl",
-          "extensionName": "toolchains",
-          "usingModule": "rules_java@7.1.0",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/rules_java/7.1.0/MODULE.bazel",
-            "line": 19,
-            "column": 27
-          },
-          "imports": {
-            "remote_java_tools": "remote_java_tools",
-            "remote_java_tools_linux": "remote_java_tools_linux",
-            "remote_java_tools_windows": "remote_java_tools_windows",
-            "remote_java_tools_darwin_x86_64": "remote_java_tools_darwin_x86_64",
-            "remote_java_tools_darwin_arm64": "remote_java_tools_darwin_arm64",
-            "local_jdk": "local_jdk",
-            "remotejdk11_linux_toolchain_config_repo": "remotejdk11_linux_toolchain_config_repo",
-            "remotejdk11_linux_aarch64_toolchain_config_repo": "remotejdk11_linux_aarch64_toolchain_config_repo",
-            "remotejdk11_linux_ppc64le_toolchain_config_repo": "remotejdk11_linux_ppc64le_toolchain_config_repo",
-            "remotejdk11_linux_s390x_toolchain_config_repo": "remotejdk11_linux_s390x_toolchain_config_repo",
-            "remotejdk11_macos_toolchain_config_repo": "remotejdk11_macos_toolchain_config_repo",
-            "remotejdk11_macos_aarch64_toolchain_config_repo": "remotejdk11_macos_aarch64_toolchain_config_repo",
-            "remotejdk11_win_toolchain_config_repo": "remotejdk11_win_toolchain_config_repo",
-            "remotejdk11_win_arm64_toolchain_config_repo": "remotejdk11_win_arm64_toolchain_config_repo",
-            "remotejdk17_linux_toolchain_config_repo": "remotejdk17_linux_toolchain_config_repo",
-            "remotejdk17_linux_aarch64_toolchain_config_repo": "remotejdk17_linux_aarch64_toolchain_config_repo",
-            "remotejdk17_linux_ppc64le_toolchain_config_repo": "remotejdk17_linux_ppc64le_toolchain_config_repo",
-            "remotejdk17_linux_s390x_toolchain_config_repo": "remotejdk17_linux_s390x_toolchain_config_repo",
-            "remotejdk17_macos_toolchain_config_repo": "remotejdk17_macos_toolchain_config_repo",
-            "remotejdk17_macos_aarch64_toolchain_config_repo": "remotejdk17_macos_aarch64_toolchain_config_repo",
-            "remotejdk17_win_toolchain_config_repo": "remotejdk17_win_toolchain_config_repo",
-            "remotejdk17_win_arm64_toolchain_config_repo": "remotejdk17_win_arm64_toolchain_config_repo",
-            "remotejdk21_linux_toolchain_config_repo": "remotejdk21_linux_toolchain_config_repo",
-            "remotejdk21_linux_aarch64_toolchain_config_repo": "remotejdk21_linux_aarch64_toolchain_config_repo",
-            "remotejdk21_macos_toolchain_config_repo": "remotejdk21_macos_toolchain_config_repo",
-            "remotejdk21_macos_aarch64_toolchain_config_repo": "remotejdk21_macos_aarch64_toolchain_config_repo",
-            "remotejdk21_win_toolchain_config_repo": "remotejdk21_win_toolchain_config_repo"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "platforms": "platforms@0.0.7",
-        "rules_cc": "rules_cc@0.0.9",
-        "bazel_skylib": "bazel_skylib@1.3.0",
-        "rules_proto": "rules_proto@4.0.0",
-        "rules_license": "rules_license@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_java~7.1.0",
-          "urls": [
-            "https://github.com/bazelbuild/rules_java/releases/download/7.1.0/rules_java-7.1.0.tar.gz"
-          ],
-          "integrity": "sha256-o3pOX2OrgnFuXdau75iO2EYcegC46TYnImKJn1h81OE=",
-          "strip_prefix": "",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "rules_license@0.0.7": {
-      "name": "rules_license",
-      "version": "0.0.7",
-      "key": "rules_license@0.0.7",
-      "repoName": "rules_license",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_license~0.0.7",
-          "urls": [
-            "https://github.com/bazelbuild/rules_license/releases/download/0.0.7/rules_license-0.0.7.tar.gz"
-          ],
-          "integrity": "sha256-RTHezLkTY5ww5cdRKgVNXYdWmNrrddjPkPKEN1/nw2A=",
-          "strip_prefix": "",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "rules_proto@4.0.0": {
-      "name": "rules_proto",
-      "version": "4.0.0",
-      "key": "rules_proto@4.0.0",
-      "repoName": "rules_proto",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "bazel_skylib": "bazel_skylib@1.3.0",
-        "rules_cc": "rules_cc@0.0.9",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_proto~4.0.0",
-          "urls": [
-            "https://github.com/bazelbuild/rules_proto/archive/refs/tags/4.0.0.zip"
-          ],
-          "integrity": "sha256-Lr5z6xyuRA19pNtRYMGjKaynwQpck4H/lwYyVjyhoq4=",
-          "strip_prefix": "rules_proto-4.0.0",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/rules_proto/4.0.0/patches/module_dot_bazel.patch": "sha256-MclJO7tIAM2ElDAmscNId9pKTpOuDGHgVlW/9VBOIp0="
-          },
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "rules_python@0.4.0": {
-      "name": "rules_python",
-      "version": "0.4.0",
-      "key": "rules_python@0.4.0",
-      "repoName": "rules_python",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "@bazel_tools//tools/python:autodetecting_toolchain"
-      ],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@rules_python//bzlmod:extensions.bzl",
-          "extensionName": "pip_install",
-          "usingModule": "rules_python@0.4.0",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel",
-            "line": 7,
-            "column": 28
-          },
-          "imports": {
-            "pypi__click": "pypi__click",
-            "pypi__pip": "pypi__pip",
-            "pypi__pip_tools": "pypi__pip_tools",
-            "pypi__pkginfo": "pypi__pkginfo",
-            "pypi__setuptools": "pypi__setuptools",
-            "pypi__wheel": "pypi__wheel"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "rules_python~0.4.0",
-          "urls": [
-            "https://github.com/bazelbuild/rules_python/releases/download/0.4.0/rules_python-0.4.0.tar.gz"
-          ],
-          "integrity": "sha256-lUqom0kb5KCDMEosuDgBnIuMNyCnq7nEy4GseiQjDOo=",
-          "strip_prefix": "",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/rules_python/0.4.0/patches/propagate_pip_install_dependencies.patch": "sha256-v7S/dem/mixg63MF4KoRGDA4KEol9ab/tIVp+6Xq0D0=",
-            "https://bcr.bazel.build/modules/rules_python/0.4.0/patches/module_dot_bazel.patch": "sha256-kG4VIfWxQazzTuh50mvsx6pmyoRVA4lfH5rkto/Oq+Y="
-          },
-          "remote_patch_strip": 1
-        }
-      }
-    },
-    "platforms@0.0.7": {
-      "name": "platforms",
-      "version": "0.0.7",
-      "key": "platforms@0.0.7",
-      "repoName": "platforms",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "rules_license": "rules_license@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "platforms",
-          "urls": [
-            "https://github.com/bazelbuild/platforms/releases/download/0.0.7/platforms-0.0.7.tar.gz"
-          ],
-          "integrity": "sha256-OlYcmee9vpFzqmU/1Xn+hJ8djWc5V4CrR3Cx84FDHVE=",
-          "strip_prefix": "",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "protobuf@3.19.6": {
-      "name": "protobuf",
-      "version": "3.19.6",
-      "key": "protobuf@3.19.6",
-      "repoName": "protobuf",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "bazel_skylib": "bazel_skylib@1.3.0",
-        "zlib": "zlib@1.3",
-        "rules_python": "rules_python@0.4.0",
-        "rules_cc": "rules_cc@0.0.9",
-        "rules_proto": "rules_proto@4.0.0",
-        "rules_java": "rules_java@7.1.0",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "protobuf~3.19.6",
-          "urls": [
-            "https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.19.6.zip"
-          ],
-          "integrity": "sha256-OH4sVZuyx8G8N5jE5s/wFTgaebJ1hpavy/johzC0c4k=",
-          "strip_prefix": "protobuf-3.19.6",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/protobuf/3.19.6/patches/relative_repo_names.patch": "sha256-w/5gw/zGv8NFId+669hcdw1Uus2lxgYpulATHIwIByI=",
-            "https://bcr.bazel.build/modules/protobuf/3.19.6/patches/remove_dependency_on_rules_jvm_external.patch": "sha256-THUTnVgEBmjA0W7fKzIyZOVG58DnW9HQTkr4D2zKUUc=",
-            "https://bcr.bazel.build/modules/protobuf/3.19.6/patches/add_module_dot_bazel_for_examples.patch": "sha256-s/b1gi3baK3LsXefI2rQilhmkb2R5jVJdnT6zEcdfHY=",
-            "https://bcr.bazel.build/modules/protobuf/3.19.6/patches/module_dot_bazel.patch": "sha256-S0DEni8zgx7rHscW3z/rCEubQnYec0XhNet640cw0h4="
-          },
-          "remote_patch_strip": 1
-        }
-      }
-    },
-    "zlib@1.3": {
-      "name": "zlib",
-      "version": "1.3",
-      "key": "zlib@1.3",
-      "repoName": "zlib",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [],
-      "extensionUsages": [],
-      "deps": {
-        "platforms": "platforms@0.0.7",
-        "rules_cc": "rules_cc@0.0.9",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "zlib~1.3",
-          "urls": [
-            "https://github.com/madler/zlib/releases/download/v1.3/zlib-1.3.tar.gz"
-          ],
-          "integrity": "sha256-/wukwpIBPbwnUws6geH5qBPNOd4Byl4Pi/NVcC76WT4=",
-          "strip_prefix": "zlib-1.3",
-          "remote_patches": {
-            "https://bcr.bazel.build/modules/zlib/1.3/patches/add_build_file.patch": "sha256-Ei+FYaaOo7A3jTKunMEodTI0Uw5NXQyZEcboMC8JskY=",
-            "https://bcr.bazel.build/modules/zlib/1.3/patches/module_dot_bazel.patch": "sha256-fPWLM+2xaF/kuy+kZc1YTfW6hNjrkG400Ho7gckuyJk="
-          },
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "apple_support@1.5.0": {
-      "name": "apple_support",
-      "version": "1.5.0",
-      "key": "apple_support@1.5.0",
-      "repoName": "build_bazel_apple_support",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "@local_config_apple_cc_toolchains//:all"
-      ],
-      "extensionUsages": [
-        {
-          "extensionBzlFile": "@build_bazel_apple_support//crosstool:setup.bzl",
-          "extensionName": "apple_cc_configure_extension",
-          "usingModule": "apple_support@1.5.0",
-          "location": {
-            "file": "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel",
-            "line": 17,
-            "column": 35
-          },
-          "imports": {
-            "local_config_apple_cc": "local_config_apple_cc",
-            "local_config_apple_cc_toolchains": "local_config_apple_cc_toolchains"
-          },
-          "devImports": [],
-          "tags": [],
-          "hasDevUseExtension": false,
-          "hasNonDevUseExtension": true
-        }
-      ],
-      "deps": {
-        "bazel_skylib": "bazel_skylib@1.3.0",
-        "platforms": "platforms@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "apple_support~1.5.0",
-          "urls": [
-            "https://github.com/bazelbuild/apple_support/releases/download/1.5.0/apple_support.1.5.0.tar.gz"
-          ],
-          "integrity": "sha256-miM41vja0yRPgj8txghKA+TQ+7J8qJLclw5okNW0gYQ=",
-          "strip_prefix": "",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    },
-    "bazel_skylib@1.3.0": {
-      "name": "bazel_skylib",
-      "version": "1.3.0",
-      "key": "bazel_skylib@1.3.0",
-      "repoName": "bazel_skylib",
-      "executionPlatformsToRegister": [],
-      "toolchainsToRegister": [
-        "//toolchains/unittest:cmd_toolchain",
-        "//toolchains/unittest:bash_toolchain"
-      ],
-      "extensionUsages": [],
-      "deps": {
-        "platforms": "platforms@0.0.7",
-        "bazel_tools": "bazel_tools@_",
-        "local_config_platform": "local_config_platform@_"
-      },
-      "repoSpec": {
-        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
-        "ruleClassName": "http_archive",
-        "attributes": {
-          "name": "bazel_skylib~1.3.0",
-          "urls": [
-            "https://github.com/bazelbuild/bazel-skylib/releases/download/1.3.0/bazel-skylib-1.3.0.tar.gz"
-          ],
-          "integrity": "sha256-dNVE2W9KW7Yw1GXKi7z+Ix41lOWq5X4e2/F6brPKJQY=",
-          "strip_prefix": "",
-          "remote_patches": {},
-          "remote_patch_strip": 0
-        }
-      }
-    }
-  },
-  "moduleExtensions": {
-    "@@apple_support~1.5.0//crosstool:setup.bzl%apple_cc_configure_extension": {
-      "general": {
-        "bzlTransitiveDigest": "pMLFCYaRPkgXPQ8vtuNkMfiHfPmRBy6QJfnid4sWfv0=",
-        "accumulatedFileDigests": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "local_config_apple_cc": {
-            "bzlFile": "@@apple_support~1.5.0//crosstool:setup.bzl",
-            "ruleClassName": "_apple_cc_autoconf",
-            "attributes": {
-              "name": "apple_support~1.5.0~apple_cc_configure_extension~local_config_apple_cc"
-            }
-          },
-          "local_config_apple_cc_toolchains": {
-            "bzlFile": "@@apple_support~1.5.0//crosstool:setup.bzl",
-            "ruleClassName": "_apple_cc_autoconf_toolchains",
-            "attributes": {
-              "name": "apple_support~1.5.0~apple_cc_configure_extension~local_config_apple_cc_toolchains"
-            }
-          }
-        }
-      }
-    },
-    "@@bazel_tools//tools/cpp:cc_configure.bzl%cc_configure_extension": {
-      "general": {
-        "bzlTransitiveDigest": "O9sf6ilKWU9Veed02jG9o2HM/xgV/UAyciuFBuxrFRY=",
-        "accumulatedFileDigests": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "local_config_cc": {
-            "bzlFile": "@@bazel_tools//tools/cpp:cc_configure.bzl",
-            "ruleClassName": "cc_autoconf",
-            "attributes": {
-              "name": "bazel_tools~cc_configure_extension~local_config_cc"
-            }
-          },
-          "local_config_cc_toolchains": {
-            "bzlFile": "@@bazel_tools//tools/cpp:cc_configure.bzl",
-            "ruleClassName": "cc_autoconf_toolchains",
-            "attributes": {
-              "name": "bazel_tools~cc_configure_extension~local_config_cc_toolchains"
-            }
-          }
-        }
-      }
-    },
-    "@@bazel_tools//tools/sh:sh_configure.bzl%sh_configure_extension": {
-      "general": {
-        "bzlTransitiveDigest": "hp4NgmNjEg5+xgvzfh6L83bt9/aiiWETuNpwNuF1MSU=",
-        "accumulatedFileDigests": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "local_config_sh": {
-            "bzlFile": "@@bazel_tools//tools/sh:sh_configure.bzl",
-            "ruleClassName": "sh_config",
-            "attributes": {
-              "name": "bazel_tools~sh_configure_extension~local_config_sh"
-            }
-          }
-        }
-      }
-    },
-    "@@rules_java~7.1.0//java:extensions.bzl%toolchains": {
-      "general": {
-        "bzlTransitiveDigest": "iUIRqCK7tkhvcDJCAfPPqSd06IHG0a8HQD0xeQyVAqw=",
-        "accumulatedFileDigests": {},
-        "envVariables": {},
-        "generatedRepoSpecs": {
-          "remotejdk21_linux_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_linux_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_linux//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_linux//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_linux_s390x_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_s390x_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:s390x\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_s390x//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:s390x\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_s390x//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_macos_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_macos_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_macos//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_macos//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk21_macos_aarch64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_macos_aarch64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_macos_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_macos_aarch64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_linux_aarch64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_aarch64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_aarch64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk21_macos_aarch64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_macos_aarch64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
-              "sha256": "2a7a99a3ea263dbd8d32a67d1e6e363ba8b25c645c826f5e167a02bbafaff1fa",
-              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-macosx_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-macosx_aarch64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-macosx_aarch64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk17_linux_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_macos_aarch64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_macos_aarch64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "314b04568ec0ae9b36ba03c9cbd42adc9e1265f74678923b19297d66eb84dcca",
-              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-macosx_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-macosx_aarch64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-macosx_aarch64.tar.gz"
-              ]
-            }
-          },
-          "remote_java_tools_windows": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remote_java_tools_windows",
-              "sha256": "c5c70c214a350f12cbf52da8270fa43ba629b795f3dd328028a38f8f0d39c2a1",
-              "urls": [
-                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools_windows-v13.1.zip",
-                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools_windows-v13.1.zip"
-              ]
-            }
-          },
-          "remotejdk11_win": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_win",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "43408193ce2fa0862819495b5ae8541085b95660153f2adcf91a52d3a1710e83",
-              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-win_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-win_x64.zip",
-                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-win_x64.zip"
-              ]
-            }
-          },
-          "remotejdk11_win_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_win_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_win//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_win//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_linux_aarch64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_aarch64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "54174439f2b3fddd11f1048c397fe7bb45d4c9d66d452d6889b013d04d21c4de",
-              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-linux_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-linux_aarch64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-linux_aarch64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk17_linux": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "b9482f2304a1a68a614dfacddcf29569a72f0fac32e6c74f83dc1b9a157b8340",
-              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-linux_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-linux_x64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-linux_x64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk11_linux_s390x_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_s390x_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:s390x\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_s390x//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:s390x\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_s390x//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_linux_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_macos": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_macos",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "bcaab11cfe586fae7583c6d9d311c64384354fb2638eb9a012eca4c3f1a1d9fd",
-              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-macosx_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-macosx_x64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-macosx_x64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk11_win_arm64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_win_arm64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "b8a28e6e767d90acf793ea6f5bed0bb595ba0ba5ebdf8b99f395266161e53ec2",
-              "strip_prefix": "jdk-11.0.13+8",
-              "urls": [
-                "https://mirror.bazel.build/aka.ms/download-jdk/microsoft-jdk-11.0.13.8.1-windows-aarch64.zip"
-              ]
-            }
-          },
-          "remotejdk17_macos": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_macos",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "640453e8afe8ffe0fb4dceb4535fb50db9c283c64665eebb0ba68b19e65f4b1f",
-              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-macosx_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-macosx_x64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-macosx_x64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk21_macos": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_macos",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
-              "sha256": "9639b87db586d0c89f7a9892ae47f421e442c64b97baebdff31788fbe23265bd",
-              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-macosx_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-macosx_x64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-macosx_x64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk21_macos_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_macos_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_macos//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_macos//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_macos_aarch64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_macos_aarch64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_macos_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_macos_aarch64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_win": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_win",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "192f2afca57701de6ec496234f7e45d971bf623ff66b8ee4a5c81582054e5637",
-              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-win_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-win_x64.zip",
-                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-win_x64.zip"
-              ]
-            }
-          },
-          "remotejdk11_macos_aarch64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_macos_aarch64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_macos_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_macos_aarch64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_linux_ppc64le_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_ppc64le_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:ppc\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_ppc64le//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:ppc\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_ppc64le//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk21_linux": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_linux",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
-              "sha256": "0c0eadfbdc47a7ca64aeab51b9c061f71b6e4d25d2d87674512e9b6387e9e3a6",
-              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-linux_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-linux_x64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-linux_x64.tar.gz"
-              ]
-            }
-          },
-          "remote_java_tools_linux": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remote_java_tools_linux",
-              "sha256": "d134da9b04c9023fb6e56a5d4bffccee73f7bc9572ddc4e747778dacccd7a5a7",
-              "urls": [
-                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools_linux-v13.1.zip",
-                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools_linux-v13.1.zip"
-              ]
-            }
-          },
-          "remotejdk21_win": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_win",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
-              "sha256": "e9959d500a0d9a7694ac243baf657761479da132f0f94720cbffd092150bd802",
-              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-win_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-win_x64.zip",
-                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-win_x64.zip"
-              ]
-            }
-          },
-          "remotejdk21_linux_aarch64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_linux_aarch64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
-              "sha256": "1fb64b8036c5d463d8ab59af06bf5b6b006811e6012e3b0eb6bccf57f1c55835",
-              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-linux_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-linux_aarch64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-linux_aarch64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk11_linux_aarch64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_aarch64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_aarch64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_linux_s390x": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_s390x",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "a58fc0361966af0a5d5a31a2d8a208e3c9bb0f54f345596fd80b99ea9a39788b",
-              "strip_prefix": "jdk-11.0.15+10",
-              "urls": [
-                "https://mirror.bazel.build/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.15_10.tar.gz",
-                "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.15_10.tar.gz"
-              ]
-            }
-          },
-          "remotejdk17_linux_aarch64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_aarch64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "6531cef61e416d5a7b691555c8cf2bdff689201b8a001ff45ab6740062b44313",
-              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-linux_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-linux_aarch64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-linux_aarch64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk17_win_arm64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_win_arm64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:arm64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_win_arm64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:arm64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_win_arm64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_linux": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "a34b404f87a08a61148b38e1416d837189e1df7a040d949e743633daf4695a3c",
-              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-linux_x64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-linux_x64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-linux_x64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk11_macos_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_macos_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_macos//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_macos//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_linux_ppc64le_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_ppc64le_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:ppc\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_ppc64le//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:ppc\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_ppc64le//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk17_win_arm64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_win_arm64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "6802c99eae0d788e21f52d03cab2e2b3bf42bc334ca03cbf19f71eb70ee19f85",
-              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-win_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-win_aarch64.zip",
-                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-win_aarch64.zip"
-              ]
-            }
-          },
-          "remote_java_tools_darwin_arm64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remote_java_tools_darwin_arm64",
-              "sha256": "dab5bb87ec43e980faea6e1cec14bafb217b8e2f5346f53aa784fd715929a930",
-              "urls": [
-                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools_darwin_arm64-v13.1.zip",
-                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools_darwin_arm64-v13.1.zip"
-              ]
-            }
-          },
-          "remotejdk17_linux_ppc64le": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_ppc64le",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "00a4c07603d0218cd678461b5b3b7e25b3253102da4022d31fc35907f21a2efd",
-              "strip_prefix": "jdk-17.0.8.1+1",
-              "urls": [
-                "https://mirror.bazel.build/github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1%2B1/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.8.1_1.tar.gz",
-                "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1%2B1/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.8.1_1.tar.gz"
-              ]
-            }
-          },
-          "remotejdk21_linux_aarch64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_linux_aarch64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_linux_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_linux_aarch64//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_win_arm64_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_win_arm64_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:arm64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_win_arm64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:arm64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_win_arm64//:jdk\",\n)\n"
-            }
-          },
-          "local_jdk": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:local_java_repository.bzl",
-            "ruleClassName": "_local_java_repository_rule",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~local_jdk",
-              "java_home": "",
-              "version": "",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = {RUNTIME_VERSION},\n)\n"
-            }
-          },
-          "remote_java_tools_darwin_x86_64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remote_java_tools_darwin_x86_64",
-              "sha256": "0db40d8505a2b65ef0ed46e4256757807db8162f7acff16225be57c1d5726dbc",
-              "urls": [
-                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools_darwin_x86_64-v13.1.zip",
-                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools_darwin_x86_64-v13.1.zip"
-              ]
-            }
-          },
-          "remote_java_tools": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remote_java_tools",
-              "sha256": "286bdbbd66e616fc4ed3f90101418729a73baa7e8c23a98ffbef558f74c0ad14",
-              "urls": [
-                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools-v13.1.zip",
-                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools-v13.1.zip"
-              ]
-            }
-          },
-          "remotejdk17_linux_s390x": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_s390x",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
-              "sha256": "ffacba69c6843d7ca70d572489d6cc7ab7ae52c60f0852cedf4cf0d248b6fc37",
-              "strip_prefix": "jdk-17.0.8.1+1",
-              "urls": [
-                "https://mirror.bazel.build/github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1%2B1/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.8.1_1.tar.gz",
-                "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1%2B1/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.8.1_1.tar.gz"
-              ]
-            }
-          },
-          "remotejdk17_win_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk17_win_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_win//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_win//:jdk\",\n)\n"
-            }
-          },
-          "remotejdk11_linux_ppc64le": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_ppc64le",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "a8fba686f6eb8ae1d1a9566821dbd5a85a1108b96ad857fdbac5c1e4649fc56f",
-              "strip_prefix": "jdk-11.0.15+10",
-              "urls": [
-                "https://mirror.bazel.build/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.15_10.tar.gz",
-                "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.15_10.tar.gz"
-              ]
-            }
-          },
-          "remotejdk11_macos_aarch64": {
-            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
-            "ruleClassName": "http_archive",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk11_macos_aarch64",
-              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
-              "sha256": "7632bc29f8a4b7d492b93f3bc75a7b61630894db85d136456035ab2a24d38885",
-              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-macosx_aarch64",
-              "urls": [
-                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-macosx_aarch64.tar.gz",
-                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-macosx_aarch64.tar.gz"
-              ]
-            }
-          },
-          "remotejdk21_win_toolchain_config_repo": {
-            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
-            "ruleClassName": "_toolchain_config",
-            "attributes": {
-              "name": "rules_java~7.1.0~toolchains~remotejdk21_win_toolchain_config_repo",
-              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_win//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_win//:jdk\",\n)\n"
-            }
-          }
-        }
-      }
-    }
-  }
-}
diff --git a/examples/nix_cross_compiling/bazel/cargo/cargo-bazel-lock.json b/examples/nix_cross_compiling/bazel/cargo/cargo-bazel-lock.json
index a0c3efb..c1061f3 100644
--- a/examples/nix_cross_compiling/bazel/cargo/cargo-bazel-lock.json
+++ b/examples/nix_cross_compiling/bazel/cargo/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "03887f0aa6b96e5707bec7cdab9e9552d67ca8a4279867c913d757ca97b1fc6f",
+  "checksum": "4814dfd4d96d8f66b1a02d7917c17fd93e85b6544f33e09f516d7efab7c9ebb5",
   "crates": {
     "addr2line 0.21.0": {
       "name": "addr2line",
@@ -16,9 +16,12 @@
           "Library": {
             "crate_name": "addr2line",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -61,9 +64,12 @@
           "Library": {
             "crate_name": "adler",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -98,9 +104,12 @@
           "Library": {
             "crate_name": "anyhow",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -141,9 +150,12 @@
           "Library": {
             "crate_name": "autocfg",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -177,9 +189,12 @@
           "Library": {
             "crate_name": "backtrace",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -245,9 +260,12 @@
           "Library": {
             "crate_name": "bitflags",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -281,9 +299,12 @@
           "Library": {
             "crate_name": "bytes",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -323,9 +344,12 @@
           "Library": {
             "crate_name": "cc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -370,9 +394,12 @@
           "Library": {
             "crate_name": "cfg_if",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -401,9 +428,12 @@
           "Library": {
             "crate_name": "direct_cargo_bazel_deps",
             "crate_root": ".direct_cargo_bazel_deps.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -447,9 +477,12 @@
           "Library": {
             "crate_name": "gimli",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -483,9 +516,12 @@
           "Library": {
             "crate_name": "hermit_abi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -519,9 +555,12 @@
           "Library": {
             "crate_name": "libc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -585,9 +624,12 @@
           "Library": {
             "crate_name": "lock_api",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -637,9 +679,12 @@
           "Library": {
             "crate_name": "memchr",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -673,9 +718,12 @@
           "Library": {
             "crate_name": "miniz_oxide",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -719,9 +767,12 @@
           "Library": {
             "crate_name": "mio",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -789,9 +840,12 @@
           "Library": {
             "crate_name": "num_cpus",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -842,9 +896,12 @@
           "Library": {
             "crate_name": "object",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -887,9 +944,12 @@
           "Library": {
             "crate_name": "parking_lot",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -942,9 +1002,12 @@
           "Library": {
             "crate_name": "parking_lot_core",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1010,9 +1073,12 @@
           "Library": {
             "crate_name": "pin_project_lite",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1046,9 +1112,12 @@
           "Library": {
             "crate_name": "proc_macro2",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1107,9 +1176,12 @@
           "Library": {
             "crate_name": "quote",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1159,9 +1231,12 @@
           "Library": {
             "crate_name": "syscall",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1203,9 +1278,12 @@
           "Library": {
             "crate_name": "rustc_demangle",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1239,9 +1317,12 @@
           "Library": {
             "crate_name": "scopeguard",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1275,9 +1356,12 @@
           "Library": {
             "crate_name": "signal_hook_registry",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1320,9 +1404,12 @@
           "Library": {
             "crate_name": "smallvec",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1356,9 +1443,12 @@
           "Library": {
             "crate_name": "socket2",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1415,9 +1505,12 @@
           "Library": {
             "crate_name": "syn",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1485,9 +1578,12 @@
           "Library": {
             "crate_name": "tokio",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1613,9 +1709,12 @@
           "ProcMacro": {
             "crate_name": "tokio_macros",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1665,9 +1764,12 @@
           "Library": {
             "crate_name": "unicode_ident",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1702,9 +1804,12 @@
           "Library": {
             "crate_name": "wasi",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1745,9 +1850,12 @@
           "Library": {
             "crate_name": "windows_sys",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1810,9 +1918,12 @@
           "Library": {
             "crate_name": "windows_targets",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1893,9 +2004,12 @@
           "Library": {
             "crate_name": "windows_aarch64_gnullvm",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1929,9 +2043,12 @@
           "Library": {
             "crate_name": "windows_aarch64_msvc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -1965,9 +2082,12 @@
           "Library": {
             "crate_name": "windows_i686_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2001,9 +2121,12 @@
           "Library": {
             "crate_name": "windows_i686_msvc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2037,9 +2160,12 @@
           "Library": {
             "crate_name": "windows_x86_64_gnu",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2073,9 +2199,12 @@
           "Library": {
             "crate_name": "windows_x86_64_gnullvm",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -2109,9 +2238,12 @@
           "Library": {
             "crate_name": "windows_x86_64_msvc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/examples/sys/basic/3rdparty/crates/BUILD.bazel b/examples/sys/basic/3rdparty/crates/BUILD.bazel
index b0218c8..2c48b7b 100644
--- a/examples/sys/basic/3rdparty/crates/BUILD.bazel
+++ b/examples/sys/basic/3rdparty/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/examples/sys/basic/3rdparty/crates/BUILD.bzip2-0.3.3.bazel b/examples/sys/basic/3rdparty/crates/BUILD.bzip2-0.3.3.bazel
index c813ec0..73e4004 100644
--- a/examples/sys/basic/3rdparty/crates/BUILD.bzip2-0.3.3.bazel
+++ b/examples/sys/basic/3rdparty/crates/BUILD.bzip2-0.3.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bzip2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/basic/3rdparty/crates/BUILD.bzip2-sys-0.1.11+1.0.8.bazel b/examples/sys/basic/3rdparty/crates/BUILD.bzip2-sys-0.1.11+1.0.8.bazel
index 2031fd7..945a56c 100644
--- a/examples/sys/basic/3rdparty/crates/BUILD.bzip2-sys-0.1.11+1.0.8.bazel
+++ b/examples/sys/basic/3rdparty/crates/BUILD.bzip2-sys-0.1.11+1.0.8.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "bzip2_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -82,12 +86,16 @@
 )
 
 cargo_build_script(
-    name = "bzip2-sys_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "bzip2-sys_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -119,6 +127,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":bzip2-sys_build_script",
+    actual = ":bzip2-sys_bs",
     tags = ["manual"],
 )
diff --git a/examples/sys/basic/3rdparty/crates/BUILD.cc-1.0.77.bazel b/examples/sys/basic/3rdparty/crates/BUILD.cc-1.0.77.bazel
index ea3e50a..b3b202e 100644
--- a/examples/sys/basic/3rdparty/crates/BUILD.cc-1.0.77.bazel
+++ b/examples/sys/basic/3rdparty/crates/BUILD.cc-1.0.77.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/basic/3rdparty/crates/BUILD.libc-0.2.137.bazel b/examples/sys/basic/3rdparty/crates/BUILD.libc-0.2.137.bazel
index 685814d..3a32a80 100644
--- a/examples/sys/basic/3rdparty/crates/BUILD.libc-0.2.137.bazel
+++ b/examples/sys/basic/3rdparty/crates/BUILD.libc-0.2.137.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/basic/3rdparty/crates/BUILD.pkg-config-0.3.26.bazel b/examples/sys/basic/3rdparty/crates/BUILD.pkg-config-0.3.26.bazel
index 4d531bb..d0d33ae 100644
--- a/examples/sys/basic/3rdparty/crates/BUILD.pkg-config-0.3.26.bazel
+++ b/examples/sys/basic/3rdparty/crates/BUILD.pkg-config-0.3.26.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pkg_config",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/basic/3rdparty/crates/defs.bzl b/examples/sys/basic/3rdparty/crates/defs.bzl
index df6372d..3f48c98 100644
--- a/examples/sys/basic/3rdparty/crates/defs.bzl
+++ b/examples/sys/basic/3rdparty/crates/defs.bzl
@@ -295,7 +295,7 @@
 _NORMAL_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "bzip2": "@basic_sys__bzip2-0.3.3//:bzip2",
+            "bzip2": Label("@basic_sys__bzip2-0.3.3//:bzip2"),
         },
     },
 }
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.bazel b/examples/sys/complex/3rdparty/crates/BUILD.bazel
index f2e83db..af31b09 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.bitflags-1.3.2.bazel b/examples/sys/complex/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
index 8df4025..5a267f2 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.cc-1.0.77.bazel b/examples/sys/complex/3rdparty/crates/BUILD.cc-1.0.77.bazel
index 0335ae7..99bb628 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.cc-1.0.77.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.cc-1.0.77.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel b/examples/sys/complex/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
index 9c90536..1382deb 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.form_urlencoded-1.1.0.bazel b/examples/sys/complex/3rdparty/crates/BUILD.form_urlencoded-1.1.0.bazel
index 3976a9f..52f8c90 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.form_urlencoded-1.1.0.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.form_urlencoded-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "form_urlencoded",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.git2-0.14.4.bazel b/examples/sys/complex/3rdparty/crates/BUILD.git2-0.14.4.bazel
index ab3fbb6..375ef8b 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.git2-0.14.4.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.git2-0.14.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "git2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.idna-0.3.0.bazel b/examples/sys/complex/3rdparty/crates/BUILD.idna-0.3.0.bazel
index 709a54e..f69fdf2 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.idna-0.3.0.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.idna-0.3.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "idna",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.jobserver-0.1.25.bazel b/examples/sys/complex/3rdparty/crates/BUILD.jobserver-0.1.25.bazel
index 79a1684..563d8f5 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.jobserver-0.1.25.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.jobserver-0.1.25.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "jobserver",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.libc-0.2.137.bazel b/examples/sys/complex/3rdparty/crates/BUILD.libc-0.2.137.bazel
index 11b6855..a0bb2d5 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.libc-0.2.137.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.libc-0.2.137.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.libgit2-sys-0.13.4+1.4.2.bazel b/examples/sys/complex/3rdparty/crates/BUILD.libgit2-sys-0.13.4+1.4.2.bazel
index a6e0add..8779466 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.libgit2-sys-0.13.4+1.4.2.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.libgit2-sys-0.13.4+1.4.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "libgit2_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.libz-sys-1.1.8.bazel b/examples/sys/complex/3rdparty/crates/BUILD.libz-sys-1.1.8.bazel
index 312d614..319ef06 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.libz-sys-1.1.8.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.libz-sys-1.1.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "libz_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.log-0.4.17.bazel b/examples/sys/complex/3rdparty/crates/BUILD.log-0.4.17.bazel
index fd62749..e297402 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.log-0.4.17.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.log-0.4.17.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -82,12 +86,16 @@
 )
 
 cargo_build_script(
-    name = "log_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "log_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -114,6 +122,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":log_build_script",
+    actual = ":log_bs",
     tags = ["manual"],
 )
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.percent-encoding-2.2.0.bazel b/examples/sys/complex/3rdparty/crates/BUILD.percent-encoding-2.2.0.bazel
index cad4650..baacda9 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.percent-encoding-2.2.0.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.percent-encoding-2.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "percent_encoding",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.pkg-config-0.3.26.bazel b/examples/sys/complex/3rdparty/crates/BUILD.pkg-config-0.3.26.bazel
index 17a8cc1..44e70ab 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.pkg-config-0.3.26.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.pkg-config-0.3.26.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pkg_config",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.tinyvec-1.6.0.bazel b/examples/sys/complex/3rdparty/crates/BUILD.tinyvec-1.6.0.bazel
index 3720021..e70af69 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.tinyvec-1.6.0.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.tinyvec-1.6.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tinyvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.tinyvec_macros-0.1.0.bazel b/examples/sys/complex/3rdparty/crates/BUILD.tinyvec_macros-0.1.0.bazel
index 76d7faa..479496e 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.tinyvec_macros-0.1.0.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.tinyvec_macros-0.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tinyvec_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.unicode-bidi-0.3.8.bazel b/examples/sys/complex/3rdparty/crates/BUILD.unicode-bidi-0.3.8.bazel
index c1011e4..2d0aeba 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.unicode-bidi-0.3.8.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.unicode-bidi-0.3.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_bidi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.unicode-normalization-0.1.22.bazel b/examples/sys/complex/3rdparty/crates/BUILD.unicode-normalization-0.1.22.bazel
index da7232c..2f5b9ac 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.unicode-normalization-0.1.22.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.unicode-normalization-0.1.22.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_normalization",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.url-2.3.1.bazel b/examples/sys/complex/3rdparty/crates/BUILD.url-2.3.1.bazel
index 0409286..9ee01bb 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.url-2.3.1.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.url-2.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "url",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/BUILD.vcpkg-0.2.15.bazel b/examples/sys/complex/3rdparty/crates/BUILD.vcpkg-0.2.15.bazel
index 6e7cadb..6e41f39 100644
--- a/examples/sys/complex/3rdparty/crates/BUILD.vcpkg-0.2.15.bazel
+++ b/examples/sys/complex/3rdparty/crates/BUILD.vcpkg-0.2.15.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "vcpkg",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/examples/sys/complex/3rdparty/crates/defs.bzl b/examples/sys/complex/3rdparty/crates/defs.bzl
index 1c6938e..34488e0 100644
--- a/examples/sys/complex/3rdparty/crates/defs.bzl
+++ b/examples/sys/complex/3rdparty/crates/defs.bzl
@@ -295,7 +295,7 @@
 _NORMAL_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "git2": "@complex_sys__git2-0.14.4//:git2",
+            "git2": Label("@complex_sys__git2-0.14.4//:git2"),
         },
     },
 }
diff --git a/examples/zig_cross_compiling/.bazelrc b/examples/zig_cross_compiling/.bazelrc
index 5a1a8fd..0be7ebb 100644
--- a/examples/zig_cross_compiling/.bazelrc
+++ b/examples/zig_cross_compiling/.bazelrc
@@ -8,3 +8,6 @@
 # TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
 # https://github.com/bazelbuild/rules_rust/issues/2181
 common --noenable_bzlmod
+
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
diff --git a/proto/prost/private/3rdparty/crates/BUILD.anyhow-1.0.71.bazel b/proto/prost/private/3rdparty/crates/BUILD.anyhow-1.0.71.bazel
index b5d703b..b47831d 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.anyhow-1.0.71.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.anyhow-1.0.71.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "anyhow",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "anyhow_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "anyhow_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":anyhow_build_script",
+    actual = ":anyhow_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.async-trait-0.1.68.bazel b/proto/prost/private/3rdparty/crates/BUILD.async-trait-0.1.68.bazel
index 548d117..9632271 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.async-trait-0.1.68.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.async-trait-0.1.68.bazel
@@ -13,9 +13,13 @@
 
 rust_proc_macro(
     name = "async_trait",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -84,12 +88,16 @@
 )
 
 cargo_build_script(
-    name = "async-trait_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "async-trait_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -116,6 +124,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":async-trait_build_script",
+    actual = ":async-trait_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.autocfg-1.1.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.autocfg-1.1.0.bazel
index 68fcd23..d2d488a 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.autocfg-1.1.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.autocfg-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "autocfg",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.axum-0.6.18.bazel b/proto/prost/private/3rdparty/crates/BUILD.axum-0.6.18.bazel
index 038feda..bdf4abd 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.axum-0.6.18.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.axum-0.6.18.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "axum",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -102,12 +106,16 @@
 )
 
 cargo_build_script(
-    name = "axum_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "axum_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -137,6 +145,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":axum_build_script",
+    actual = ":axum_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.axum-core-0.3.4.bazel b/proto/prost/private/3rdparty/crates/BUILD.axum-core-0.3.4.bazel
index 94c2ae5..2eb1c0e 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.axum-core-0.3.4.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.axum-core-0.3.4.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "axum_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -91,12 +95,16 @@
 )
 
 cargo_build_script(
-    name = "axum-core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "axum-core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -126,6 +134,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":axum-core_build_script",
+    actual = ":axum-core_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.base64-0.21.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.base64-0.21.2.bazel
index a19c50c..e63c4a8 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.base64-0.21.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.base64-0.21.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "base64",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.bazel b/proto/prost/private/3rdparty/crates/BUILD.bazel
index 047ad27..98e9354 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/proto/prost/private/3rdparty/crates/BUILD.bitflags-1.3.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
index 97bb2ce..2d4ec19 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.bytes-1.4.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.bytes-1.4.0.bazel
index 7794f3f..6364a34 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.bytes-1.4.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.bytes-1.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bytes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.cc-1.0.79.bazel b/proto/prost/private/3rdparty/crates/BUILD.cc-1.0.79.bazel
index 9a8c90f..d654eea 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.cc-1.0.79.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.cc-1.0.79.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
index 023a193..996b002 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.either-1.8.1.bazel b/proto/prost/private/3rdparty/crates/BUILD.either-1.8.1.bazel
index 5f193d4..7cdf902 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.either-1.8.1.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.either-1.8.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "either",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.errno-0.3.1.bazel b/proto/prost/private/3rdparty/crates/BUILD.errno-0.3.1.bazel
index a3ca991..baf0a0a 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.errno-0.3.1.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.errno-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "errno",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
index b9df414..732aa11 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "errno_dragonfly",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -82,12 +86,16 @@
 )
 
 cargo_build_script(
-    name = "errno-dragonfly_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "errno-dragonfly_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -117,6 +125,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":errno-dragonfly_build_script",
+    actual = ":errno-dragonfly_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.fastrand-1.9.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.fastrand-1.9.0.bazel
index bce9a1f..6019817 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.fastrand-1.9.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.fastrand-1.9.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fastrand",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.fixedbitset-0.4.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.fixedbitset-0.4.2.bazel
index 5895e01..fa9847c 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.fixedbitset-0.4.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.fixedbitset-0.4.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fixedbitset",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.fnv-1.0.7.bazel b/proto/prost/private/3rdparty/crates/BUILD.fnv-1.0.7.bazel
index 0f7227a..a400734 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.fnv-1.0.7.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.fnv-1.0.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fnv",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.futures-channel-0.3.28.bazel b/proto/prost/private/3rdparty/crates/BUILD.futures-channel-0.3.28.bazel
index 7d23327..925bf2f 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.futures-channel-0.3.28.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.futures-channel-0.3.28.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "futures_channel",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -87,8 +91,11 @@
 )
 
 cargo_build_script(
-    name = "futures-channel_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "futures-channel_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "alloc",
         "default",
@@ -98,6 +105,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -124,6 +132,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":futures-channel_build_script",
+    actual = ":futures-channel_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.futures-core-0.3.28.bazel b/proto/prost/private/3rdparty/crates/BUILD.futures-core-0.3.28.bazel
index 1efd8e7..83bee22 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.futures-core-0.3.28.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.futures-core-0.3.28.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "futures_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "futures-core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "futures-core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "alloc",
         "default",
@@ -97,6 +104,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -123,6 +131,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":futures-core_build_script",
+    actual = ":futures-core_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.futures-sink-0.3.28.bazel b/proto/prost/private/3rdparty/crates/BUILD.futures-sink-0.3.28.bazel
index 29666eb..3d5ef6b 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.futures-sink-0.3.28.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.futures-sink-0.3.28.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_sink",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.futures-task-0.3.28.bazel b/proto/prost/private/3rdparty/crates/BUILD.futures-task-0.3.28.bazel
index 6f7b3cf..50af064 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.futures-task-0.3.28.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.futures-task-0.3.28.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "futures_task",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -84,8 +88,11 @@
 )
 
 cargo_build_script(
-    name = "futures-task_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "futures-task_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "alloc",
     ],
@@ -93,6 +100,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -119,6 +127,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":futures-task_build_script",
+    actual = ":futures-task_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.futures-util-0.3.28.bazel b/proto/prost/private/3rdparty/crates/BUILD.futures-util-0.3.28.bazel
index a897e31..f5e7706 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.futures-util-0.3.28.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.futures-util-0.3.28.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "futures_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -88,8 +92,11 @@
 )
 
 cargo_build_script(
-    name = "futures-util_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "futures-util_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "alloc",
     ],
@@ -97,6 +104,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -123,6 +131,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":futures-util_build_script",
+    actual = ":futures-util_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.getrandom-0.2.10.bazel b/proto/prost/private/3rdparty/crates/BUILD.getrandom-0.2.10.bazel
index 5925291..cd2aefc 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.getrandom-0.2.10.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.getrandom-0.2.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "getrandom",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.h2-0.3.19.bazel b/proto/prost/private/3rdparty/crates/BUILD.h2-0.3.19.bazel
index 24a196a..bbf3b3c 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.h2-0.3.19.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.h2-0.3.19.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "h2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.hashbrown-0.12.3.bazel b/proto/prost/private/3rdparty/crates/BUILD.hashbrown-0.12.3.bazel
index c054594..f99bebf 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.hashbrown-0.12.3.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.hashbrown-0.12.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hashbrown",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.heck-0.4.1.bazel b/proto/prost/private/3rdparty/crates/BUILD.heck-0.4.1.bazel
index 49ea0f1..84e3019 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.heck-0.4.1.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.heck-0.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "heck",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.hermit-abi-0.2.6.bazel b/proto/prost/private/3rdparty/crates/BUILD.hermit-abi-0.2.6.bazel
index 2c06335..ddab5af 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.hermit-abi-0.2.6.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.hermit-abi-0.2.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.hermit-abi-0.3.1.bazel b/proto/prost/private/3rdparty/crates/BUILD.hermit-abi-0.3.1.bazel
index 8a9dadb..6810942 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.hermit-abi-0.3.1.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.hermit-abi-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.http-0.2.9.bazel b/proto/prost/private/3rdparty/crates/BUILD.http-0.2.9.bazel
index 1dcd591..846e137 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.http-0.2.9.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.http-0.2.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "http",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.http-body-0.4.5.bazel b/proto/prost/private/3rdparty/crates/BUILD.http-body-0.4.5.bazel
index 352c531..e86cbcb 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.http-body-0.4.5.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.http-body-0.4.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "http_body",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.httparse-1.8.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.httparse-1.8.0.bazel
index 951f56d..585621e 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.httparse-1.8.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.httparse-1.8.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "httparse",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "httparse_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "httparse_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":httparse_build_script",
+    actual = ":httparse_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.httpdate-1.0.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.httpdate-1.0.2.bazel
index 0b13235..164f2a2 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.httpdate-1.0.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.httpdate-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "httpdate",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.hyper-0.14.26.bazel b/proto/prost/private/3rdparty/crates/BUILD.hyper-0.14.26.bazel
index 51c61a6..af52184 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.hyper-0.14.26.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.hyper-0.14.26.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hyper",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.hyper-timeout-0.4.1.bazel b/proto/prost/private/3rdparty/crates/BUILD.hyper-timeout-0.4.1.bazel
index 9a360ad..2db8f06 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.hyper-timeout-0.4.1.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.hyper-timeout-0.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hyper_timeout",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.indexmap-1.9.3.bazel b/proto/prost/private/3rdparty/crates/BUILD.indexmap-1.9.3.bazel
index 46e8e33..f70ba89 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.indexmap-1.9.3.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.indexmap-1.9.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "indexmap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "indexmap_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "indexmap_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "std",
     ],
@@ -94,6 +101,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -123,6 +131,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":indexmap_build_script",
+    actual = ":indexmap_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.instant-0.1.12.bazel b/proto/prost/private/3rdparty/crates/BUILD.instant-0.1.12.bazel
index 5ad4a6a..91d40bd 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.instant-0.1.12.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.instant-0.1.12.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "instant",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel b/proto/prost/private/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
index 3b61da8..3d8a0a2 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "io_lifetimes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -191,8 +195,11 @@
 )
 
 cargo_build_script(
-    name = "io-lifetimes_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "io-lifetimes_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "close",
         "hermit-abi",
@@ -203,6 +210,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -229,6 +237,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":io-lifetimes_build_script",
+    actual = ":io-lifetimes_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.itertools-0.10.5.bazel b/proto/prost/private/3rdparty/crates/BUILD.itertools-0.10.5.bazel
index e614bfd..3151b1b 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.itertools-0.10.5.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.itertools-0.10.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "itertools",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.itoa-1.0.6.bazel b/proto/prost/private/3rdparty/crates/BUILD.itoa-1.0.6.bazel
index fd14dc5..df2ffd4 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.itoa-1.0.6.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.itoa-1.0.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "itoa",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
index 45f7bc7..b4d5a5e 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "lazy_static",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.libc-0.2.146.bazel b/proto/prost/private/3rdparty/crates/BUILD.libc-0.2.146.bazel
index 0cf760a..7eeb56b 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.libc-0.2.146.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.libc-0.2.146.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -162,8 +166,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -249,6 +256,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -275,6 +283,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel b/proto/prost/private/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
index 830a258..59082ad 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "linux_raw_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.lock_api-0.4.10.bazel b/proto/prost/private/3rdparty/crates/BUILD.lock_api-0.4.10.bazel
index 04f582e..382d9c4 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.lock_api-0.4.10.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.lock_api-0.4.10.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "lock_api",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "lock_api_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "lock_api_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "atomic_usize",
         "default",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -125,6 +133,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":lock_api_build_script",
+    actual = ":lock_api_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.log-0.4.19.bazel b/proto/prost/private/3rdparty/crates/BUILD.log-0.4.19.bazel
index ddffc12..5e34316 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.log-0.4.19.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.log-0.4.19.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.matchit-0.7.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.matchit-0.7.0.bazel
index 10d0ab3..5f70d00 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.matchit-0.7.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.matchit-0.7.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "matchit",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.memchr-2.5.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.memchr-2.5.0.bazel
index d0ddc83..5a2dae9 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.memchr-2.5.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.memchr-2.5.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "memchr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "memchr_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "memchr_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":memchr_build_script",
+    actual = ":memchr_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.mime-0.3.17.bazel b/proto/prost/private/3rdparty/crates/BUILD.mime-0.3.17.bazel
index d841fd4..c3f6c1b 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.mime-0.3.17.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.mime-0.3.17.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mime",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.mio-0.8.8.bazel b/proto/prost/private/3rdparty/crates/BUILD.mio-0.8.8.bazel
index 43d01ee..a91fc4a 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.mio-0.8.8.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.mio-0.8.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.multimap-0.8.3.bazel b/proto/prost/private/3rdparty/crates/BUILD.multimap-0.8.3.bazel
index 3939e2c..b1eed65 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.multimap-0.8.3.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.multimap-0.8.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "multimap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.num_cpus-1.15.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.num_cpus-1.15.0.bazel
index 4c7cc9b..fd200a7 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.num_cpus-1.15.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.num_cpus-1.15.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_cpus",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.once_cell-1.18.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
index e71131d..8fc5dcb 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "once_cell",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.parking_lot-0.12.1.bazel b/proto/prost/private/3rdparty/crates/BUILD.parking_lot-0.12.1.bazel
index 51d7fc5..cbefb4c 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.parking_lot-0.12.1.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.parking_lot-0.12.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "parking_lot",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.parking_lot_core-0.9.8.bazel b/proto/prost/private/3rdparty/crates/BUILD.parking_lot_core-0.9.8.bazel
index 308fdc0..fba4d3f 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.parking_lot_core-0.9.8.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.parking_lot_core-0.9.8.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "parking_lot_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -166,12 +170,16 @@
 )
 
 cargo_build_script(
-    name = "parking_lot_core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "parking_lot_core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -198,6 +206,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":parking_lot_core_build_script",
+    actual = ":parking_lot_core_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.percent-encoding-2.3.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.percent-encoding-2.3.0.bazel
index 13bded9..fd446d3 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.percent-encoding-2.3.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.percent-encoding-2.3.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "percent_encoding",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.petgraph-0.6.3.bazel b/proto/prost/private/3rdparty/crates/BUILD.petgraph-0.6.3.bazel
index dc51c66..4ad918f 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.petgraph-0.6.3.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.petgraph-0.6.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "petgraph",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.pin-project-1.1.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.pin-project-1.1.0.bazel
index d7a84c4..e8155c7 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.pin-project-1.1.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.pin-project-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_project",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.pin-project-internal-1.1.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.pin-project-internal-1.1.0.bazel
index e6d4793..1c3f3cf 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.pin-project-internal-1.1.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.pin-project-internal-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "pin_project_internal",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.pin-project-lite-0.2.9.bazel b/proto/prost/private/3rdparty/crates/BUILD.pin-project-lite-0.2.9.bazel
index b12de80..332f4bc 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.pin-project-lite-0.2.9.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.pin-project-lite-0.2.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_project_lite",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.pin-utils-0.1.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.pin-utils-0.1.0.bazel
index 14fe3d6..d225e0b 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.pin-utils-0.1.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.pin-utils-0.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "pin_utils",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.ppv-lite86-0.2.17.bazel b/proto/prost/private/3rdparty/crates/BUILD.ppv-lite86-0.2.17.bazel
index b489c75..7c6592e 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.ppv-lite86-0.2.17.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.ppv-lite86-0.2.17.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ppv_lite86",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.prettyplease-0.1.25.bazel b/proto/prost/private/3rdparty/crates/BUILD.prettyplease-0.1.25.bazel
index 4773978..010c56d 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.prettyplease-0.1.25.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.prettyplease-0.1.25.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "prettyplease",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -83,12 +87,16 @@
 )
 
 cargo_build_script(
-    name = "prettyplease_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "prettyplease_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -116,6 +124,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":prettyplease_build_script",
+    actual = ":prettyplease_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.proc-macro2-1.0.60.bazel b/proto/prost/private/3rdparty/crates/BUILD.proc-macro2-1.0.60.bazel
index 50dc8b8..c143e55 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.proc-macro2-1.0.60.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.proc-macro2-1.0.60.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "proc-macro2_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro2_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro2_build_script",
+    actual = ":proc-macro2_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.prost-0.11.9.bazel b/proto/prost/private/3rdparty/crates/BUILD.prost-0.11.9.bazel
index ed404db..fea7248 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.prost-0.11.9.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.prost-0.11.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "prost",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.prost-build-0.11.9.bazel b/proto/prost/private/3rdparty/crates/BUILD.prost-build-0.11.9.bazel
index 811cecc..aa81a1f 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.prost-build-0.11.9.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.prost-build-0.11.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "prost_build",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.prost-derive-0.11.9.bazel b/proto/prost/private/3rdparty/crates/BUILD.prost-derive-0.11.9.bazel
index 50d422a..adc1a09 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.prost-derive-0.11.9.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.prost-derive-0.11.9.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "prost_derive",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.prost-types-0.11.9.bazel b/proto/prost/private/3rdparty/crates/BUILD.prost-types-0.11.9.bazel
index 114a29f..3f5a081 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.prost-types-0.11.9.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.prost-types-0.11.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "prost_types",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.protoc-gen-prost-0.2.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.protoc-gen-prost-0.2.2.bazel
index a24bfb8..bbafad1 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.protoc-gen-prost-0.2.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.protoc-gen-prost-0.2.2.bazel
@@ -16,9 +16,13 @@
 
 rust_library(
     name = "protoc_gen_prost",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -89,9 +93,13 @@
 
 rust_binary(
     name = "protoc-gen-prost__bin",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.protoc-gen-tonic-0.2.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.protoc-gen-tonic-0.2.2.bazel
index 2da7da7..8a4115f 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.protoc-gen-tonic-0.2.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.protoc-gen-tonic-0.2.2.bazel
@@ -16,9 +16,13 @@
 
 rust_library(
     name = "protoc_gen_tonic",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -93,9 +97,13 @@
 
 rust_binary(
     name = "protoc-gen-tonic__bin",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.quote-1.0.28.bazel b/proto/prost/private/3rdparty/crates/BUILD.quote-1.0.28.bazel
index b82b29c..f138750 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.quote-1.0.28.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.quote-1.0.28.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "quote_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "quote_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":quote_build_script",
+    actual = ":quote_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.rand-0.8.5.bazel b/proto/prost/private/3rdparty/crates/BUILD.rand-0.8.5.bazel
index bc44538..4ed8c10 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.rand-0.8.5.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.rand-0.8.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.rand_chacha-0.3.1.bazel b/proto/prost/private/3rdparty/crates/BUILD.rand_chacha-0.3.1.bazel
index 4576956..449b172 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.rand_chacha-0.3.1.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.rand_chacha-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand_chacha",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.rand_core-0.6.4.bazel b/proto/prost/private/3rdparty/crates/BUILD.rand_core-0.6.4.bazel
index f56c1fc..359af4e 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.rand_core-0.6.4.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.rand_core-0.6.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.redox_syscall-0.3.5.bazel b/proto/prost/private/3rdparty/crates/BUILD.redox_syscall-0.3.5.bazel
index 3958acd..ab10f42 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.redox_syscall-0.3.5.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.redox_syscall-0.3.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syscall",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.regex-1.8.4.bazel b/proto/prost/private/3rdparty/crates/BUILD.regex-1.8.4.bazel
index 683edd9..1ad31ce 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.regex-1.8.4.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.regex-1.8.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.regex-syntax-0.7.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.regex-syntax-0.7.2.bazel
index 3a07e6d..7a2eee5 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.regex-syntax-0.7.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.regex-syntax-0.7.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex_syntax",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.rustix-0.37.20.bazel b/proto/prost/private/3rdparty/crates/BUILD.rustix-0.37.20.bazel
index f69c099..203aa46 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.rustix-0.37.20.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.rustix-0.37.20.bazel
@@ -13,7 +13,10 @@
 
 rust_library(
     name = "rustix",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     aliases = select({
         "@rules_rust//rust/platform:aarch64-apple-darwin": {
             "@rules_rust_prost__errno-0.3.1//:errno": "libc_errno",  # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = "linux", any(target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"), all(target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64"))))))))
@@ -100,6 +103,7 @@
     }),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -319,8 +323,11 @@
 )
 
 cargo_build_script(
-    name = "rustix_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rustix_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "fs",
@@ -333,6 +340,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -359,6 +367,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rustix_build_script",
+    actual = ":rustix_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.rustversion-1.0.12.bazel b/proto/prost/private/3rdparty/crates/BUILD.rustversion-1.0.12.bazel
index c7e7534..ff340d0 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.rustversion-1.0.12.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.rustversion-1.0.12.bazel
@@ -13,9 +13,13 @@
 
 rust_proc_macro(
     name = "rustversion",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "rustversion_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rustversion_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build/build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rustversion_build_script",
+    actual = ":rustversion_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.scopeguard-1.1.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.scopeguard-1.1.0.bazel
index 4b23031..c31f79e 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.scopeguard-1.1.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.scopeguard-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "scopeguard",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.serde-1.0.164.bazel b/proto/prost/private/3rdparty/crates/BUILD.serde-1.0.164.bazel
index ec7feaa..01e3acb 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.serde-1.0.164.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.serde-1.0.164.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "serde_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":serde_build_script",
+    actual = ":serde_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.signal-hook-registry-1.4.1.bazel b/proto/prost/private/3rdparty/crates/BUILD.signal-hook-registry-1.4.1.bazel
index e3d28d0..886e0f4 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.signal-hook-registry-1.4.1.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.signal-hook-registry-1.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "signal_hook_registry",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.slab-0.4.8.bazel b/proto/prost/private/3rdparty/crates/BUILD.slab-0.4.8.bazel
index b69328d..4a6fe33 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.slab-0.4.8.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.slab-0.4.8.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "slab",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "slab_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "slab_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -124,6 +132,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":slab_build_script",
+    actual = ":slab_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.smallvec-1.10.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.smallvec-1.10.0.bazel
index 02fe628..26f8093 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.smallvec-1.10.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.smallvec-1.10.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "smallvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.socket2-0.4.9.bazel b/proto/prost/private/3rdparty/crates/BUILD.socket2-0.4.9.bazel
index 9858580..376e758 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.socket2-0.4.9.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.socket2-0.4.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "socket2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.syn-1.0.109.bazel b/proto/prost/private/3rdparty/crates/BUILD.syn-1.0.109.bazel
index 8a9915e..7bfdfde 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.syn-1.0.109.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.syn-1.0.109.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -95,8 +99,11 @@
 )
 
 cargo_build_script(
-    name = "syn_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "syn_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "clone-impls",
         "default",
@@ -112,6 +119,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -138,6 +146,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":syn_build_script",
+    actual = ":syn_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.syn-2.0.18.bazel b/proto/prost/private/3rdparty/crates/BUILD.syn-2.0.18.bazel
index e607381..2d843e3 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.syn-2.0.18.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.syn-2.0.18.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.sync_wrapper-0.1.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.sync_wrapper-0.1.2.bazel
index 89e7a58..28bbcbd 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.sync_wrapper-0.1.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.sync_wrapper-0.1.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "sync_wrapper",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tempfile-3.6.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.tempfile-3.6.0.bazel
index 82ed945..21472bd 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tempfile-3.6.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tempfile-3.6.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "tempfile",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -169,12 +173,16 @@
 )
 
 cargo_build_script(
-    name = "tempfile_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "tempfile_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -204,6 +212,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":tempfile_build_script",
+    actual = ":tempfile_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tokio-1.28.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.tokio-1.28.2.bazel
index 87e29ba..7041019 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tokio-1.28.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tokio-1.28.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "tokio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -272,8 +276,11 @@
 )
 
 cargo_build_script(
-    name = "tokio_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "tokio_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "bytes",
         "default",
@@ -312,6 +319,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -341,6 +349,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":tokio_build_script",
+    actual = ":tokio_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tokio-io-timeout-1.2.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.tokio-io-timeout-1.2.0.bazel
index 1a4d658..7272cc9 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tokio-io-timeout-1.2.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tokio-io-timeout-1.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_io_timeout",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tokio-macros-2.1.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.tokio-macros-2.1.0.bazel
index b13f980..d8f6308 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tokio-macros-2.1.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tokio-macros-2.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "tokio_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tokio-stream-0.1.14.bazel b/proto/prost/private/3rdparty/crates/BUILD.tokio-stream-0.1.14.bazel
index e117d61..ea36341 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tokio-stream-0.1.14.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tokio-stream-0.1.14.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_stream",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tokio-util-0.7.8.bazel b/proto/prost/private/3rdparty/crates/BUILD.tokio-util-0.7.8.bazel
index b6617d3..9952d25 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tokio-util-0.7.8.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tokio-util-0.7.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tonic-0.9.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.tonic-0.9.2.bazel
index e2b10b2..7db905e 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tonic-0.9.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tonic-0.9.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tonic",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tonic-build-0.8.4.bazel b/proto/prost/private/3rdparty/crates/BUILD.tonic-build-0.8.4.bazel
index df01fa7..ce43314 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tonic-build-0.8.4.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tonic-build-0.8.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tonic_build",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tower-0.4.13.bazel b/proto/prost/private/3rdparty/crates/BUILD.tower-0.4.13.bazel
index 865ad1b..ca8de13 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tower-0.4.13.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tower-0.4.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tower-layer-0.3.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.tower-layer-0.3.2.bazel
index d41cdd7..ffa6cb7 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tower-layer-0.3.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tower-layer-0.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower_layer",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tower-service-0.3.2.bazel b/proto/prost/private/3rdparty/crates/BUILD.tower-service-0.3.2.bazel
index 214e35a..29753f9 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tower-service-0.3.2.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tower-service-0.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tower_service",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tracing-0.1.37.bazel b/proto/prost/private/3rdparty/crates/BUILD.tracing-0.1.37.bazel
index ed1c76f..502045b 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tracing-0.1.37.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tracing-0.1.37.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tracing-attributes-0.1.26.bazel b/proto/prost/private/3rdparty/crates/BUILD.tracing-attributes-0.1.26.bazel
index daee537..bd23b7a 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tracing-attributes-0.1.26.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tracing-attributes-0.1.26.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "tracing_attributes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.tracing-core-0.1.31.bazel b/proto/prost/private/3rdparty/crates/BUILD.tracing-core-0.1.31.bazel
index 963a569..0bd9bd7 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.tracing-core-0.1.31.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.tracing-core-0.1.31.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tracing_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.try-lock-0.2.4.bazel b/proto/prost/private/3rdparty/crates/BUILD.try-lock-0.2.4.bazel
index 652891d..cc137f6 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.try-lock-0.2.4.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.try-lock-0.2.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "try_lock",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.unicode-ident-1.0.9.bazel b/proto/prost/private/3rdparty/crates/BUILD.unicode-ident-1.0.9.bazel
index c32cdd5..176cd59 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.unicode-ident-1.0.9.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.unicode-ident-1.0.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_ident",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.want-0.3.1.bazel b/proto/prost/private/3rdparty/crates/BUILD.want-0.3.1.bazel
index fcd4a9a..cfdf537 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.want-0.3.1.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.want-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "want",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel b/proto/prost/private/3rdparty/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
index 291dcbb..48cba65 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.which-4.4.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.which-4.4.0.bazel
index fabbfa8..ca7fd1a 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.which-4.4.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.which-4.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "which",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.winapi-0.3.9.bazel b/proto/prost/private/3rdparty/crates/BUILD.winapi-0.3.9.bazel
index be133ab..58c5d27 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.winapi-0.3.9.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.winapi-0.3.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "winapi_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "handleapi",
         "ws2ipdef",
@@ -97,6 +104,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -123,6 +131,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi_build_script",
+    actual = ":winapi_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
index ebbf782..9f0675b 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_i686_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-i686-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-i686-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-i686-pc-windows-gnu_build_script",
+    actual = ":winapi-i686-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
index 2928284..aeb0bb3 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_x86_64_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-x86_64-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-x86_64-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-x86_64-pc-windows-gnu_build_script",
+    actual = ":winapi-x86_64-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
index 9899e9e..9eeaae0 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.windows-targets-0.48.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.windows-targets-0.48.0.bazel
index c8b01b0..07d5de3 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.windows-targets-0.48.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.windows-targets-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/prost/private/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
index b679670..1dfa90a 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
index f1844aa..b5d3f4c 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
index 986f258..d52a1cb 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
index 2b20e69..20ecb68 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
index 8df5e80..10ae1ab 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
index e7e0041..62ce3df 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel b/proto/prost/private/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
index a494b19..624d18d 100644
--- a/proto/prost/private/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
+++ b/proto/prost/private/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/proto/prost/private/3rdparty/crates/defs.bzl b/proto/prost/private/3rdparty/crates/defs.bzl
index 49b8735..7784f0f 100644
--- a/proto/prost/private/3rdparty/crates/defs.bzl
+++ b/proto/prost/private/3rdparty/crates/defs.bzl
@@ -295,14 +295,14 @@
 _NORMAL_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "h2": "@rules_rust_prost__h2-0.3.19//:h2",
-            "prost": "@rules_rust_prost__prost-0.11.9//:prost",
-            "prost-types": "@rules_rust_prost__prost-types-0.11.9//:prost_types",
-            "protoc-gen-prost": "@rules_rust_prost__protoc-gen-prost-0.2.2//:protoc_gen_prost",
-            "protoc-gen-tonic": "@rules_rust_prost__protoc-gen-tonic-0.2.2//:protoc_gen_tonic",
-            "tokio": "@rules_rust_prost__tokio-1.28.2//:tokio",
-            "tokio-stream": "@rules_rust_prost__tokio-stream-0.1.14//:tokio_stream",
-            "tonic": "@rules_rust_prost__tonic-0.9.2//:tonic",
+            "h2": Label("@rules_rust_prost__h2-0.3.19//:h2"),
+            "prost": Label("@rules_rust_prost__prost-0.11.9//:prost"),
+            "prost-types": Label("@rules_rust_prost__prost-types-0.11.9//:prost_types"),
+            "protoc-gen-prost": Label("@rules_rust_prost__protoc-gen-prost-0.2.2//:protoc_gen_prost"),
+            "protoc-gen-tonic": Label("@rules_rust_prost__protoc-gen-tonic-0.2.2//:protoc_gen_tonic"),
+            "tokio": Label("@rules_rust_prost__tokio-1.28.2//:tokio"),
+            "tokio-stream": Label("@rules_rust_prost__tokio-stream-0.1.14//:tokio_stream"),
+            "tonic": Label("@rules_rust_prost__tonic-0.9.2//:tonic"),
         },
     },
 }
diff --git a/proto/prost/private/prost.bzl b/proto/prost/private/prost.bzl
index d3c34c7..b7d55c3 100644
--- a/proto/prost/private/prost.bzl
+++ b/proto/prost/private/prost.bzl
@@ -5,9 +5,15 @@
 load("//rust:defs.bzl", "rust_common")
 
 # buildifier: disable=bzl-visibility
+load("//rust/private:providers.bzl", "RustAnalyzerGroupInfo", "RustAnalyzerInfo")
+
+# buildifier: disable=bzl-visibility
 load("//rust/private:rust.bzl", "RUSTC_ATTRS")
 
 # buildifier: disable=bzl-visibility
+load("//rust/private:rust_analyzer.bzl", "write_rust_analyzer_spec_file")
+
+# buildifier: disable=bzl-visibility
 load("//rust/private:rustc.bzl", "rustc_compile_action")
 
 # buildifier: disable=bzl-visibility
@@ -211,6 +217,7 @@
 
     direct_deps = []
     transitive_deps = [depset(runtime_deps)]
+    rust_analyzer_deps = []
     for proto_dep in proto_deps:
         proto_info = proto_dep[ProstProtoInfo]
 
@@ -220,6 +227,9 @@
             transitive = [proto_info.transitive_dep_infos],
         ))
 
+        if RustAnalyzerInfo in proto_dep:
+            rust_analyzer_deps.append(proto_dep[RustAnalyzerInfo])
+
     deps = runtime_deps + direct_deps
 
     crate_name = ctx.label.name.replace("-", "_").replace("/", "_")
@@ -244,12 +254,27 @@
         edition = RUST_EDITION,
     )
 
+    # Always add `test` & `debug_assertions`. See rust-analyzer source code:
+    # https://github.com/rust-analyzer/rust-analyzer/blob/2021-11-15/crates/project_model/src/workspace.rs#L529-L531
+    cfgs = ["test", "debug_assertions"]
+
+    rust_analyzer_info = write_rust_analyzer_spec_file(ctx, ctx.rule.attr, ctx.label, RustAnalyzerInfo(
+        crate = dep_variant_info.crate_info,
+        cfgs = cfgs,
+        env = dep_variant_info.crate_info.rustc_env,
+        deps = rust_analyzer_deps,
+        crate_specs = depset(transitive = [dep.crate_specs for dep in rust_analyzer_deps]),
+        proc_macro_dylib_path = None,
+        build_info = dep_variant_info.build_info,
+    ))
+
     return [
         ProstProtoInfo(
             dep_variant_info = dep_variant_info,
             transitive_dep_infos = depset(transitive = transitive_deps),
             package_info = package_info_file,
         ),
+        rust_analyzer_info,
     ]
 
 rust_prost_aspect = aspect(
@@ -290,13 +315,13 @@
 
     return [
         DefaultInfo(files = depset([dep_variant_info.crate_info.output])),
-        rust_proto_info,
         rust_common.crate_group_info(
             dep_variant_infos = depset(
                 [dep_variant_info],
                 transitive = [rust_proto_info.transitive_dep_infos],
             ),
         ),
+        RustAnalyzerGroupInfo(deps = [proto_dep[RustAnalyzerInfo]]),
     ]
 
 rust_prost_library = rule(
diff --git a/proto/protobuf/3rdparty/crates/BUILD.autocfg-1.1.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.autocfg-1.1.0.bazel
index 7d7a92b..0995bf1 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.autocfg-1.1.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.autocfg-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "autocfg",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.base64-0.9.3.bazel b/proto/protobuf/3rdparty/crates/BUILD.base64-0.9.3.bazel
index 19f16cf..765f721 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.base64-0.9.3.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.base64-0.9.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "base64",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.bazel b/proto/protobuf/3rdparty/crates/BUILD.bazel
index 5b20172..12c3381 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/proto/protobuf/3rdparty/crates/BUILD.bitflags-1.3.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
index 62e9f3e..adb592f 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.byteorder-1.4.3.bazel b/proto/protobuf/3rdparty/crates/BUILD.byteorder-1.4.3.bazel
index a95e19c..a7a9dae 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.byteorder-1.4.3.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.byteorder-1.4.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "byteorder",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.bytes-0.4.12.bazel b/proto/protobuf/3rdparty/crates/BUILD.bytes-0.4.12.bazel
index 167e422..8574c29 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.bytes-0.4.12.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.bytes-0.4.12.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bytes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.cfg-if-0.1.10.bazel b/proto/protobuf/3rdparty/crates/BUILD.cfg-if-0.1.10.bazel
index 9d14d0c..cb51be3 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.cfg-if-0.1.10.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.cfg-if-0.1.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
index 175b1a2..c055d70 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.cloudabi-0.0.3.bazel b/proto/protobuf/3rdparty/crates/BUILD.cloudabi-0.0.3.bazel
index aa1c5fb..fbefdd9 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.cloudabi-0.0.3.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.cloudabi-0.0.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cloudabi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.crossbeam-deque-0.7.4.bazel b/proto/protobuf/3rdparty/crates/BUILD.crossbeam-deque-0.7.4.bazel
index a533bf1..0b91213 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.crossbeam-deque-0.7.4.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.crossbeam-deque-0.7.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "crossbeam_deque",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.crossbeam-epoch-0.8.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.crossbeam-epoch-0.8.2.bazel
index 3f207e8..71a2d56 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.crossbeam-epoch-0.8.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.crossbeam-epoch-0.8.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "crossbeam_epoch",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -92,8 +96,11 @@
 )
 
 cargo_build_script(
-    name = "crossbeam-epoch_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "crossbeam-epoch_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "lazy_static",
@@ -103,6 +110,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -132,6 +140,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":crossbeam-epoch_build_script",
+    actual = ":crossbeam-epoch_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.crossbeam-queue-0.2.3.bazel b/proto/protobuf/3rdparty/crates/BUILD.crossbeam-queue-0.2.3.bazel
index 82ed775..e9319ed 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.crossbeam-queue-0.2.3.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.crossbeam-queue-0.2.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "crossbeam_queue",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.crossbeam-utils-0.7.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.crossbeam-utils-0.7.2.bazel
index 8af12fe..c1288af 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.crossbeam-utils-0.7.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.crossbeam-utils-0.7.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "crossbeam_utils",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -88,8 +92,11 @@
 )
 
 cargo_build_script(
-    name = "crossbeam-utils_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "crossbeam-utils_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "lazy_static",
@@ -99,6 +106,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -128,6 +136,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":crossbeam-utils_build_script",
+    actual = ":crossbeam-utils_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.fnv-1.0.7.bazel b/proto/protobuf/3rdparty/crates/BUILD.fnv-1.0.7.bazel
index 5eb686e..94e84e7 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.fnv-1.0.7.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.fnv-1.0.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fnv",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.fuchsia-zircon-0.3.3.bazel b/proto/protobuf/3rdparty/crates/BUILD.fuchsia-zircon-0.3.3.bazel
index 0715dd6..ac7f57f 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.fuchsia-zircon-0.3.3.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.fuchsia-zircon-0.3.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fuchsia_zircon",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.fuchsia-zircon-sys-0.3.3.bazel b/proto/protobuf/3rdparty/crates/BUILD.fuchsia-zircon-sys-0.3.3.bazel
index cdbe573..5e54ed7 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.fuchsia-zircon-sys-0.3.3.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.fuchsia-zircon-sys-0.3.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fuchsia_zircon_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.futures-0.1.31.bazel b/proto/protobuf/3rdparty/crates/BUILD.futures-0.1.31.bazel
index 803ab64..a5b4b1d 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.futures-0.1.31.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.futures-0.1.31.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.futures-cpupool-0.1.8.bazel b/proto/protobuf/3rdparty/crates/BUILD.futures-cpupool-0.1.8.bazel
index f42c4ec..8b00e52 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.futures-cpupool-0.1.8.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.futures-cpupool-0.1.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "futures_cpupool",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.grpc-0.6.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.grpc-0.6.2.bazel
index 6ca6665..53f8bd7 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.grpc-0.6.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.grpc-0.6.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "grpc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.grpc-compiler-0.6.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.grpc-compiler-0.6.2.bazel
index b97b826..d4dec25 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.grpc-compiler-0.6.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.grpc-compiler-0.6.2.bazel
@@ -16,9 +16,13 @@
 
 rust_library(
     name = "grpc_compiler",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,9 +90,13 @@
 
 rust_binary(
     name = "protoc-gen-rust-grpc__bin",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.hermit-abi-0.2.6.bazel b/proto/protobuf/3rdparty/crates/BUILD.hermit-abi-0.2.6.bazel
index c55a4ec..9d052fe 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.hermit-abi-0.2.6.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.hermit-abi-0.2.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.httpbis-0.7.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.httpbis-0.7.0.bazel
index b97c495..41c429d 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.httpbis-0.7.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.httpbis-0.7.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "httpbis",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -191,12 +195,16 @@
 )
 
 cargo_build_script(
-    name = "httpbis_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "httpbis_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -223,6 +231,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":httpbis_build_script",
+    actual = ":httpbis_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.iovec-0.1.4.bazel b/proto/protobuf/3rdparty/crates/BUILD.iovec-0.1.4.bazel
index b1f35d3..6579861 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.iovec-0.1.4.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.iovec-0.1.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "iovec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.kernel32-sys-0.2.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.kernel32-sys-0.2.2.bazel
index 8646010..d22e0ef 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.kernel32-sys-0.2.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.kernel32-sys-0.2.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "kernel32",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -82,12 +86,16 @@
 )
 
 cargo_build_script(
-    name = "kernel32-sys_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "kernel32-sys_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -117,6 +125,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":kernel32-sys_build_script",
+    actual = ":kernel32-sys_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
index e946bc7..3cf6cf4 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "lazy_static",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.libc-0.2.139.bazel b/proto/protobuf/3rdparty/crates/BUILD.libc-0.2.139.bazel
index b30ee9e..3ed32d4 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.libc-0.2.139.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.libc-0.2.139.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.lock_api-0.3.4.bazel b/proto/protobuf/3rdparty/crates/BUILD.lock_api-0.3.4.bazel
index 2d7dc6b..b7c5937 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.lock_api-0.3.4.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.lock_api-0.3.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "lock_api",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.log-0.3.9.bazel b/proto/protobuf/3rdparty/crates/BUILD.log-0.3.9.bazel
index 15af40b..63559f8 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.log-0.3.9.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.log-0.3.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.log-0.4.17.bazel b/proto/protobuf/3rdparty/crates/BUILD.log-0.4.17.bazel
index 0d2723e..402cc55 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.log-0.4.17.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.log-0.4.17.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -157,8 +161,11 @@
 )
 
 cargo_build_script(
-    name = "log_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "log_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = select({
         "@rules_rust//rust/platform:aarch64-apple-darwin": [
             "std",  # aarch64-apple-darwin
@@ -238,6 +245,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -264,6 +272,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":log_build_script",
+    actual = ":log_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.maybe-uninit-2.0.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.maybe-uninit-2.0.0.bazel
index 6843d8f..da59355 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.maybe-uninit-2.0.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.maybe-uninit-2.0.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "maybe_uninit",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "maybe-uninit_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "maybe-uninit_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":maybe-uninit_build_script",
+    actual = ":maybe-uninit_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.memoffset-0.5.6.bazel b/proto/protobuf/3rdparty/crates/BUILD.memoffset-0.5.6.bazel
index 52f8926..1adc104 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.memoffset-0.5.6.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.memoffset-0.5.6.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "memoffset",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -84,8 +88,11 @@
 )
 
 cargo_build_script(
-    name = "memoffset_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "memoffset_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
     ],
@@ -93,6 +100,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":memoffset_build_script",
+    actual = ":memoffset_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.mio-0.6.23.bazel b/proto/protobuf/3rdparty/crates/BUILD.mio-0.6.23.bazel
index 45d1607..392749d 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.mio-0.6.23.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.mio-0.6.23.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.mio-uds-0.6.8.bazel b/proto/protobuf/3rdparty/crates/BUILD.mio-uds-0.6.8.bazel
index b5e192c..e130440 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.mio-uds-0.6.8.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.mio-uds-0.6.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mio_uds",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.miow-0.2.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.miow-0.2.2.bazel
index 9550115..7bfa7e5 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.miow-0.2.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.miow-0.2.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "miow",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.net2-0.2.38.bazel b/proto/protobuf/3rdparty/crates/BUILD.net2-0.2.38.bazel
index c435f12..9dc9ff5 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.net2-0.2.38.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.net2-0.2.38.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "net2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.num_cpus-1.15.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.num_cpus-1.15.0.bazel
index 3104cc6..08067b4 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.num_cpus-1.15.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.num_cpus-1.15.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_cpus",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.parking_lot-0.9.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.parking_lot-0.9.0.bazel
index 9cd3d7d..d45900f 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.parking_lot-0.9.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.parking_lot-0.9.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "parking_lot",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "parking_lot_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "parking_lot_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
     ],
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -124,6 +132,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":parking_lot_build_script",
+    actual = ":parking_lot_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.parking_lot_core-0.6.3.bazel b/proto/protobuf/3rdparty/crates/BUILD.parking_lot_core-0.6.3.bazel
index e7d77a8..82d940d 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.parking_lot_core-0.6.3.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.parking_lot_core-0.6.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "parking_lot_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -166,12 +170,16 @@
 )
 
 cargo_build_script(
-    name = "parking_lot_core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "parking_lot_core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -201,6 +209,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":parking_lot_core_build_script",
+    actual = ":parking_lot_core_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.protobuf-2.8.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.protobuf-2.8.2.bazel
index 2b2ec9b..e0dc5d2 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.protobuf-2.8.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.protobuf-2.8.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "protobuf",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "protobuf_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "protobuf_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "bytes",
         "with-bytes",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":protobuf_build_script",
+    actual = ":protobuf_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.protobuf-codegen-2.8.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.protobuf-codegen-2.8.2.bazel
index 02b132e..a30190a 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.protobuf-codegen-2.8.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.protobuf-codegen-2.8.2.bazel
@@ -16,9 +16,13 @@
 
 rust_library(
     name = "protobuf_codegen",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,9 +89,13 @@
 
 rust_binary(
     name = "protoc-gen-rust__bin",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.redox_syscall-0.1.57.bazel b/proto/protobuf/3rdparty/crates/BUILD.redox_syscall-0.1.57.bazel
index 006d2cc..729ad88 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.redox_syscall-0.1.57.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.redox_syscall-0.1.57.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syscall",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.rustc_version-0.2.3.bazel b/proto/protobuf/3rdparty/crates/BUILD.rustc_version-0.2.3.bazel
index ef23d4c..52d6c56 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.rustc_version-0.2.3.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.rustc_version-0.2.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rustc_version",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.safemem-0.3.3.bazel b/proto/protobuf/3rdparty/crates/BUILD.safemem-0.3.3.bazel
index 5dd055e..87f36f4 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.safemem-0.3.3.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.safemem-0.3.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "safemem",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.scoped-tls-0.1.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.scoped-tls-0.1.2.bazel
index ab3c7d0..01fc0cf 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.scoped-tls-0.1.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.scoped-tls-0.1.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "scoped_tls",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.scopeguard-1.1.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.scopeguard-1.1.0.bazel
index b8887d3..1520dcc 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.scopeguard-1.1.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.scopeguard-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "scopeguard",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.semver-0.9.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.semver-0.9.0.bazel
index 7dbd37c..98d247b 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.semver-0.9.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.semver-0.9.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "semver",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.semver-parser-0.7.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.semver-parser-0.7.0.bazel
index 5940710..c84b240 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.semver-parser-0.7.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.semver-parser-0.7.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "semver_parser",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.slab-0.3.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.slab-0.3.0.bazel
index 0eecbb9..75e5d68 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.slab-0.3.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.slab-0.3.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "slab",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.slab-0.4.7.bazel b/proto/protobuf/3rdparty/crates/BUILD.slab-0.4.7.bazel
index eb596a2..55eecb9 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.slab-0.4.7.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.slab-0.4.7.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "slab",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "slab_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "slab_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -124,6 +132,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":slab_build_script",
+    actual = ":slab_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.smallvec-0.6.14.bazel b/proto/protobuf/3rdparty/crates/BUILD.smallvec-0.6.14.bazel
index 4769aaf..e63b5f7 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.smallvec-0.6.14.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.smallvec-0.6.14.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "smallvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tls-api-0.1.22.bazel b/proto/protobuf/3rdparty/crates/BUILD.tls-api-0.1.22.bazel
index f7c2d39..20f7636 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tls-api-0.1.22.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tls-api-0.1.22.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tls_api",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tls-api-stub-0.1.22.bazel b/proto/protobuf/3rdparty/crates/BUILD.tls-api-stub-0.1.22.bazel
index 0027082..b50e29c 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tls-api-stub-0.1.22.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tls-api-stub-0.1.22.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tls_api_stub",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-0.1.22.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-0.1.22.bazel
index 861e818..55b8360 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-0.1.22.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-0.1.22.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-codec-0.1.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-codec-0.1.2.bazel
index 09c6385..e07447b 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-codec-0.1.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-codec-0.1.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_codec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-core-0.1.18.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-core-0.1.18.bazel
index 591e5b7..8623012 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-core-0.1.18.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-core-0.1.18.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-current-thread-0.1.7.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-current-thread-0.1.7.bazel
index 1eb3671..2809ae8 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-current-thread-0.1.7.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-current-thread-0.1.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_current_thread",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-executor-0.1.10.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-executor-0.1.10.bazel
index 4933754..40f985d 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-executor-0.1.10.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-executor-0.1.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_executor",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-fs-0.1.7.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-fs-0.1.7.bazel
index ecb3d18..15bd703 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-fs-0.1.7.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-fs-0.1.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_fs",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-io-0.1.13.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-io-0.1.13.bazel
index 10768b4..381e505 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-io-0.1.13.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-io-0.1.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_io",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-reactor-0.1.12.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-reactor-0.1.12.bazel
index a93c425..0488316 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-reactor-0.1.12.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-reactor-0.1.12.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_reactor",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-sync-0.1.8.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-sync-0.1.8.bazel
index 878e2ca..a1f58a5 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-sync-0.1.8.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-sync-0.1.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_sync",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-tcp-0.1.4.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-tcp-0.1.4.bazel
index 9e5f253..d1fda75 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-tcp-0.1.4.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-tcp-0.1.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_tcp",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-threadpool-0.1.18.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-threadpool-0.1.18.bazel
index f43d795..ba49c12 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-threadpool-0.1.18.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-threadpool-0.1.18.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_threadpool",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-timer-0.1.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-timer-0.1.2.bazel
index d520724..4f541d5 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-timer-0.1.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-timer-0.1.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_timer",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-timer-0.2.13.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-timer-0.2.13.bazel
index 4d8cb1c..4071556 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-timer-0.2.13.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-timer-0.2.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_timer",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-tls-api-0.1.22.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-tls-api-0.1.22.bazel
index 16fec71..f09d02f 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-tls-api-0.1.22.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-tls-api-0.1.22.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_tls_api",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-udp-0.1.6.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-udp-0.1.6.bazel
index 53fbfd6..7b92933 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-udp-0.1.6.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-udp-0.1.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_udp",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-uds-0.1.7.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-uds-0.1.7.bazel
index a0918a5..87679e7 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-uds-0.1.7.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-uds-0.1.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_uds",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.tokio-uds-0.2.7.bazel b/proto/protobuf/3rdparty/crates/BUILD.tokio-uds-0.2.7.bazel
index 79f2311..baf97f1 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.tokio-uds-0.2.7.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.tokio-uds-0.2.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tokio_uds",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.unix_socket-0.5.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.unix_socket-0.5.0.bazel
index 753b597..40bc38a 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.unix_socket-0.5.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.unix_socket-0.5.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unix_socket",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.void-1.0.2.bazel b/proto/protobuf/3rdparty/crates/BUILD.void-1.0.2.bazel
index 2c454cb..846af02 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.void-1.0.2.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.void-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "void",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.winapi-0.2.8.bazel b/proto/protobuf/3rdparty/crates/BUILD.winapi-0.2.8.bazel
index b89a554..021c736 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.winapi-0.2.8.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.winapi-0.2.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "winapi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.winapi-0.3.9.bazel b/proto/protobuf/3rdparty/crates/BUILD.winapi-0.3.9.bazel
index 2a6cad3..223fc0e 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.winapi-0.3.9.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.winapi-0.3.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -94,8 +98,11 @@
 )
 
 cargo_build_script(
-    name = "winapi_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "errhandlingapi",
         "handleapi",
@@ -113,6 +120,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -139,6 +147,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi_build_script",
+    actual = ":winapi_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.winapi-build-0.1.1.bazel b/proto/protobuf/3rdparty/crates/BUILD.winapi-build-0.1.1.bazel
index 082549f..a76b23b 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.winapi-build-0.1.1.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.winapi-build-0.1.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "build",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/proto/protobuf/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
index 638b4e2..ced62a7 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_i686_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-i686-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-i686-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-i686-pc-windows-gnu_build_script",
+    actual = ":winapi-i686-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/proto/protobuf/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
index 3cd1f61..3ef8d2b 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_x86_64_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-x86_64-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-x86_64-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-x86_64-pc-windows-gnu_build_script",
+    actual = ":winapi-x86_64-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/BUILD.ws2_32-sys-0.2.1.bazel b/proto/protobuf/3rdparty/crates/BUILD.ws2_32-sys-0.2.1.bazel
index 2246f96..3cfc6fc 100644
--- a/proto/protobuf/3rdparty/crates/BUILD.ws2_32-sys-0.2.1.bazel
+++ b/proto/protobuf/3rdparty/crates/BUILD.ws2_32-sys-0.2.1.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "ws2_32",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -82,12 +86,16 @@
 )
 
 cargo_build_script(
-    name = "ws2_32-sys_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "ws2_32-sys_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -117,6 +125,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":ws2_32-sys_build_script",
+    actual = ":ws2_32-sys_bs",
     tags = ["manual"],
 )
diff --git a/proto/protobuf/3rdparty/crates/defs.bzl b/proto/protobuf/3rdparty/crates/defs.bzl
index 646f1fa..4c11ecd 100644
--- a/proto/protobuf/3rdparty/crates/defs.bzl
+++ b/proto/protobuf/3rdparty/crates/defs.bzl
@@ -295,13 +295,13 @@
 _NORMAL_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "grpc": "@rules_rust_proto__grpc-0.6.2//:grpc",
-            "grpc-compiler": "@rules_rust_proto__grpc-compiler-0.6.2//:grpc_compiler",
-            "log": "@rules_rust_proto__log-0.4.17//:log",
-            "protobuf": "@rules_rust_proto__protobuf-2.8.2//:protobuf",
-            "protobuf-codegen": "@rules_rust_proto__protobuf-codegen-2.8.2//:protobuf_codegen",
-            "tls-api": "@rules_rust_proto__tls-api-0.1.22//:tls_api",
-            "tls-api-stub": "@rules_rust_proto__tls-api-stub-0.1.22//:tls_api_stub",
+            "grpc": Label("@rules_rust_proto__grpc-0.6.2//:grpc"),
+            "grpc-compiler": Label("@rules_rust_proto__grpc-compiler-0.6.2//:grpc_compiler"),
+            "log": Label("@rules_rust_proto__log-0.4.17//:log"),
+            "protobuf": Label("@rules_rust_proto__protobuf-2.8.2//:protobuf"),
+            "protobuf-codegen": Label("@rules_rust_proto__protobuf-codegen-2.8.2//:protobuf_codegen"),
+            "tls-api": Label("@rules_rust_proto__tls-api-0.1.22//:tls_api"),
+            "tls-api-stub": Label("@rules_rust_proto__tls-api-stub-0.1.22//:tls_api_stub"),
         },
     },
 }
diff --git a/rust/private/extensions.bzl b/rust/private/extensions.bzl
index 490008c..c20905c 100644
--- a/rust/private/extensions.bzl
+++ b/rust/private/extensions.bzl
@@ -41,7 +41,9 @@
         root_module_direct_dev_deps = [],
     )
 
-internal_deps = module_extension(
+# This is named a single character to reduce the size of path names when running build scripts, to reduce the chance
+# of hitting the 260 character windows path name limit.
+i = module_extension(
     doc = "Dependencies for rules_rust",
     implementation = _internal_deps_impl,
 )
diff --git a/rust/private/providers.bzl b/rust/private/providers.bzl
index 56f91e0..c2770dc 100644
--- a/rust/private/providers.bzl
+++ b/rust/private/providers.bzl
@@ -35,6 +35,7 @@
         "rustc_output": "File: The output from rustc from producing the output file. It is optional.",
         "rustc_rmeta_output": "File: The rmeta file produced for this crate. It is optional.",
         "srcs": "depset[File]: All source Files that are part of the crate.",
+        "std_dylib": "File: libstd.so file",
         "type": (
             "str: The type of this crate " +
             "(see [rustc --crate-type](https://doc.rust-lang.org/rustc/command-line-arguments.html#--crate-type-a-list-of-types-of-crates-for-the-compiler-to-emit))."
@@ -75,8 +76,8 @@
         "compile_data": "Depset[File]: Compile data provided by the build script that was not copied into `out_dir`.",
         "dep_env": "Optinal[File]: extra build script environment varibles to be set to direct dependencies.",
         "flags": "Optional[File]: file containing additional flags to pass to rustc",
-        "link_flags": "Optional[File]: file containing flags to pass to the linker",
-        "link_search_paths": "Optional[File]: file containing search paths to pass to the linker",
+        "link_search_paths": "Optional[File]: file containing search paths to pass to rustc and linker",
+        "linker_flags": "Optional[File]: file containing flags to pass to the linker invoked by rustc or cc_common.link",
         "out_dir": "Optional[File]: directory containing the result of a build script",
         "rustc_env": "Optional[File]: file containing additional environment variables to set for rustc.",
     },
@@ -122,6 +123,7 @@
         "panic_files": "Depset[File]: `.a` files associated with `panic_unwind` and `panic_abort`.",
         "self_contained_files": "List[File]: All `.o` files from the `self-contained` directory.",
         "srcs": "List[Target]: All targets from the original `srcs` attribute.",
+        "std_dylib": "File: libstd.so file",
         "std_files": "Depset[File]: `.a` files associated with the `std` module.",
         "std_rlibs": "List[File]: All `.rlib` files",
         "test_files": "Depset[File]: `.a` files associated with the `test` module.",
@@ -151,3 +153,23 @@
         "crate": "CrateInfo: The underlying CrateInfo of the dependency",
     },
 )
+
+RustAnalyzerInfo = provider(
+    doc = "RustAnalyzerInfo holds rust crate metadata for targets",
+    fields = {
+        "build_info": "BuildInfo: build info for this crate if present",
+        "cfgs": "List[String]: features or other compilation `--cfg` settings",
+        "crate": "CrateInfo: Crate information.",
+        "crate_specs": "Depset[File]: transitive closure of OutputGroupInfo files",
+        "deps": "List[RustAnalyzerInfo]: direct dependencies",
+        "env": "Dict[String: String]: Environment variables, used for the `env!` macro",
+        "proc_macro_dylib_path": "File: compiled shared library output of proc-macro rule",
+    },
+)
+
+RustAnalyzerGroupInfo = provider(
+    doc = "RustAnalyzerGroupInfo holds multiple RustAnalyzerInfos",
+    fields = {
+        "deps": "List[RustAnalyzerInfo]: direct dependencies",
+    },
+)
diff --git a/rust/private/rust_analyzer.bzl b/rust/private/rust_analyzer.bzl
index 74b4664..2682d96 100644
--- a/rust/private/rust_analyzer.bzl
+++ b/rust/private/rust_analyzer.bzl
@@ -20,9 +20,9 @@
 to Cargo.toml files.
 """
 
-load("//proto/prost:providers.bzl", "ProstProtoInfo")
 load("//rust/platform:triple_mappings.bzl", "system_to_dylib_ext", "triple_to_system")
 load("//rust/private:common.bzl", "rust_common")
+load("//rust/private:providers.bzl", "RustAnalyzerGroupInfo", "RustAnalyzerInfo")
 load("//rust/private:rustc.bzl", "BuildInfo")
 load(
     "//rust/private:utils.bzl",
@@ -32,25 +32,43 @@
     "find_toolchain",
 )
 
-RustAnalyzerInfo = provider(
-    doc = "RustAnalyzerInfo holds rust crate metadata for targets",
-    fields = {
-        "build_info": "BuildInfo: build info for this crate if present",
-        "cfgs": "List[String]: features or other compilation --cfg settings",
-        "crate": "rust_common.crate_info",
-        "crate_specs": "Depset[File]: transitive closure of OutputGroupInfo files",
-        "deps": "List[RustAnalyzerInfo]: direct dependencies",
-        "env": "Dict{String: String}: Environment variables, used for the `env!` macro",
-        "proc_macro_dylib_path": "File: compiled shared library output of proc-macro rule",
-    },
-)
+def write_rust_analyzer_spec_file(ctx, attrs, owner, base_info):
+    """Write a rust-analyzer spec info file.
 
-RustAnalyzerGroupInfo = provider(
-    doc = "RustAnalyzerGroupInfo holds multiple RustAnalyzerInfos",
-    fields = {
-        "deps": "List[RustAnalyzerInfo]: direct dependencies",
-    },
-)
+    Args:
+        ctx (ctx): The current rule's context object.
+        attrs (dict): A mapping of attributes.
+        owner (Label): The label of the owner of the spec info.
+        base_info (RustAnalyzerInfo): The data the resulting RustAnalyzerInfo is based on.
+
+    Returns:
+        RustAnalyzerInfo: Info with the embedded spec file.
+    """
+    crate_spec = ctx.actions.declare_file("{}.rust_analyzer_crate_spec.json".format(owner.name))
+
+    rust_analyzer_info = RustAnalyzerInfo(
+        crate = base_info.crate,
+        cfgs = base_info.cfgs,
+        env = base_info.env,
+        deps = base_info.deps,
+        crate_specs = depset(direct = [crate_spec], transitive = [base_info.crate_specs]),
+        proc_macro_dylib_path = base_info.proc_macro_dylib_path,
+        build_info = base_info.build_info,
+    )
+
+    ctx.actions.write(
+        output = crate_spec,
+        content = json.encode_indent(
+            _create_single_crate(
+                ctx,
+                attrs,
+                rust_analyzer_info,
+            ),
+            indent = " " * 4,
+        ),
+    )
+
+    return rust_analyzer_info
 
 def _rust_analyzer_aspect_impl(target, ctx):
     if (rust_common.crate_info not in target and
@@ -58,6 +76,9 @@
         rust_common.crate_group_info not in target):
         return []
 
+    if RustAnalyzerInfo in target or RustAnalyzerGroupInfo in target:
+        return []
+
     toolchain = find_toolchain(ctx)
 
     # Always add `test` & `debug_assertions`. See rust-analyzer source code:
@@ -102,28 +123,7 @@
         if RustAnalyzerGroupInfo in ctx.rule.attr.actual:
             dep_infos.extend(ctx.rule.attr.actual[RustAnalyzerGroupInfo])
 
-    if ProstProtoInfo in target:
-        for info in target[ProstProtoInfo].transitive_dep_infos.to_list():
-            crate_info = info.crate_info
-            crate_spec = ctx.actions.declare_file(crate_info.owner.name + ".rust_analyzer_crate_spec")
-            rust_analyzer_info = RustAnalyzerInfo(
-                crate = crate_info,
-                cfgs = cfgs,
-                env = crate_info.rustc_env,
-                deps = [],
-                crate_specs = depset(direct = [crate_spec]),
-                proc_macro_dylib_path = None,
-                build_info = info.build_info,
-            )
-            ctx.actions.write(
-                output = crate_spec,
-                content = json.encode(_create_single_crate(ctx, rust_analyzer_info)),
-            )
-            dep_infos.append(rust_analyzer_info)
-
-    if ProstProtoInfo in target:
-        crate_info = target[ProstProtoInfo].dep_variant_info.crate_info
-    elif rust_common.crate_group_info in target:
+    if rust_common.crate_group_info in target:
         return [RustAnalyzerGroupInfo(deps = dep_infos)]
     elif rust_common.crate_info in target:
         crate_info = target[rust_common.crate_info]
@@ -132,22 +132,15 @@
     else:
         fail("Unexpected target type: {}".format(target))
 
-    crate_spec = ctx.actions.declare_file(ctx.label.name + ".rust_analyzer_crate_spec")
-
-    rust_analyzer_info = RustAnalyzerInfo(
+    rust_analyzer_info = write_rust_analyzer_spec_file(ctx, ctx.rule.attr, ctx.label, RustAnalyzerInfo(
         crate = crate_info,
         cfgs = cfgs,
         env = crate_info.rustc_env,
         deps = dep_infos,
-        crate_specs = depset(direct = [crate_spec], transitive = [dep.crate_specs for dep in dep_infos]),
+        crate_specs = depset(transitive = [dep.crate_specs for dep in dep_infos]),
         proc_macro_dylib_path = find_proc_macro_dylib_path(toolchain, target),
         build_info = build_info,
-    )
-
-    ctx.actions.write(
-        output = crate_spec,
-        content = json.encode(_create_single_crate(ctx, rust_analyzer_info)),
-    )
+    ))
 
     return [
         rust_analyzer_info,
@@ -201,12 +194,13 @@
     """
     return "ID-" + crate_info.root.path
 
-def _create_single_crate(ctx, info):
+def _create_single_crate(ctx, attrs, info):
     """Creates a crate in the rust-project.json format.
 
     Args:
-        ctx (ctx): The rule context
-        info (RustAnalyzerInfo): RustAnalyzerInfo for the current crate
+        ctx (ctx): The rule context.
+        attrs (dict): A mapping of attributes.
+        info (RustAnalyzerInfo): RustAnalyzerInfo for the current crate.
 
     Returns:
         (dict) The crate rust-project.json representation
@@ -240,7 +234,7 @@
 
     # TODO: The only imagined use case is an env var holding a filename in the workspace passed to a
     # macro like include_bytes!. Other use cases might exist that require more complex logic.
-    expand_targets = concat([getattr(ctx.rule.attr, attr, []) for attr in ["data", "compile_data"]])
+    expand_targets = concat([getattr(attrs, attr, []) for attr in ["data", "compile_data"]])
 
     crate["env"].update({k: dedup_expand_location(ctx, v, expand_targets) for k, v in info.env.items()})
 
diff --git a/rust/private/rustc.bzl b/rust/private/rustc.bzl
index 5c11f76..e101223 100644
--- a/rust/private/rustc.bzl
+++ b/rust/private/rustc.bzl
@@ -38,6 +38,7 @@
     "make_static_lib_symlink",
     "relativize",
 )
+load(":utils.bzl", "is_std_dylib")
 
 BuildInfo = _BuildInfo
 
@@ -310,18 +311,19 @@
                 transitive_link_search_paths.append(dep_info.link_search_path_files)
 
             transitive_build_infos.append(dep_info.transitive_build_infos)
+        elif cc_info or dep_build_info:
+            if cc_info:
+                # This dependency is a cc_library
+                transitive_noncrates.append(cc_info.linking_context.linker_inputs)
 
-        elif cc_info:
-            # This dependency is a cc_library
-            transitive_noncrates.append(cc_info.linking_context.linker_inputs)
-        elif dep_build_info:
-            if build_info:
-                fail("Several deps are providing build information, " +
-                     "only one is allowed in the dependencies")
-            build_info = dep_build_info
-            transitive_build_infos.append(depset([build_info]))
-            if build_info.link_search_paths:
-                transitive_link_search_paths.append(depset([build_info.link_search_paths]))
+            if dep_build_info:
+                if build_info:
+                    fail("Several deps are providing build information, " +
+                         "only one is allowed in the dependencies")
+                build_info = dep_build_info
+                transitive_build_infos.append(depset([build_info]))
+                if build_info.link_search_paths:
+                    transitive_link_search_paths.append(depset([build_info.link_search_paths]))
         else:
             fail("rust targets can only depend on rust_library, rust_*_library or cc_library " +
                  "targets.")
@@ -390,7 +392,7 @@
     """
     return ctx.fragments.cpp.linkopts
 
-def get_linker_and_args(ctx, attr, crate_type, cc_toolchain, feature_configuration, rpaths, rustdoc = False):
+def get_linker_and_args(ctx, attr, crate_type, cc_toolchain, feature_configuration, rpaths, add_flags_for_binary = False):
     """Gathers cc_common linker information
 
     Args:
@@ -400,7 +402,7 @@
         cc_toolchain (CcToolchain): cc_toolchain for which we are creating build variables.
         feature_configuration (FeatureConfiguration): Feature configuration to be queried.
         rpaths (depset): Depset of directories where loader will look for libraries at runtime.
-        rustdoc (bool, optional): Whether to add "bin" link flags to the command regardless of `crate_type`.
+        add_flags_for_binary (bool, optional): Whether to add "bin" link flags to the command regardless of `crate_type`.
 
 
     Returns:
@@ -411,7 +413,7 @@
     """
     user_link_flags = get_cc_user_link_flags(ctx)
 
-    if crate_type in ("bin") or rustdoc:
+    if crate_type in ("bin") or add_flags_for_binary:
         is_linking_dynamic_library = False
         action_name = CPP_LINK_EXECUTABLE_ACTION_NAME
     elif crate_type in ("dylib"):
@@ -429,7 +431,7 @@
     else:
         fail("Unknown `crate_type`: {}".format(crate_type))
 
-    # Add linkopt's from dependencies. This includes linkopts from transitive
+    # Add linkopts from dependencies. This includes linkopts from transitive
     # dependencies since they get merged up.
     for dep in getattr(attr, "deps", []):
         if CcInfo in dep and dep[CcInfo].linking_context:
@@ -463,13 +465,15 @@
 def _process_build_scripts(
         build_info,
         dep_info,
-        compile_inputs):
+        compile_inputs,
+        include_link_flags = True):
     """Gathers the outputs from a target's `cargo_build_script` action.
 
     Args:
         build_info (BuildInfo): The target Build's dependency info.
         dep_info (DepInfo): The Depinfo provider form the target Crate's set of inputs.
         compile_inputs (depset): A set of all files that will participate in the build.
+        include_link_flags (bool, optional): Whether to include flags like `-l` that instruct the linker to search for a library.
 
     Returns:
         tuple: A tuple: A tuple of the following items:
@@ -478,7 +482,7 @@
             - (File): An optional path to a generated environment file from a `cargo_build_script` target
             - (depset[File]): All direct and transitive build flags from the current build info.
     """
-    extra_inputs, out_dir, build_env_file, build_flags_files = _create_extra_input_args(build_info, dep_info)
+    extra_inputs, out_dir, build_env_file, build_flags_files = _create_extra_input_args(build_info, dep_info, include_link_flags = include_link_flags)
     compile_inputs = depset(transitive = [extra_inputs, compile_inputs])
     return compile_inputs, out_dir, build_env_file, build_flags_files
 
@@ -639,7 +643,8 @@
         build_info,
         stamp = False,
         force_depend_on_objects = False,
-        experimental_use_cc_common_link = False):
+        experimental_use_cc_common_link = False,
+        include_link_flags = True):
     """Gather's the inputs and required input information for a rustc action
 
     Args:
@@ -658,7 +663,8 @@
         force_depend_on_objects (bool, optional): Forces dependencies of this rule to be objects rather than
             metadata, even for libraries. This is used in rustdoc tests.
         experimental_use_cc_common_link (bool, optional): Whether rules_rust uses cc_common.link to link
-	    rust binaries.
+            rust binaries.
+        include_link_flags (bool, optional): Whether to include flags like `-l` that instruct the linker to search for a library.
 
     Returns:
         tuple: A tuple: A tuple of the following items:
@@ -772,11 +778,10 @@
     # For backwards compatibility, we also check the value of the `rustc_env_files` attribute when
     # `crate_info.rustc_env_files` is not populated.
     build_env_files = crate_info.rustc_env_files if crate_info.rustc_env_files else getattr(files, "rustc_env_files", [])
-    compile_inputs, out_dir, build_env_file, build_flags_files = _process_build_scripts(build_info, dep_info, compile_inputs)
+    compile_inputs, out_dir, build_env_file, build_flags_files = _process_build_scripts(build_info, dep_info, compile_inputs, include_link_flags = include_link_flags)
     if build_env_file:
         build_env_files = [f for f in build_env_files] + [build_env_file]
     compile_inputs = depset(build_env_files, transitive = [compile_inputs])
-
     return compile_inputs, out_dir, build_env_files, build_flags_files, linkstamp_outs, ambiguous_libs
 
 def construct_arguments(
@@ -798,7 +803,8 @@
         build_flags_files,
         emit = ["dep-info", "link"],
         force_all_deps_direct = False,
-        rustdoc = False,
+        add_flags_for_binary = False,
+        include_link_flags = True,
         stamp = False,
         remap_path_prefix = "",
         use_json_output = False,
@@ -827,7 +833,8 @@
         emit (list): Values for the --emit flag to rustc.
         force_all_deps_direct (bool, optional): Whether to pass the transitive rlibs with --extern
             to the commandline as opposed to -L.
-        rustdoc (bool, optional): Whether to add "bin" link flags to the command regardless of `emit` and `crate_type`.
+        add_flags_for_binary (bool, optional): Whether to add "bin" link flags to the command regardless of `emit` and `crate_type`.
+        include_link_flags (bool, optional): Whether to include flags like `-l` that instruct the linker to search for a library.
         stamp (bool, optional): Whether or not workspace status stamping is enabled. For more details see
             https://docs.bazel.build/versions/main/user-manual.html#flag--stamp
         remap_path_prefix (str, optional): A value used to remap `${pwd}` to. If set to None, no prefix will be set.
@@ -889,23 +896,6 @@
     if out_dir != None:
         env["OUT_DIR"] = "${pwd}/" + out_dir
 
-    # Handle that the binary name and crate name may be different.
-    #
-    # If a target name contains a - then cargo (and rules_rust) will generate a
-    # crate name with _ instead.  Accordingly, rustc will generate a output
-    # file (executable, or rlib, or whatever) with _ not -.  But when cargo
-    # puts a binary in the target/${config} directory, and sets environment
-    # variables like `CARGO_BIN_EXE_${binary_name}` it will use the - version
-    # not the _ version.  So we rename the rustc-generated file (with _s) to
-    # have -s if needed.
-    emit_with_paths = emit
-    if crate_info.type == "bin" and crate_info.output != None:
-        generated_file = crate_info.name + toolchain.binary_ext
-        src = "/".join([crate_info.output.dirname, generated_file])
-        dst = crate_info.output.path
-        if src != dst:
-            emit_with_paths = [("link=" + dst if val == "link" else val) for val in emit]
-
     # Arguments for launching rustc from the process wrapper
     rustc_path = ctx.actions.args()
     rustc_path.add("--")
@@ -974,8 +964,15 @@
     if remap_path_prefix != None:
         rustc_flags.add("--remap-path-prefix=${{pwd}}={}".format(remap_path_prefix))
 
-    if emit:
-        rustc_flags.add_joined(emit_with_paths, format_joined = "--emit=%s", join_with = ",")
+    emit_without_paths = []
+    for kind in emit:
+        if kind == "link" and crate_info.type == "bin" and crate_info.output != None:
+            rustc_flags.add(crate_info.output, format = "--emit=link=%s")
+        else:
+            emit_without_paths.append(kind)
+
+    if emit_without_paths:
+        rustc_flags.add_joined(emit_without_paths, format_joined = "--emit=%s", join_with = ",")
     if error_format != "json":
         # Color is not compatible with json output.
         rustc_flags.add("--color=always")
@@ -1003,7 +1000,7 @@
     add_edition_flags(rustc_flags, crate_info)
 
     # Link!
-    if ("link" in emit and crate_info.type not in ["rlib", "lib"]) or rustdoc:
+    if ("link" in emit and crate_info.type not in ["rlib", "lib"]) or add_flags_for_binary:
         # Rust's built-in linker can handle linking wasm files. We don't want to attempt to use the cc
         # linker since it won't understand.
         compilation_mode = ctx.var["COMPILATION_MODE"]
@@ -1014,7 +1011,7 @@
             else:
                 rpaths = depset()
 
-            ld, link_args, link_env = get_linker_and_args(ctx, attr, crate_info.type, cc_toolchain, feature_configuration, rpaths, rustdoc)
+            ld, link_args, link_env = get_linker_and_args(ctx, attr, crate_info.type, cc_toolchain, feature_configuration, rpaths, add_flags_for_binary = add_flags_for_binary)
 
             env.update(link_env)
             rustc_flags.add(ld, format = "--codegen=linker=%s")
@@ -1023,7 +1020,7 @@
             # Additional context: https://github.com/rust-lang/rust/pull/36574
             rustc_flags.add_all(link_args, format_each = "--codegen=link-arg=%s")
 
-        _add_native_link_flags(rustc_flags, dep_info, linkstamp_outs, ambiguous_libs, crate_info.type, toolchain, cc_toolchain, feature_configuration, compilation_mode)
+        _add_native_link_flags(rustc_flags, dep_info, linkstamp_outs, ambiguous_libs, crate_info.type, toolchain, cc_toolchain, feature_configuration, compilation_mode, include_link_flags = include_link_flags)
 
     use_metadata = _depend_on_metadata(crate_info, force_depend_on_objects)
 
@@ -1039,6 +1036,9 @@
         # https://doc.rust-lang.org/rustc/instrument-coverage.html
         rustc_flags.add("--codegen=instrument-coverage")
 
+    if toolchain._experimental_link_std_dylib:
+        rustc_flags.add("--codegen=prefer-dynamic")
+
     # Make bin crate data deps available to tests.
     for data in getattr(attr, "data", []):
         if rust_common.crate_info in data:
@@ -1660,19 +1660,20 @@
     if crate.edition != "2015":
         args.add(crate.edition, format = "--edition=%s")
 
-def _create_extra_input_args(build_info, dep_info):
+def _create_extra_input_args(build_info, dep_info, include_link_flags = True):
     """Gather additional input arguments from transitive dependencies
 
     Args:
         build_info (BuildInfo): The BuildInfo provider from the target Crate's set of inputs.
         dep_info (DepInfo): The Depinfo provider form the target Crate's set of inputs.
+        include_link_flags (bool, optional): Whether to include flags like `-l` that instruct the linker to search for a library.
 
     Returns:
         tuple: A tuple of the following items:
             - (depset[File]): A list of all build info `OUT_DIR` File objects
             - (str): The `OUT_DIR` of the current build info
             - (File): An optional generated environment file from a `cargo_build_script` target
-            - (depset[File]): All direct and transitive build flag files from the current build info.
+            - (depset[File]): All direct and transitive build flag files from the current build info to be passed to rustc.
     """
     input_files = []
     input_depsets = []
@@ -1690,9 +1691,10 @@
         build_env_file = build_info.rustc_env
         if build_info.flags:
             build_flags_files.append(build_info.flags)
-        if build_info.link_flags:
-            build_flags_files.append(build_info.link_flags)
-            input_files.append(build_info.link_flags)
+        if build_info.linker_flags and include_link_flags:
+            build_flags_files.append(build_info.linker_flags)
+            input_files.append(build_info.linker_flags)
+
         input_depsets.append(build_info.compile_data)
 
     return (
@@ -1726,6 +1728,16 @@
         for lib in linker_input.libraries
         if _is_dylib(lib)
     ]
+
+    # Include std dylib if dylib linkage is enabled
+    if toolchain._experimental_link_std_dylib:
+        # TODO: Make toolchain.rust_std to only include libstd.so
+        # When dylib linkage is enabled, toolchain.rust_std should only need to
+        # include libstd.so. Hence, no filtering needed.
+        for file in toolchain.rust_std.to_list():
+            if is_std_dylib(file):
+                dylibs.append(file)
+
     if not dylibs:
         return depset([])
 
@@ -1903,8 +1915,8 @@
 
     return []
 
-def _make_link_flags_windows(linker_input_and_use_pic_and_ambiguous_libs, flavor_msvc):
-    linker_input, use_pic, ambiguous_libs = linker_input_and_use_pic_and_ambiguous_libs
+def _make_link_flags_windows(make_link_flags_args, flavor_msvc):
+    linker_input, use_pic, ambiguous_libs, include_link_flags = make_link_flags_args
     ret = []
     for lib in linker_input.libraries:
         if lib.alwayslink:
@@ -1919,18 +1931,18 @@
                     "-C",
                     "link-arg=-Wl,--no-whole-archive",
                 ])
-        else:
+        elif include_link_flags:
             ret.extend(_portable_link_flags(lib, use_pic, ambiguous_libs, get_lib_name_for_windows, for_windows = True, flavor_msvc = flavor_msvc))
     return ret
 
-def _make_link_flags_windows_msvc(linker_input_and_use_pic_and_ambiguous_libs):
-    return _make_link_flags_windows(linker_input_and_use_pic_and_ambiguous_libs, flavor_msvc = True)
+def _make_link_flags_windows_msvc(make_link_flags_args):
+    return _make_link_flags_windows(make_link_flags_args, flavor_msvc = True)
 
-def _make_link_flags_windows_gnu(linker_input_and_use_pic_and_ambiguous_libs):
-    return _make_link_flags_windows(linker_input_and_use_pic_and_ambiguous_libs, flavor_msvc = False)
+def _make_link_flags_windows_gnu(make_link_flags_args):
+    return _make_link_flags_windows(make_link_flags_args, flavor_msvc = False)
 
-def _make_link_flags_darwin(linker_input_and_use_pic_and_ambiguous_libs):
-    linker_input, use_pic, ambiguous_libs = linker_input_and_use_pic_and_ambiguous_libs
+def _make_link_flags_darwin(make_link_flags_args):
+    linker_input, use_pic, ambiguous_libs, include_link_flags = make_link_flags_args
     ret = []
     for lib in linker_input.libraries:
         if lib.alwayslink:
@@ -1938,12 +1950,12 @@
                 "-C",
                 ("link-arg=-Wl,-force_load,%s" % get_preferred_artifact(lib, use_pic).path),
             ])
-        else:
+        elif include_link_flags:
             ret.extend(_portable_link_flags(lib, use_pic, ambiguous_libs, get_lib_name_default, for_darwin = True))
     return ret
 
-def _make_link_flags_default(linker_input_and_use_pic_and_ambiguous_libs):
-    linker_input, use_pic, ambiguous_libs = linker_input_and_use_pic_and_ambiguous_libs
+def _make_link_flags_default(make_link_flags_args):
+    linker_input, use_pic, ambiguous_libs, include_link_flags = make_link_flags_args
     ret = []
     for lib in linker_input.libraries:
         if lib.alwayslink:
@@ -1955,17 +1967,17 @@
                 "-C",
                 "link-arg=-Wl,--no-whole-archive",
             ])
-        else:
+        elif include_link_flags:
             ret.extend(_portable_link_flags(lib, use_pic, ambiguous_libs, get_lib_name_default))
     return ret
 
-def _libraries_dirnames(linker_input_and_use_pic_and_ambiguous_libs):
-    link_input, use_pic, _ = linker_input_and_use_pic_and_ambiguous_libs
+def _libraries_dirnames(make_link_flags_args):
+    link_input, use_pic, _, _ = make_link_flags_args
 
     # De-duplicate names.
     return depset([get_preferred_artifact(lib, use_pic).dirname for lib in link_input.libraries]).to_list()
 
-def _add_native_link_flags(args, dep_info, linkstamp_outs, ambiguous_libs, crate_type, toolchain, cc_toolchain, feature_configuration, compilation_mode):
+def _add_native_link_flags(args, dep_info, linkstamp_outs, ambiguous_libs, crate_type, toolchain, cc_toolchain, feature_configuration, compilation_mode, include_link_flags = True):
     """Adds linker flags for all dependencies of the current target.
 
     Args:
@@ -1978,6 +1990,7 @@
         cc_toolchain (CcToolchainInfo): The current `cc_toolchain`
         feature_configuration (FeatureConfiguration): feature configuration to use with cc_toolchain
         compilation_mode (bool): The compilation mode for this build.
+        include_link_flags (bool, optional): Whether to include flags like `-l` that instruct the linker to search for a library.
     """
     if crate_type in ["lib", "rlib"]:
         return
@@ -1995,15 +2008,15 @@
         get_lib_name = get_lib_name_default
 
     # TODO(hlopko): Remove depset flattening by using lambdas once we are on >=Bazel 5.0
-    args_and_pic_and_ambiguous_libs = [(arg, use_pic, ambiguous_libs) for arg in dep_info.transitive_noncrates.to_list()]
-    args.add_all(args_and_pic_and_ambiguous_libs, map_each = _libraries_dirnames, uniquify = True, format_each = "-Lnative=%s")
+    make_link_flags_args = [(arg, use_pic, ambiguous_libs, include_link_flags) for arg in dep_info.transitive_noncrates.to_list()]
+    args.add_all(make_link_flags_args, map_each = _libraries_dirnames, uniquify = True, format_each = "-Lnative=%s")
     if ambiguous_libs:
         # If there are ambiguous libs, the disambiguation symlinks to them are
         # all created in the same directory. Add it to the library search path.
         ambiguous_libs_dirname = ambiguous_libs.values()[0].dirname
         args.add(ambiguous_libs_dirname, format = "-Lnative=%s")
 
-    args.add_all(args_and_pic_and_ambiguous_libs, map_each = make_link_flags)
+    args.add_all(make_link_flags_args, map_each = make_link_flags)
 
     args.add_all(linkstamp_outs, before_each = "-C", format_each = "link-args=%s")
 
@@ -2015,11 +2028,12 @@
             map_each = _get_dirname,
             format_each = "-Lnative=%s",
         )
-        args.add_all(
-            cc_toolchain.dynamic_runtime_lib(feature_configuration = feature_configuration),
-            map_each = get_lib_name,
-            format_each = "-ldylib=%s",
-        )
+        if include_link_flags:
+            args.add_all(
+                cc_toolchain.dynamic_runtime_lib(feature_configuration = feature_configuration),
+                map_each = get_lib_name,
+                format_each = "-ldylib=%s",
+            )
     else:
         # For all other crate types we want to link C++ runtime library statically
         # (for example libstdc++.a or libc++.a).
@@ -2028,11 +2042,12 @@
             map_each = _get_dirname,
             format_each = "-Lnative=%s",
         )
-        args.add_all(
-            cc_toolchain.static_runtime_lib(feature_configuration = feature_configuration),
-            map_each = get_lib_name,
-            format_each = "-lstatic=%s",
-        )
+        if include_link_flags:
+            args.add_all(
+                cc_toolchain.static_runtime_lib(feature_configuration = feature_configuration),
+                map_each = get_lib_name,
+                format_each = "-lstatic=%s",
+            )
 
 def _get_dirname(file):
     """A helper function for `_add_native_link_flags`.
diff --git a/rust/private/rustdoc.bzl b/rust/private/rustdoc.bzl
index a52ab78..58d044c 100644
--- a/rust/private/rustdoc.bzl
+++ b/rust/private/rustdoc.bzl
@@ -96,6 +96,7 @@
         build_info = build_info,
         # If this is a rustdoc test, we need to depend on rlibs rather than .rmeta.
         force_depend_on_objects = is_test,
+        include_link_flags = False,
     )
 
     # Since this crate is not actually producing the output described by the
@@ -123,7 +124,8 @@
         build_flags_files = build_flags_files,
         emit = [],
         remap_path_prefix = None,
-        rustdoc = True,
+        add_flags_for_binary = True,
+        include_link_flags = False,
         force_depend_on_objects = is_test,
         skip_expanding_rustc_env = True,
     )
diff --git a/rust/private/utils.bzl b/rust/private/utils.bzl
index 4e9b4b7..06a3d33 100644
--- a/rust/private/utils.bzl
+++ b/rust/private/utils.bzl
@@ -24,6 +24,10 @@
     "use_header_modules",
     "fdo_instrument",
     "fdo_optimize",
+    # This feature is unsupported by definition. The authors of C++ toolchain
+    # configuration can place any linker flags that should not be applied when
+    # linking Rust targets in a feature with this name.
+    "rules_rust_unsupported_feature",
 ]
 
 def find_toolchain(ctx):
@@ -794,7 +798,7 @@
     if not has_generated_sources:
         return srcs, crate_root
 
-    package_root = paths.dirname(paths.join(ctx.label.workspace_root, ctx.build_file_path))
+    package_root = paths.join(ctx.label.workspace_root, ctx.label.package)
     generated_sources = [_symlink_for_non_generated_source(ctx, src, package_root) for src in srcs if src != crate_root]
     generated_root = crate_root
     if crate_root:
@@ -875,3 +879,15 @@
         sibling.basename + ".rustc-output",
         sibling = sibling,
     )
+
+def is_std_dylib(file):
+    """Whether the file is a dylib crate for std
+
+    """
+    basename = file.basename
+    return (
+        # for linux and darwin
+        basename.startswith("libstd-") and (basename.endswith(".so") or basename.endswith(".dylib")) or
+        # for windows
+        basename.startswith("std-") and basename.endswith(".dll")
+    )
diff --git a/rust/repositories.bzl b/rust/repositories.bzl
index 52f787b..98d179f 100644
--- a/rust/repositories.bzl
+++ b/rust/repositories.bzl
@@ -89,8 +89,8 @@
     maybe(
         http_archive,
         name = "build_bazel_apple_support",
-        sha256 = "cf4d63f39c7ba9059f70e995bf5fe1019267d3f77379c2028561a5d7645ef67c",
-        url = "https://github.com/bazelbuild/apple_support/releases/download/1.11.1/apple_support.1.11.1.tar.gz",
+        sha256 = "1c4031e72b456a048d8177f59a5581808c07585fa9e255c6f5fefb8752af7e40",
+        url = "https://github.com/bazelbuild/apple_support/releases/download/1.13.0/apple_support.1.13.0.tar.gz",
     )
 
     # process_wrapper needs a low-dependency way to process json.
diff --git a/rust/settings/BUILD.bazel b/rust/settings/BUILD.bazel
index faaa148..1160e97 100644
--- a/rust/settings/BUILD.bazel
+++ b/rust/settings/BUILD.bazel
@@ -99,6 +99,12 @@
     issue = "https://github.com/bazelbuild/rules_rust/issues/2324",
 )
 
+# A flag to control whether to link libstd dynamically.
+bool_flag(
+    name = "experimental_link_std_dylib",
+    build_setting_default = False,
+)
+
 # A flag to remove the SYSROOT environment variable from `Rustc` actions.
 incompatible_flag(
     name = "incompatible_no_rustc_sysroot_env",
diff --git a/rust/toolchain.bzl b/rust/toolchain.bzl
index 9580d7c..1d268ec 100644
--- a/rust/toolchain.bzl
+++ b/rust/toolchain.bzl
@@ -14,6 +14,8 @@
     "dedent",
     "dedup_expand_location",
     "find_cc_toolchain",
+    "is_exec_configuration",
+    "is_std_dylib",
     "make_static_lib_symlink",
 )
 load("//rust/settings:incompatible.bzl", "IncompatibleFlagInfo")
@@ -75,6 +77,13 @@
                 print("File partitioned: {}".format(f.basename))
             fail("rust_toolchain couldn't properly partition rlibs in rust_std. Partitioned {} out of {} files. This is probably a bug in the rule implementation.".format(partitioned_files_len, len(dot_a_files)))
 
+    std_dylib = None
+
+    for file in rust_std:
+        if is_std_dylib(file):
+            std_dylib = file
+            break
+
     return [
         DefaultInfo(
             files = depset(ctx.files.srcs),
@@ -87,6 +96,7 @@
             core_files = core_files,
             between_core_and_std_files = between_core_and_std_files,
             std_files = std_files,
+            std_dylib = std_dylib,
             test_files = test_files,
             memchr_files = memchr_files,
             alloc_files = alloc_files,
@@ -237,14 +247,27 @@
             transitive = [memchr_inputs],
             order = "topological",
         )
-        std_inputs = depset(
-            [
-                _ltl(f, ctx, cc_toolchain, feature_configuration)
-                for f in rust_stdlib_info.std_files
-            ],
-            transitive = [between_core_and_std_inputs],
-            order = "topological",
-        )
+
+        if _experimental_link_std_dylib(ctx):
+            # std dylib has everything so that we do not need to include all std_files
+            std_inputs = depset(
+                [cc_common.create_library_to_link(
+                    actions = ctx.actions,
+                    feature_configuration = feature_configuration,
+                    cc_toolchain = cc_toolchain,
+                    dynamic_library = rust_stdlib_info.std_dylib,
+                )],
+            )
+        else:
+            std_inputs = depset(
+                [
+                    _ltl(f, ctx, cc_toolchain, feature_configuration)
+                    for f in rust_stdlib_info.std_files
+                ],
+                transitive = [between_core_and_std_inputs],
+                order = "topological",
+            )
+
         test_inputs = depset(
             [
                 _ltl(f, ctx, cc_toolchain, feature_configuration)
@@ -454,6 +477,9 @@
         sysroot_anchor = sysroot_anchor,
     )
 
+def _experimental_use_cc_common_link(ctx):
+    return ctx.attr.experimental_use_cc_common_link[BuildSettingInfo].value
+
 def _rust_toolchain_impl(ctx):
     """The rust_toolchain implementation
 
@@ -477,15 +503,14 @@
     pipelined_compilation = ctx.attr._pipelined_compilation[BuildSettingInfo].value
     no_std = ctx.attr._no_std[BuildSettingInfo].value
 
-    experimental_use_cc_common_link = ctx.attr.experimental_use_cc_common_link[BuildSettingInfo].value
     experimental_use_global_allocator = ctx.attr._experimental_use_global_allocator[BuildSettingInfo].value
-    if experimental_use_cc_common_link:
+    if _experimental_use_cc_common_link(ctx):
         if experimental_use_global_allocator and not ctx.attr.global_allocator_library:
             fail("rust_toolchain.experimental_use_cc_common_link with --@rules_rust//rust/settings:experimental_use_global_allocator " +
                  "requires rust_toolchain.global_allocator_library to be set")
         if not ctx.attr.allocator_library:
             fail("rust_toolchain.experimental_use_cc_common_link requires rust_toolchain.allocator_library to be set")
-    if experimental_use_global_allocator and not experimental_use_cc_common_link:
+    if experimental_use_global_allocator and not _experimental_use_cc_common_link(ctx):
         fail(
             "Using @rules_rust//rust/settings:experimental_use_global_allocator requires" +
             "--@rules_rust//rust/settings:experimental_use_cc_common_link to be set",
@@ -639,7 +664,8 @@
         _rename_first_party_crates = rename_first_party_crates,
         _third_party_dir = third_party_dir,
         _pipelined_compilation = pipelined_compilation,
-        _experimental_use_cc_common_link = experimental_use_cc_common_link,
+        _experimental_link_std_dylib = _experimental_link_std_dylib(ctx),
+        _experimental_use_cc_common_link = _experimental_use_cc_common_link(ctx),
         _experimental_use_global_allocator = experimental_use_global_allocator,
         _experimental_use_coverage_metadata_files = ctx.attr._experimental_use_coverage_metadata_files[BuildSettingInfo].value,
         _experimental_toolchain_generated_sysroot = ctx.attr._experimental_toolchain_generated_sysroot[IncompatibleFlagInfo].enabled,
@@ -652,6 +678,11 @@
         make_variable_info,
     ]
 
+def _experimental_link_std_dylib(ctx):
+    return not is_exec_configuration(ctx) and \
+           ctx.attr.experimental_link_std_dylib[BuildSettingInfo].value and \
+           ctx.attr.rust_std[rust_common.stdlib_info].std_dylib != None
+
 rust_toolchain = rule(
     implementation = _rust_toolchain_impl,
     fragments = ["cpp"],
@@ -702,6 +733,10 @@
             ),
             mandatory = True,
         ),
+        "experimental_link_std_dylib": attr.label(
+            default = Label("@rules_rust//rust/settings:experimental_link_std_dylib"),
+            doc = "Label to a boolean build setting that controls whether whether to link libstd dynamically.",
+        ),
         "experimental_use_cc_common_link": attr.label(
             default = Label("//rust/settings:experimental_use_cc_common_link"),
             doc = "Label to a boolean build setting that controls whether cc_common.link is used to link rust binaries.",
diff --git a/test/bindgen/BUILD.bazel b/test/bindgen/BUILD.bazel
new file mode 100644
index 0000000..c0263d2
--- /dev/null
+++ b/test/bindgen/BUILD.bazel
@@ -0,0 +1,3 @@
+load(":bindgen_test.bzl", "bindgen_test_suite")
+
+bindgen_test_suite(name = "cc_bindgen_test_suite")
diff --git a/test/bindgen/bindgen_test.bzl b/test/bindgen/bindgen_test.bzl
new file mode 100644
index 0000000..a5adf5d
--- /dev/null
+++ b/test/bindgen/bindgen_test.bzl
@@ -0,0 +1,53 @@
+"""Analysis test for for rust_bindgen_library rule."""
+
+load("@rules_cc//cc:defs.bzl", "cc_library")
+load("@rules_rust//bindgen:defs.bzl", "rust_bindgen_library")
+load("@rules_rust//rust:defs.bzl", "rust_binary")
+load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite")
+
+def _test_cc_linkopt_impl(env, target):
+    # Assert
+    env.expect.that_action(target.actions[0]) \
+        .contains_at_least_args(["--codegen=link-arg=-shared"])
+
+def _test_cc_linkopt(name):
+    # Arrange
+    cc_library(
+        name = name + "_cc",
+        srcs = ["simple.cc"],
+        hdrs = ["simple.h"],
+        linkopts = ["-shared"],
+        tags = ["manual"],
+    )
+    rust_bindgen_library(
+        name = name + "_rust_bindgen",
+        cc_lib = name + "_cc",
+        header = "simple.h",
+        tags = ["manual"],
+        edition = "2021",
+    )
+    rust_binary(
+        name = name + "_rust_binary",
+        srcs = ["main.rs"],
+        deps = [name + "_rust_bindgen"],
+        tags = ["manual"],
+        edition = "2021",
+    )
+
+    # Act
+    # TODO: Use targets attr to also verify `rust_bindgen_library` not having
+    # the linkopt after https://github.com/bazelbuild/rules_testing/issues/67
+    # is released
+    analysis_test(
+        name = name,
+        target = name + "_rust_binary",
+        impl = _test_cc_linkopt_impl,
+    )
+
+def bindgen_test_suite(name):
+    test_suite(
+        name = name,
+        tests = [
+            _test_cc_linkopt,
+        ],
+    )
diff --git a/test/bindgen/main.rs b/test/bindgen/main.rs
new file mode 100644
index 0000000..c5a415d
--- /dev/null
+++ b/test/bindgen/main.rs
@@ -0,0 +1,7 @@
+// Analysis test shouldn't need this file.
+// This is a workaround until
+// https://github.com/bazelbuild/rules_rust/issues/2499
+// is fixed
+fn main() {
+    println!("Hello world");
+}
diff --git a/test/bindgen/simple.cc b/test/bindgen/simple.cc
new file mode 100644
index 0000000..1cd12d5
--- /dev/null
+++ b/test/bindgen/simple.cc
@@ -0,0 +1,4 @@
+// Analysis test shouldn't need this file.
+// This is a workaround until
+// https://github.com/bazelbuild/rules_rust/issues/2499
+// is fixed
diff --git a/test/bindgen/simple.h b/test/bindgen/simple.h
new file mode 100644
index 0000000..1cd12d5
--- /dev/null
+++ b/test/bindgen/simple.h
@@ -0,0 +1,4 @@
+// Analysis test shouldn't need this file.
+// This is a workaround until
+// https://github.com/bazelbuild/rules_rust/issues/2499
+// is fixed
diff --git a/test/build_env/BUILD.bazel b/test/build_env/BUILD.bazel
index 43de1ff..12fd5fa 100644
--- a/test/build_env/BUILD.bazel
+++ b/test/build_env/BUILD.bazel
@@ -60,7 +60,7 @@
     name = "cargo_env-vars_test",
     srcs = ["tests/cargo.rs"],
     edition = "2018",
-    deps = [":cargo_build_script_env-vars_build_script"],
+    deps = [":cargo_build_script_env-vars_bs"],
 )
 
 rust_test(
@@ -68,11 +68,11 @@
     srcs = ["tests/custom_crate_name.rs"],
     crate_name = "custom_crate_name",
     edition = "2018",
-    deps = [":cargo_build_script_env-vars_build_script"],
+    deps = [":cargo_build_script_env-vars_bs"],
 )
 
 cargo_build_script(
-    name = "cargo_build_script_env-vars_build_script",
+    name = "cargo_build_script_env-vars_bs",
     srcs = ["src/build.rs"],
     edition = "2018",
 )
diff --git a/test/cc_common_link/.bazelrc b/test/cc_common_link/.bazelrc
new file mode 100644
index 0000000..7344b7f
--- /dev/null
+++ b/test/cc_common_link/.bazelrc
@@ -0,0 +1,4 @@
+common --noenable_bzlmod
+
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
diff --git a/test/cc_common_link/with_global_alloc/.bazelrc b/test/cc_common_link/with_global_alloc/.bazelrc
new file mode 100644
index 0000000..7344b7f
--- /dev/null
+++ b/test/cc_common_link/with_global_alloc/.bazelrc
@@ -0,0 +1,4 @@
+common --noenable_bzlmod
+
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
diff --git a/test/link_std_dylib/BUILD b/test/link_std_dylib/BUILD
new file mode 100644
index 0000000..1a92fd4
--- /dev/null
+++ b/test/link_std_dylib/BUILD
@@ -0,0 +1,3 @@
+load(":link_std_dylib_test.bzl", "link_std_dylib_test_suite")
+
+link_std_dylib_test_suite(name = "link_std_dylib_test_suite")
diff --git a/test/link_std_dylib/lib.rs b/test/link_std_dylib/lib.rs
new file mode 100644
index 0000000..734312b
--- /dev/null
+++ b/test/link_std_dylib/lib.rs
@@ -0,0 +1,7 @@
+// Analysis test shouldn't need this file.
+// This is a workaround until
+// https://github.com/bazelbuild/rules_rust/issues/2499
+// is fixed
+pub fn example_test_dep_fn() -> u32 {
+    1
+}
diff --git a/test/link_std_dylib/link_std_dylib_test.bzl b/test/link_std_dylib/link_std_dylib_test.bzl
new file mode 100644
index 0000000..f133808
--- /dev/null
+++ b/test/link_std_dylib/link_std_dylib_test.bzl
@@ -0,0 +1,118 @@
+"""Analysis tests for experimental_link_std_dylib flag"""
+
+load("@rules_cc//cc:defs.bzl", "CcInfo")
+load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library")
+load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite")
+
+# buildifier: disable=bzl-visibility
+load("//rust/private:utils.bzl", "is_std_dylib")
+
+def _test_rust_binary_impl(env, targets):
+    env.expect.that_action(targets.default_binary.actions[0]) \
+        .contains_none_of_flag_values([
+        ("--codegen", "prefer-dynamic"),
+    ])
+
+    # Make sure with @rules_rust//rust/settings:experimental_link_std_dylib,
+    # the linker flags are set up correct so that the binary dynamically links
+    # the stdlib
+    env.expect.that_action(targets.binary_with_std_dylib.actions[0]) \
+        .contains_flag_values([
+        ("--codegen", "prefer-dynamic"),
+    ])
+
+def _test_rust_binary(name):
+    rust_binary(
+        name = name + "_rust_binary",
+        srcs = ["main.rs"],
+        edition = "2021",
+        tags = ["manual"],
+    )
+
+    analysis_test(
+        name = name,
+        impl = _test_rust_binary_impl,
+        targets = {
+            "binary_with_std_dylib": name + "_rust_binary",
+            "default_binary": name + "_rust_binary",
+        },
+        attrs = {
+            "binary_with_std_dylib": {
+                "@config_settings": {
+                    str(Label("@rules_rust//rust/settings:experimental_link_std_dylib")): True,
+                },
+            },
+        },
+    )
+
+def _export_static_stdlibs_in_cc_info(target):
+    linker_inputs = target[CcInfo].linking_context.linker_inputs
+    for linker_input in linker_inputs.to_list():
+        for library in linker_input.libraries:
+            if hasattr(library, "pic_static_library") and library.pic_static_library != None:
+                basename = library.pic_static_library.basename
+                if basename.startswith("libstd") and basename.endswith(".a"):
+                    return True
+    return False
+
+def _export_libstd_dylib_in_cc_info(target):
+    linker_inputs = target[CcInfo].linking_context.linker_inputs
+    for linker_input in linker_inputs.to_list():
+        for library in linker_input.libraries:
+            if hasattr(library, "dynamic_library") and library.dynamic_library != None:
+                if is_std_dylib(library.dynamic_library):
+                    return True
+    return False
+
+def _test_rust_library_impl(env, targets):
+    # By default, rust_library exports static stdlibs to downstream shared
+    # and binary targets to statically link
+    env.expect \
+        .that_bool(_export_static_stdlibs_in_cc_info(targets.default_rlib)) \
+        .equals(True)
+    env.expect \
+        .that_bool(_export_libstd_dylib_in_cc_info(targets.default_rlib)) \
+        .equals(False)
+
+    # With @rules_rust//rust/settings:experimental_link_std_dylib
+    # rust_library exports dylib std and does not export static stdlibs to
+    # downstream shared and binary targets to dynamically link
+    env.expect \
+        .that_bool(_export_static_stdlibs_in_cc_info(targets.rlib_with_std_dylib)) \
+        .equals(False)
+    env.expect \
+        .that_bool(_export_libstd_dylib_in_cc_info(targets.rlib_with_std_dylib)) \
+        .equals(True)
+
+def _test_rust_library(name):
+    rust_library(
+        name = name + "_rust_library",
+        srcs = ["lib.rs"],
+        edition = "2021",
+        tags = ["manual"],
+    )
+
+    analysis_test(
+        name = name,
+        impl = _test_rust_library_impl,
+        targets = {
+            "default_rlib": name + "_rust_library",
+            "rlib_with_std_dylib": name + "_rust_library",
+        },
+        attrs = {
+            "rlib_with_std_dylib": {
+                "@config_settings": {
+                    str(Label("@rules_rust//rust/settings:experimental_link_std_dylib")): True,
+                },
+            },
+        },
+    )
+
+def link_std_dylib_test_suite(name):
+    test_suite(
+        name = name,
+        tests = [
+            _test_rust_binary,
+            _test_rust_library,
+        ],
+    )
diff --git a/test/link_std_dylib/main.rs b/test/link_std_dylib/main.rs
new file mode 100644
index 0000000..c5a415d
--- /dev/null
+++ b/test/link_std_dylib/main.rs
@@ -0,0 +1,7 @@
+// Analysis test shouldn't need this file.
+// This is a workaround until
+// https://github.com/bazelbuild/rules_rust/issues/2499
+// is fixed
+fn main() {
+    println!("Hello world");
+}
diff --git a/test/no_std/.bazelrc b/test/no_std/.bazelrc
new file mode 100644
index 0000000..7344b7f
--- /dev/null
+++ b/test/no_std/.bazelrc
@@ -0,0 +1,4 @@
+common --noenable_bzlmod
+
+# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips.
+build --incompatible_disallow_empty_glob
diff --git a/test/no_std/cargo-bazel-lock.json b/test/no_std/cargo-bazel-lock.json
index 0657299..611bb21 100644
--- a/test/no_std/cargo-bazel-lock.json
+++ b/test/no_std/cargo-bazel-lock.json
@@ -1,5 +1,5 @@
 {
-  "checksum": "dd14f83cf42a9f1328d9024b37c495f268b1498c795fe64478764b9ac9e40711",
+  "checksum": "ba25958007103d1dab35908ed528d064bc4250c7048484837f543d4c8bcacc61",
   "crates": {
     "direct-cargo-bazel-deps 0.0.1": {
       "name": "direct-cargo-bazel-deps",
@@ -11,9 +11,12 @@
           "Library": {
             "crate_name": "direct_cargo_bazel_deps",
             "crate_root": ".direct_cargo_bazel_deps.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
@@ -53,9 +56,12 @@
           "Library": {
             "crate_name": "libc_alloc",
             "crate_root": "src/lib.rs",
-            "srcs": [
-              "**/*.rs"
-            ]
+            "srcs": {
+              "allow_empty": false,
+              "include": [
+                "**/*.rs"
+              ]
+            }
           }
         }
       ],
diff --git a/test/unit/rustdoc/rustdoc_build.rs b/test/unit/rustdoc/rustdoc_build.rs
index 651ed52..32d5dda 100644
--- a/test/unit/rustdoc/rustdoc_build.rs
+++ b/test/unit/rustdoc/rustdoc_build.rs
@@ -1,3 +1,8 @@
 fn main() {
     println!("cargo:rustc-env=CONST=xyz");
+    if cfg!(target_os = "macos") {
+        println!("cargo:rustc-link-lib=dylib=c++")
+    } else if cfg!(target_os = "linux") {
+        println!("cargo:rustc-link-lib=dylib=stdc++")
+    }
 }
diff --git a/test/unit/rustdoc/rustdoc_unit_test.bzl b/test/unit/rustdoc/rustdoc_unit_test.bzl
index 535c424..2d0bdb5 100644
--- a/test/unit/rustdoc/rustdoc_unit_test.bzl
+++ b/test/unit/rustdoc/rustdoc_unit_test.bzl
@@ -42,6 +42,22 @@
 
     return analysistest.end(env)
 
+def _rustdoc_for_bin_with_cc_lib_test_impl(ctx):
+    env = analysistest.begin(ctx)
+    tut = analysistest.target_under_test(env)
+
+    _common_rustdoc_checks(env, tut)
+
+    return analysistest.end(env)
+
+def _rustdoc_for_bin_with_transitive_cc_lib_test_impl(ctx):
+    env = analysistest.begin(ctx)
+    tut = analysistest.target_under_test(env)
+
+    _common_rustdoc_checks(env, tut)
+
+    return analysistest.end(env)
+
 def _rustdoc_for_proc_macro_test_impl(ctx):
     env = analysistest.begin(ctx)
     tut = analysistest.target_under_test(env)
@@ -125,6 +141,8 @@
 
 rustdoc_for_lib_test = analysistest.make(_rustdoc_for_lib_test_impl)
 rustdoc_for_bin_test = analysistest.make(_rustdoc_for_bin_test_impl)
+rustdoc_for_bin_with_cc_lib_test = analysistest.make(_rustdoc_for_bin_with_cc_lib_test_impl)
+rustdoc_for_bin_with_transitive_cc_lib_test = analysistest.make(_rustdoc_for_bin_with_transitive_cc_lib_test_impl)
 rustdoc_for_proc_macro_test = analysistest.make(_rustdoc_for_proc_macro_test_impl)
 rustdoc_for_lib_with_proc_macro_test = analysistest.make(_rustdoc_for_lib_with_proc_macro_test_impl)
 rustdoc_for_bin_with_transitive_proc_macro_test = analysistest.make(_rustdoc_for_bin_with_transitive_proc_macro_test_impl)
@@ -173,6 +191,22 @@
     )
 
     _target_maker(
+        rust_binary,
+        name = "bin_with_cc",
+        srcs = ["rustdoc_bin.rs"],
+        crate_features = ["with_cc"],
+        deps = [":cc_lib"],
+    )
+
+    _target_maker(
+        rust_binary,
+        name = "bin_with_transitive_cc",
+        srcs = ["rustdoc_bin.rs"],
+        crate_features = ["with_cc"],
+        deps = [":transitive_cc_lib"],
+    )
+
+    _target_maker(
         rust_library,
         name = "lib",
         srcs = ["rustdoc_lib.rs"],
@@ -223,6 +257,17 @@
         srcs = ["rustdoc.cc"],
     )
 
+    cc_library(
+        name = "transitive_cc_lib",
+        hdrs = ["rustdoc.h"],
+        srcs = ["rustdoc.cc"],
+        deps = [":cc_lib"],
+        # This is not needed for :cc_lib, but it is needed in other
+        # circumstances to link in system libraries.
+        linkopts = ["-lcc_lib"],
+        linkstatic = True,
+    )
+
     _target_maker(
         rust_library,
         name = "lib_with_cc",
@@ -311,6 +356,16 @@
         target_under_test = ":bin_doc",
     )
 
+    rustdoc_for_bin_with_cc_lib_test(
+        name = "rustdoc_for_bin_with_cc_lib_test",
+        target_under_test = ":bin_with_cc_doc",
+    )
+
+    rustdoc_for_bin_with_transitive_cc_lib_test(
+        name = "rustdoc_for_bin_with_transitive_cc_lib_test",
+        target_under_test = ":bin_with_transitive_cc_doc",
+    )
+
     rustdoc_for_proc_macro_test(
         name = "rustdoc_for_proc_macro_test",
         target_under_test = ":rustdoc_proc_macro_doc",
@@ -356,6 +411,8 @@
         tests = [
             ":rustdoc_for_lib_test",
             ":rustdoc_for_bin_test",
+            ":rustdoc_for_bin_with_cc_lib_test",
+            ":rustdoc_for_bin_with_transitive_cc_lib_test",
             ":rustdoc_for_proc_macro_test",
             ":rustdoc_for_lib_with_proc_macro_test",
             ":rustdoc_for_lib_with_cc_lib_test",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel
index 87eba58..5bdc555 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "aho_corasick",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.anstream-0.3.2.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.anstream-0.3.2.bazel
index a3e66d4..2d8a4f6 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.anstream-0.3.2.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.anstream-0.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstream",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-1.0.1.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-1.0.1.bazel
index 2701412..2b8676d 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-1.0.1.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-1.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstyle",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-parse-0.2.1.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-parse-0.2.1.bazel
index 00a2940..1972080 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-parse-0.2.1.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-parse-0.2.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstyle_parse",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-query-1.0.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-query-1.0.0.bazel
index 7192f0b..716b6ee 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-query-1.0.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-query-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstyle_query",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-wincon-1.0.1.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-wincon-1.0.1.bazel
index 8748fea..225069b 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-wincon-1.0.1.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.anstyle-wincon-1.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "anstyle_wincon",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.anyhow-1.0.71.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.anyhow-1.0.71.bazel
index eafbf45..4a15d22 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.anyhow-1.0.71.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.anyhow-1.0.71.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "anyhow",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -67,8 +71,11 @@
 )
 
 cargo_build_script(
-    name = "anyhow_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "anyhow_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -77,6 +84,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -103,6 +111,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":anyhow_build_script",
+    actual = ":anyhow_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.bazel
index f0ba11a..2cb341b 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.bitflags-1.3.2.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
index c89f994..4f00bf9 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.cc-1.0.79.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.cc-1.0.79.bazel
index 1acc585..3c27657 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.cc-1.0.79.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.cc-1.0.79.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.clap-4.3.11.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.clap-4.3.11.bazel
index 13c190c..734a584 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.clap-4.3.11.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.clap-4.3.11.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "clap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.clap_builder-4.3.11.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.clap_builder-4.3.11.bazel
index c445338..10df331 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.clap_builder-4.3.11.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.clap_builder-4.3.11.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "clap_builder",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.clap_derive-4.3.2.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.clap_derive-4.3.2.bazel
index 8281ba0..5d879bd 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.clap_derive-4.3.2.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.clap_derive-4.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "clap_derive",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.clap_lex-0.5.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.clap_lex-0.5.0.bazel
index 4023b22..212fff2 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.clap_lex-0.5.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.clap_lex-0.5.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "clap_lex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.colorchoice-1.0.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.colorchoice-1.0.0.bazel
index d2f180e..17dbf9e 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.colorchoice-1.0.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.colorchoice-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "colorchoice",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.either-1.8.1.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.either-1.8.1.bazel
index 703fa67..0cf17d7 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.either-1.8.1.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.either-1.8.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "either",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.env_logger-0.10.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.env_logger-0.10.0.bazel
index 0011fab..60aa1f7 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.env_logger-0.10.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.env_logger-0.10.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "env_logger",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.errno-0.3.1.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.errno-0.3.1.bazel
index 524b6c0..5d3877f 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.errno-0.3.1.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.errno-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "errno",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
index a603bb0..cb9db34 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "errno_dragonfly",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -64,12 +68,16 @@
 )
 
 cargo_build_script(
-    name = "errno-dragonfly_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "errno-dragonfly_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -99,6 +107,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":errno-dragonfly_build_script",
+    actual = ":errno-dragonfly_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.heck-0.4.1.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.heck-0.4.1.bazel
index 64b3f03..ec01346 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.heck-0.4.1.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.heck-0.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "heck",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.hermit-abi-0.3.2.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.hermit-abi-0.3.2.bazel
index 14a3059..5ff33bc 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.hermit-abi-0.3.2.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.hermit-abi-0.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.humantime-2.1.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.humantime-2.1.0.bazel
index 137abe2..16db9a5 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.humantime-2.1.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.humantime-2.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "humantime",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
index 7112a27..5672ddd 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "io_lifetimes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -120,8 +124,11 @@
 )
 
 cargo_build_script(
-    name = "io-lifetimes_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "io-lifetimes_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "close",
         "default",
@@ -133,6 +140,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -159,6 +167,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":io-lifetimes_build_script",
+    actual = ":io-lifetimes_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.is-terminal-0.4.7.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.is-terminal-0.4.7.bazel
index 70ce31b..fb5f5f0 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.is-terminal-0.4.7.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.is-terminal-0.4.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "is_terminal",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.itertools-0.11.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.itertools-0.11.0.bazel
index 17701e5..2beed39 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.itertools-0.11.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.itertools-0.11.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "itertools",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.itoa-1.0.8.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.itoa-1.0.8.bazel
index 3f8e8ee..f23124c 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.itoa-1.0.8.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.itoa-1.0.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "itoa",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.libc-0.2.147.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.libc-0.2.147.bazel
index c06ce71..7d42b09 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.libc-0.2.147.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.libc-0.2.147.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -68,8 +72,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "extra_traits",
@@ -79,6 +86,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -105,6 +113,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
index 3200dee..32229a2 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "linux_raw_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.log-0.4.19.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.log-0.4.19.bazel
index aee3ff9..f7c9c19 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.log-0.4.19.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.log-0.4.19.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.memchr-2.5.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.memchr-2.5.0.bazel
index 77a5814..91d9d93 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.memchr-2.5.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.memchr-2.5.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "memchr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -67,8 +71,11 @@
 )
 
 cargo_build_script(
-    name = "memchr_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "memchr_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -77,6 +84,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -103,6 +111,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":memchr_build_script",
+    actual = ":memchr_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.once_cell-1.18.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
index f474aae..3b5b850 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "once_cell",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.proc-macro2-1.0.64.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.proc-macro2-1.0.64.bazel
index 082c336..04dc8ab 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.proc-macro2-1.0.64.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.proc-macro2-1.0.64.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -68,8 +72,11 @@
 )
 
 cargo_build_script(
-    name = "proc-macro2_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro2_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -78,6 +85,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -104,6 +112,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro2_build_script",
+    actual = ":proc-macro2_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.quote-1.0.29.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.quote-1.0.29.bazel
index 9c76381..43f12e0 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.quote-1.0.29.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.quote-1.0.29.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -68,8 +72,11 @@
 )
 
 cargo_build_script(
-    name = "quote_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "quote_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -78,6 +85,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -104,6 +112,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":quote_build_script",
+    actual = ":quote_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.regex-1.9.1.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.regex-1.9.1.bazel
index 2aa99ca..037f4ac 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.regex-1.9.1.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.regex-1.9.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.regex-automata-0.3.3.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.regex-automata-0.3.3.bazel
index e236b48..f0b471c 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.regex-automata-0.3.3.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.regex-automata-0.3.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex_automata",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.regex-syntax-0.7.4.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.regex-syntax-0.7.4.bazel
index 52fc8c4..5af013f 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.regex-syntax-0.7.4.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.regex-syntax-0.7.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex_syntax",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.rustix-0.37.23.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.rustix-0.37.23.bazel
index 89aeeaa..f241b2c 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.rustix-0.37.23.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.rustix-0.37.23.bazel
@@ -13,7 +13,10 @@
 
 rust_library(
     name = "rustix",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     aliases = select({
         "@rules_rust//rust/platform:aarch64-apple-darwin": {
             "@rrra__errno-0.3.1//:errno": "libc_errno",  # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = "linux", any(target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"), all(target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64"))))))))
@@ -52,6 +55,7 @@
     }),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -178,8 +182,11 @@
 )
 
 cargo_build_script(
-    name = "rustix_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rustix_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "io-lifetimes",
@@ -192,6 +199,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -218,6 +226,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rustix_build_script",
+    actual = ":rustix_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.ryu-1.0.14.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.ryu-1.0.14.bazel
index 2c473d5..0495961 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.ryu-1.0.14.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.ryu-1.0.14.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ryu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.serde-1.0.171.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.serde-1.0.171.bazel
index 2f44c3b..34fe5ff 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.serde-1.0.171.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.serde-1.0.171.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -72,8 +76,11 @@
 )
 
 cargo_build_script(
-    name = "serde_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "derive",
@@ -84,6 +91,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -110,6 +118,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":serde_build_script",
+    actual = ":serde_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.serde_derive-1.0.171.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.serde_derive-1.0.171.bazel
index e83bdce..1fd0690 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.serde_derive-1.0.171.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.serde_derive-1.0.171.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "serde_derive",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.serde_json-1.0.102.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.serde_json-1.0.102.bazel
index 1e1f3b6..ad7fb27 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.serde_json-1.0.102.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.serde_json-1.0.102.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde_json",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -70,8 +74,11 @@
 )
 
 cargo_build_script(
-    name = "serde_json_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_json_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -80,6 +87,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -106,6 +114,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":serde_json_build_script",
+    actual = ":serde_json_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.strsim-0.10.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.strsim-0.10.0.bazel
index a2afa3e..855287e 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.strsim-0.10.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.strsim-0.10.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "strsim",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.syn-2.0.25.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.syn-2.0.25.bazel
index 9856192..065a623 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.syn-2.0.25.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.syn-2.0.25.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.termcolor-1.2.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.termcolor-1.2.0.bazel
index fafa96f..5a683da 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.termcolor-1.2.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.termcolor-1.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "termcolor",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.unicode-ident-1.0.10.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.unicode-ident-1.0.10.bazel
index 04fd61f..c702f44 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.unicode-ident-1.0.10.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.unicode-ident-1.0.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_ident",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.utf8parse-0.2.1.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.utf8parse-0.2.1.bazel
index 266182d..df2928a 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.utf8parse-0.2.1.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.utf8parse-0.2.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "utf8parse",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-0.3.9.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-0.3.9.bazel
index 93c0a63..9d4ed94 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-0.3.9.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-0.3.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -75,8 +79,11 @@
 )
 
 cargo_build_script(
-    name = "winapi_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "consoleapi",
         "errhandlingapi",
@@ -93,6 +100,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -119,6 +127,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi_build_script",
+    actual = ":winapi_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
index 1718702..6f0db16 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_i686_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -63,12 +67,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-i686-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-i686-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -95,6 +103,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-i686-pc-windows-gnu_build_script",
+    actual = ":winapi-i686-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel
index 787f8d2..0c917b2 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "winapi_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
index 103cc15..26275e0 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_x86_64_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -63,12 +67,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-x86_64-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-x86_64-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -95,6 +103,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-x86_64-pc-windows-gnu_build_script",
+    actual = ":winapi-x86_64-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
index c214293..4fe79df 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.windows-targets-0.48.1.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.windows-targets-0.48.1.bazel
index f9415c6..895e681 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.windows-targets-0.48.1.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.windows-targets-0.48.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
index f37cdf9..e629786 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -63,12 +67,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -95,6 +103,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
index e4e9a63..4a031f9 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -63,12 +67,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -95,6 +103,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
index 3a77360..700fd07 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -63,12 +67,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -95,6 +103,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
index 078e866..f04e19a 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -63,12 +67,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -95,6 +103,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
index 37fdba8..5b20d09 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -63,12 +67,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -95,6 +103,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
index c91c4d6..ef99718 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -63,12 +67,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -95,6 +103,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
index 9d6a63a..2120545 100644
--- a/tools/rust_analyzer/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
+++ b/tools/rust_analyzer/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -63,12 +67,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -95,6 +103,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/tools/rust_analyzer/3rdparty/crates/defs.bzl b/tools/rust_analyzer/3rdparty/crates/defs.bzl
index 889f56a..7765994 100644
--- a/tools/rust_analyzer/3rdparty/crates/defs.bzl
+++ b/tools/rust_analyzer/3rdparty/crates/defs.bzl
@@ -295,13 +295,13 @@
 _NORMAL_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "anyhow": "@rrra__anyhow-1.0.71//:anyhow",
-            "clap": "@rrra__clap-4.3.11//:clap",
-            "env_logger": "@rrra__env_logger-0.10.0//:env_logger",
-            "itertools": "@rrra__itertools-0.11.0//:itertools",
-            "log": "@rrra__log-0.4.19//:log",
-            "serde": "@rrra__serde-1.0.171//:serde",
-            "serde_json": "@rrra__serde_json-1.0.102//:serde_json",
+            "anyhow": Label("@rrra__anyhow-1.0.71//:anyhow"),
+            "clap": Label("@rrra__clap-4.3.11//:clap"),
+            "env_logger": Label("@rrra__env_logger-0.10.0//:env_logger"),
+            "itertools": Label("@rrra__itertools-0.11.0//:itertools"),
+            "log": Label("@rrra__log-0.4.19//:log"),
+            "serde": Label("@rrra__serde-1.0.171//:serde"),
+            "serde_json": Label("@rrra__serde_json-1.0.102//:serde_json"),
         },
     },
 }
diff --git a/tools/rust_analyzer/aquery.rs b/tools/rust_analyzer/aquery.rs
index 3697b0e..7208aa4 100644
--- a/tools/rust_analyzer/aquery.rs
+++ b/tools/rust_analyzer/aquery.rs
@@ -77,6 +77,9 @@
 
     let aquery_output = Command::new(bazel)
         .current_dir(workspace)
+        .env_remove("BAZELISK_SKIP_WRAPPER")
+        .env_remove("BUILD_WORKING_DIRECTORY")
+        .env_remove("BUILD_WORKSPACE_DIRECTORY")
         .arg("aquery")
         .arg("--include_aspects")
         .arg("--include_artifacts")
@@ -85,7 +88,7 @@
         ))
         .arg("--output_groups=rust_analyzer_crate_spec")
         .arg(format!(
-            r#"outputs(".*[.]rust_analyzer_crate_spec",{target_pattern})"#
+            r#"outputs(".*\.rust_analyzer_crate_spec\.json",{target_pattern})"#
         ))
         .arg("--output=jsonproto")
         .output()?;
diff --git a/tools/rust_analyzer/lib.rs b/tools/rust_analyzer/lib.rs
index 53cf0bf..0ab395a 100644
--- a/tools/rust_analyzer/lib.rs
+++ b/tools/rust_analyzer/lib.rs
@@ -20,7 +20,11 @@
 
     let output = Command::new(bazel.as_ref())
         .current_dir(workspace.as_ref())
+        .env_remove("BAZELISK_SKIP_WRAPPER")
+        .env_remove("BUILD_WORKING_DIRECTORY")
+        .env_remove("BUILD_WORKSPACE_DIRECTORY")
         .arg("build")
+        .arg("--norun_validations")
         .arg(format!(
             "--aspects={}//rust:defs.bzl%rust_analyzer_aspect",
             rules_rust.as_ref()
diff --git a/tools/rust_analyzer/main.rs b/tools/rust_analyzer/main.rs
index fb7b69e..df4b2f9 100644
--- a/tools/rust_analyzer/main.rs
+++ b/tools/rust_analyzer/main.rs
@@ -65,7 +65,11 @@
 
     // We need some info from `bazel info`. Fetch it now.
     let mut bazel_info_command = Command::new(&config.bazel);
-    bazel_info_command.arg("info");
+    bazel_info_command
+        .env_remove("BAZELISK_SKIP_WRAPPER")
+        .env_remove("BUILD_WORKING_DIRECTORY")
+        .env_remove("BUILD_WORKSPACE_DIRECTORY")
+        .arg("info");
     if let Some(workspace) = &config.workspace {
         bazel_info_command.current_dir(workspace);
     }
diff --git a/tools/rust_analyzer/rust_project.rs b/tools/rust_analyzer/rust_project.rs
index e4314a2..ba87c58 100644
--- a/tools/rust_analyzer/rust_project.rs
+++ b/tools/rust_analyzer/rust_project.rs
@@ -168,6 +168,23 @@
                 skipped_crates.len(),
                 skipped_crates
             );
+            let crate_map: BTreeMap<String, &CrateSpec> = unmerged_crates
+                .iter()
+                .map(|c| (c.crate_id.to_string(), *c))
+                .collect();
+
+            for unmerged_crate in &unmerged_crates {
+                let mut path = vec![];
+                if let Some(cycle) = detect_cycle(unmerged_crate, &crate_map, &mut path) {
+                    log::warn!(
+                        "Cycle detected: {:?}",
+                        cycle
+                            .iter()
+                            .map(|c| c.crate_id.to_string())
+                            .collect::<Vec<String>>()
+                    );
+                }
+            }
             return Err(anyhow!(
                 "Failed to make progress on building crate dependency graph"
             ));
@@ -179,6 +196,38 @@
     Ok(project)
 }
 
+fn detect_cycle<'a>(
+    current_crate: &'a CrateSpec,
+    all_crates: &'a BTreeMap<String, &'a CrateSpec>,
+    path: &mut Vec<&'a CrateSpec>,
+) -> Option<Vec<&'a CrateSpec>> {
+    if path
+        .iter()
+        .any(|dependent_crate| dependent_crate.crate_id == current_crate.crate_id)
+    {
+        let mut cycle_path = path.clone();
+        cycle_path.push(current_crate);
+        return Some(cycle_path);
+    }
+
+    path.push(current_crate);
+
+    for dep in &current_crate.deps {
+        match all_crates.get(dep) {
+            Some(dep_crate) => {
+                if let Some(cycle) = detect_cycle(dep_crate, all_crates, path) {
+                    return Some(cycle);
+                }
+            }
+            None => log::debug!("dep {dep} not found in unmerged crate map"),
+        }
+    }
+
+    path.pop();
+
+    None
+}
+
 pub fn write_rust_project(
     rust_project_path: &Path,
     execution_root: &Path,
diff --git a/util/label/label.rs b/util/label/label.rs
index fc6469d..d1e00a7 100644
--- a/util/label/label.rs
+++ b/util/label/label.rs
@@ -9,49 +9,134 @@
 /// TODO: validate . and .. in target name
 /// TODO: validate used characters in target name
 pub fn analyze(input: &'_ str) -> Result<Label<'_>> {
-    let label = input;
-    let (input, repository_name) = consume_repository_name(input, label)?;
-    let (input, package_name) = consume_package_name(input, label)?;
-    let name = consume_name(input, label)?;
-    let name = match (package_name, name) {
-        (None, None) => {
-            return Err(LabelError(err(
-                label,
-                "labels must have a package and/or a name.",
-            )))
+    Label::analyze(input)
+}
+
+#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone)]
+pub enum Repository<'s> {
+    /// A `@@` prefixed name that is unique within a workspace. E.g. `@@rules_rust~0.1.2~toolchains~local_rustc`
+    Canonical(&'s str), // stringifies to `@@self.0` where `self.0` may be empty
+    /// A `@` (single) prefixed name. E.g. `@rules_rust`.
+    Apparent(&'s str),
+}
+
+impl<'s> Repository<'s> {
+    pub fn repo_name(&self) -> &'s str {
+        match self {
+            Repository::Canonical(name) => &name[2..],
+            Repository::Apparent(name) => &name[1..],
         }
-        (Some(package_name), None) => name_from_package(package_name),
-        (_, Some(name)) => name,
-    };
-    Ok(Label::new(repository_name, package_name, name))
+    }
 }
 
 #[derive(Debug, PartialEq, Eq)]
-pub struct Label<'s> {
-    pub repository_name: Option<&'s str>,
-    pub package_name: Option<&'s str>,
-    pub name: &'s str,
+pub enum Label<'s> {
+    Relative {
+        target_name: &'s str,
+    },
+    Absolute {
+        repository: Option<Repository<'s>>,
+        package_name: &'s str,
+        target_name: &'s str,
+    },
 }
 
 type Result<T, E = LabelError> = core::result::Result<T, E>;
 
 impl<'s> Label<'s> {
-    fn new(
-        repository_name: Option<&'s str>,
-        package_name: Option<&'s str>,
-        name: &'s str,
-    ) -> Label<'s> {
-        Label {
-            repository_name,
-            package_name,
-            name,
+    /// Parse and analyze given str.
+    pub fn analyze(input: &'s str) -> Result<Label<'s>> {
+        let label = input;
+
+        if label.is_empty() {
+            return Err(LabelError(err(
+                label,
+                "Empty string cannot be parsed into a label.",
+            )));
+        }
+
+        if label.starts_with(':') {
+            return match consume_name(input, label)? {
+                None => Err(LabelError(err(
+                    label,
+                    "Relative packages must have a name.",
+                ))),
+                Some(name) => Ok(Label::Relative { target_name: name }),
+            };
+        }
+
+        let (input, repository) = consume_repository_name(input, label)?;
+
+        // Shorthand labels such as `@repo` are expanded to `@repo//:repo`.
+        if input.is_empty() {
+            if let Some(ref repo) = repository {
+                let target_name = repo.repo_name();
+                if target_name.is_empty() {
+                    return Err(LabelError(err(
+                        label,
+                        "invalid target name: empty target name",
+                    )));
+                } else {
+                    return Ok(Label::Absolute {
+                        repository,
+                        package_name: "",
+                        target_name,
+                    });
+                };
+            }
+        }
+        let (input, package_name) = consume_package_name(input, label)?;
+        let name = consume_name(input, label)?;
+        let name = match (package_name, name) {
+            (None, None) => {
+                return Err(LabelError(err(
+                    label,
+                    "labels must have a package and/or a name.",
+                )))
+            }
+            (Some(package_name), None) => name_from_package(package_name),
+            (_, Some(name)) => name,
+        };
+
+        Ok(Label::Absolute {
+            repository,
+            package_name: package_name.unwrap_or_default(),
+            target_name: name,
+        })
+    }
+
+    pub fn is_relative(&self) -> bool {
+        match self {
+            Label::Absolute { .. } => false,
+            Label::Relative { .. } => true,
         }
     }
 
-    pub fn packages(&self) -> Vec<&'s str> {
-        match self.package_name {
-            Some(name) => name.split('/').collect(),
-            None => vec![],
+    pub fn repo(&self) -> Option<&Repository<'s>> {
+        match self {
+            Label::Absolute { repository, .. } => repository.as_ref(),
+            Label::Relative { .. } => None,
+        }
+    }
+
+    pub fn repo_name(&self) -> Option<&'s str> {
+        match self {
+            Label::Absolute { repository, .. } => repository.as_ref().map(|repo| repo.repo_name()),
+            Label::Relative { .. } => None,
+        }
+    }
+
+    pub fn package(&self) -> Option<&'s str> {
+        match self {
+            Label::Relative { .. } => None,
+            Label::Absolute { package_name, .. } => Some(*package_name),
+        }
+    }
+
+    pub fn name(&self) -> &'s str {
+        match self {
+            Label::Relative { target_name } => target_name,
+            Label::Absolute { target_name, .. } => target_name,
         }
     }
 }
@@ -66,40 +151,67 @@
 fn consume_repository_name<'s>(
     input: &'s str,
     label: &'s str,
-) -> Result<(&'s str, Option<&'s str>)> {
-    if !input.starts_with('@') {
+) -> Result<(&'s str, Option<Repository<'s>>)> {
+    let at_signs = {
+        let mut count = 0;
+        for char in input.chars() {
+            if char == '@' {
+                count += 1;
+            } else {
+                break;
+            }
+        }
+        count
+    };
+    if at_signs == 0 {
         return Ok((input, None));
     }
+    if at_signs > 2 {
+        return Err(LabelError(err(label, "Unexpected number of leading `@`.")));
+    }
 
-    let slash_pos = input
-        .find("//")
-        .ok_or_else(|| err(label, "labels with repository must contain //."))?;
-    let repository_name = &input[1..slash_pos];
-    if repository_name.is_empty() {
-        return Ok((&input[1..], None));
+    let slash_pos = input.find("//").unwrap_or(input.len());
+    let repository_name = &input[at_signs..slash_pos];
+
+    if !repository_name.is_empty() {
+        if !repository_name
+            .chars()
+            .next()
+            .unwrap()
+            .is_ascii_alphabetic()
+        {
+            return Err(LabelError(err(
+                label,
+                "workspace names must start with a letter.",
+            )));
+        }
+        if !repository_name
+            .chars()
+            .all(|c| c.is_ascii_alphanumeric() || c == '-' || c == '_' || c == '.' || c == '~')
+        {
+            return Err(LabelError(err(
+                label,
+                "workspace names \
+                may contain only A-Z, a-z, 0-9, '-', '_', '.', and '~'.",
+            )));
+        }
     }
-    if !repository_name
-        .chars()
-        .next()
-        .unwrap()
-        .is_ascii_alphabetic()
-    {
-        return Err(LabelError(err(
-            label,
-            "workspace names must start with a letter.",
-        )));
-    }
-    if !repository_name
-        .chars()
-        .all(|c| c.is_ascii_alphanumeric() || c == '-' || c == '_' || c == '.')
-    {
-        return Err(LabelError(err(
-            label,
-            "workspace names \
-                may contain only A-Z, a-z, 0-9, '-', '_', and '.'.",
-        )));
-    }
-    Ok((&input[slash_pos..], Some(repository_name)))
+
+    let repository = if at_signs == 1 {
+        Repository::Apparent(&input[0..slash_pos])
+    } else if at_signs == 2 {
+        if repository_name.is_empty() {
+            return Err(LabelError(err(
+                label,
+                "main repository labels are only represented by a single `@`.",
+            )));
+        }
+        Repository::Canonical(&input[0..slash_pos])
+    } else {
+        return Err(LabelError(err(label, "Unexpected number of leading `@`.")));
+    };
+
+    Ok((&input[slash_pos..], Some(repository)))
 }
 
 fn consume_package_name<'s>(input: &'s str, label: &'s str) -> Result<(&'s str, Option<&'s str>)> {
@@ -185,16 +297,26 @@
     if input == ":" {
         return Err(LabelError(err(label, "empty target name.")));
     }
-    let name = input
-        .strip_prefix(':')
-        .or_else(|| input.strip_prefix('/'))
-        .unwrap_or(input);
+    let name = if let Some(stripped) = input.strip_prefix(':') {
+        stripped
+    } else if let Some(stripped) = input.strip_prefix("//") {
+        stripped
+    } else {
+        input.strip_prefix('/').unwrap_or(input)
+    };
+
     if name.starts_with('/') {
         return Err(LabelError(err(
             label,
             "target names may not start with '/'.",
         )));
     }
+    if name.starts_with(':') {
+        return Err(LabelError(err(
+            label,
+            "target names may not contain with ':'.",
+        )));
+    }
     Ok(Some(name))
 }
 
@@ -210,27 +332,17 @@
     use super::*;
 
     #[test]
-    fn test_new() {
-        assert_eq!(
-            Label::new(Some("repo"), Some("foo/bar"), "baz"),
-            Label {
-                repository_name: Some("repo"),
-                package_name: Some("foo/bar"),
-                name: "baz",
-            }
-        );
-    }
-
-    #[test]
     fn test_repository_name_parsing() -> Result<()> {
-        assert_eq!(analyze("@repo//:foo")?.repository_name, Some("repo"));
-        assert_eq!(analyze("@//:foo")?.repository_name, None);
-        assert_eq!(analyze("//:foo")?.repository_name, None);
-        assert_eq!(analyze(":foo")?.repository_name, None);
+        assert_eq!(analyze("@repo//:foo")?.repo_name(), Some("repo"));
+        assert_eq!(analyze("@@repo//:foo")?.repo_name(), Some("repo"));
+        assert_eq!(analyze("@//:foo")?.repo_name(), Some(""));
+        assert_eq!(analyze("//:foo")?.repo_name(), None);
+        assert_eq!(analyze(":foo")?.repo_name(), None);
 
-        assert_eq!(analyze("@repo//foo/bar")?.repository_name, Some("repo"));
-        assert_eq!(analyze("@//foo/bar")?.repository_name, None);
-        assert_eq!(analyze("//foo/bar")?.repository_name, None);
+        assert_eq!(analyze("@repo//foo/bar")?.repo_name(), Some("repo"));
+        assert_eq!(analyze("@@repo//foo/bar")?.repo_name(), Some("repo"));
+        assert_eq!(analyze("@//foo/bar")?.repo_name(), Some(""));
+        assert_eq!(analyze("//foo/bar")?.repo_name(), None);
         assert_eq!(
             analyze("foo/bar"),
             Err(LabelError(
@@ -238,9 +350,10 @@
             ))
         );
 
-        assert_eq!(analyze("@repo//foo")?.repository_name, Some("repo"));
-        assert_eq!(analyze("@//foo")?.repository_name, None);
-        assert_eq!(analyze("//foo")?.repository_name, None);
+        assert_eq!(analyze("@repo//foo")?.repo_name(), Some("repo"));
+        assert_eq!(analyze("@@repo//foo")?.repo_name(), Some("repo"));
+        assert_eq!(analyze("@//foo")?.repo_name(), Some(""));
+        assert_eq!(analyze("//foo")?.repo_name(), None);
         assert_eq!(
             analyze("foo"),
             Err(LabelError(
@@ -249,15 +362,28 @@
         );
 
         assert_eq!(
-            analyze("@foo:bar"),
+            analyze("@@@repo//foo"),
             Err(LabelError(
-                "@foo:bar must be a legal label; labels with repository must contain //."
-                    .to_string()
+                "@@@repo//foo must be a legal label; Unexpected number of leading `@`.".to_owned()
             ))
         );
 
         assert_eq!(
-            analyze("@AZab0123456789_-.//:foo")?.repository_name,
+            analyze("@@@//foo:bar"),
+            Err(LabelError(
+                "@@@//foo:bar must be a legal label; Unexpected number of leading `@`.".to_owned()
+            ))
+        );
+
+        assert_eq!(
+            analyze("@foo:bar"),
+            Err(LabelError(
+                "@foo:bar must be a legal label; workspace names may contain only A-Z, a-z, 0-9, '-', '_', '.', and '~'.".to_string()
+            ))
+        );
+
+        assert_eq!(
+            analyze("@AZab0123456789_-.//:foo")?.repo_name(),
             Some("AZab0123456789_-.")
         );
         assert_eq!(
@@ -272,19 +398,49 @@
             analyze("@foo#//:baz"),
             Err(LabelError(
                 "@foo#//:baz must be a legal label; workspace names \
-            may contain only A-Z, a-z, 0-9, '-', '_', and '.'."
+            may contain only A-Z, a-z, 0-9, '-', '_', '.', and '~'."
                     .to_string()
             ))
         );
+        assert_eq!(
+            analyze("@@//foo/bar"),
+            Err(LabelError(
+                "@@//foo/bar must be a legal label; main repository labels are only represented by a single `@`."
+                    .to_string()
+            ))
+        );
+        assert_eq!(
+            analyze("@@//:foo"),
+            Err(LabelError(
+                "@@//:foo must be a legal label; main repository labels are only represented by a single `@`."
+                    .to_string()
+            ))
+        );
+        assert_eq!(
+            analyze("@@//foo"),
+            Err(LabelError(
+                "@@//foo must be a legal label; main repository labels are only represented by a single `@`."
+                    .to_string()
+            ))
+        );
+
+        assert_eq!(
+            analyze("@@"),
+            Err(LabelError(
+                "@@ must be a legal label; main repository labels are only represented by a single `@`.".to_string()
+            )),
+        );
+
         Ok(())
     }
+
     #[test]
     fn test_package_name_parsing() -> Result<()> {
-        assert_eq!(analyze("//:baz/qux")?.package_name, None);
-        assert_eq!(analyze(":baz/qux")?.package_name, None);
+        assert_eq!(analyze("//:baz/qux")?.package(), Some(""));
+        assert_eq!(analyze(":baz/qux")?.package(), None);
 
-        assert_eq!(analyze("//foo:baz/qux")?.package_name, Some("foo"));
-        assert_eq!(analyze("//foo/bar:baz/qux")?.package_name, Some("foo/bar"));
+        assert_eq!(analyze("//foo:baz/qux")?.package(), Some("foo"));
+        assert_eq!(analyze("//foo/bar:baz/qux")?.package(), Some("foo/bar"));
         assert_eq!(
             analyze("foo:baz/qux"),
             Err(LabelError(
@@ -300,7 +456,7 @@
             ))
         );
 
-        assert_eq!(analyze("//foo")?.package_name, Some("foo"));
+        assert_eq!(analyze("//foo")?.package(), Some("foo"));
 
         assert_eq!(
             analyze("foo//bar"),
@@ -332,7 +488,7 @@
         );
 
         assert_eq!(
-            analyze("//azAZ09/-. $()_:baz")?.package_name,
+            analyze("//azAZ09/-. $()_:baz")?.package(),
             Some("azAZ09/-. $()_")
         );
         assert_eq!(
@@ -350,8 +506,8 @@
             ))
         );
 
-        assert_eq!(analyze("@repo//foo/bar")?.package_name, Some("foo/bar"));
-        assert_eq!(analyze("//foo/bar")?.package_name, Some("foo/bar"));
+        assert_eq!(analyze("@repo//foo/bar")?.package(), Some("foo/bar"));
+        assert_eq!(analyze("//foo/bar")?.package(), Some("foo/bar"));
         assert_eq!(
             analyze("foo/bar"),
             Err(LabelError(
@@ -359,8 +515,8 @@
             ))
         );
 
-        assert_eq!(analyze("@repo//foo")?.package_name, Some("foo"));
-        assert_eq!(analyze("//foo")?.package_name, Some("foo"));
+        assert_eq!(analyze("@repo//foo")?.package(), Some("foo"));
+        assert_eq!(analyze("//foo")?.package(), Some("foo"));
         assert_eq!(
             analyze("foo"),
             Err(LabelError(
@@ -373,8 +529,17 @@
 
     #[test]
     fn test_name_parsing() -> Result<()> {
-        assert_eq!(analyze("//foo:baz")?.name, "baz");
-        assert_eq!(analyze("//foo:baz/qux")?.name, "baz/qux");
+        assert_eq!(analyze("//foo:baz")?.name(), "baz");
+        assert_eq!(analyze("//foo:baz/qux")?.name(), "baz/qux");
+        assert_eq!(analyze(":baz/qux")?.name(), "baz/qux");
+
+        assert_eq!(
+            analyze("::baz/qux"),
+            Err(LabelError(
+                "::baz/qux must be a legal label; target names may not contain with ':'."
+                    .to_string()
+            ))
+        );
 
         assert_eq!(
             analyze("//bar:"),
@@ -382,7 +547,7 @@
                 "//bar: must be a legal label; empty target name.".to_string()
             ))
         );
-        assert_eq!(analyze("//foo")?.name, "foo");
+        assert_eq!(analyze("//foo")?.name(), "foo");
 
         assert_eq!(
             analyze("//bar:/foo"),
@@ -392,8 +557,8 @@
             ))
         );
 
-        assert_eq!(analyze("@repo//foo/bar")?.name, "bar");
-        assert_eq!(analyze("//foo/bar")?.name, "bar");
+        assert_eq!(analyze("@repo//foo/bar")?.name(), "bar");
+        assert_eq!(analyze("//foo/bar")?.name(), "bar");
         assert_eq!(
             analyze("foo/bar"),
             Err(LabelError(
@@ -401,8 +566,8 @@
             ))
         );
 
-        assert_eq!(analyze("@repo//foo")?.name, "foo");
-        assert_eq!(analyze("//foo")?.name, "foo");
+        assert_eq!(analyze("@repo//foo")?.name(), "foo");
+        assert_eq!(analyze("//foo")?.name(), "foo");
         assert_eq!(
             analyze("foo"),
             Err(LabelError(
@@ -410,22 +575,20 @@
             ))
         );
 
-        Ok(())
-    }
-
-    #[test]
-    fn test_packages() -> Result<()> {
-        assert_eq!(analyze("@repo//:baz")?.packages(), Vec::<&str>::new());
-        assert_eq!(analyze("@repo//foo:baz")?.packages(), vec!["foo"]);
         assert_eq!(
-            analyze("@repo//foo/bar:baz")?.packages(),
-            vec!["foo", "bar"]
+            analyze("@repo")?,
+            Label::Absolute {
+                repository: Some(Repository::Apparent("@repo")),
+                package_name: "",
+                target_name: "repo",
+            },
         );
 
-        // Plus (+) is valid in packages
         assert_eq!(
-            analyze("@repo//foo/bar+baz:qaz")?.packages(),
-            vec!["foo", "bar+baz"]
+            analyze("@"),
+            Err(LabelError(
+                "@ must be a legal label; invalid target name: empty target name".to_string()
+            )),
         );
 
         Ok(())
diff --git a/version.bzl b/version.bzl
index 12ed44c..433d0fa 100644
--- a/version.bzl
+++ b/version.bzl
@@ -1,3 +1,3 @@
 """The version of rules_rust."""
 
-VERSION = "0.39.0"
+VERSION = "0.40.0"
diff --git a/wasm_bindgen/3rdparty/Cargo.Bazel.lock b/wasm_bindgen/3rdparty/Cargo.Bazel.lock
index 52cea6e..ca086ec 100644
--- a/wasm_bindgen/3rdparty/Cargo.Bazel.lock
+++ b/wasm_bindgen/3rdparty/Cargo.Bazel.lock
@@ -92,16 +92,6 @@
 
 [[package]]
 name = "base64"
-version = "0.9.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643"
-dependencies = [
- "byteorder",
- "safemem",
-]
-
-[[package]]
-name = "base64"
 version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
@@ -156,12 +146,6 @@
 checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
 
 [[package]]
-name = "byteorder"
-version = "1.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
-
-[[package]]
 name = "cc"
 version = "1.0.83"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1425,9 +1409,9 @@
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
+checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
 dependencies = [
  "cfg-if",
  "wasm-bindgen-macro",
@@ -1435,9 +1419,9 @@
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826"
+checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
 dependencies = [
  "bumpalo",
  "log",
@@ -1450,7 +1434,7 @@
 
 [[package]]
 name = "wasm-bindgen-cli"
-version = "0.2.89"
+version = "0.2.91"
 dependencies = [
  "anyhow",
  "assert_cmd",
@@ -1477,12 +1461,12 @@
 
 [[package]]
 name = "wasm-bindgen-cli-support"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf8226e223e2dfbe8f921b7f20b82d1b5d86a6b143e9d6286cca8edd16695583"
+checksum = "806a045c4ec4ef7c3ad86dc27bcb641b84d9eeb3846200f56d7ab0885241d654"
 dependencies = [
  "anyhow",
- "base64 0.9.3",
+ "base64 0.21.5",
  "log",
  "rustc-demangle",
  "serde_json",
@@ -1499,9 +1483,9 @@
 
 [[package]]
 name = "wasm-bindgen-externref-xform"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8a719be856d8b0802c7195ca26ee6eb02cb9639a12b80be32db960ce9640cb8"
+checksum = "12b6ac5fca1d0992d2328147488169ea166bfe899c88f8ad06cf583f4c492fcf"
 dependencies = [
  "anyhow",
  "walrus",
@@ -1509,9 +1493,9 @@
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2"
+checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -1519,9 +1503,9 @@
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
+checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1532,9 +1516,9 @@
 
 [[package]]
 name = "wasm-bindgen-multi-value-xform"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a12766255d4b9026700376cc81894eeb62903e4414cbc94675f6f9babd9cfb76"
+checksum = "d1e019acde479e2f090fb7f14a51fa0077ec3a7bb12a56e0e888a82be7b5bd3f"
 dependencies = [
  "anyhow",
  "walrus",
@@ -1542,15 +1526,15 @@
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f"
+checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
 
 [[package]]
 name = "wasm-bindgen-threads-xform"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13c2b14c5b9c2c7aa9dd1eb7161857de9783f40e98582e7f41f2d7c04ffdc155"
+checksum = "90a2e577034352f9aa9352730fcf2562c68957f2e9b9ee70ab6379510e49e2fe"
 dependencies = [
  "anyhow",
  "walrus",
@@ -1559,9 +1543,9 @@
 
 [[package]]
 name = "wasm-bindgen-wasm-conventions"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aaedf88769cb23c6fd2e3bfed65bcbff6c5d92c8336afbd80d2dfcc8eb5cf047"
+checksum = "4e6b653f6820409609bda0f176e6949302307af7a7b9479cd4d4b1bdc31eb9cd"
 dependencies = [
  "anyhow",
  "walrus",
@@ -1569,9 +1553,9 @@
 
 [[package]]
 name = "wasm-bindgen-wasm-interpreter"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8a79039df1e0822e6d66508ec86052993deac201e26060f62abcd85e1daf951"
+checksum = "682940195a701dbf887f20017418b8cac916a37b3f91ededec33226619e973c1"
 dependencies = [
  "anyhow",
  "log",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.adler-1.0.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.adler-1.0.2.bazel
index 24c603a..00890ea 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.adler-1.0.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.adler-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "adler",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel
index c1219e3..ca89bf1 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.aho-corasick-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "aho_corasick",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.alloc-no-stdlib-2.0.4.bazel b/wasm_bindgen/3rdparty/crates/BUILD.alloc-no-stdlib-2.0.4.bazel
index 2fa2494..ccbe234 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.alloc-no-stdlib-2.0.4.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.alloc-no-stdlib-2.0.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "alloc_no_stdlib",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.alloc-stdlib-0.2.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.alloc-stdlib-0.2.2.bazel
index 9ca37f4..a4f693f 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.alloc-stdlib-0.2.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.alloc-stdlib-0.2.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "alloc_stdlib",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.android-tzdata-0.1.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.android-tzdata-0.1.1.bazel
index 5f57ed9..0276ac2 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.android-tzdata-0.1.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.android-tzdata-0.1.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "android_tzdata",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.android_system_properties-0.1.5.bazel b/wasm_bindgen/3rdparty/crates/BUILD.android_system_properties-0.1.5.bazel
index ec60743..eeb8234 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.android_system_properties-0.1.5.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.android_system_properties-0.1.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "android_system_properties",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.anyhow-1.0.71.bazel b/wasm_bindgen/3rdparty/crates/BUILD.anyhow-1.0.71.bazel
index 945e8e0..d4ac346 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.anyhow-1.0.71.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.anyhow-1.0.71.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "anyhow",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "anyhow_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "anyhow_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":anyhow_build_script",
+    actual = ":anyhow_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.ascii-1.1.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.ascii-1.1.0.bazel
index fee9fb0..9fdbcde 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.ascii-1.1.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.ascii-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ascii",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.assert_cmd-1.0.8.bazel b/wasm_bindgen/3rdparty/crates/BUILD.assert_cmd-1.0.8.bazel
index 3019077..f21a9af 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.assert_cmd-1.0.8.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.assert_cmd-1.0.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "assert_cmd",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.atty-0.2.14.bazel b/wasm_bindgen/3rdparty/crates/BUILD.atty-0.2.14.bazel
index 64eba45..fe796fc 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.atty-0.2.14.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.atty-0.2.14.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "atty",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.autocfg-1.1.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.autocfg-1.1.0.bazel
index 2184256..cad8a2f 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.autocfg-1.1.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.autocfg-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "autocfg",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.base64-0.13.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.base64-0.13.1.bazel
index cf0f6e6..57825f8 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.base64-0.13.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.base64-0.13.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "base64",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.base64-0.21.5.bazel b/wasm_bindgen/3rdparty/crates/BUILD.base64-0.21.5.bazel
index 82876de..e2500cd 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.base64-0.21.5.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.base64-0.21.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "base64",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.base64-0.9.3.bazel b/wasm_bindgen/3rdparty/crates/BUILD.base64-0.9.3.bazel
deleted file mode 100644
index 3c28aa8..0000000
--- a/wasm_bindgen/3rdparty/crates/BUILD.base64-0.9.3.bazel
+++ /dev/null
@@ -1,81 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//wasm_bindgen/3rdparty:crates_vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
-    name = "base64",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2015",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=base64",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    target_compatible_with = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [],
-        "@rules_rust//rust/platform:aarch64-linux-android": [],
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:i686-apple-darwin": [],
-        "@rules_rust//rust/platform:i686-linux-android": [],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
-        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
-        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
-        "@rules_rust//rust/platform:wasm32-wasi": [],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [],
-        "@rules_rust//rust/platform:x86_64-linux-android": [],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-none": [],
-        "//conditions:default": ["@platforms//:incompatible"],
-    }),
-    version = "0.9.3",
-    deps = [
-        "@rules_rust_wasm_bindgen__byteorder-1.4.3//:byteorder",
-        "@rules_rust_wasm_bindgen__safemem-0.3.3//:safemem",
-    ],
-)
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.bazel b/wasm_bindgen/3rdparty/crates/BUILD.bazel
index 035307e..2bc7be8 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.bazel
@@ -13,15 +13,21 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
@@ -117,19 +123,19 @@
 
 alias(
     name = "wasm-bindgen",
-    actual = "@rules_rust_wasm_bindgen__wasm-bindgen-0.2.89//:wasm_bindgen",
+    actual = "@rules_rust_wasm_bindgen__wasm-bindgen-0.2.91//:wasm_bindgen",
     tags = ["manual"],
 )
 
 alias(
     name = "wasm-bindgen-cli-support",
-    actual = "@rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.89//:wasm_bindgen_cli_support",
+    actual = "@rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.91//:wasm_bindgen_cli_support",
     tags = ["manual"],
 )
 
 alias(
     name = "wasm-bindgen-shared",
-    actual = "@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.89//:wasm_bindgen_shared",
+    actual = "@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91//:wasm_bindgen_shared",
     tags = ["manual"],
 )
 
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.bitflags-1.3.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
index fa3dddd..23742e5 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.bitflags-1.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bitflags",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.brotli-decompressor-2.5.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.brotli-decompressor-2.5.1.bazel
index 23a1c67..580a48a 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.brotli-decompressor-2.5.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.brotli-decompressor-2.5.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "brotli_decompressor",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.bstr-0.2.17.bazel b/wasm_bindgen/3rdparty/crates/BUILD.bstr-0.2.17.bazel
index 8b3f997..2483c58 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.bstr-0.2.17.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.bstr-0.2.17.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bstr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.buf_redux-0.8.4.bazel b/wasm_bindgen/3rdparty/crates/BUILD.buf_redux-0.8.4.bazel
index f0b6851..95e2e7b 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.buf_redux-0.8.4.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.buf_redux-0.8.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "buf_redux",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.bumpalo-3.13.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.bumpalo-3.13.0.bazel
index a123ad9..df2d290 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.bumpalo-3.13.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.bumpalo-3.13.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "bumpalo",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.byteorder-1.4.3.bazel b/wasm_bindgen/3rdparty/crates/BUILD.byteorder-1.4.3.bazel
deleted file mode 100644
index 2320be8..0000000
--- a/wasm_bindgen/3rdparty/crates/BUILD.byteorder-1.4.3.bazel
+++ /dev/null
@@ -1,81 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//wasm_bindgen/3rdparty:crates_vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-rust_library(
-    name = "byteorder",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            ".tmp_git_root/**/*",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_features = [
-        "default",
-        "std",
-    ],
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=byteorder",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    target_compatible_with = select({
-        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios": [],
-        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
-        "@rules_rust//rust/platform:aarch64-fuchsia": [],
-        "@rules_rust//rust/platform:aarch64-linux-android": [],
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
-        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
-        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
-        "@rules_rust//rust/platform:i686-apple-darwin": [],
-        "@rules_rust//rust/platform:i686-linux-android": [],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
-        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
-        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
-        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
-        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
-        "@rules_rust//rust/platform:wasm32-wasi": [],
-        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
-        "@rules_rust//rust/platform:x86_64-apple-ios": [],
-        "@rules_rust//rust/platform:x86_64-fuchsia": [],
-        "@rules_rust//rust/platform:x86_64-linux-android": [],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
-        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
-        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
-        "@rules_rust//rust/platform:x86_64-unknown-none": [],
-        "//conditions:default": ["@platforms//:incompatible"],
-    }),
-    version = "1.4.3",
-)
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.cc-1.0.83.bazel b/wasm_bindgen/3rdparty/crates/BUILD.cc-1.0.83.bazel
index e3436ba..0999c4d 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.cc-1.0.83.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.cc-1.0.83.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
index 5959fb3..5f68498 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.cfg-if-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "cfg_if",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.chrono-0.4.26.bazel b/wasm_bindgen/3rdparty/crates/BUILD.chrono-0.4.26.bazel
index ced459c..99f0d4c 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.chrono-0.4.26.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.chrono-0.4.26.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "chrono",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.chunked_transfer-1.4.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.chunked_transfer-1.4.1.bazel
index 4a27aaa..1c1ae80 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.chunked_transfer-1.4.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.chunked_transfer-1.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "chunked_transfer",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.core-foundation-sys-0.8.4.bazel b/wasm_bindgen/3rdparty/crates/BUILD.core-foundation-sys-0.8.4.bazel
index df3f771..fd07e3a 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.core-foundation-sys-0.8.4.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.core-foundation-sys-0.8.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "core_foundation_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.crc32fast-1.3.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.crc32fast-1.3.2.bazel
index 3483829..fd536a5 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.crc32fast-1.3.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.crc32fast-1.3.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "crc32fast",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "crc32fast_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "crc32fast_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":crc32fast_build_script",
+    actual = ":crc32fast_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-channel-0.5.8.bazel b/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-channel-0.5.8.bazel
index b8582b9..b158275 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-channel-0.5.8.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-channel-0.5.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "crossbeam_channel",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-deque-0.8.3.bazel b/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-deque-0.8.3.bazel
index 2b05ea1..81b5623 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-deque-0.8.3.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-deque-0.8.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "crossbeam_deque",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-epoch-0.9.15.bazel b/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-epoch-0.9.15.bazel
index b92622a..d74aac2 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-epoch-0.9.15.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-epoch-0.9.15.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "crossbeam_epoch",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -89,8 +93,11 @@
 )
 
 cargo_build_script(
-    name = "crossbeam-epoch_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "crossbeam-epoch_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "alloc",
         "std",
@@ -99,6 +106,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -128,6 +136,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":crossbeam-epoch_build_script",
+    actual = ":crossbeam-epoch_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-utils-0.8.16.bazel b/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-utils-0.8.16.bazel
index d3b845c..e695f12 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-utils-0.8.16.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.crossbeam-utils-0.8.16.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "crossbeam_utils",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "crossbeam-utils_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "crossbeam-utils_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":crossbeam-utils_build_script",
+    actual = ":crossbeam-utils_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.diff-0.1.13.bazel b/wasm_bindgen/3rdparty/crates/BUILD.diff-0.1.13.bazel
index c23f8b4..184a62c 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.diff-0.1.13.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.diff-0.1.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "diff",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.difference-2.0.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.difference-2.0.0.bazel
index 3a2026e..b7b15cb 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.difference-2.0.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.difference-2.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "difference",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.difflib-0.4.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.difflib-0.4.0.bazel
index eb0dd01..69facfc 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.difflib-0.4.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.difflib-0.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "difflib",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.doc-comment-0.3.3.bazel b/wasm_bindgen/3rdparty/crates/BUILD.doc-comment-0.3.3.bazel
index 9504338..31d9db5 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.doc-comment-0.3.3.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.doc-comment-0.3.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "doc_comment",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "doc-comment_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "doc-comment_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":doc-comment_build_script",
+    actual = ":doc-comment_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.docopt-1.1.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.docopt-1.1.1.bazel
index eac7945..8d0619b 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.docopt-1.1.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.docopt-1.1.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "docopt",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.either-1.8.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.either-1.8.1.bazel
index b4ad0b9..af3fa42 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.either-1.8.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.either-1.8.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "either",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.env_logger-0.8.4.bazel b/wasm_bindgen/3rdparty/crates/BUILD.env_logger-0.8.4.bazel
index 95bd644..1a40c96 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.env_logger-0.8.4.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.env_logger-0.8.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "env_logger",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.equivalent-1.0.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.equivalent-1.0.1.bazel
index eaf8a31..598c90f 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.equivalent-1.0.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.equivalent-1.0.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "equivalent",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.errno-0.3.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.errno-0.3.1.bazel
index 3da87e2..143f5d7 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.errno-0.3.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.errno-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "errno",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
index f1917dd..62c0aad 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.errno-dragonfly-0.1.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "errno_dragonfly",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -82,12 +86,16 @@
 )
 
 cargo_build_script(
-    name = "errno-dragonfly_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "errno-dragonfly_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -117,6 +125,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":errno-dragonfly_build_script",
+    actual = ":errno-dragonfly_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.fallible-iterator-0.2.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.fallible-iterator-0.2.0.bazel
index 65ce32f..91260eb 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.fallible-iterator-0.2.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.fallible-iterator-0.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fallible_iterator",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.fastrand-1.9.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.fastrand-1.9.0.bazel
index 8b97fb1..b86d856 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.fastrand-1.9.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.fastrand-1.9.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "fastrand",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.filetime-0.2.21.bazel b/wasm_bindgen/3rdparty/crates/BUILD.filetime-0.2.21.bazel
index f7ddf41..e13ea10 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.filetime-0.2.21.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.filetime-0.2.21.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "filetime",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.flate2-1.0.28.bazel b/wasm_bindgen/3rdparty/crates/BUILD.flate2-1.0.28.bazel
index f2bc4c6..087e66e 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.flate2-1.0.28.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.flate2-1.0.28.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "flate2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.float-cmp-0.8.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.float-cmp-0.8.0.bazel
index 64e903a..3debf7e 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.float-cmp-0.8.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.float-cmp-0.8.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "float_cmp",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.form_urlencoded-1.2.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.form_urlencoded-1.2.0.bazel
index 829c803..d00af16 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.form_urlencoded-1.2.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.form_urlencoded-1.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "form_urlencoded",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.getrandom-0.2.10.bazel b/wasm_bindgen/3rdparty/crates/BUILD.getrandom-0.2.10.bazel
index bd45e93..18e5d29 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.getrandom-0.2.10.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.getrandom-0.2.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "getrandom",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.gimli-0.26.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.gimli-0.26.2.bazel
index b3e0fac..7ddbc52 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.gimli-0.26.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.gimli-0.26.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "gimli",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.hashbrown-0.12.3.bazel b/wasm_bindgen/3rdparty/crates/BUILD.hashbrown-0.12.3.bazel
index acef98b..cb911b1 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.hashbrown-0.12.3.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.hashbrown-0.12.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hashbrown",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.hashbrown-0.14.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.hashbrown-0.14.0.bazel
index 30afa43..6fe2a38 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.hashbrown-0.14.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.hashbrown-0.14.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hashbrown",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.heck-0.3.3.bazel b/wasm_bindgen/3rdparty/crates/BUILD.heck-0.3.3.bazel
index b14725b..81eaef6 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.heck-0.3.3.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.heck-0.3.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "heck",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.hermit-abi-0.1.19.bazel b/wasm_bindgen/3rdparty/crates/BUILD.hermit-abi-0.1.19.bazel
index 9619e9a..1871244 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.hermit-abi-0.1.19.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.hermit-abi-0.1.19.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.hermit-abi-0.3.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.hermit-abi-0.3.2.bazel
index 83510d2..e7182f4 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.hermit-abi-0.3.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.hermit-abi-0.3.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "hermit_abi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.httparse-1.8.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.httparse-1.8.0.bazel
index 8e77a87..0f5e9b8 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.httparse-1.8.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.httparse-1.8.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "httparse",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "httparse_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "httparse_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":httparse_build_script",
+    actual = ":httparse_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.httpdate-1.0.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.httpdate-1.0.2.bazel
index 88a597a..a009c64 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.httpdate-1.0.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.httpdate-1.0.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "httpdate",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.humantime-2.1.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.humantime-2.1.0.bazel
index 636ce1a..7d74fc0 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.humantime-2.1.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.humantime-2.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "humantime",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.iana-time-zone-0.1.57.bazel b/wasm_bindgen/3rdparty/crates/BUILD.iana-time-zone-0.1.57.bazel
index 78ef7f9..de95e95 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.iana-time-zone-0.1.57.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.iana-time-zone-0.1.57.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "iana_time_zone",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -107,11 +111,11 @@
         ],
         "@rules_rust//rust/platform:wasm32-unknown-unknown": [
             "@rules_rust_wasm_bindgen__js-sys-0.3.64//:js_sys",  # cfg(target_arch = "wasm32")
-            "@rules_rust_wasm_bindgen__wasm-bindgen-0.2.89//:wasm_bindgen",  # cfg(target_arch = "wasm32")
+            "@rules_rust_wasm_bindgen__wasm-bindgen-0.2.91//:wasm_bindgen",  # cfg(target_arch = "wasm32")
         ],
         "@rules_rust//rust/platform:wasm32-wasi": [
             "@rules_rust_wasm_bindgen__js-sys-0.3.64//:js_sys",  # cfg(target_arch = "wasm32")
-            "@rules_rust_wasm_bindgen__wasm-bindgen-0.2.89//:wasm_bindgen",  # cfg(target_arch = "wasm32")
+            "@rules_rust_wasm_bindgen__wasm-bindgen-0.2.91//:wasm_bindgen",  # cfg(target_arch = "wasm32")
         ],
         "@rules_rust//rust/platform:x86_64-apple-darwin": [
             "@rules_rust_wasm_bindgen__core-foundation-sys-0.8.4//:core_foundation_sys",  # cfg(any(target_os = "macos", target_os = "ios"))
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.iana-time-zone-haiku-0.1.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.iana-time-zone-haiku-0.1.2.bazel
index 88a3456..85fdcb5 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.iana-time-zone-haiku-0.1.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.iana-time-zone-haiku-0.1.2.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "iana_time_zone_haiku",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "iana-time-zone-haiku_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "iana-time-zone-haiku_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -116,6 +124,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":iana-time-zone-haiku_build_script",
+    actual = ":iana-time-zone-haiku_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.id-arena-2.2.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.id-arena-2.2.1.bazel
index b1e4d49..a563aaf 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.id-arena-2.2.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.id-arena-2.2.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "id_arena",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.idna-0.4.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.idna-0.4.0.bazel
index 7c86645..8dce373 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.idna-0.4.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.idna-0.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "idna",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.indexmap-1.9.3.bazel b/wasm_bindgen/3rdparty/crates/BUILD.indexmap-1.9.3.bazel
index 0ef81da..a6d48aa 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.indexmap-1.9.3.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.indexmap-1.9.3.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "indexmap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -82,12 +86,16 @@
 )
 
 cargo_build_script(
-    name = "indexmap_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "indexmap_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -117,6 +125,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":indexmap_build_script",
+    actual = ":indexmap_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.indexmap-2.0.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.indexmap-2.0.0.bazel
index d108c3a..7110c00 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.indexmap-2.0.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.indexmap-2.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "indexmap",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.instant-0.1.12.bazel b/wasm_bindgen/3rdparty/crates/BUILD.instant-0.1.12.bazel
index 6cd2cef..d8fb031 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.instant-0.1.12.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.instant-0.1.12.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "instant",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel b/wasm_bindgen/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
index 2abd161..eb03277 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.io-lifetimes-1.0.11.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "io_lifetimes",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -191,8 +195,11 @@
 )
 
 cargo_build_script(
-    name = "io-lifetimes_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "io-lifetimes_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "close",
         "hermit-abi",
@@ -203,6 +210,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -229,6 +237,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":io-lifetimes_build_script",
+    actual = ":io-lifetimes_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.itertools-0.10.5.bazel b/wasm_bindgen/3rdparty/crates/BUILD.itertools-0.10.5.bazel
index 976e9ab..43ab1da 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.itertools-0.10.5.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.itertools-0.10.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "itertools",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.itoa-1.0.8.bazel b/wasm_bindgen/3rdparty/crates/BUILD.itoa-1.0.8.bazel
index 8fe1e49..22168c8 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.itoa-1.0.8.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.itoa-1.0.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "itoa",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.js-sys-0.3.64.bazel b/wasm_bindgen/3rdparty/crates/BUILD.js-sys-0.3.64.bazel
index fe66792..1672cd1 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.js-sys-0.3.64.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.js-sys-0.3.64.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "js_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -75,6 +79,6 @@
     }),
     version = "0.3.64",
     deps = [
-        "@rules_rust_wasm_bindgen__wasm-bindgen-0.2.89//:wasm_bindgen",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-0.2.91//:wasm_bindgen",
     ],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
index d2f4e8d..3f146d2 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.lazy_static-1.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "lazy_static",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.leb128-0.2.5.bazel b/wasm_bindgen/3rdparty/crates/BUILD.leb128-0.2.5.bazel
index 2d24372..05b0e09 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.leb128-0.2.5.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.leb128-0.2.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "leb128",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.libc-0.2.150.bazel b/wasm_bindgen/3rdparty/crates/BUILD.libc-0.2.150.bazel
index 17ef4b9..1311c81 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.libc-0.2.150.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.libc-0.2.150.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "libc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -233,8 +237,11 @@
 )
 
 cargo_build_script(
-    name = "libc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "libc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = select({
         "@rules_rust//rust/platform:aarch64-apple-darwin": [
             "default",  # aarch64-apple-darwin
@@ -391,6 +398,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -417,6 +425,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":libc_build_script",
+    actual = ":libc_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel b/wasm_bindgen/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
index 09b5c27..c0d22a2 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.linux-raw-sys-0.3.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "linux_raw_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.log-0.4.19.bazel b/wasm_bindgen/3rdparty/crates/BUILD.log-0.4.19.bazel
index b520176..28068d3 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.log-0.4.19.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.log-0.4.19.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "log",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.memchr-2.5.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.memchr-2.5.0.bazel
index 3983065..42a16a1 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.memchr-2.5.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.memchr-2.5.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "memchr",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "memchr_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "memchr_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -97,6 +104,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -123,6 +131,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":memchr_build_script",
+    actual = ":memchr_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.memoffset-0.9.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.memoffset-0.9.0.bazel
index c84ecc5..cb45a9b 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.memoffset-0.9.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.memoffset-0.9.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "memoffset",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -84,8 +88,11 @@
 )
 
 cargo_build_script(
-    name = "memoffset_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "memoffset_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
     ],
@@ -93,6 +100,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":memoffset_build_script",
+    actual = ":memoffset_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.mime-0.3.17.bazel b/wasm_bindgen/3rdparty/crates/BUILD.mime-0.3.17.bazel
index 0ecbc60..10fb1c0 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.mime-0.3.17.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.mime-0.3.17.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "mime",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.mime_guess-2.0.4.bazel b/wasm_bindgen/3rdparty/crates/BUILD.mime_guess-2.0.4.bazel
index 9fd6ac5..ea13cc9 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.mime_guess-2.0.4.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.mime_guess-2.0.4.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "mime_guess",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -87,8 +91,11 @@
 )
 
 cargo_build_script(
-    name = "mime_guess_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "mime_guess_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "rev-mappings",
@@ -97,6 +104,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -126,6 +134,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":mime_guess_build_script",
+    actual = ":mime_guess_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.miniz_oxide-0.7.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.miniz_oxide-0.7.1.bazel
index 1c34642..54640e2 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.miniz_oxide-0.7.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.miniz_oxide-0.7.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "miniz_oxide",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.multipart-0.18.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.multipart-0.18.0.bazel
index 67506a7..7725016 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.multipart-0.18.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.multipart-0.18.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "multipart",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.normalize-line-endings-0.3.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.normalize-line-endings-0.3.0.bazel
index f55e06b..c4c1af5 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.normalize-line-endings-0.3.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.normalize-line-endings-0.3.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "normalize_line_endings",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.num-traits-0.2.15.bazel b/wasm_bindgen/3rdparty/crates/BUILD.num-traits-0.2.15.bazel
index 3de8690..0a705fe 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.num-traits-0.2.15.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.num-traits-0.2.15.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "num_traits",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "num-traits_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "num-traits_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -116,6 +124,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":num-traits_build_script",
+    actual = ":num-traits_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.num_cpus-1.16.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.num_cpus-1.16.0.bazel
index 37cc111..974d72b 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.num_cpus-1.16.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.num_cpus-1.16.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_cpus",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.num_threads-0.1.6.bazel b/wasm_bindgen/3rdparty/crates/BUILD.num_threads-0.1.6.bazel
index f959dab..1643769 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.num_threads-0.1.6.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.num_threads-0.1.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "num_threads",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.once_cell-1.18.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
index fc991ee..67be20a 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.once_cell-1.18.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "once_cell",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.percent-encoding-2.3.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.percent-encoding-2.3.0.bazel
index 9d1f769..0dcb46f 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.percent-encoding-2.3.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.percent-encoding-2.3.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "percent_encoding",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.ppv-lite86-0.2.17.bazel b/wasm_bindgen/3rdparty/crates/BUILD.ppv-lite86-0.2.17.bazel
index cb8a359..0306af8 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.ppv-lite86-0.2.17.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.ppv-lite86-0.2.17.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ppv_lite86",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.predicates-1.0.8.bazel b/wasm_bindgen/3rdparty/crates/BUILD.predicates-1.0.8.bazel
index 020f301..f46685f 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.predicates-1.0.8.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.predicates-1.0.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "predicates",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.predicates-2.1.5.bazel b/wasm_bindgen/3rdparty/crates/BUILD.predicates-2.1.5.bazel
index 298910a..306afa7 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.predicates-2.1.5.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.predicates-2.1.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "predicates",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.predicates-core-1.0.6.bazel b/wasm_bindgen/3rdparty/crates/BUILD.predicates-core-1.0.6.bazel
index ecb0d0a..95dad50 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.predicates-core-1.0.6.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.predicates-core-1.0.6.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "predicates_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.predicates-tree-1.0.9.bazel b/wasm_bindgen/3rdparty/crates/BUILD.predicates-tree-1.0.9.bazel
index 0d8090b..fa3c716 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.predicates-tree-1.0.9.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.predicates-tree-1.0.9.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "predicates_tree",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.proc-macro2-1.0.64.bazel b/wasm_bindgen/3rdparty/crates/BUILD.proc-macro2-1.0.64.bazel
index ed2c1c7..c1b268c 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.proc-macro2-1.0.64.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.proc-macro2-1.0.64.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -87,8 +91,11 @@
 )
 
 cargo_build_script(
-    name = "proc-macro2_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "proc-macro2_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -97,6 +104,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -123,6 +131,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":proc-macro2_build_script",
+    actual = ":proc-macro2_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.quick-error-1.2.3.bazel b/wasm_bindgen/3rdparty/crates/BUILD.quick-error-1.2.3.bazel
index 2e4e990..41ae55f 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.quick-error-1.2.3.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.quick-error-1.2.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "quick_error",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.quote-1.0.29.bazel b/wasm_bindgen/3rdparty/crates/BUILD.quote-1.0.29.bazel
index 8c98dc4..0515e87 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.quote-1.0.29.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.quote-1.0.29.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "quote",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -86,8 +90,11 @@
 )
 
 cargo_build_script(
-    name = "quote_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "quote_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "proc-macro",
@@ -96,6 +103,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -122,6 +130,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":quote_build_script",
+    actual = ":quote_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.rand-0.8.5.bazel b/wasm_bindgen/3rdparty/crates/BUILD.rand-0.8.5.bazel
index 77a9b1d..c16d508 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.rand-0.8.5.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.rand-0.8.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.rand_chacha-0.3.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.rand_chacha-0.3.1.bazel
index d39b465..6e220e4 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.rand_chacha-0.3.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.rand_chacha-0.3.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand_chacha",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.rand_core-0.6.4.bazel b/wasm_bindgen/3rdparty/crates/BUILD.rand_core-0.6.4.bazel
index c3218c9..3f45d83 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.rand_core-0.6.4.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.rand_core-0.6.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rand_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.rayon-1.7.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.rayon-1.7.0.bazel
index f993daa..bd8fa57 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.rayon-1.7.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.rayon-1.7.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rayon",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.rayon-core-1.11.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.rayon-core-1.11.0.bazel
index c69008c..008ab2f 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.rayon-core-1.11.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.rayon-core-1.11.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "rayon_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,12 +89,16 @@
 )
 
 cargo_build_script(
-    name = "rayon-core_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rayon-core_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -118,6 +126,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rayon-core_build_script",
+    actual = ":rayon-core_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.redox_syscall-0.2.16.bazel b/wasm_bindgen/3rdparty/crates/BUILD.redox_syscall-0.2.16.bazel
index bb6411d..366d852 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.redox_syscall-0.2.16.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.redox_syscall-0.2.16.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syscall",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.redox_syscall-0.3.5.bazel b/wasm_bindgen/3rdparty/crates/BUILD.redox_syscall-0.3.5.bazel
index 2034b7f..b4582df 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.redox_syscall-0.3.5.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.redox_syscall-0.3.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syscall",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.regex-1.9.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.regex-1.9.1.bazel
index 8d3e2aa..29321f2 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.regex-1.9.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.regex-1.9.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.regex-automata-0.1.10.bazel b/wasm_bindgen/3rdparty/crates/BUILD.regex-automata-0.1.10.bazel
index c1e2fdc..9d2bc80 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.regex-automata-0.1.10.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.regex-automata-0.1.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex_automata",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.regex-automata-0.3.3.bazel b/wasm_bindgen/3rdparty/crates/BUILD.regex-automata-0.3.3.bazel
index 6df37f0..882cdd9 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.regex-automata-0.3.3.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.regex-automata-0.3.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex_automata",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.regex-syntax-0.7.4.bazel b/wasm_bindgen/3rdparty/crates/BUILD.regex-syntax-0.7.4.bazel
index 53ae987..0935633 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.regex-syntax-0.7.4.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.regex-syntax-0.7.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "regex_syntax",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.ring-0.17.5.bazel b/wasm_bindgen/3rdparty/crates/BUILD.ring-0.17.5.bazel
index c190f11..3cacf73 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.ring-0.17.5.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.ring-0.17.5.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "ring",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -174,8 +178,11 @@
 )
 
 cargo_build_script(
-    name = "ring_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "ring_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "alloc",
         "default",
@@ -185,6 +192,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -215,6 +223,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":ring_build_script",
+    actual = ":ring_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.rouille-3.6.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.rouille-3.6.2.bazel
index 7992131..c5ec45c 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.rouille-3.6.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.rouille-3.6.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rouille",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.rustc-demangle-0.1.23.bazel b/wasm_bindgen/3rdparty/crates/BUILD.rustc-demangle-0.1.23.bazel
index 4768222..b2d23df 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.rustc-demangle-0.1.23.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.rustc-demangle-0.1.23.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "rustc_demangle",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.rustix-0.37.23.bazel b/wasm_bindgen/3rdparty/crates/BUILD.rustix-0.37.23.bazel
index dfbc660..1a2a30c 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.rustix-0.37.23.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.rustix-0.37.23.bazel
@@ -13,7 +13,10 @@
 
 rust_library(
     name = "rustix",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     aliases = select({
         "@rules_rust//rust/platform:aarch64-apple-darwin": {
             "@rules_rust_wasm_bindgen__errno-0.3.1//:errno": "libc_errno",  # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = "linux", any(target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"), all(target_endian = "little", any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64"))))))))
@@ -100,6 +103,7 @@
     }),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -319,8 +323,11 @@
 )
 
 cargo_build_script(
-    name = "rustix_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rustix_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "fs",
@@ -333,6 +340,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -359,6 +367,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rustix_build_script",
+    actual = ":rustix_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.rustls-0.21.8.bazel b/wasm_bindgen/3rdparty/crates/BUILD.rustls-0.21.8.bazel
index 503cc4e..2e64e32 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.rustls-0.21.8.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.rustls-0.21.8.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "rustls",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -91,8 +95,11 @@
 )
 
 cargo_build_script(
-    name = "rustls_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "rustls_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "log",
@@ -103,6 +110,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -132,6 +140,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":rustls_build_script",
+    actual = ":rustls_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.rustls-webpki-0.101.7.bazel b/wasm_bindgen/3rdparty/crates/BUILD.rustls-webpki-0.101.7.bazel
index 54a1090..a67dc39 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.rustls-webpki-0.101.7.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.rustls-webpki-0.101.7.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "webpki",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.ryu-1.0.14.bazel b/wasm_bindgen/3rdparty/crates/BUILD.ryu-1.0.14.bazel
index 70bd606..7a983c3 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.ryu-1.0.14.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.ryu-1.0.14.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ryu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.safemem-0.3.3.bazel b/wasm_bindgen/3rdparty/crates/BUILD.safemem-0.3.3.bazel
index e9a1d9f..cc78e9d 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.safemem-0.3.3.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.safemem-0.3.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "safemem",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.scopeguard-1.1.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.scopeguard-1.1.0.bazel
index 76f59c9..59aeba5 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.scopeguard-1.1.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.scopeguard-1.1.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "scopeguard",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.sct-0.7.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.sct-0.7.1.bazel
index bbaf391..d4c2c74 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.sct-0.7.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.sct-0.7.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "sct",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.semver-1.0.17.bazel b/wasm_bindgen/3rdparty/crates/BUILD.semver-1.0.17.bazel
index d341abc..ce33019 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.semver-1.0.17.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.semver-1.0.17.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "semver",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -85,8 +89,11 @@
 )
 
 cargo_build_script(
-    name = "semver_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "semver_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -95,6 +102,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,6 +129,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":semver_build_script",
+    actual = ":semver_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.serde-1.0.171.bazel b/wasm_bindgen/3rdparty/crates/BUILD.serde-1.0.171.bazel
index 8cbe38b..027c92b 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.serde-1.0.171.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.serde-1.0.171.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -90,8 +94,11 @@
 )
 
 cargo_build_script(
-    name = "serde_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "derive",
@@ -102,6 +109,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -128,6 +136,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":serde_build_script",
+    actual = ":serde_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.serde_derive-1.0.171.bazel b/wasm_bindgen/3rdparty/crates/BUILD.serde_derive-1.0.171.bazel
index d6a0316..f7e7279 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.serde_derive-1.0.171.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.serde_derive-1.0.171.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "serde_derive",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.serde_json-1.0.102.bazel b/wasm_bindgen/3rdparty/crates/BUILD.serde_json-1.0.102.bazel
index 71e8611..f8e6a02 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.serde_json-1.0.102.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.serde_json-1.0.102.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "serde_json",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -88,8 +92,11 @@
 )
 
 cargo_build_script(
-    name = "serde_json_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "serde_json_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "std",
@@ -98,6 +105,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -124,6 +132,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":serde_json_build_script",
+    actual = ":serde_json_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.sha1_smol-1.0.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.sha1_smol-1.0.0.bazel
index d1d5653..129aef8 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.sha1_smol-1.0.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.sha1_smol-1.0.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "sha1_smol",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.spin-0.9.8.bazel b/wasm_bindgen/3rdparty/crates/BUILD.spin-0.9.8.bazel
index e0168cb..0982c59 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.spin-0.9.8.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.spin-0.9.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "spin",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.stable_deref_trait-1.2.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.stable_deref_trait-1.2.0.bazel
index af80f61..38158dc 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.stable_deref_trait-1.2.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.stable_deref_trait-1.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "stable_deref_trait",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.strsim-0.10.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.strsim-0.10.0.bazel
index 33567ed..b29e05e 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.strsim-0.10.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.strsim-0.10.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "strsim",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.syn-1.0.109.bazel b/wasm_bindgen/3rdparty/crates/BUILD.syn-1.0.109.bazel
index 4d1bfb4..f558dbe 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.syn-1.0.109.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.syn-1.0.109.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -94,8 +98,11 @@
 )
 
 cargo_build_script(
-    name = "syn_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "syn_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "clone-impls",
         "default",
@@ -110,6 +117,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -136,6 +144,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":syn_build_script",
+    actual = ":syn_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.syn-2.0.25.bazel b/wasm_bindgen/3rdparty/crates/BUILD.syn-2.0.25.bazel
index c065df5..227d2b4 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.syn-2.0.25.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.syn-2.0.25.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "syn",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.tempfile-3.6.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.tempfile-3.6.0.bazel
index ed1a4c7..5e0b43d 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.tempfile-3.6.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.tempfile-3.6.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "tempfile",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -169,12 +173,16 @@
 )
 
 cargo_build_script(
-    name = "tempfile_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "tempfile_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -204,6 +212,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":tempfile_build_script",
+    actual = ":tempfile_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.termcolor-1.2.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.termcolor-1.2.0.bazel
index 6bd5898..f6e3cbc 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.termcolor-1.2.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.termcolor-1.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "termcolor",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.termtree-0.4.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.termtree-0.4.1.bazel
index df0376d..9e54bd1 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.termtree-0.4.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.termtree-0.4.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "termtree",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.threadpool-1.8.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.threadpool-1.8.1.bazel
index c7c52e3..6a1e4a5 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.threadpool-1.8.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.threadpool-1.8.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "threadpool",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.time-0.3.23.bazel b/wasm_bindgen/3rdparty/crates/BUILD.time-0.3.23.bazel
index 8d81123..886d9af 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.time-0.3.23.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.time-0.3.23.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "time",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.time-core-0.1.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.time-core-0.1.1.bazel
index eaacd0b..de0072a 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.time-core-0.1.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.time-core-0.1.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "time_core",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.tiny_http-0.12.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.tiny_http-0.12.0.bazel
index 21a98d4..670770f 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.tiny_http-0.12.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.tiny_http-0.12.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tiny_http",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.tinyvec-1.6.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.tinyvec-1.6.0.bazel
index 5bee596..daaf8a4 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.tinyvec-1.6.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.tinyvec-1.6.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tinyvec",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.tinyvec_macros-0.1.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.tinyvec_macros-0.1.1.bazel
index 97c4a7d..59d290c 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.tinyvec_macros-0.1.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.tinyvec_macros-0.1.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "tinyvec_macros",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.twoway-0.1.8.bazel b/wasm_bindgen/3rdparty/crates/BUILD.twoway-0.1.8.bazel
index 5cce637..3876f5d 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.twoway-0.1.8.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.twoway-0.1.8.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "twoway",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.unicase-2.6.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.unicase-2.6.0.bazel
index 27aec86..752f6f2 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.unicase-2.6.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.unicase-2.6.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "unicase",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -83,12 +87,16 @@
 )
 
 cargo_build_script(
-    name = "unicase_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "unicase_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -118,6 +126,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":unicase_build_script",
+    actual = ":unicase_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.unicode-bidi-0.3.13.bazel b/wasm_bindgen/3rdparty/crates/BUILD.unicode-bidi-0.3.13.bazel
index 9d696b5..3c5babc 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.unicode-bidi-0.3.13.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.unicode-bidi-0.3.13.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_bidi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.unicode-ident-1.0.10.bazel b/wasm_bindgen/3rdparty/crates/BUILD.unicode-ident-1.0.10.bazel
index 519f057..661ff08 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.unicode-ident-1.0.10.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.unicode-ident-1.0.10.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_ident",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.unicode-normalization-0.1.22.bazel b/wasm_bindgen/3rdparty/crates/BUILD.unicode-normalization-0.1.22.bazel
index d59f7064b..f841571 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.unicode-normalization-0.1.22.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.unicode-normalization-0.1.22.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_normalization",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.unicode-segmentation-1.10.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.unicode-segmentation-1.10.1.bazel
index 1770da0..a00512a 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.unicode-segmentation-1.10.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.unicode-segmentation-1.10.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "unicode_segmentation",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.untrusted-0.9.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.untrusted-0.9.0.bazel
index 26ca2b5..9634d89 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.untrusted-0.9.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.untrusted-0.9.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "untrusted",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.ureq-2.8.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.ureq-2.8.0.bazel
index 2672289..af18230 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.ureq-2.8.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.ureq-2.8.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "ureq",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.url-2.4.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.url-2.4.0.bazel
index 6e9dd83..b7f45fe 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.url-2.4.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.url-2.4.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "url",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.version_check-0.9.4.bazel b/wasm_bindgen/3rdparty/crates/BUILD.version_check-0.9.4.bazel
index f131c70..b870ea0 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.version_check-0.9.4.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.version_check-0.9.4.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "version_check",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wait-timeout-0.2.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wait-timeout-0.2.0.bazel
index 2304e0c..3a0a2ea 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wait-timeout-0.2.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wait-timeout-0.2.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wait_timeout",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.walrus-0.20.3.bazel b/wasm_bindgen/3rdparty/crates/BUILD.walrus-0.20.3.bazel
index fe961b7..11797ac 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.walrus-0.20.3.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.walrus-0.20.3.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "walrus",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.walrus-macro-0.19.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.walrus-macro-0.19.0.bazel
index 8d5a2ee..3c3632f 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.walrus-macro-0.19.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.walrus-macro-0.19.0.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "walrus_macro",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
index 32ec52b..d6d057f 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-0.2.89.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-0.2.91.bazel
similarity index 89%
rename from wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-0.2.89.bazel
rename to wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-0.2.91.bazel
index ffea3d6..b4e5460 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-0.2.89.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-0.2.91.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "wasm_bindgen",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -33,7 +37,7 @@
     crate_root = "src/lib.rs",
     edition = "2018",
     proc_macro_deps = [
-        "@rules_rust_wasm_bindgen__wasm-bindgen-macro-0.2.89//:wasm_bindgen_macro",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-macro-0.2.91//:wasm_bindgen_macro",
     ],
     rustc_flags = [
         "--cap-lints=allow",
@@ -82,16 +86,19 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.2.89",
+    version = "0.2.91",
     deps = [
         "@rules_rust_wasm_bindgen__cfg-if-1.0.0//:cfg_if",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-0.2.89//:build_script_build",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-0.2.91//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "wasm-bindgen_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "wasm-bindgen_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "default",
         "spans",
@@ -101,6 +108,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -121,12 +129,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.2.89",
+    version = "0.2.91",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":wasm-bindgen_build_script",
+    actual = ":wasm-bindgen_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-backend-0.2.89.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-backend-0.2.91.bazel
similarity index 94%
rename from wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-backend-0.2.89.bazel
rename to wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-backend-0.2.91.bazel
index 3c58e1f..f2897a1 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-backend-0.2.89.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-backend-0.2.91.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasm_bindgen_backend",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -76,7 +80,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.2.89",
+    version = "0.2.91",
     deps = [
         "@rules_rust_wasm_bindgen__bumpalo-3.13.0//:bumpalo",
         "@rules_rust_wasm_bindgen__log-0.4.19//:log",
@@ -84,6 +88,6 @@
         "@rules_rust_wasm_bindgen__proc-macro2-1.0.64//:proc_macro2",
         "@rules_rust_wasm_bindgen__quote-1.0.29//:quote",
         "@rules_rust_wasm_bindgen__syn-2.0.25//:syn",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.89//:wasm_bindgen_shared",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91//:wasm_bindgen_shared",
     ],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-cli-support-0.2.89.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-cli-support-0.2.91.bazel
similarity index 89%
rename from wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-cli-support-0.2.89.bazel
rename to wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-cli-support-0.2.91.bazel
index 9dc0c47..b53988b 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-cli-support-0.2.89.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-cli-support-0.2.91.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasm_bindgen_cli_support",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,21 +77,21 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.2.89",
+    version = "0.2.91",
     deps = [
         "@rules_rust_wasm_bindgen__anyhow-1.0.71//:anyhow",
-        "@rules_rust_wasm_bindgen__base64-0.9.3//:base64",
+        "@rules_rust_wasm_bindgen__base64-0.21.5//:base64",
         "@rules_rust_wasm_bindgen__log-0.4.19//:log",
         "@rules_rust_wasm_bindgen__rustc-demangle-0.1.23//:rustc_demangle",
         "@rules_rust_wasm_bindgen__serde_json-1.0.102//:serde_json",
         "@rules_rust_wasm_bindgen__tempfile-3.6.0//:tempfile",
         "@rules_rust_wasm_bindgen__unicode-ident-1.0.10//:unicode_ident",
         "@rules_rust_wasm_bindgen__walrus-0.20.3//:walrus",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-externref-xform-0.2.89//:wasm_bindgen_externref_xform",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-multi-value-xform-0.2.89//:wasm_bindgen_multi_value_xform",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.89//:wasm_bindgen_shared",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-threads-xform-0.2.89//:wasm_bindgen_threads_xform",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-wasm-conventions-0.2.89//:wasm_bindgen_wasm_conventions",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-wasm-interpreter-0.2.89//:wasm_bindgen_wasm_interpreter",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-externref-xform-0.2.91//:wasm_bindgen_externref_xform",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-multi-value-xform-0.2.91//:wasm_bindgen_multi_value_xform",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91//:wasm_bindgen_shared",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-threads-xform-0.2.91//:wasm_bindgen_threads_xform",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-wasm-conventions-0.2.91//:wasm_bindgen_wasm_conventions",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-wasm-interpreter-0.2.91//:wasm_bindgen_wasm_interpreter",
     ],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-externref-xform-0.2.89.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-externref-xform-0.2.91.bazel
similarity index 95%
rename from wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-externref-xform-0.2.89.bazel
rename to wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-externref-xform-0.2.91.bazel
index 8cfd924..2770b54 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-externref-xform-0.2.89.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-externref-xform-0.2.91.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasm_bindgen_externref_xform",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,7 +77,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.2.89",
+    version = "0.2.91",
     deps = [
         "@rules_rust_wasm_bindgen__anyhow-1.0.71//:anyhow",
         "@rules_rust_wasm_bindgen__walrus-0.20.3//:walrus",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-macro-0.2.89.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-macro-0.2.91.bazel
similarity index 94%
rename from wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-macro-0.2.89.bazel
rename to wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-macro-0.2.91.bazel
index bde1a05..298ecd9 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-macro-0.2.89.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-macro-0.2.91.bazel
@@ -12,9 +12,13 @@
 
 rust_proc_macro(
     name = "wasm_bindgen_macro",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -76,9 +80,9 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.2.89",
+    version = "0.2.91",
     deps = [
         "@rules_rust_wasm_bindgen__quote-1.0.29//:quote",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-macro-support-0.2.89//:wasm_bindgen_macro_support",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-macro-support-0.2.91//:wasm_bindgen_macro_support",
     ],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-macro-support-0.2.89.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-macro-support-0.2.91.bazel
similarity index 92%
rename from wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-macro-support-0.2.89.bazel
rename to wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-macro-support-0.2.91.bazel
index abd0822..6f69a3e 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-macro-support-0.2.89.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-macro-support-0.2.91.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasm_bindgen_macro_support",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -76,12 +80,12 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.2.89",
+    version = "0.2.91",
     deps = [
         "@rules_rust_wasm_bindgen__proc-macro2-1.0.64//:proc_macro2",
         "@rules_rust_wasm_bindgen__quote-1.0.29//:quote",
         "@rules_rust_wasm_bindgen__syn-2.0.25//:syn",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-backend-0.2.89//:wasm_bindgen_backend",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.89//:wasm_bindgen_shared",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-backend-0.2.91//:wasm_bindgen_backend",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91//:wasm_bindgen_shared",
     ],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-multi-value-xform-0.2.89.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-multi-value-xform-0.2.91.bazel
similarity index 95%
rename from wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-multi-value-xform-0.2.89.bazel
rename to wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-multi-value-xform-0.2.91.bazel
index dca5f5d..009d925 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-multi-value-xform-0.2.89.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-multi-value-xform-0.2.91.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasm_bindgen_multi_value_xform",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,7 +77,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.2.89",
+    version = "0.2.91",
     deps = [
         "@rules_rust_wasm_bindgen__anyhow-1.0.71//:anyhow",
         "@rules_rust_wasm_bindgen__walrus-0.20.3//:walrus",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-shared-0.2.89.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-shared-0.2.91.bazel
similarity index 90%
rename from wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-shared-0.2.89.bazel
rename to wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-shared-0.2.91.bazel
index 0a9b95f..c83f863 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-shared-0.2.89.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-shared-0.2.91.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "wasm_bindgen_shared",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -74,19 +78,23 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.2.89",
+    version = "0.2.91",
     deps = [
-        "@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.89//:build_script_build",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91//:build_script_build",
     ],
 )
 
 cargo_build_script(
-    name = "wasm-bindgen-shared_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "wasm-bindgen-shared_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -108,12 +116,12 @@
         "noclippy",
         "norustfmt",
     ],
-    version = "0.2.89",
+    version = "0.2.91",
     visibility = ["//visibility:private"],
 )
 
 alias(
     name = "build_script_build",
-    actual = ":wasm-bindgen-shared_build_script",
+    actual = ":wasm-bindgen-shared_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-threads-xform-0.2.89.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-threads-xform-0.2.91.bazel
similarity index 94%
rename from wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-threads-xform-0.2.89.bazel
rename to wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-threads-xform-0.2.91.bazel
index e7be4be..1961a8d 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-threads-xform-0.2.89.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-threads-xform-0.2.91.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasm_bindgen_threads_xform",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,10 +77,10 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.2.89",
+    version = "0.2.91",
     deps = [
         "@rules_rust_wasm_bindgen__anyhow-1.0.71//:anyhow",
         "@rules_rust_wasm_bindgen__walrus-0.20.3//:walrus",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-wasm-conventions-0.2.89//:wasm_bindgen_wasm_conventions",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-wasm-conventions-0.2.91//:wasm_bindgen_wasm_conventions",
     ],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-wasm-conventions-0.2.89.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-wasm-conventions-0.2.91.bazel
similarity index 95%
rename from wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-wasm-conventions-0.2.89.bazel
rename to wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-wasm-conventions-0.2.91.bazel
index 187fd19..0bc9667 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-wasm-conventions-0.2.89.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-wasm-conventions-0.2.91.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasm_bindgen_wasm_conventions",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,7 +77,7 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.2.89",
+    version = "0.2.91",
     deps = [
         "@rules_rust_wasm_bindgen__anyhow-1.0.71//:anyhow",
         "@rules_rust_wasm_bindgen__walrus-0.20.3//:walrus",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-wasm-interpreter-0.2.89.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-wasm-interpreter-0.2.91.bazel
similarity index 94%
rename from wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-wasm-interpreter-0.2.89.bazel
rename to wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-wasm-interpreter-0.2.91.bazel
index 4136e44..9501a88 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-wasm-interpreter-0.2.89.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasm-bindgen-wasm-interpreter-0.2.91.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasm_bindgen_wasm_interpreter",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -73,11 +77,11 @@
         "@rules_rust//rust/platform:x86_64-unknown-none": [],
         "//conditions:default": ["@platforms//:incompatible"],
     }),
-    version = "0.2.89",
+    version = "0.2.91",
     deps = [
         "@rules_rust_wasm_bindgen__anyhow-1.0.71//:anyhow",
         "@rules_rust_wasm_bindgen__log-0.4.19//:log",
         "@rules_rust_wasm_bindgen__walrus-0.20.3//:walrus",
-        "@rules_rust_wasm_bindgen__wasm-bindgen-wasm-conventions-0.2.89//:wasm_bindgen_wasm_conventions",
+        "@rules_rust_wasm_bindgen__wasm-bindgen-wasm-conventions-0.2.91//:wasm_bindgen_wasm_conventions",
     ],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasm-encoder-0.29.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasm-encoder-0.29.0.bazel
index 67bd6d8..99f37f7 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasm-encoder-0.29.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasm-encoder-0.29.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasm_encoder",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasmparser-0.102.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasmparser-0.102.0.bazel
index 2e9214e..855cd65 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasmparser-0.102.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasmparser-0.102.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasmparser",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasmparser-0.108.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasmparser-0.108.0.bazel
index 3448c7d..05ca02e 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasmparser-0.108.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasmparser-0.108.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasmparser",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasmparser-0.80.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasmparser-0.80.2.bazel
index 8053c81..cf9dbd9 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasmparser-0.80.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasmparser-0.80.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasmparser",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.wasmprinter-0.2.60.bazel b/wasm_bindgen/3rdparty/crates/BUILD.wasmprinter-0.2.60.bazel
index df86add..5050d47 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.wasmprinter-0.2.60.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.wasmprinter-0.2.60.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "wasmprinter",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.webpki-roots-0.25.2.bazel b/wasm_bindgen/3rdparty/crates/BUILD.webpki-roots-0.25.2.bazel
index 556a838..b394332 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.webpki-roots-0.25.2.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.webpki-roots-0.25.2.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "webpki_roots",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.winapi-0.3.9.bazel b/wasm_bindgen/3rdparty/crates/BUILD.winapi-0.3.9.bazel
index a32f6f8..2353bd3 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.winapi-0.3.9.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.winapi-0.3.9.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -96,8 +100,11 @@
 )
 
 cargo_build_script(
-    name = "winapi_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "consoleapi",
         "errhandlingapi",
@@ -117,6 +124,7 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -143,6 +151,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi_build_script",
+    actual = ":winapi_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
index 09e22fc..6edbbf9 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_i686_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-i686-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-i686-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-i686-pc-windows-gnu_build_script",
+    actual = ":winapi-i686-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel b/wasm_bindgen/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel
index 5195434..82053fc 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.winapi-util-0.1.5.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "winapi_util",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
index c766155..ed72d3c 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "winapi_x86_64_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "winapi-x86_64-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-x86_64-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":winapi-x86_64-pc-windows-gnu_build_script",
+    actual = ":winapi-x86_64-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.windows-0.48.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.windows-0.48.0.bazel
index 14f8354..62ccda0 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.windows-0.48.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.windows-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
index 23dc702..02ed01b 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.windows-sys-0.48.0.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_sys",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.windows-targets-0.48.1.bazel b/wasm_bindgen/3rdparty/crates/BUILD.windows-targets-0.48.1.bazel
index bf63125..3802932 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.windows-targets-0.48.1.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.windows-targets-0.48.1.bazel
@@ -12,9 +12,13 @@
 
 rust_library(
     name = "windows_targets",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
index 677e2b2..dde202b 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.windows_aarch64_gnullvm-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_gnullvm_build_script",
+    actual = ":windows_aarch64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
index 0a24211..a7b3d8c 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.windows_aarch64_msvc-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_aarch64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_aarch64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_aarch64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_aarch64_msvc_build_script",
+    actual = ":windows_aarch64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
index 1810401..5f1a8f5 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.windows_i686_gnu-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_gnu_build_script",
+    actual = ":windows_i686_gnu_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
index 49e364f..d860c25 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.windows_i686_msvc-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_i686_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_i686_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_i686_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_i686_msvc_build_script",
+    actual = ":windows_i686_msvc_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
index a91c70f..3cb9b84 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.windows_x86_64_gnu-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnu_build_script",
+    actual = ":windows_x86_64_gnu_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
index 025dcdf..21ac598 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.windows_x86_64_gnullvm-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_gnullvm",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_gnullvm_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_gnullvm_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_gnullvm_build_script",
+    actual = ":windows_x86_64_gnullvm_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel b/wasm_bindgen/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
index 985e177..99efee9 100644
--- a/wasm_bindgen/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
+++ b/wasm_bindgen/3rdparty/crates/BUILD.windows_x86_64_msvc-0.48.0.bazel
@@ -13,9 +13,13 @@
 
 rust_library(
     name = "windows_x86_64_msvc",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -81,12 +85,16 @@
 )
 
 cargo_build_script(
-    name = "windows_x86_64_msvc_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "windows_x86_64_msvc_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
             ".tmp_git_root/**/*",
@@ -113,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = ":windows_x86_64_msvc_build_script",
+    actual = ":windows_x86_64_msvc_bs",
     tags = ["manual"],
 )
diff --git a/wasm_bindgen/3rdparty/crates/defs.bzl b/wasm_bindgen/3rdparty/crates/defs.bzl
index ea64f4a..34de883 100644
--- a/wasm_bindgen/3rdparty/crates/defs.bzl
+++ b/wasm_bindgen/3rdparty/crates/defs.bzl
@@ -295,18 +295,18 @@
 _NORMAL_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "anyhow": "@rules_rust_wasm_bindgen__anyhow-1.0.71//:anyhow",
-            "docopt": "@rules_rust_wasm_bindgen__docopt-1.1.1//:docopt",
-            "env_logger": "@rules_rust_wasm_bindgen__env_logger-0.8.4//:env_logger",
-            "log": "@rules_rust_wasm_bindgen__log-0.4.19//:log",
-            "rouille": "@rules_rust_wasm_bindgen__rouille-3.6.2//:rouille",
-            "serde": "@rules_rust_wasm_bindgen__serde-1.0.171//:serde",
-            "serde_json": "@rules_rust_wasm_bindgen__serde_json-1.0.102//:serde_json",
-            "ureq": "@rules_rust_wasm_bindgen__ureq-2.8.0//:ureq",
-            "walrus": "@rules_rust_wasm_bindgen__walrus-0.20.3//:walrus",
-            "wasm-bindgen": "@rules_rust_wasm_bindgen__wasm-bindgen-0.2.89//:wasm_bindgen",
-            "wasm-bindgen-cli-support": "@rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.89//:wasm_bindgen_cli_support",
-            "wasm-bindgen-shared": "@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.89//:wasm_bindgen_shared",
+            "anyhow": Label("@rules_rust_wasm_bindgen__anyhow-1.0.71//:anyhow"),
+            "docopt": Label("@rules_rust_wasm_bindgen__docopt-1.1.1//:docopt"),
+            "env_logger": Label("@rules_rust_wasm_bindgen__env_logger-0.8.4//:env_logger"),
+            "log": Label("@rules_rust_wasm_bindgen__log-0.4.19//:log"),
+            "rouille": Label("@rules_rust_wasm_bindgen__rouille-3.6.2//:rouille"),
+            "serde": Label("@rules_rust_wasm_bindgen__serde-1.0.171//:serde"),
+            "serde_json": Label("@rules_rust_wasm_bindgen__serde_json-1.0.102//:serde_json"),
+            "ureq": Label("@rules_rust_wasm_bindgen__ureq-2.8.0//:ureq"),
+            "walrus": Label("@rules_rust_wasm_bindgen__walrus-0.20.3//:walrus"),
+            "wasm-bindgen": Label("@rules_rust_wasm_bindgen__wasm-bindgen-0.2.91//:wasm_bindgen"),
+            "wasm-bindgen-cli-support": Label("@rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.91//:wasm_bindgen_cli_support"),
+            "wasm-bindgen-shared": Label("@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91//:wasm_bindgen_shared"),
         },
     },
 }
@@ -321,13 +321,13 @@
 _NORMAL_DEV_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "assert_cmd": "@rules_rust_wasm_bindgen__assert_cmd-1.0.8//:assert_cmd",
-            "diff": "@rules_rust_wasm_bindgen__diff-0.1.13//:diff",
-            "predicates": "@rules_rust_wasm_bindgen__predicates-1.0.8//:predicates",
-            "rayon": "@rules_rust_wasm_bindgen__rayon-1.7.0//:rayon",
-            "tempfile": "@rules_rust_wasm_bindgen__tempfile-3.6.0//:tempfile",
-            "wasmparser": "@rules_rust_wasm_bindgen__wasmparser-0.102.0//:wasmparser",
-            "wasmprinter": "@rules_rust_wasm_bindgen__wasmprinter-0.2.60//:wasmprinter",
+            "assert_cmd": Label("@rules_rust_wasm_bindgen__assert_cmd-1.0.8//:assert_cmd"),
+            "diff": Label("@rules_rust_wasm_bindgen__diff-0.1.13//:diff"),
+            "predicates": Label("@rules_rust_wasm_bindgen__predicates-1.0.8//:predicates"),
+            "rayon": Label("@rules_rust_wasm_bindgen__rayon-1.7.0//:rayon"),
+            "tempfile": Label("@rules_rust_wasm_bindgen__tempfile-3.6.0//:tempfile"),
+            "wasmparser": Label("@rules_rust_wasm_bindgen__wasmparser-0.102.0//:wasmparser"),
+            "wasmprinter": Label("@rules_rust_wasm_bindgen__wasmprinter-0.2.60//:wasmprinter"),
         },
     },
 }
@@ -342,7 +342,7 @@
 _PROC_MACRO_DEPENDENCIES = {
     "": {
         _COMMON_CONDITION: {
-            "serde_derive": "@rules_rust_wasm_bindgen__serde_derive-1.0.171//:serde_derive",
+            "serde_derive": Label("@rules_rust_wasm_bindgen__serde_derive-1.0.171//:serde_derive"),
         },
     },
 }
@@ -592,16 +592,6 @@
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__base64-0.9.3",
-        sha256 = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643",
-        type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/base64/0.9.3/download"],
-        strip_prefix = "base64-0.9.3",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.base64-0.9.3.bazel"),
-    )
-
-    maybe(
-        http_archive,
         name = "rules_rust_wasm_bindgen__bitflags-1.3.2",
         sha256 = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a",
         type = "tar.gz",
@@ -652,16 +642,6 @@
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__byteorder-1.4.3",
-        sha256 = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610",
-        type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/byteorder/1.4.3/download"],
-        strip_prefix = "byteorder-1.4.3",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.byteorder-1.4.3.bazel"),
-    )
-
-    maybe(
-        http_archive,
         name = "rules_rust_wasm_bindgen__cc-1.0.83",
         sha256 = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0",
         type = "tar.gz",
@@ -1922,112 +1902,112 @@
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__wasm-bindgen-0.2.89",
-        sha256 = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e",
+        name = "rules_rust_wasm_bindgen__wasm-bindgen-0.2.91",
+        sha256 = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/wasm-bindgen/0.2.89/download"],
-        strip_prefix = "wasm-bindgen-0.2.89",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-0.2.89.bazel"),
+        urls = ["https://crates.io/api/v1/crates/wasm-bindgen/0.2.91/download"],
+        strip_prefix = "wasm-bindgen-0.2.91",
+        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-0.2.91.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__wasm-bindgen-backend-0.2.89",
-        sha256 = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826",
+        name = "rules_rust_wasm_bindgen__wasm-bindgen-backend-0.2.91",
+        sha256 = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-backend/0.2.89/download"],
-        strip_prefix = "wasm-bindgen-backend-0.2.89",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-backend-0.2.89.bazel"),
+        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-backend/0.2.91/download"],
+        strip_prefix = "wasm-bindgen-backend-0.2.91",
+        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-backend-0.2.91.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.89",
-        sha256 = "cf8226e223e2dfbe8f921b7f20b82d1b5d86a6b143e9d6286cca8edd16695583",
+        name = "rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.91",
+        sha256 = "806a045c4ec4ef7c3ad86dc27bcb641b84d9eeb3846200f56d7ab0885241d654",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-cli-support/0.2.89/download"],
-        strip_prefix = "wasm-bindgen-cli-support-0.2.89",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-cli-support-0.2.89.bazel"),
+        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-cli-support/0.2.91/download"],
+        strip_prefix = "wasm-bindgen-cli-support-0.2.91",
+        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-cli-support-0.2.91.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__wasm-bindgen-externref-xform-0.2.89",
-        sha256 = "b8a719be856d8b0802c7195ca26ee6eb02cb9639a12b80be32db960ce9640cb8",
+        name = "rules_rust_wasm_bindgen__wasm-bindgen-externref-xform-0.2.91",
+        sha256 = "12b6ac5fca1d0992d2328147488169ea166bfe899c88f8ad06cf583f4c492fcf",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-externref-xform/0.2.89/download"],
-        strip_prefix = "wasm-bindgen-externref-xform-0.2.89",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-externref-xform-0.2.89.bazel"),
+        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-externref-xform/0.2.91/download"],
+        strip_prefix = "wasm-bindgen-externref-xform-0.2.91",
+        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-externref-xform-0.2.91.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__wasm-bindgen-macro-0.2.89",
-        sha256 = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2",
+        name = "rules_rust_wasm_bindgen__wasm-bindgen-macro-0.2.91",
+        sha256 = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-macro/0.2.89/download"],
-        strip_prefix = "wasm-bindgen-macro-0.2.89",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-macro-0.2.89.bazel"),
+        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-macro/0.2.91/download"],
+        strip_prefix = "wasm-bindgen-macro-0.2.91",
+        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-macro-0.2.91.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__wasm-bindgen-macro-support-0.2.89",
-        sha256 = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283",
+        name = "rules_rust_wasm_bindgen__wasm-bindgen-macro-support-0.2.91",
+        sha256 = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-macro-support/0.2.89/download"],
-        strip_prefix = "wasm-bindgen-macro-support-0.2.89",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-macro-support-0.2.89.bazel"),
+        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-macro-support/0.2.91/download"],
+        strip_prefix = "wasm-bindgen-macro-support-0.2.91",
+        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-macro-support-0.2.91.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__wasm-bindgen-multi-value-xform-0.2.89",
-        sha256 = "a12766255d4b9026700376cc81894eeb62903e4414cbc94675f6f9babd9cfb76",
+        name = "rules_rust_wasm_bindgen__wasm-bindgen-multi-value-xform-0.2.91",
+        sha256 = "d1e019acde479e2f090fb7f14a51fa0077ec3a7bb12a56e0e888a82be7b5bd3f",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-multi-value-xform/0.2.89/download"],
-        strip_prefix = "wasm-bindgen-multi-value-xform-0.2.89",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-multi-value-xform-0.2.89.bazel"),
+        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-multi-value-xform/0.2.91/download"],
+        strip_prefix = "wasm-bindgen-multi-value-xform-0.2.91",
+        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-multi-value-xform-0.2.91.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.89",
-        sha256 = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f",
+        name = "rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91",
+        sha256 = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-shared/0.2.89/download"],
-        strip_prefix = "wasm-bindgen-shared-0.2.89",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-shared-0.2.89.bazel"),
+        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-shared/0.2.91/download"],
+        strip_prefix = "wasm-bindgen-shared-0.2.91",
+        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-shared-0.2.91.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__wasm-bindgen-threads-xform-0.2.89",
-        sha256 = "13c2b14c5b9c2c7aa9dd1eb7161857de9783f40e98582e7f41f2d7c04ffdc155",
+        name = "rules_rust_wasm_bindgen__wasm-bindgen-threads-xform-0.2.91",
+        sha256 = "90a2e577034352f9aa9352730fcf2562c68957f2e9b9ee70ab6379510e49e2fe",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-threads-xform/0.2.89/download"],
-        strip_prefix = "wasm-bindgen-threads-xform-0.2.89",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-threads-xform-0.2.89.bazel"),
+        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-threads-xform/0.2.91/download"],
+        strip_prefix = "wasm-bindgen-threads-xform-0.2.91",
+        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-threads-xform-0.2.91.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__wasm-bindgen-wasm-conventions-0.2.89",
-        sha256 = "aaedf88769cb23c6fd2e3bfed65bcbff6c5d92c8336afbd80d2dfcc8eb5cf047",
+        name = "rules_rust_wasm_bindgen__wasm-bindgen-wasm-conventions-0.2.91",
+        sha256 = "4e6b653f6820409609bda0f176e6949302307af7a7b9479cd4d4b1bdc31eb9cd",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-wasm-conventions/0.2.89/download"],
-        strip_prefix = "wasm-bindgen-wasm-conventions-0.2.89",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-wasm-conventions-0.2.89.bazel"),
+        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-wasm-conventions/0.2.91/download"],
+        strip_prefix = "wasm-bindgen-wasm-conventions-0.2.91",
+        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-wasm-conventions-0.2.91.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "rules_rust_wasm_bindgen__wasm-bindgen-wasm-interpreter-0.2.89",
-        sha256 = "a8a79039df1e0822e6d66508ec86052993deac201e26060f62abcd85e1daf951",
+        name = "rules_rust_wasm_bindgen__wasm-bindgen-wasm-interpreter-0.2.91",
+        sha256 = "682940195a701dbf887f20017418b8cac916a37b3f91ededec33226619e973c1",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-wasm-interpreter/0.2.89/download"],
-        strip_prefix = "wasm-bindgen-wasm-interpreter-0.2.89",
-        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-wasm-interpreter-0.2.89.bazel"),
+        urls = ["https://crates.io/api/v1/crates/wasm-bindgen-wasm-interpreter/0.2.91/download"],
+        strip_prefix = "wasm-bindgen-wasm-interpreter-0.2.91",
+        build_file = Label("@rules_rust//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-wasm-interpreter-0.2.91.bazel"),
     )
 
     maybe(
@@ -2241,9 +2221,9 @@
         struct(repo = "rules_rust_wasm_bindgen__serde_json-1.0.102", is_dev_dep = False),
         struct(repo = "rules_rust_wasm_bindgen__ureq-2.8.0", is_dev_dep = False),
         struct(repo = "rules_rust_wasm_bindgen__walrus-0.20.3", is_dev_dep = False),
-        struct(repo = "rules_rust_wasm_bindgen__wasm-bindgen-0.2.89", is_dev_dep = False),
-        struct(repo = "rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.89", is_dev_dep = False),
-        struct(repo = "rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.89", is_dev_dep = False),
+        struct(repo = "rules_rust_wasm_bindgen__wasm-bindgen-0.2.91", is_dev_dep = False),
+        struct(repo = "rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.91", is_dev_dep = False),
+        struct(repo = "rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91", is_dev_dep = False),
         struct(repo = "rules_rust_wasm_bindgen__assert_cmd-1.0.8", is_dev_dep = True),
         struct(repo = "rules_rust_wasm_bindgen__diff-0.1.13", is_dev_dep = True),
         struct(repo = "rules_rust_wasm_bindgen__predicates-1.0.8", is_dev_dep = True),
diff --git a/wasm_bindgen/repositories.bzl b/wasm_bindgen/repositories.bzl
index 0fadd91..5e05b8f 100644
--- a/wasm_bindgen/repositories.bzl
+++ b/wasm_bindgen/repositories.bzl
@@ -18,7 +18,7 @@
 load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
 load("//wasm_bindgen/3rdparty/crates:defs.bzl", "crate_repositories")
 
-WASM_BINDGEN_VERSION = "0.2.89"
+WASM_BINDGEN_VERSION = "0.2.91"
 
 # buildifier: disable=unnamed-macro
 def rust_wasm_bindgen_dependencies():
@@ -37,7 +37,7 @@
     maybe(
         http_archive,
         name = "rules_rust_wasm_bindgen_cli",
-        sha256 = "539d7d1fd32b3dd6810cfd099d6ca8a91e567c5ecd14c9b7387856ab871f5c0d",
+        sha256 = "80b674e1bda34888e132276ba600676cea158bdcd289bb7da5c25885f1a3a535",
         urls = ["https://crates.io/api/v1/crates/wasm-bindgen-cli/{}/download".format(WASM_BINDGEN_VERSION)],
         type = "tar.gz",
         strip_prefix = "wasm-bindgen-cli-{}".format(WASM_BINDGEN_VERSION),