diff options
author | Pascal Kuthe | 2023-04-14 14:59:52 +0000 |
---|---|---|
committer | GitHub | 2023-04-14 14:59:52 +0000 |
commit | 896404c7ead29c4c19564581ccb53b913440a583 (patch) | |
tree | b2035b5999375cc4596f685e31ec27327f9356a8 /helix-loader/src | |
parent | 78e8066c3e2e53711473ec5f11b0808ca7a94994 (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.rs | 12 |
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")?; |