From c505e57173cd71a9de599b2cbffd17ec7d8e7f64 Mon Sep 17 00:00:00 2001 From: Profpatsch Date: Thu, 24 Dec 2020 02:58:08 +0100 Subject: [PATCH] tree-sitter: patch out web-ui by default, to drop emscripten MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The tree-sitter build closure is pretty lean by default, but the optional web-ui requires emscripten to compile the web interface javascript/wasm code. This is clearly not worth the increase in build closure size, and since emscripten is broken more often than not, let’s patch it out by default. If somebody /really/ needs the web-ui, there is a `webUISupport` flag. --- .../tools/parsing/tree-sitter/default.nix | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/pkgs/development/tools/parsing/tree-sitter/default.nix b/pkgs/development/tools/parsing/tree-sitter/default.nix index 37811943a6d..57c12cce93e 100644 --- a/pkgs/development/tools/parsing/tree-sitter/default.nix +++ b/pkgs/development/tools/parsing/tree-sitter/default.nix @@ -2,10 +2,12 @@ , fetchgit, fetchFromGitHub, fetchurl , writeShellScript, runCommand, which , rustPlatform, jq, nix-prefetch-git, xe, curl, emscripten +, Security , callPackage + , enableShared ? true , enableStatic ? false -, Security +, webUISupport ? false }: # TODO: move to carnix or https://github.com/kolloch/crate2nix @@ -54,20 +56,25 @@ in rustPlatform.buildRustPackage { pname = "tree-sitter"; inherit src version cargoSha256; - buildInputs = lib.optionals stdenv.isDarwin [ Security ]; + buildInputs = + lib.optionals stdenv.isDarwin [ Security ]; + nativeBuildInputs = + [ which ] + ++ lib.optionals webUISupport [ emscripten ]; - nativeBuildInputs = [ emscripten which ]; - - postPatch = '' - # needed for the tests - rm -rf test/fixtures/grammars - ln -s ${grammars} test/fixtures/grammars + postPatch = lib.optionalString (!webUISupport) '' + # remove web interface + sed -e '/pub mod web_ui/d' \ + -i cli/src/lib.rs + sed -e 's/web_ui,//' \ + -e 's/web_ui::serve(¤t_dir.*$/println!("ERROR: web-ui is not available in this nixpkgs build; enable the webUISupport"); std::process::exit(1);/' \ + -i cli/src/main.rs ''; # Compile web assembly with emscripten. The --debug flag prevents us from # minifying the JavaScript; passing it allows us to side-step more Node # JS dependencies for installation. - preBuild = '' + preBuild = lib.optionalString webUISupport '' bash ./script/build-wasm --debug '';