Open
Description
To be fair this issue is visible because the rule wasn't written properly. There was no need for a with-stdout-to
. But I suppose it can happen in other condition and the lack of details in the error message is really confusing.
Expected Behavior
dune should report exactly which action/command is creating an error.
~/Code/github/dune-demo/dune-empty-stdout-error$ cat dune
(rule (target f.json) (action (with-stdout-to %{target} (copy sub/file.json f.json))))
~/Code/github/dune-demo/dune-empty-stdout-error$ dune build
Error: open(_build/default/f.json): Permission denied
(rule (target f.json) (action (with-stdout-to %{target} (copy sub/file.json f.json))))
^^^^^^^^^^^^^^^^^^^^^^^^^^^
-> required by _build/default/f.json
-> required by alias all
-> required by alias default
Actual Behavior
The error message makes it hard to pinpoint exactly what rule and part of a rule is creating an error.
~/Code/github/dune-demo/dune-empty-stdout-error$ cat dune
(rule (target f.json) (action (with-stdout-to %{target} (copy sub/file.json f.json))))
~/Code/github/dune-demo/dune-empty-stdout-error$ dune build
Error: open(_build/default/f.json): Permission denied
-> required by _build/default/f.json
-> required by alias all
-> required by alias default
Here it's not clear if it's with-stdout-to
or copy
which fails (I'm guessing on copy but 🤷)
Reproduction
https://github.com/Khady/dune-demo/tree/master/dune-empty-stdout-error
Specifications
- Version of
dune
(output ofdune --version
): 3.17 - Version of
ocaml
(output ofocamlc --version
): 5.2 - Operating system (distribution and version): debian