fetch and compile tree-sitter grammars in helix-term build

This restores much of the behavior that existed before this PR:
helix will build the grammars when compiling. The difference is that
now fetching is also done during the build phase and is done much
more quickly - both shallow and in parallel.
This commit is contained in:
Michael Davis 2022-02-21 06:39:23 -06:00 committed by Blaž Hrastnik
parent 6fcab90d16
commit b157c5a8a4
5 changed files with 17 additions and 35 deletions

View File

@ -77,27 +77,14 @@ jobs:
path: target path: target
key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- name: Copy minimal languages config
run: cp .github/workflows/languages.toml ./languages.toml
- name: Cache test tree-sitter grammar - name: Cache test tree-sitter grammar
uses: actions/cache@v2.1.7 uses: actions/cache@v2.1.7
with: with:
path: runtime/grammars path: runtime/grammars
key: ${{ runner.os }}-v2-tree-sitter-grammars-${{ hashFiles('**/Cargo.lock') }} key: ${{ runner.os }}-v2-tree-sitter-grammars-${{ hashFiles('languages.toml') }}
- run: cp .github/workflows/languages.toml ./languages.toml
- name: Download test tree-sitter grammar
uses: actions-rs/cargo@v1
with:
use-cross: ${{ matrix.cross }}
command: run
args: -- --fetch-grammars
- name: Build test tree-sitter grammar
uses: actions-rs/cargo@v1
with:
use-cross: ${{ matrix.cross }}
command: run
args: -- --build-grammars
- name: Run cargo test - name: Run cargo test
uses: actions-rs/cargo@v1 uses: actions-rs/cargo@v1

View File

@ -62,20 +62,6 @@ jobs:
target: ${{ matrix.target }} target: ${{ matrix.target }}
override: true override: true
- name: Fetch tree-sitter grammars
uses: actions-rs/cargo@v1
with:
use-cross: ${{ matrix.cross }}
command: run
args: --release --locked --target ${{ matrix.target }} -- --fetch-grammars
- name: Build tree-sitter grammars
uses: actions-rs/cargo@v1
with:
use-cross: ${{ matrix.cross }}
command: run
args: --release --locked --target ${{ matrix.target }} -- --build-grammars
- name: Run cargo test - name: Run cargo test
uses: actions-rs/cargo@v1 uses: actions-rs/cargo@v1
with: with:

View File

@ -35,6 +35,8 @@
overrides = { overrides = {
crateOverrides = common: _: rec { crateOverrides = common: _: rec {
helix-term = prev: { helix-term = prev: {
# disable fetching and building of tree-sitter grammars in the helix-term build.rs
HELIX_DISABLE_AUTO_GRAMMAR_BUILD = "1";
buildInputs = (prev.buildInputs or [ ]) ++ [ common.cCompiler.cc.lib ]; buildInputs = (prev.buildInputs or [ ]) ++ [ common.cCompiler.cc.lib ];
nativeBuildInputs = (prev.nativeBuildInputs or [ ]) ++ [ common.pkgs.makeWrapper ]; nativeBuildInputs = (prev.nativeBuildInputs or [ ]) ++ [ common.pkgs.makeWrapper ];
preConfigure = '' preConfigure = ''

View File

@ -67,9 +67,8 @@ grep-searcher = "0.1.8"
# Remove once retain_mut lands in stable rust # Remove once retain_mut lands in stable rust
retain_mut = "0.1.7" retain_mut = "0.1.7"
# compiling grammars
cc = { version = "1" }
threadpool = { version = "1.0" }
[target.'cfg(not(windows))'.dependencies] # https://github.com/vorner/signal-hook/issues/100 [target.'cfg(not(windows))'.dependencies] # https://github.com/vorner/signal-hook/issues/100
signal-hook-tokio = { version = "0.3", features = ["futures-v0_3"] } signal-hook-tokio = { version = "0.3", features = ["futures-v0_3"] }
[build-dependencies]
helix-loader = { version = "0.6", path = "../helix-loader" }

View File

@ -1,3 +1,4 @@
use helix_loader::grammar::{build_grammars, fetch_grammars};
use std::borrow::Cow; use std::borrow::Cow;
use std::process::Command; use std::process::Command;
@ -14,5 +15,12 @@ fn main() {
None => env!("CARGO_PKG_VERSION").into(), None => env!("CARGO_PKG_VERSION").into(),
}; };
if std::env::var("HELIX_DISABLE_AUTO_GRAMMAR_BUILD").is_err() {
fetch_grammars().expect("Failed to fetch tree-sitter grammars");
build_grammars().expect("Failed to compile tree-sitter grammars");
}
println!("cargo:rerun-if-changed=../runtime/grammars/");
println!("cargo:rustc-env=VERSION_AND_GIT_HASH={}", version); println!("cargo:rustc-env=VERSION_AND_GIT_HASH={}", version);
} }