mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 20:30:14 +01:00
The WORKSPACE file is deprecated; support is already off by default, and it'll be removed in the next major bazel release. Our main dependency is tree-sitter, and I'm trying to address that here. We're currently using https://github.com/elliottt/rules_tree_sitter, but that hasn't been updated in a couple years, meaning it lacks MODULE.bazel support. In the registry, there's https://registry.bazel.build/modules/tree-sitter-bazel, but this is only the *parser* libraries of tree-sitter, not the *generator*. I'm using it for that much, at least. For the *generator*, which transforms grammar.js to parser.c/h, I'm just requiring a non-hermetic invocation (i.e., people who want to work on it will need to install tree-sitter; see the README.md updates). I tried running it manually, but parser.c is about 600 KB; pre-commit rejects files that large and I don't think an exception makes sense to override for this (it'd probably also grow substantially if the grammar were updated to cover more syntax). In order to make the non-hermetic call not break "bazel build //..." for most developers, I'm marking most targets in the package as manual. Note, I did look long and hard at using `aspect_rules_js`/`rules_nodejs` to invoke npm. This took a lot of time, and I have a commit that's mostly working, except I hit a point where it uses `declare_symlink` which we disallow for compatibility reasons (commit "Lots of work for figuring out rule_js uses declare_symlink" on the PR). As a consequence, I think we can't use the primary supported ways to have hermetic npm calls. Also, `treesitter` -> `tree_sitter` because it's generally called `tree-sitter`, two words. We even had a `treesitter/src/tree_sitter` directory so it's a bit inconsistent. As far as bugs here, the parser library breaks bazel queries, e.g. the error: ``` ERROR: Evaluation of query "somepath(//..., @llvm-project//third-party/unittest:gtest)" failed: preloading transitive closure failed: no such package '@@[unknown repo 'platforms' requested from @@tree-sitter-bazel+]//': The repository '@@[unknown repo 'platforms' requested from @@tree-sitter-bazel+]' could not be resolved: No repository visible as '@platforms' from repository '@@tree-sitter-bazel+' ``` I'm just excluding tree_sitter from queries where I can to work around the error.
46 lines
937 B
Plaintext
46 lines
937 B
Plaintext
# Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
|
# Exceptions. See /LICENSE for license information.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
# Directories and symlinks generated by bazel.
|
|
/bazel-*
|
|
|
|
# See github_tools/MODULE.bazel.
|
|
/github_tools/bazel-*
|
|
/github_tools/MODULE.bazel.lock
|
|
|
|
# Directories created by python.
|
|
**/__pycache__/
|
|
|
|
# Ignore the user's VSCode settings and debug setup.
|
|
/.vscode/settings.json
|
|
/.vscode/launch.json
|
|
|
|
# Ignore the user's Idea settings.
|
|
/.idea/
|
|
|
|
# Directories created by clangd
|
|
/.cache/clangd
|
|
|
|
# User-specific Bazel configuration.
|
|
/user.bazelrc
|
|
|
|
# Compilation database used by clangd
|
|
/compile_commands.json
|
|
|
|
# Emacs temporary files
|
|
*~
|
|
\#*\#
|
|
|
|
# vim temporary files
|
|
.*.sw[a-p]
|
|
|
|
# generated by utils/tree_sitter/helix.sh
|
|
/.helix/
|
|
|
|
# Ignore .DS_Store files
|
|
.DS_Store
|
|
|
|
# Ignore the .gdb_history that's created next to the project-specific .gdbinit
|
|
.gdb_history
|