Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dune crashes with a promote into rule #3069

Closed
tcoopman opened this issue Feb 1, 2020 · 3 comments · Fixed by #3073 or ocaml/opam-repository#15795
Closed

Dune crashes with a promote into rule #3069

tcoopman opened this issue Feb 1, 2020 · 3 comments · Fixed by #3073 or ocaml/opam-repository#15795

Comments

@tcoopman
Copy link

tcoopman commented Feb 1, 2020

Dune version: 2.1.3

Given this rule:

(rule
    (targets Shared__Message_j.ml Shared__Message_j.mli)
    (deps (:atd-file Shared__Message.atd))
    (action  (run atdgen -j -j-std %{atd-file}))
    (mode (promote (into shared)))
    )

when I run the rule: esy b dune build atd, dune crashes:

Error: exception Sys_error("atd/shared/Shared__Message_j.ml: No such file or directory")
Backtrace:
Raised by primitive operation at file "stdlib.ml", line 324, characters 29-55
Called from file "src/stdune/io.ml", line 184, characters 8-126
Re-raised at file "src/stdune/io.ml", line 189, characters 8-23
Called from file "src/dune/artifact_substitution.ml", line 383, characters 15-48
Called from file "src/fiber/fiber.ml", line 229, characters 16-19
Called from file "src/dune/build_system.ml", line 1637, characters 8-1023
Called from file "src/fiber/fiber.ml", line 114, characters 10-15
Re-raised at file "src/stdune/exn.ml" (inlined), line 37, characters 27-56
Called from file "src/stdune/exn_with_backtrace.ml", line 13, characters 33-71
Called from file "src/fiber/fiber.ml", line 85, characters 10-17
Re-raised at file "src/stdune/exn.ml" (inlined), line 37, characters 27-56
Called from file "src/stdune/exn_with_backtrace.ml", line 13, characters 33-71
Called from file "src/fiber/fiber.ml", line 85, characters 10-17
Re-raised at file "src/stdune/exn.ml" (inlined), line 37, characters 27-56
Called from file "src/stdune/exn_with_backtrace.ml", line 13, characters 33-71
Called from file "src/fiber/fiber.ml", line 85, characters 10-17
Re-raised at file "src/stdune/exn.ml" (inlined), line 37, characters 27-56
Called from file "src/stdune/exn_with_backtrace.ml", line 13, characters 33-71
Called from file "src/fiber/fiber.ml", line 85, characters 10-17
Re-raised at file "src/stdune/exn.ml" (inlined), line 37, characters 27-56
Called from file "src/stdune/exn_with_backtrace.ml", line 13, characters 33-71
Called from file "src/fiber/fiber.ml", line 85, characters 10-17
                   
I must not segfault....

When I remove the into option the rule works correctly, but obviously I want the file to be promoted into an other directory.

@tcoopman
Copy link
Author

tcoopman commented Feb 1, 2020

The rule should have been:

(rule
    (targets Shared__Message_j.ml Shared__Message_j.mli)
    (deps (:atd-file Shared__Message.atd))
    (action  (run atdgen -j -j-std %{atd-file}))
    (mode (promote (into ../shared)))
    )

Now it's not crashing (it crashed because atd/shared didn't exist I guess).
Feel free to close this is if it's not seen as a bug.

@rgrinberg
Copy link
Member

This is definitely a bug. In general, dune should never show you stack traces like this.

rgrinberg added a commit to rgrinberg/jbuilder that referenced this issue Feb 2, 2020
Signed-off-by: Rudi Grinberg <me@rgrinberg.com>
@rgrinberg
Copy link
Member

#3073 fixes this

rgrinberg added a commit to rgrinberg/jbuilder that referenced this issue Feb 2, 2020
Signed-off-by: Rudi Grinberg <me@rgrinberg.com>
rgrinberg added a commit to rgrinberg/opam-repository that referenced this issue Feb 6, 2020
…lugin, dune-private-libs and dune-glob (2.2.0)

CHANGES:

