Skip to content

2.2.0~beta2

Pre-release
Pre-release
Compare
Choose a tag to compare
@kit-ty-kate kit-ty-kate released this 09 Apr 16:20
· 430 commits to master since this release
d30c603

This is the second beta release of opam 2.2.0.

This beta release contains new features, enhancements, updates & fixes compared to the previous 2.2.0~beta1 release. Please see upcoming blog post for main new features highlights and upgrade instructions.

Binaries and full archive are signed by by opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92).

Changelog:

Major changes

Init

  • Recommend enabling Developer Mode on Windows [#5831 @dra27]
  • Disable ACL in Cygwin internal install to avoid permission mismatch errors [#5796 @kit-ty-kate - fix #5781]
  • Fix MSYS2 support [#5843 @rjbou - fix #5683]
  • Properly test if "we're in interactive mode" instead of "in a tty" in fish script [#5866 @ElectreAAS]
  • Make the computation of the init default sys-ocaml-* eval variables on Windows faster, no more depending on Cygwin [#5829 @dra27 @rjbou]
  • Simplify computation of OCaml init default sys-ocaml-* eval variables on Unix [#5829 @dra27]
  • Add a init OCaml sys-ocaml-system eval variable [#5829 @dra27]
  • Mark the internal cygwin installation as recommended [#5903 @kit-ty-kate]
  • Check for gpatch instead of patch on NetBSD and DragonFlyBSD [#5893 @kit-ty-kate]

Env

  • Internal Cygwin installation's bin directory is placed as far down PATH as is necessary not to shadow bash, tar, sort or git [#5832 @dra27]

Source

  • Using opam source --dev with git repositories doesn't fetch with --depth 1 [#5888 @moyodiallo - fix #5061]

Var/Option

Repository

Opamfile

  • Hijack the "%{var?string-if-true:string-if-false-or-undefined}%" syntax to support extending the variables of packages with + in their name (conf-c++ and conf-g++ already exist) using "%{?pgkname:var:}%" [#5840 @kit-ty-kate]

Lint

  • Add warning 69: Warn for new syntax when package name in variable in string interpolation contains several '+' [#5840 @rjbou]

Sandbox

  • Mark the user temporary directory (as returned by getconf DARWIN_USER_TEMP_DIR) as writable when TMPDIR is not defined on macOS [#5780 @ElectreAAS]

Build

  • Allow to compile opam when the environment contains unicode characters on Windows [#5880 @kit-ty-kate - fix #5861]
  • Add winsymlinks:native to the CYGWIN environment variable when installing a package on Windows [#5793 @kit-ty-kate - fix #5782]

Miscellaneous changes

Init

  • Add rsync system package to internal Cygwin packages list (enables local pinning and is used by the VCS backends [#5808 @dra27]
  • Add sys-pkg-manager-cmd as an accepted field in opamrc files [#5847 @rjbou - fix #5844]
  • Fix git-location handling in init config file [#5848 @rjbou - fix #5845]
  • Test if file exists before sourcing in fish + powershell [#5864 @ElectreAAS]

Env

  • Fix shell detection on Windows when opam is called via Cygwin's /usr/bin/env even though cmd/powershell is used [#5797 @kit-ty-kate]
  • Fix incorrect deduplication of environment variables on update. Effect was that FOO += "" would occlude the value of FOO in the environment [#5837 @dra27]
  • Fix regression from #5356 on the detection of out-of-date environment variables. As part of a refactoring, a filter predicate got inverted [#5837 @dra27]
  • Unixify Windows paths in init shells scripts (sh, bash, zsh, fish & tsh) [#5797 @rjbou]
  • OpamProcess.cygwin_create_process_env no longer adjusts PATH [#5832 @dra27]

External dependencies

  • Add support for Wolfi OS, treat it like Apline family as it uses apk too [#5878 @xnox]

Format upgrade

  • Handle init OCaml sys-ocaml-* eval variables during format upgrade from 2.0 -> 2.1 -> 2.2 [#5829 @dra27]

Build

Install script

Shell

  • Quote all the paths to OPAMROOT when creating the init scripts on Unix in case OPAMROOT contains spaces, backslashes or special characters [#5841 @kit-ty-kate - fix #5804]

Internal

  • Warn if GNU patch is not detected when a patch is applied [#5893 @kit-ty-kate]
  • Use gpatch by default instead of patch on NetBSD and DragonFlyBSD [#5893 @kit-ty-kate]
  • Use gpatch if it exists and is detected as GNU patch when patch is not GNU patch [#5893 @kit-ty-kate]

Internal: Windows

  • Ensure that the system critical error dialog is disabled when opam starts [#5828 @dra27]
  • Fix loading git location at init [#5843 @rjbou]
  • Remove use of deprecated function SHGetFolderPath and use SHGetKnownFolderPath instead [#5862 @kit-ty-kate]
  • Improve performance by only calling OpamStubs.getPathToSystem once [#5862 @dra27]

Documentation

Testing

API updates

opam-client

  • OpamClient.windows_checks: On existing Cygwin install, permit to detect msys2 and store os-distribution=msys2 in global-variables config file field [#5843 @rjbou]
  • OpamClient.windows_checks: When updating config file for msys2, resolve pacman path and store it in sys-pkg-manager-cmd for msys2 [#5843 @rjbou]
  • OpamArg.apply_global_options: load MSYS2 Cygwin binary path too [#5843 @rjbou]

opam-repository

  • OpamRepositoryBackend.S.pull_url, OpamVCS.fetch, OpamRepository.pull_tree: add full_fetch optional argument to pull full history if url is a VCS [#5888 @moyodiallo - fix #5061]

opam-state

  • OpamEnv.env_expansion: Fix detection of out-of-date environment variables, a filter predicate was inverted [#5837 @dra27]
  • OpamSysInteract.Cygwin.check_install: add variant argument to permit checking that it is an Cygwin-like install if it is set to true, keep checking that it is a strictly Cygwin install if false [#5843 @rjbou]
  • OpamSysInteract.Cygwin.check_install: look for cygcheck.exe in usr/bin also as MSYS2 doesn't have "bin" [#5843 @rjbou]
  • OpamGlobalState.load_config: load MSYS2 Cygwin binary path too at config file loading [#5843 @rjbou]
  • OpamEnv: add sys_ocaml_eval_variables value, moved OpamInitDefaults as it is also needed in OpamFormatUpgrade too [#5829 @rjbou @kit-ty-kate]
  • OpamEnv supports an internal Cygwin environment operation which pushes the given directory as far down the list as can be done without shadowing. This mechanism replaces the opposite which was done in OpamProcess [#5832 @dra27]

opam-format

  • OpamFile.InitConfig: add sys-pkg-manager-cmd field [#5847 @rjbou]
  • OpamTypesBase: add filter_ident_of_string_interp that is used for parsing variables in string interpolation like filter_ident_of_string but permits the parsing of '%{?pkg+:var:}%' syntax [#5840 @rjbou]
  • OpamTypesBase.filter_ident_of_string_interp: add accept optional argument to be able to raise an error when several pluses are in the package name without using the new syntax, like %{pkg+++:var}%
  • OpamFilter: add extract_variables_from_string to retrieve string of variables, and exposes it [#5840 @rjbou]
  • OpamTypes.env_update now has an additional type parameter indicating whether the update is internal or writeable [#5832 @dra27]

opam-core

  • OpamStd.Sys: add is_cygwin_variant_cygcheck that returns true if in path cygcheck is from a Cygwin or MSYS2 installation [#5843 @rjbou]
  • OpamStd.Env.cyg_env: takes the environment to cygify, usually OpamStd.Env.raw_env [#5829 @dra27]
  • OpamSystem.patch now displays a warning when GNU patch is not detected and looks for both patch and gpatch as a backup option depending on the OS [#5893 @kit-ty-kate]