ocaml / opam

opam is a source-based package manager. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow.
https://opam.ocaml.org
Other
1.21k stars 348 forks source link

Cywing setup hangs #6041

Closed hhugo closed 1 week ago

hhugo commented 1 week ago

Trying to use opam 2.2 from ocaml-setup Setup-ocaml.v3alpha uses a separate cygwin root so that it can cache it separately from opam. After restoring a cygwin cache and the opam one. cygwin-setup (called by opam) hangs without any logs.

See https://github.com/ocaml/Zarith/actions/runs/9596506376/job/26463523796

mtelvers commented 1 week ago

I was going to create a new issue, but instead, I'll add some context here.

When opam finds an existing installation, it tries to run setup-x86_64.exe to update the installation. However, the command it runs (or suggests that you run in another terminal window) does not include --site, so a popup dialog prompts the users to select a mirror. In my case, on Windows 2022 Server Core, that dialog is non-responsive, and I have to abort, and in your case, you can't see the dialog as it's running in GitHub actions.

hhugo commented 1 week ago

Excellent ! The dialog being non-responsive is probably expected with --quiet-mode noinput.

For my use case, it's only after the cache is restored that it hangs. I imagine that cygwin remembers the site if called multiple time but that knowledge is lost after the cache restoration.

dra27 commented 1 week ago

It's possible to work around this by setting rootdir in HKLM\SOFTWARE\Cygwin\setup to D:\cygwin as part of setup-ocaml. In fact, I'm not so sure it's a workaround, but something it should be doing routinely.

hhugo commented 1 week ago

The setup-ocaml issue was fixed by https://github.com/ocaml/setup-ocaml/pull/817 and release in ocaml/setup-ocaml@v3.0.0-beta

dra27 commented 1 week ago

Indeed - I think there's no further action required on opam's side for this one