mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-03 22:02:51 +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.
41 lines
920 B
Bash
Executable File
41 lines
920 B
Bash
Executable File
#!/bin/sh
|
|
|
|
# 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
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT="$(git rev-parse --show-toplevel)"
|
|
cd "$ROOT/utils/tree_sitter"
|
|
|
|
tree-sitter generate --no-bindings
|
|
|
|
mkdir -p "$ROOT/.helix"
|
|
|
|
cat > "$ROOT/.helix/languages.toml" << EOF
|
|
use-grammars = { only = ["carbon"] }
|
|
|
|
[[language]]
|
|
name = "carbon"
|
|
scope = "source.carbon"
|
|
file-types = ["carbon"]
|
|
comment-token = "//"
|
|
indent = { tab-width = 2, unit = " " }
|
|
roots = [".git"]
|
|
|
|
[[grammar]]
|
|
name = "carbon"
|
|
source = { path = "$PWD" }
|
|
EOF
|
|
|
|
mkdir -p ~/.config/helix/runtime/grammars ~/.config/helix/runtime/queries
|
|
ln -sTf $PWD/queries ~/.config/helix/runtime/queries/carbon
|
|
hx --grammar build
|
|
|
|
echo
|
|
hx --health carbon
|
|
echo
|
|
echo 'use `hx path/to/foo.carbon` to open files'
|
|
echo 'Try different themes with :theme'
|