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 sometimes changes *.opam files in release mode #8417

Open
glondu opened this issue Aug 18, 2023 · 1 comment · Fixed by #8518
Open

Dune sometimes changes *.opam files in release mode #8417

glondu opened this issue Aug 18, 2023 · 1 comment · Fixed by #8518
Assignees
Labels

Comments

@glondu
Copy link
Contributor

glondu commented Aug 18, 2023

Expected Behavior

In "reproducible release mode" (-p or --release), Dune should not change *.opam files.

Actual Behavior

Dune sometimes changes these files.

Reproduction

$ wget https://github.com/ocaml/graphics/releases/download/5.1.2/graphics-5.1.2.tbz
$ tar xf graphics-5.1.2.tbz
$ cd graphics-5.1.2
$ git init && git add . && git commit -m "Initial commit"
$ dune build -p graphics
$ git diff
diff --git a/graphics.opam b/graphics.opam
index 0f53f1e..1386301 100644
--- a/graphics.opam
+++ b/graphics.opam
@@ -1,6 +1,6 @@
-version: "5.1.2"
 # This file is generated by dune, edit dune-project instead
 opam-version: "2.0"
+version: "5.1.2"
 synopsis: "The OCaml graphics library"
 description: """
 The graphics library provides a set of portable drawing
@@ -38,4 +38,4 @@ build: [
     "@doc" {with-doc}
   ]
 ]
-dev-repo: "git+https://github.com/ocaml/graphics.git"
\ No newline at end of file
+dev-repo: "git+https://github.com/ocaml/graphics.git"

Note that I took graphics as an example, but it happens in many other packages.

Specifications

  • Version of dune (output of dune --version): 3.9.1 (dune --version actually returns n/a)
  • Version of ocaml (output of ocamlc --version): 4.13.1
  • Operating system (distribution and version): Debian sid (as of 2023-08-18)

Context

This was discovered by Debian QA, which checks that sources are not modified during build. Debian bug.

rgrinberg added a commit that referenced this issue Aug 26, 2023
reproduce #8417

Signed-off-by: Rudi Grinberg <[email protected]>

<!-- ps-id: dc52a340-79a9-4d37-a486-0c0d168111d5 -->
rgrinberg added a commit that referenced this issue Aug 26, 2023
reproduce #8417

Signed-off-by: Rudi Grinberg <[email protected]>

<!-- ps-id: dc52a340-79a9-4d37-a486-0c0d168111d5 -->
rgrinberg added a commit that referenced this issue Aug 26, 2023
@rgrinberg rgrinberg linked a pull request Aug 26, 2023 that will close this issue
@rgrinberg rgrinberg added the bug label Aug 27, 2023
@rgrinberg rgrinberg self-assigned this Aug 27, 2023
@rgrinberg rgrinberg added this to the 3.11.0 milestone Aug 27, 2023
emillon added a commit to emillon/opam-repository that referenced this issue Sep 14, 2023
CHANGES:

- Modules that were declared in `(modules_without_implementation)`,
  `(private_modules)` or `(virtual_modules)` but not declared in `(modules)`
  will raise an error. (ocaml/dune#7674, @Alizter)

- `enabled_if` now supports `arch_sixtyfour` variable (ocaml/dune#8023, fixes ocaml/dune#7997,
  @Alizter)- Use `posix_spawn` instead of `fork` on MacOS. This gives us a
  performance boost and allows us to re-enable thread. (ocaml/dune#8090, @rgrinberg)

- Experimental: Added a `$ dune monitor` command that can connect to a running
  `dune build` in watch mode and display the errors and progress. (ocaml/dune#8152,
  @Alizter)

- No longer emit linkopts(javascript) in META files (ocaml/dune#8168, @hhugo)

- The `progress` RPC procedure now has an extra field for the `In_progress`
  constructor for the number of failed jobs. (ocaml/dune#8212, @Alizter)

- Add a `--preview` flag to `dune fmt` which causes it to print out the changes
  it would make without applying them (ocaml/dune#8289, @gridbugs)

- Introduce `(source_trees ..)` to the install stanza to allow installing
  entire source trees. (ocaml/dune#8349, @rgrinberg)

- Deprecate install destination paths beginning with ".." to prevent packages
  escaping their designated installation directories. (ocaml/dune#8350, @gridbugs)

- Stop signing source files with substitutions. Sign only binaries instead
  (ocaml/dune#8361, fixes ocaml/dune#8360, @anmonteiro)

- Add `--stop-on-first-error` option to `dune build` which will terminate the
  build when the first error is encountered. (ocaml/dune#8400, @pmwhite and @Alizter)-
  Dune now displays the number of errors when waiting for changes in watch
  mode. (ocaml/dune#8408, fixes ocaml/dune#6889, @Alizter)

- Add `with_prefix` keyword for changing the prefix of the destination of
  installed files matched by globs. (ocaml/dune#8416, @gridbugs)

- Added experimental `--display tui` option for Dune that opens an interactive
  Terminal User Interface (TUI) when Dune is running. Press '?' to open up a
  help screen when running for more information. (ocaml/dune#8429, @Alizter and
  @rgrinberg)

- Add a `warnings` field to `dune-project` files as a unified mechanism to
  enable or disable dune warnings (@rgrinberg, 8448)

- `dune exec`: support syntax like `%{bin:program}`. This can appear anywhere
  in the command line, so things like `dune exec time %{bin:program}` now work.
  (ocaml/dune#6035, ocaml/dune#8474, fixes ocaml/dune#2691, @emillon, @Leonidas-from-XIV)

- RPC message styles are now serialised meaning that RPC diagnostics keep their
  Ansi styling. (ocaml/dune#8516, fixes ocaml/dune#6921, @Alizter)- Ignore internal promote rules
  when `--ignore-promoted-rules` is set (ocaml/dune#8518, fix ocaml/dune#8417, @rgrinberg)

- Truncate output from actions that produce too much output (@tov, ocaml/dune#8351)

- Allow libraries to shadow OCaml builtin libraries. Previously, builtin
  libraries would always take precedence. (@rgrinberg, ocaml/dune#8558)

- Remove warning against `.dune` files generated by pre dune 2.0 (ocaml/dune#8611,
  @rgrinberg)

- `dune utop` no longer links `utop` in "custom" mode, which should make this
  command considerably faster. (ocaml/dune#8631, fixes ocaml/dune#6894, @nojb)

- Ensure that package names in `dune-project` are valid opam package
  names. (ocaml/dune#8331, @emillon)

- dune init: parse `--public` as a public name (ocaml/dune#8603, fixes ocaml/dune#7108, @emillon)

- Remove versions 0.1 and 0.2 of the experimental ctypes extension. (ocaml/dune#8293,
  @emillon)
emillon added a commit to emillon/opam-repository that referenced this issue Sep 21, 2023
CHANGES:

- Turn internal promote rules into fallback rules when
  `--ignore-promoted-rules` is set (ocaml/dune#8518, ocaml/dune#8706, fix ocaml/dune#8417, fix ocaml/dune#8703,
  @rgrinberg, @emillon)

- Make copy sandbox support directory targets. (ocaml/dune#8705, fixes ocaml/dune#7724, @emillon)
@glondu
Copy link
Contributor Author

glondu commented Oct 17, 2023

This problem is not fixed with 3.11.x, actually. The original repro case still applies.

@rgrinberg rgrinberg reopened this Oct 17, 2023
@rgrinberg rgrinberg removed this from the 3.11.0 milestone Oct 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment