aboutsummaryrefslogtreecommitdiff
path: root/helix-loader/src
diff options
context:
space:
mode:
authorPascal Kuthe2023-04-14 14:59:52 +0000
committerGitHub2023-04-14 14:59:52 +0000
commit896404c7ead29c4c19564581ccb53b913440a583 (patch)
treeb2035b5999375cc4596f685e31ec27327f9356a8 /helix-loader/src
parent78e8066c3e2e53711473ec5f11b0808ca7a94994 (diff)
emit cargo metadata duiring build scripts to avoid outdated buildscript outputs (#6743)
* rebuild on revision change * rerun grammar build if grammars change
Diffstat (limited to 'helix-loader/src')
-rw-r--r--helix-loader/src/grammar.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/helix-loader/src/grammar.rs b/helix-loader/src/grammar.rs
index a85cb274..2eb59a38 100644
--- a/helix-loader/src/grammar.rs
+++ b/helix-loader/src/grammar.rs
@@ -413,6 +413,18 @@ fn build_tree_sitter_library(
let mut library_path = parser_lib_path.join(&grammar.grammar_id);
library_path.set_extension(DYLIB_EXTENSION);
+ // if we are running inside a buildscript emit cargo metadata
+ // to detect if we are running from a buildscript check some env variables
+ // that cargo only sets for build scripts
+ if std::env::var("OUT_DIR").is_ok() && std::env::var("CARGO").is_ok() {
+ if let Some(scanner_path) = scanner_path.as_ref().and_then(|path| path.to_str()) {
+ println!("cargo:rerun-if-changed={scanner_path}");
+ }
+ if let Some(parser_path) = parser_path.to_str() {
+ println!("cargo:rerun-if-changed={parser_path}");
+ }
+ }
+
let recompile = needs_recompile(&library_path, &parser_path, &scanner_path)
.context("Failed to compare source and binary timestamps")?;