- `dune test` is now a command alias for `dune runtest`. This is to make the CLI
  less idiosyncratic (ocaml/dune#3006, @shonfeder)

- Allow to set menhir flags in the `env` stanza using the `menhir_flags` field.
  (ocaml/dune#2960, fix ocaml/dune#2924, @bschommer)

- By default, do not show the full command line of commands executed
  by `dune` when `dune` is executed inside `dune`. This is to make
  integration tests more reproducible (ocaml/dune#3042, @diml)

- `dune subst` now works even without opam files (ocaml/dune#2955, fixes ocaml/dune#2910,
  @fangyi-zhou and @diml)

- Hint when trying to execute an executable defined in the current directory
  without using the `./` prefix (ocaml/dune#3041, fixes ocaml/dune#1094, @voodoos).

- Extend the list of modifiers that can be nested under
  `with-accepted-exit-codes` with `chdir`,  `setenv`, `ignore-<outputs>`,
  `with-stdin-from` and `with-<outputs>-to` (ocaml/dune#3027, fixes ocaml/dune#3014, @voodoos)

- It is now an error to have a preprocessing dependency on a ppx rewriter
  library that is not marked as `(kind ppx_rewriter)` (ocaml/dune#3039, @snowleopard).

- Fix permissions of files promoted to the source tree when using the
  shared cache. In particular, make them writable by the user (ocaml/dune#3043,
  fixes ocaml/dune#3026, @diml)

- Only detect internal OCaml tools with `.opt` extensions. Previously, this
  detection applied to other binaries as well (@kit-ty-kate, @rgrinberg, ocaml/dune#3051).

- Give the user a proper error message when they try to promote into a source
  directory that doesn't exist. (ocaml/dune#3073, fix ocaml/dune#3069, @rgrinberg)

- Correctly build vendored packages in `-p` mode. These packages were
  incorrectly filtered out before. (ocaml/dune#3705, @diml)

- Do not install vendored packages (ocaml/dune#3704, @diml)

- `make` now prints a message explaining the main targets available
  (ocaml/dune#3085, fix ocaml/dune#3078, @diml)

- Add a `byte_complete` executable mode to build programs as
  self-contained bytecode programs
  (ocaml/dune#3076, fixes ocaml/dune#1519, @diml)
mgree pushed a commit to mgree/opam-repository that referenced this issue Feb 19, 2020
…lugin, dune-private-libs and dune-glob (2.2.0)

CHANGES:

- `dune test` is now a command alias for `dune runtest`. This is to make the CLI
  less idiosyncratic (ocaml/dune#3006, @shonfeder)

- Allow to set menhir flags in the `env` stanza using the `menhir_flags` field.
  (ocaml/dune#2960, fix ocaml/dune#2924, @bschommer)

- By default, do not show the full command line of commands executed
  by `dune` when `dune` is executed inside `dune`. This is to make
  integration tests more reproducible (ocaml/dune#3042, @diml)

- `dune subst` now works even without opam files (ocaml/dune#2955, fixes ocaml/dune#2910,
  @fangyi-zhou and @diml)

- Hint when trying to execute an executable defined in the current directory
  without using the `./` prefix (ocaml/dune#3041, fixes ocaml/dune#1094, @voodoos).

- Extend the list of modifiers that can be nested under
  `with-accepted-exit-codes` with `chdir`,  `setenv`, `ignore-<outputs>`,
  `with-stdin-from` and `with-<outputs>-to` (ocaml/dune#3027, fixes ocaml/dune#3014, @voodoos)

- It is now an error to have a preprocessing dependency on a ppx rewriter
  library that is not marked as `(kind ppx_rewriter)` (ocaml/dune#3039, @snowleopard).

- Fix permissions of files promoted to the source tree when using the
  shared cache. In particular, make them writable by the user (ocaml/dune#3043,
  fixes ocaml/dune#3026, @diml)

- Only detect internal OCaml tools with `.opt` extensions. Previously, this
  detection applied to other binaries as well (@kit-ty-kate, @rgrinberg, ocaml/dune#3051).

- Give the user a proper error message when they try to promote into a source
  directory that doesn't exist. (ocaml/dune#3073, fix ocaml/dune#3069, @rgrinberg)

- Correctly build vendored packages in `-p` mode. These packages were
  incorrectly filtered out before. (ocaml/dune#3705, @diml)

- Do not install vendored packages (ocaml/dune#3704, @diml)

- `make` now prints a message explaining the main targets available
  (ocaml/dune#3085, fix ocaml/dune#3078, @diml)

- Add a `byte_complete` executable mode to build programs as
  self-contained bytecode programs
  (ocaml/dune#3076, fixes ocaml/dune#1519, @diml)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants