diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a4b3d145..922ba512 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,6 @@ on: env: CARGO_TERM_COLOR: always CARGO_INCREMENTAL: 0 - EMSCRIPTEN_VERSION: 2.0.11 jobs: tests: @@ -35,6 +34,10 @@ jobs: run: | echo PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH" >> $GITHUB_ENV + - name: Read Emscripten version + run: | + printf 'EMSCRIPTEN_VERSION=%s\n' "$(cat emscripten-version)" >> $GITHUB_ENV + - name: Cache artifacts id: cache uses: actions/cache@v2 diff --git a/cli/build.rs b/cli/build.rs index 322d239b..29017e11 100644 --- a/cli/build.rs +++ b/cli/build.rs @@ -9,6 +9,12 @@ fn main() { if wasm_files_present() { println!("cargo:rustc-cfg={}", "TREE_SITTER_EMBED_WASM_BINDING"); } + + let emscripten_version = fs::read_to_string("../emscripten-version").unwrap(); + println!( + "cargo:rustc-env={}={}", + "EMSCRIPTEN_VERSION", emscripten_version + ); } fn wasm_files_present() -> bool { diff --git a/cli/src/wasm.rs b/cli/src/wasm.rs index c93eb246..9689245d 100644 --- a/cli/src/wasm.rs +++ b/cli/src/wasm.rs @@ -6,6 +6,8 @@ use std::path::Path; use std::process::Command; use which::which; +const EMSCRIPTEN_TAG: &'static str = concat!("emscripten/emsdk:", env!("EMSCRIPTEN_VERSION")); + pub fn get_grammar_name(src_dir: &Path) -> Result { let grammar_json_path = src_dir.join("grammar.json"); let grammar_json = fs::read_to_string(&grammar_json_path) @@ -61,7 +63,7 @@ pub fn compile_language_to_wasm(language_dir: &Path, force_docker: bool) -> Resu } // Run `emcc` in a container using the `emscripten-slim` image - command.args(&["emscripten/emsdk:2.0.11", "emcc"]); + command.args(&[EMSCRIPTEN_TAG, "emcc"]); } else { return Err(anyhow!( "You must have either emcc or docker on your PATH to run this command" diff --git a/emscripten-version b/emscripten-version new file mode 100644 index 00000000..da37822f --- /dev/null +++ b/emscripten-version @@ -0,0 +1 @@ +2.0.11 \ No newline at end of file diff --git a/script/build-wasm b/script/build-wasm index d33dd4b5..201d0b50 100755 --- a/script/build-wasm +++ b/script/build-wasm @@ -33,6 +33,7 @@ web_dir=lib/binding_web emscripten_flags="-O3" minify_js=1 force_docker=0 +emscripen_version=$(cat "$(dirname "$0")"/../emscripten-version) while [[ $# > 0 ]]; do case "$1" in @@ -63,11 +64,11 @@ emcc= if which emcc > /dev/null && [[ "$force_docker" == "0" ]]; then emcc=emcc elif which docker > /dev/null; then - emcc="docker run \ - --rm \ - -v $(pwd):/src:Z \ - -u $(id -u) \ - emscripten/emsdk:2.0.11 \ + emcc="docker run \ + --rm \ + -v $(pwd):/src:Z \ + -u $(id -u) \ + emscripten/emsdk:$emscripen_version \ emcc" else echo 'You must have either `docker` or `emcc` on your PATH to run this script' diff --git a/script/fetch-emscripten b/script/fetch-emscripten index e2817ad8..157d0cae 100755 --- a/script/fetch-emscripten +++ b/script/fetch-emscripten @@ -2,7 +2,7 @@ set -e -EMSCRIPTEN_VERSION=2.0.11 +EMSCRIPTEN_VERSION=$(cat "$(dirname "$0")/../emscripten-version") mkdir -p target EMSDK_DIR="./target/emsdk"