tree-sitter: patch out web-ui by default, to drop emscripten

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.
This commit is contained in:
Profpatsch 2020-12-24 02:58:08 +01:00
parent fb875dcf6f
commit c505e57173

View file

@ -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(&current_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
'';