Bazel: workaround rules_rust generation weirdness

This commit is contained in:
Paolo Tranquilli
2025-02-10 17:52:21 +01:00
parent 5f171b67ec
commit c0eaff6fa1
5 changed files with 99 additions and 78 deletions

16
misc/bazel/3rdparty/patch_defs.py vendored Normal file
View File

@@ -0,0 +1,16 @@
import sys
import re
import pathlib
label_re = re.compile(r'"@vendor//:(.+)-([\d.]+)"')
file = pathlib.Path(sys.argv[1])
temp = file.with_suffix(f'{file.suffix}.tmp')
with open(file) as input, open(temp, "w") as output:
for line in input:
line = label_re.sub(lambda m: f'"@vendor__{m[1]}-{m[2]}//:{m[1].replace("-", "_")}"', line)
output.write(line)
temp.rename(file)

20
misc/bazel/3rdparty/py_deps/defs.bzl generated vendored
View File

@@ -295,19 +295,19 @@ def aliases(
_NORMAL_DEPENDENCIES = {
"python/extractor/tsg-python": {
_COMMON_CONDITION: {
"anyhow": Label("@vendor//:anyhow-1.0.44"),
"clap": Label("@vendor//:clap-2.33.3"),
"regex": Label("@vendor//:regex-1.5.5"),
"smallvec": Label("@vendor//:smallvec-1.6.1"),
"string-interner": Label("@vendor//:string-interner-0.12.2"),
"thiserror": Label("@vendor//:thiserror-1.0.29"),
"tree-sitter": Label("@vendor//:tree-sitter-0.20.4"),
"tree-sitter-graph": Label("@vendor//:tree-sitter-graph-0.7.0"),
"anyhow": Label("@vendor__anyhow-1.0.44//:anyhow"),
"clap": Label("@vendor__clap-2.33.3//:clap"),
"regex": Label("@vendor__regex-1.5.5//:regex"),
"smallvec": Label("@vendor__smallvec-1.6.1//:smallvec"),
"string-interner": Label("@vendor__string-interner-0.12.2//:string_interner"),
"thiserror": Label("@vendor__thiserror-1.0.29//:thiserror"),
"tree-sitter": Label("@vendor__tree-sitter-0.20.4//:tree_sitter"),
"tree-sitter-graph": Label("@vendor__tree-sitter-graph-0.7.0//:tree_sitter_graph"),
},
},
"python/extractor/tsg-python/tsp": {
_COMMON_CONDITION: {
"tree-sitter": Label("@vendor//:tree-sitter-0.20.4"),
"tree-sitter": Label("@vendor__tree-sitter-0.20.4//:tree_sitter"),
},
},
}
@@ -370,7 +370,7 @@ _BUILD_DEPENDENCIES = {
},
"python/extractor/tsg-python/tsp": {
_COMMON_CONDITION: {
"cc": Label("@vendor//:cc-1.0.70"),
"cc": Label("@vendor__cc-1.0.70//:cc"),
},
},
}

View File

