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

fix: print "Leaving Directory" #6419

Merged
merged 1 commit into from Nov 18, 2022
Merged

Conversation

rgrinberg
Copy link
Member

@rgrinberg rgrinberg commented Nov 10, 2022

Print "Leaving Directory '%s'" in addition to "Entering Directory"

Fixes #138

The original PR didn't flush to stdout so the output was garbled.

There's still a small issue with dune exec. Because we're execing a program, we're not unable to write the "Leaving Directory" after the program exits. @emillon @cpitclaudel should we leave it this way or just get rid of the "Leaving" for such cases?

@rgrinberg rgrinberg force-pushed the ps/rr/fix__print__leaving_directory_ branch 2 times, most recently from 8d1fcc9 to 523b415 Compare November 12, 2022 05:48
Copy link
Collaborator

@emillon emillon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have the best understanding of why it's necessary and how it works, but if this fixes some editor integration that's fine by me.
Regarding dune exec, 2 remarks:

  • we're calling Stdlib.do_at_exit in Proc.restore_cwd_and_execve. This means that this is going to print Leaving directory early. is it fine?
  • processes exec'ing into each other is usually not a great idea for portability anyway. I'd prefer if we could use create_process or spawn and wait for the process (which would do the right thing on windows too), that would allow us to print the message after the process exits. We probably can't do that comfortably before dune 4.0.

@rgrinberg
Copy link
Member Author

I don't have the best understanding of why it's necessary and how it works, but if this fixes some editor integration that's fine by me.

Yes, this fixes editor integration. Editors will use a regex to set the base directory for all errors so running dune will screw up interpreting errors for subsequent programs

we're calling Stdlib.do_at_exit in Proc.restore_cwd_and_execve. This means that this is going to print Leaving directory early. is it fine?

I suppose it's fine because we aren't changing the directory for the executed process. My original comment didn't appreciate that.

processes exec'ing into each other is usually not a great idea for portability anyway. I'd prefer if we could use create_process or spawn and wait for the process (which would do the right thing on windows too), that would allow us to print the message after the process exits. We probably can't do that comfortably before dune 4.0.

Note that we always run the process in the CWD so it in fact we should print before exec'ing.

We could introduce dune run instead of dune exec. exec is already well defined and I'm not so confident in our ability of doing dune run and handling signals correctly.

@rgrinberg rgrinberg added this to the 3.7.0 milestone Nov 15, 2022
@rgrinberg rgrinberg force-pushed the ps/rr/fix__print__leaving_directory_ branch 3 times, most recently from 19d76ab to 9308f53 Compare November 15, 2022 19:35
@cpitclaudel
Copy link
Contributor

Thanks a lot for working on this!

should we leave it this way or just get rid of the "Leaving" for such cases?

I think either way is fine for dune exec, but…

Note that we always run the process in the CWD so it in fact we should print before exec'ing.

… it looks like in fact printing before exec is both feasible and right, so maybe the above question solved itself faster than my github response time? :)

@rgrinberg rgrinberg force-pushed the ps/rr/fix__print__leaving_directory_ branch from 9308f53 to 14f3be6 Compare November 17, 2022 15:56
@rgrinberg
Copy link
Member Author

@emillon this is ready.

Print "Leaving Directory '%s'" in addition to "Entering Directory"

Fixes #138

Signed-off-by: Rudi Grinberg <me@rgrinberg.com>

ps-id: 462a51cc-0bc8-44da-85d2-027bc1e372d7
@rgrinberg rgrinberg force-pushed the ps/rr/fix__print__leaving_directory_ branch from 14f3be6 to 77a2a61 Compare November 18, 2022 00:15
@rgrinberg rgrinberg merged commit 49a75b9 into main Nov 18, 2022
@Alizter Alizter deleted the ps/rr/fix__print__leaving_directory_ branch November 26, 2022 14:47
emillon added a commit to emillon/opam-repository that referenced this pull request Feb 17, 2023
…, dune-rpc, dune-rpc-lwt, dune-private-libs, dune-glob, dune-configurator, dune-build-info, dune-action-plugin and chrome-trace (3.7.0)

CHANGES:

- Allow running `$ dune exec` in watch mode (with the `-w` flag). In watch mode,
  `$ dune exec` the executed binary whenever it is recompiled. (ocaml/dune#6966,
  @gridbugs)

