Test cases when melc is not available $ cat > dune-project < (lang dune 3.8) > (using melange 0.1) > EOF $ cat > main_melange.ml < let () = > print_endline "hello from melange" > EOF Set up some fake environment without melc $ mkdir _path $ ln -s $(command -v dune) _path/ $ ln -s $(command -v ocamlc) _path/ $ ln -s $(command -v ocamldep) _path/ For melange.emit stanzas, an error is shown $ cat > dune < (melange.emit > (target output) > (emit_stdlib false) > (modules main_melange) > (alias mel)) > EOF $ (unset INSIDE_DUNE; PATH=_path dune build --always-show-command-line --root . @mel 2>&1 | grep Program) Error: Program melc not found in the tree or in PATH For libraries, if no melange.emit stanza is found, build does not fail $ cat > dune < (library > (name lib1) > (modules :standard \ main_native) > (modes byte melange)) > (executable > (name main_native) > (modules main_native) > (modes exe byte) > (libraries lib1)) > EOF $ cat > main_native.ml < let () = > print_endline Lib1.Lib.t > EOF $ cat > lib.ml < let t = "hello from native" > EOF $ (unset INSIDE_DUNE; PATH=_path dune build --always-show-command-line --root . main_native.bc) $ dune exec ./main_native.bc hello from native If melange.emit stanza is found, but no rules are executed, build does not fail $ cat > dune < (library > (name lib1) > (modules :standard \ main_native main_melange) > (modes byte melange)) > (executable > (name main_native) > (modules main_native) > (modes exe byte) > (libraries lib1)) > (melange.emit > (target output) > (emit_stdlib false) > (modules main_melange) > (libraries lib1)) > EOF $ (unset INSIDE_DUNE; PATH=_path dune build --always-show-command-line --root . main_native.bc) $ dune exec ./main_native.bc hello from native But trying to build any melange artifacts will fail $ (unset INSIDE_DUNE; PATH=_path dune build --always-show-command-line --root . output/main_melange.js) File ".lib1.objs/melange/_unknown_", line 1, characters 0-0: Error: Program melc not found in the tree or in PATH (context: default) Hint: opam install melange [1]