@@ -296,88 +296,88 @@ def aliases(
_NORMAL_DEPENDENCIES = {
"ruby/extractor": {
_COMMON_CONDITION: {
"clap": Label("@vendor//:clap-4.5.26"),
"encoding": Label("@vendor//:encoding-0.2.33"),
"lazy_static": Label("@vendor//:lazy_static-1.5.0"),
"rayon": Label("@vendor//:rayon-1.10.0"),
"regex": Label("@vendor//:regex-1.11.1"),
"tracing": Label("@vendor//:tracing-0.1.41"),
"tracing-subscriber": Label("@vendor//:tracing-subscriber-0.3.19"),
"tree-sitter": Label("@vendor//:tree-sitter-0.24.6"),
"tree-sitter-embedded-template": Label("@vendor//:tree-sitter-embedded-template-0.23.2"),
"tree-sitter-ruby": Label("@vendor//:tree-sitter-ruby-0.23.1"),
"clap": Label("@vendor__clap-4.5.26//:clap"),
"encoding": Label("@vendor__encoding-0.2.33//:encoding"),
"lazy_static": Label("@vendor__lazy_static-1.5.0//:lazy_static"),
"rayon": Label("@vendor__rayon-1.10.0//:rayon"),
"regex": Label("@vendor__regex-1.11.1//:regex"),
"tracing": Label("@vendor__tracing-0.1.41//:tracing"),
"tracing-subscriber": Label("@vendor__tracing-subscriber-0.3.19//:tracing_subscriber"),
"tree-sitter": Label("@vendor__tree-sitter-0.24.6//:tree_sitter"),
"tree-sitter-embedded-template": Label("@vendor__tree-sitter-embedded-template-0.23.2//:tree_sitter_embedded_template"),
"tree-sitter-ruby": Label("@vendor__tree-sitter-ruby-0.23.1//:tree_sitter_ruby"),
},
},
"rust/ast-generator": {
_COMMON_CONDITION: {
"anyhow": Label("@vendor//:anyhow-1.0.95"),
"either": Label("@vendor//:either-1.13.0"),
"itertools": Label("@vendor//:itertools-0.14.0"),
"mustache": Label("@vendor//:mustache-0.9.0"),
"proc-macro2": Label("@vendor//:proc-macro2-1.0.93"),
"quote": Label("@vendor//:quote-1.0.38"),
"serde": Label("@vendor//:serde-1.0.217"),
"stdx": Label("@vendor//:ra_ap_stdx-0.0.258"),
"ungrammar": Label("@vendor//:ungrammar-1.16.1"),
"anyhow": Label("@vendor__anyhow-1.0.95//:anyhow"),
"either": Label("@vendor__either-1.13.0//:either"),
"itertools": Label("@vendor__itertools-0.14.0//:itertools"),
"mustache": Label("@vendor__mustache-0.9.0//:mustache"),
"proc-macro2": Label("@vendor__proc-macro2-1.0.93//:proc_macro2"),
"quote": Label("@vendor__quote-1.0.38//:quote"),
"serde": Label("@vendor__serde-1.0.217//:serde"),
"stdx": Label("@vendor__ra_ap_stdx-0.0.258//:ra_ap_stdx"),
"ungrammar": Label("@vendor__ungrammar-1.16.1//:ungrammar"),
},
},
"rust/autobuild": {
},
"rust/extractor": {
_COMMON_CONDITION: {
"anyhow": Label("@vendor//:anyhow-1.0.95"),
"argfile": Label("@vendor//:argfile-0.2.1"),
"chrono": Label("@vendor//:chrono-0.4.39"),
"clap": Label("@vendor//:clap-4.5.26"),
"dunce": Label("@vendor//:dunce-1.0.5"),
"figment": Label("@vendor//:figment-0.10.19"),
"glob": Label("@vendor//:glob-0.3.2"),
"itertools": Label("@vendor//:itertools-0.14.0"),
"log": Label("@vendor//:log-0.4.22"),
"num-traits": Label("@vendor//:num-traits-0.2.19"),
"ra_ap_base_db": Label("@vendor//:ra_ap_base_db-0.0.258"),
"ra_ap_cfg": Label("@vendor//:ra_ap_cfg-0.0.258"),
"ra_ap_hir": Label("@vendor//:ra_ap_hir-0.0.258"),
"ra_ap_hir_def": Label("@vendor//:ra_ap_hir_def-0.0.258"),
"ra_ap_hir_expand": Label("@vendor//:ra_ap_hir_expand-0.0.258"),
"ra_ap_ide_db": Label("@vendor//:ra_ap_ide_db-0.0.258"),
"ra_ap_intern": Label("@vendor//:ra_ap_intern-0.0.258"),
"ra_ap_load-cargo": Label("@vendor//:ra_ap_load-cargo-0.0.258"),
"ra_ap_parser": Label("@vendor//:ra_ap_parser-0.0.258"),
"ra_ap_paths": Label("@vendor//:ra_ap_paths-0.0.258"),
"ra_ap_project_model": Label("@vendor//:ra_ap_project_model-0.0.258"),
"ra_ap_span": Label("@vendor//:ra_ap_span-0.0.258"),
"ra_ap_syntax": Label("@vendor//:ra_ap_syntax-0.0.258"),
"ra_ap_vfs": Label("@vendor//:ra_ap_vfs-0.0.258"),
"serde": Label("@vendor//:serde-1.0.217"),
"serde_json": Label("@vendor//:serde_json-1.0.135"),
"serde_with": Label("@vendor//:serde_with-3.12.0"),
"stderrlog": Label("@vendor//:stderrlog-0.6.0"),
"toml": Label("@vendor//:toml-0.8.19"),
"triomphe": Label("@vendor//:triomphe-0.1.14"),
"anyhow": Label("@vendor__anyhow-1.0.95//:anyhow"),
"argfile": Label("@vendor__argfile-0.2.1//:argfile"),
"chrono": Label("@vendor__chrono-0.4.39//:chrono"),
"clap": Label("@vendor__clap-4.5.26//:clap"),
"dunce": Label("@vendor__dunce-1.0.5//:dunce"),
"figment": Label("@vendor__figment-0.10.19//:figment"),
"glob": Label("@vendor__glob-0.3.2//:glob"),
"itertools": Label("@vendor__itertools-0.14.0//:itertools"),
"log": Label("@vendor__log-0.4.22//:log"),
"num-traits": Label("@vendor__num-traits-0.2.19//:num_traits"),
"ra_ap_base_db": Label("@vendor__ra_ap_base_db-0.0.258//:ra_ap_base_db"),
"ra_ap_cfg": Label("@vendor__ra_ap_cfg-0.0.258//:ra_ap_cfg"),
"ra_ap_hir": Label("@vendor__ra_ap_hir-0.0.258//:ra_ap_hir"),
"ra_ap_hir_def": Label("@vendor__ra_ap_hir_def-0.0.258//:ra_ap_hir_def"),
"ra_ap_hir_expand": Label("@vendor__ra_ap_hir_expand-0.0.258//:ra_ap_hir_expand"),
"ra_ap_ide_db": Label("@vendor__ra_ap_ide_db-0.0.258//:ra_ap_ide_db"),
"ra_ap_intern": Label("@vendor__ra_ap_intern-0.0.258//:ra_ap_intern"),
"ra_ap_load-cargo": Label("@vendor__ra_ap_load-cargo-0.0.258//:ra_ap_load_cargo"),
"ra_ap_parser": Label("@vendor__ra_ap_parser-0.0.258//:ra_ap_parser"),
"ra_ap_paths": Label("@vendor__ra_ap_paths-0.0.258//:ra_ap_paths"),
"ra_ap_project_model": Label("@vendor__ra_ap_project_model-0.0.258//:ra_ap_project_model"),
"ra_ap_span": Label("@vendor__ra_ap_span-0.0.258//:ra_ap_span"),
"ra_ap_syntax": Label("@vendor__ra_ap_syntax-0.0.258//:ra_ap_syntax"),
"ra_ap_vfs": Label("@vendor__ra_ap_vfs-0.0.258//:ra_ap_vfs"),
"serde": Label("@vendor__serde-1.0.217//:serde"),
"serde_json": Label("@vendor__serde_json-1.0.135//:serde_json"),
"serde_with": Label("@vendor__serde_with-3.12.0//:serde_with"),
"stderrlog": Label("@vendor__stderrlog-0.6.0//:stderrlog"),
"toml": Label("@vendor__toml-0.8.19//:toml"),
"triomphe": Label("@vendor__triomphe-0.1.14//:triomphe"),
},
},
"rust/extractor/macros": {
_COMMON_CONDITION: {
"quote": Label("@vendor//:quote-1.0.38"),
"syn": Label("@vendor//:syn-2.0.96"),
"quote": Label("@vendor__quote-1.0.38//:quote"),
"syn": Label("@vendor__syn-2.0.96//:syn"),
},
},
"shared/tree-sitter-extractor": {
_COMMON_CONDITION: {
"chrono": Label("@vendor//:chrono-0.4.39"),
"encoding": Label("@vendor//:encoding-0.2.33"),
"flate2": Label("@vendor//:flate2-1.0.35"),
"globset": Label("@vendor//:globset-0.4.15"),
"lazy_static": Label("@vendor//:lazy_static-1.5.0"),
"num_cpus": Label("@vendor//:num_cpus-1.16.0"),
"rayon": Label("@vendor//:rayon-1.10.0"),
"regex": Label("@vendor//:regex-1.11.1"),
"serde": Label("@vendor//:serde-1.0.217"),
"serde_json": Label("@vendor//:serde_json-1.0.135"),
"tracing": Label("@vendor//:tracing-0.1.41"),
"tracing-subscriber": Label("@vendor//:tracing-subscriber-0.3.19"),
"tree-sitter": Label("@vendor//:tree-sitter-0.24.6"),
"chrono": Label("@vendor__chrono-0.4.39//:chrono"),
"encoding": Label("@vendor__encoding-0.2.33//:encoding"),
"flate2": Label("@vendor__flate2-1.0.35//:flate2"),
"globset": Label("@vendor__globset-0.4.15//:globset"),
"lazy_static": Label("@vendor__lazy_static-1.5.0//:lazy_static"),
"num_cpus": Label("@vendor__num_cpus-1.16.0//:num_cpus"),
"rayon": Label("@vendor__rayon-1.10.0//:rayon"),
"regex": Label("@vendor__regex-1.11.1//:regex"),
"serde": Label("@vendor__serde-1.0.217//:serde"),
"serde_json": Label("@vendor__serde_json-1.0.135//:serde_json"),
"tracing": Label("@vendor__tracing-0.1.41//:tracing"),
"tracing-subscriber": Label("@vendor__tracing-subscriber-0.3.19//:tracing_subscriber"),
"tree-sitter": Label("@vendor__tree-sitter-0.24.6//:tree_sitter"),
},
},
}
@@ -389,7 +389,7 @@ _NORMAL_ALIASES = {
},
"rust/ast-generator": {
_COMMON_CONDITION: {
Label("@vendor//:ra_ap_stdx-0.0.258"): "stdx",
Label("@vendor__ra_ap_stdx-0.0.258//:ra_ap_stdx"): "stdx",
},
},
"rust/autobuild": {
@@ -421,9 +421,9 @@ _NORMAL_DEV_DEPENDENCIES = {
},
"shared/tree-sitter-extractor": {
_COMMON_CONDITION: {
"rand": Label("@vendor//:rand-0.8.5"),
"tree-sitter-json": Label("@vendor//:tree-sitter-json-0.24.8"),
"tree-sitter-ql": Label("@vendor//:tree-sitter-ql-0.23.1"),
"rand": Label("@vendor__rand-0.8.5//:rand"),
"tree-sitter-json": Label("@vendor__tree-sitter-json-0.24.8//:tree_sitter_json"),
"tree-sitter-ql": Label("@vendor__tree-sitter-ql-0.23.1//:tree_sitter_ql"),
},
},
}

View File

@@ -6,4 +6,6 @@ WORKSPACE_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )/../../.." &> /dev/nu
cd "$WORKSPACE_DIR"
time bazel run //misc/bazel/3rdparty:vendor_py_deps
# no idea why this is necessary, see https://github.com/bazelbuild/rules_rust/issues/3255
python3 "$WORKSPACE_DIR/misc/bazel/3rdparty/patch_defs.py" misc/bazel/3rdparty/py_deps/defs.bzl
bazel mod tidy

View File

@@ -10,4 +10,7 @@ time bazel run //misc/bazel/3rdparty:vendor_tree_sitter_extractors
# we need access to this file in the rust extractor
echo 'exports_files(["rust.ungram"])' >> misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-?.*.bazel
# no idea why this is necessary, see https://github.com/bazelbuild/rules_rust/issues/3255
python3 "$WORKSPACE_DIR/misc/bazel/3rdparty/patch_defs.py" misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl
bazel mod tidy