- `coqdep` is now called once per theory, instead of one time per Coq
  file. This should significantly speed up some builds, as `coqdep`
  startup time is often heavy (ocaml/dune#7048, @Alizter, @ejgallego)

- Add `map_workspace_root` dune-project stanza to allow disabling of
  mapping of workspace root to `/workspace_root`. (ocaml/dune#6988, fixes ocaml/dune#6929,
  @richardlford)

- Fix handling of support files generated by odoc. (ocaml/dune#6913, @jonludlam)

- Fix parsing of OCaml errors that contain code excerpts with `...` in them.
  (ocaml/dune#7008, @rgrinberg)

- Pre-emptively clear screen in watch mode (ocaml/dune#6987, fixes ocaml/dune#6884, @rgrinberg)

- Fix cross compilation configuration when a context with targets is itself a
  host of another context (ocaml/dune#6958, fixes ocaml/dune#6843, @rgrinberg)

- Fix parsing of the `<=` operator in *blang* expressions of `dune` files.
  Previously, the operator would be interpreted as `<`. (ocaml/dune#6928, @tatchi)

- Fix `--trace-file` output. Dune now emits a single *complete* event for every
  executed process. Unterminated *async* events are no longer written. (ocaml/dune#6892,
  @rgrinberg)

- Fix preprocessing with `staged_pps` (ocaml/dune#6748, fixes ocaml/dune#6644, @rgrinberg)

- Use colored output with MDX when Dune colors are enabled.
  (ocaml/dune#6462, @MisterDA)

- Make `dune describe workspace` return consistent dependencies for
  executables and for libraries. By default, compile-time dependencies
  towards PPX-rewriters are from now not taken into account (but
  runtime dependencies always are). Compile-time dependencies towards
  PPX-rewriters can be taken into account by providing the
  `--with-pps` flag. (ocaml/dune#6727, fixes ocaml/dune#6486, @esope)

- Print missing newline after `$ dune exec`. (ocaml/dune#6821, fixes ocaml/dune#6700, @rgrinberg,
  @Alizter)

- Fix binary corruption when installing or promoting in parallel (ocaml/dune#6669, fixes
  ocaml/dune#6668, @edwintorok)

- Use colored output with GCC and Clang when compiling C stubs. The
  flag `-fdiagnostics-color=always` is added to the `:standard` set of
  flags. (ocaml/dune#4083, @MisterDA)

- Fix the parsing of decimal and hexadecimal escape literals in `dune`,
  `dune-package`, and other dune s-expression based files (ocaml/dune#6710, @shym)

- Report an error if `dune init ...` would create a "dune" file in a location
  which already contains a "dune" directory (ocaml/dune#6705, @gridbugs)

- Fix the parsing of alerts. They will now show up in diagnostics correctly.
  (ocaml/dune#6678, @rginberg)

- Fix the compilation of modules generated at link time when
  `implicit_transitive_deps` is enabled (ocaml/dune#6642, @rgrinberg)

- Allow `$ dune utop` to load libraries defined in data only directories
  defined using `(subdir ..)` (ocaml/dune#6631, @rgrinberg)

- Format dune files when they are named `dune-file`. This occurs when we enable
  the alternative file names project option. (ocaml/dune#6566, @rgrinberg)

- Move `$ dune ocaml-merlin -dump-config=$dir` to `$ dune ocaml merlin
  dump-config $dir`. (ocaml/dune#6547, @rgrinberg)

- Allow compilation rules to be impacted by `(env ..)` stanzas that modify the
  environment or set binaries. (ocaml/dune#6527, @rgrinberg)

- Coq native mode is now automatically detected by Dune starting with Coq lang
  0.7. `(mode native)` has been deprecated in favour of detection from the
  configuration of Coq. (ocaml/dune#6409, @Alizter)

- Print "Leaving Directory" whenever "Entering Directory" is printed. (ocaml/dune#6419,
  fixes ocaml/dune#138, @cpitclaudel, @rgrinberg)

- Allow `$ dune ocaml dump-dot-merlin` to run in watch mode. Also this command
  shouldn't print "Entering Directory" mesages. (ocaml/dune#6497, @rgrinberg)

- `dune clean` should no longer fail under Windows due to the inability to
  remove the `.lock` file. Also, bring the implementation of the global lock
  under Windows closer to that of Unix. (ocaml/dune#6523, @nojb)

- Remove "Entering Directory" messages for `$ dune install`. (ocaml/dune#6513,
  @rgrinberg)

- Stop passing `-q` flag in `dune coq top`, which allows for `.coqrc` to be
  loaded. (ocaml/dune#6848, fixes ocaml/dune#6847, @Alizter)

- Fix missing dependencies when detecting the kind of C compiler we're using
  (ocaml/dune#6610, fixes ocaml/dune#6415, @emillon)

- Allow `(include_subdirs qualified)` for OCaml projects. (ocaml/dune#6594, fixes ocaml/dune#1084,
  @rgrinberg)

- Accurately determine merlin configuration for all sources selected with
  `copy#` and `copy_files#`. The old heuristic of looking for a module in
  parent directories is removed (ocaml/dune#6594, @rgrinberg)

- Fix inline tests with *js_of_ocaml* and whole program compilation mode
  enabled (ocaml/dune#6645, @hhugo)

- Fix *js_of_ocaml* separate compilation rules when `--enable=effects`
  ,`--enable=use-js-string` or `--toplevel` is used. (ocaml/dune#6714, ocaml/dune#6828, ocaml/dune#6920, @hhugo)

- Fix *js_of_ocaml* separate compilation in presence of linkall (ocaml/dune#6832, ocaml/dune#6916, @hhugo)

- Remove spurious build dir created when running `dune init proj ...` (ocaml/dune#6707,
  fixes ocaml/dune#5429, @gridbugs)

- Allow `--sandbox` to affect `ocamldep` invocations. Previously, they were
  wrongly marked as incompatible (ocaml/dune#6749, @rgrinberg)

- Validate the command line arguments for `$ dune ocaml top-module`. This
  command requires one positional argument (ocaml/dune#6796, fixes ocaml/dune#6793, @rgrinberg)

- Add a `dune cache size` command for displaying the size of the cache (ocaml/dune#6638,
  @Alizter)

- Fix dependency cycle when installing files to the bin section with
  `glob_files` (ocaml/dune#6764, fixes ocaml/dune#6708, @gridbugs)

- Handle "Too many links" errors when using Dune cache on Windows (ocaml/dune#6993, @nojb)

- Allow the `cinaps` stanza to set a custom alias. By default, if the alias is
  not set then the cinaps actions will be attached to both `@cinaps` and
  `@runtest` (ocaml/dune#6991, @rgrinberg)

- Add `(using ctypes 0.3)`. When used, paths in `(ctypes)` are interpreted
  relative to where the stanza is defined. (ocaml/dune#6883, fixes ocaml/dune#5325, @emillon)

- Auto-detect `dune-workspace` files as `dune` files in Emacs (ocaml/dune#7061,
  @ilankri)

- Add native support for polling mode on Windows (ocaml/dune#7010, @yams-yams, @nojb)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Tracking paths to error locations
3 participants