opam-repository
opam-repository copied to clipboard
Failure to build ocaml.5.2.1 on Windows: `Sys_error("C:\\Users\\User\\AppData\\Local\\opam\\default\\lib\\toplevel:stdlib.cmi: No such file or directory")`
I'm using opam 2.3.0. I need a switch with OCaml 5.2. I get a build failure when creating the switch.
$ opam switch create ocaml.5.2 --packages 'ocaml<5.3'
<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><> 🐫
Switch invariant: ["ocaml" {< "5.3"}]
<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><> 🐫
∗ installed arch-x86_64.1
∗ installed base-bigarray.base
∗ installed base-threads.base
∗ installed base-unix.base
∗ installed host-arch-x86_64.1
∗ installed host-system-mingw.1
⬇ retrieved flexdll.0.43 (cached)
⬇ retrieved ocaml-config.3 (cached)
∗ installed flexdll.0.43
∗ installed ocaml-options-vanilla.1
⬇ retrieved mingw-w64-shims.0.2.0 (cached)
∗ installed conf-mingw-w64-gcc-x86_64.1
∗ installed ocaml-env-mingw64.1
∗ installed system-mingw.1
⬇ retrieved ocaml-base-compiler.5.2.1 (cached)
∗ installed mingw-w64-shims.0.2.0
∗ installed ocaml-base-compiler.5.2.1
∗ installed ocaml-config.3
[ERROR] The compilation of ocaml.5.2.1 failed at "ocaml
C:\\Users\\User\\AppData\\Local\\opam\\ocaml.5.2\\share\\ocaml-config/gen_ocaml_config.ml 5.2.1 ocaml".
#=== ERROR while compiling ocaml.5.2.1 ========================================#
# context 2.3.0 | win32/x86_64 | | https://opam.ocaml.org#36f4d2d5ceb882a79fd7d7f956b490201da67226
# path ~\AppData\Local\opam\ocaml.5.2\.opam-switch\build\ocaml.5.2.1
# command ~\AppData\Local\opam\ocaml.5.2\bin\ocaml.exe C:\Users\User\AppData\Local\opam\ocaml.5.2\share\ocaml-config/gen_ocaml_config.ml 5.2.1 ocaml
# exit-code 2
# env-file ~\AppData\Local\opam\log\ocaml-6488-1ef443.env
# output-file ~\AppData\Local\opam\log\ocaml-6488-1ef443.out
### output ###
# Fatal error: exception Sys_error("C:\\Users\\User\\AppData\\Local\\opam\\default\\lib\\toplevel:stdlib.cmi: No such file or directory")
<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><> 🐫
┌─ The following actions failed
│ λ build ocaml 5.2.1
└─
┌─ The following changes have been performed (the rest was aborted)
│ ∗ install arch-x86_64 1
│ ∗ install base-bigarray base
│ ∗ install base-threads base
│ ∗ install base-unix base
│ ∗ install conf-mingw-w64-gcc-x86_64 1
│ ∗ install flexdll 0.43
│ ∗ install host-arch-x86_64 1
│ ∗ install host-system-mingw 1
│ ∗ install mingw-w64-shims 0.2.0
│ ∗ install ocaml-base-compiler 5.2.1
│ ∗ install ocaml-config 3
│ ∗ install ocaml-env-mingw64 1
│ ∗ install ocaml-options-vanilla 1
│ ∗ install system-mingw 1
└─
Switch initialisation failed: clean up? ('n' will leave the switch partially installed) [y/n] n
$ opam switch
# switch compiler description
default arch-x86_64.1,ocaml-base-compiler.5.3.0,ocaml-options-vanilla.1,system-mingw.1 ocaml >= 4.05.0
→ ocaml.5.2 ocaml < 5.3
$ ocaml
OCaml version 5.2.1
Enter #help;; for help.
Fatal error: exception Sys_error("C:\\Users\\User\\AppData\\Local\\opam\\default\\lib\\toplevel:stdlib.cmi: No such file or directory")
could you show your environment? (env)
_=/usr/bin/env
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\User\AppData\Roaming
CAML_LD_LIBRARY_PATH=C:\Users\User\AppData\Local\opam\ocaml.5.2\lib\stublibs
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
COMMONPROGRAMFILES=C:\Program Files\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMSPEC=C:\WINDOWS\system32\cmd.exe
CYGWIN=winsymlinks:native
DriverData=C:\Windows\System32\Drivers\DriverData
HOME=/cygdrive/c/Users/User
HOMEDRIVE=C:
HOMEPATH=\Users\User
INFOPATH=/usr/local/info:/usr/share/info:/usr/info
LANG=en_US.UTF-8
LOCALAPPDATA=C:\Users\User\AppData\Local
MAKEFLAGS=-j12
MANPATH=:/cygdrive/c/Users/User/AppData/Local/opam/ocaml.5.2/man
MSYS=winsymlinks:native
OCAML_TOPLEVEL_PATH=
OCAMLTOP_INCLUDE_PATH=C:\Users\User\AppData\Local\opam\default\lib\toplevel:
OPAM_LAST_ENV=C:\Users\User\AppData\Local\opam\.last-env\env-d567f03af7597e56edca4619015a2b5b-0
OPAM_SWITCH_PREFIX=C:\Users\User\AppData\Local\opam\ocaml.5.2
OPAMNOENVNOTICE=true
ORIGINAL_PATH=/cygdrive/c/Program Files/Go/bin:C:\Users\User\go/bin:/cygdrive/c/Program Files/Alacritty:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Windows/System32/OpenSSH:/cygdrive/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Program Files/Docker/Docker/resources/bin:/cygdrive/c/Program Files/Git/cmd:/cygdrive/c/Program Files/GitHub CLI:/cygdrive/c/Program Files/CMake/bin:/cygdrive/c/Program Files/Go/bin:/cygdrive/c/Program Files/WezTerm:/cygdrive/c/Users/User/AppData/Local/Programs/Python/Python313/Scripts:/cygdrive/c/Users/User/AppData/Local/Programs/Python/Python313:/cygdrive/c/Users/User/AppData/Local/Programs/Python/Launcher:/cygdrive/c/Users/User/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Program Files/Emacs/emacs-29.3_2/bin:/cygdrive/c/Users/User/AppData/Local/Microsoft/WinGet/Links:/cygdrive/c/Users/User/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Users/User/go/bin
OS=Windows_NT
PATH=/cygdrive/c/Users/User/AppData/Local/opam/ocaml.5.2/bin:/usr/x86_64-w64-mingw32/sys-root/mingw/bin:C:.:C:/usr/local/bin:/usr/bin:/cygdrive/c/Program Files/Go/bin:C:/cygdrive/c/Users/User/go/bin:/cygdrive/c/Program Files/Alacritty:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Windows/System32/OpenSSH:/cygdrive/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Program Files/Docker/Docker/resources/bin:/cygdrive/c/Program Files/Git/cmd:/cygdrive/c/Program Files/GitHub CLI:/cygdrive/c/Program Files/CMake/bin:/cygdrive/c/Program Files/Go/bin:/cygdrive/c/Program Files/WezTerm:/cygdrive/c/Users/User/AppData/Local/Programs/Python/Python313/Scripts:/cygdrive/c/Users/User/AppData/Local/Programs/Python/Python313:/cygdrive/c/Users/User/AppData/Local/Programs/Python/Launcher:/cygdrive/c/Users/User/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Program Files/Emacs/emacs-29.3_2/bin:/cygdrive/c/Users/User/AppData/Local/Microsoft/WinGet/Links:/cygdrive/c/Users/User/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Users/User/go/bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROFILEREAD=true
ProgramData=C:\ProgramData
ProgramFiles(x86)=C:\Program Files (x86)
PROGRAMFILES=C:\Program Files
ProgramW6432=C:\Program Files
PROMPT=%(?:%{%}%1{➜%} :%{%}%1{➜%} ) %{%}%c%{%} $(git_prompt_info)
PS1=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SHELL=/bin/zsh
SYSTEMDRIVE=C:
SYSTEMROOT=C:\WINDOWS
TEMP=/tmp
USER=User
USERNAME=User
USERPROFILE=C:\Users\User
Thanks! This is an issue with that specific version of the ocaml package, which is missing the x-env-path-rewrite field present in both ocaml.5.2.0 and ocaml.5.3.0 but not ocaml.5.2.1
cc @Octachron @dra27
This now duplicates https://github.com/ocaml/opam-repository/issues/25819#issuecomment-2618893387 and is fixed by https://github.com/dra27/opam-repository/pull/22.
I also have this problem with MSVC and the ocaml 5.3.0 package:
[ERROR] The compilation of ocaml.5.3.0 failed at "ocaml C:\\Users\\Antonin\\AppData\\Local\\opam\\msvc\\share\\ocaml-config/gen_ocaml_config.ml
5.3.0 ocaml".
#=== ERROR while compiling ocaml.5.3.0 ========================================#
# context 2.3.0 | win32/x86_64 | system-msvc.1 | https://opam.ocaml.org#4d8fa0fb8fce3b6c8b06f29ebcfa844c292d4f3e
# path ~\AppData\Local\opam\msvc\.opam-switch\build\ocaml.5.3.0
# command ~\AppData\Local\opam\msvc\bin\ocaml.exe C:\Users\Antonin\AppData\Local\opam\msvc\share\ocaml-config/gen_ocaml_config.ml 5.3.0 ocaml
# exit-code 2
# env-file ~\AppData\Local\opam\log\ocaml-2220-09b5d8.env
# output-file ~\AppData\Local\opam\log\ocaml-2220-09b5d8.out
### output ###
# Fatal error: exception Sys_error("C:\\Users\\Antonin\\AppData\\Local\\opam\\default\\lib\\toplevel:stdlib.cmi: No such file or directory")
opam switch shows:
arch-x86_64.1,ocaml-option-no-compression.1,ocaml-variants.5.3.0+options,system-msvc.1
ocaml >= 5.3 & system-msvc
The cause of this bug is a mix of https://github.com/ocaml/opam/issues/6455 and https://github.com/ocaml/opam/issues/6456
We'll discuss this at the opam dev meeting on monday and report back a course of action.
In the meantime this issue has been mitigated by using unset OCAMLTOP_INCLUDE_PATH