Skip to content

2.2.0~beta3

Pre-release
Pre-release
Compare
Choose a tag to compare
@kit-ty-kate kit-ty-kate released this 10 Jun 20:07
· 77 commits to master since this release
cdd59ee

This is the third and final beta release of opam 2.2.0.

This beta release contains new features, enhancements, updates & fixes compared to the previous 2.2.0~beta2 release. Please see 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

Global CLI

Init

  • New option opam init --cygwin-extra-packages=CYGWIN_PKGS --cygwin-internal-install, to specify additional packages for internal Cygwin [#5930, #5964 @moyodiallo - fix #5834]
  • Skip Git-for-Windows menu if the Git binary resolved in PATH is Git-for-Windows [#5963 @dra27 - fix #5835]
  • Enhance the Git menu by warning if the user appears to need to restart the shell to pick up PATH changes [#5963 @dra27]
  • Include Git for Windows installations in the list of possibilities where the user instructed Git-for-Windows setup not to update PATH [#5963 @dra27]
  • Redirect the opam root to C:\opamroot\opam-xxx when the opam root contains spaces on Windows [#5457 @rjbou @dra27]
  • Overhaul Windows opam init to determine Unix and Git configuration simultaneously, and to detect from Cygwin, Git and MSYS2 from all the known package managers and shells [#6000 @dra27]

Repository

  • Fix download URLs containing invalid characters on Windows (e.g. the ? character in ?full_index=1) [#5921 @dra27]
  • Fix curl failures - the progress meter can become interleaved with the status code on Windows [#5984 @dra27 @kit-ty-kate @rjbou]

Tree

Source

  • Fix extraction of tarballs on Windows which contain symlinks both when those symlinks can't be created or if they point to files which don't exist [#5953 @dra27]

Switch

Miscellaneous changes

Init

  • [BUG] Fail if --git-location points to a directory not containing git [#6000 @dra27]

Global CLI

  • Fix a typo in the variable description returned by "opam var" [#5961 @jmid]
  • Display lock hold/release messages on stderr instead of stdout [#5999 @kit-ty-kate - fix #5990]

Client

Env

  • Fix reverting of environment variables, principally on Windows [#5935 @dra27 fix #5838]
  • Fix splitting environment variables [#5935 @dra27]
  • When opam creates an empty variable then appends/prepends a value, ensure no additional separator is added [#5935 @dra27 - fix #5925]
  • Fix x-env-path-rewrite splitting of values when reverting [#5935 @dra27 - fix #5838]
  • Rework the logic of := and =: so that an empty entry is correctly preserved on multiple updates [#5935 @dra27 - fix #5926]
  • Fix incorrect reverting of =+ and =: [#5935 @dra27 - fix #5926]
  • For the Cygwin internal operator, don't allow make.exe to become shadowed [#5996 @dra27]
  • Fix incorrect quoting rule for MANPATH [#5972 @dra27 - partial fix for #5923]
  • Do not special case the rewriting rule for the PKG_CONFIG_PATH environment variable [#6002 @kit-ty-kate - fix #5923]

External dependencies

  • Pass --symlink-type native to Cygwin setup if symlinks are available [#5830 @dra27]
  • Pass --no-version-check to Cygwin setup (suppresses a message box if setup needs updating) [#5830 @dra27]
  • Pass --quiet-mode noinput to stop the user interrupting the setup GUI [#5830 @dra27]
  • Always pass --no-write-registry to the Cygwin installer, not just on first installation [#5995 @dra27]
  • os-distribution is now by default calculated from cygpath for Cygwin and MSYS2, instead of needing to be set by opam init [#6000 @dra27]
  • Cygwin setup is now always downloaded and updated both for internal and external Cygwin installations [#6000 @dra27]

Install

  • Fix performance regression when calling opam install --deps-only on an already installed package [#5908 @kit-ty-kate - fix #5817]

Version

Config

  • Move last-env OPAM_LAST_ENV files outside the switch to be in the opam root [#5962 @moyodiallo - fix #5823]

Update / Upgrade

  • Stop triggering "Undefined filter variable variable" warning for ?variable [#5983 @dra27]

Format upgrade

  • Handle init OCaml sys-ocaml-* eval variables during format upgrade from 2.0 -> 2.1 -> 2.2 [#5829 @dra27]
  • Reset the "jobs" config variable when upgrading from opam 2.1 to 2.2, instead of 2.0 to 2.1 [#5904 @kit-ty-kate - fix #5816]

Lint

  • W41: Relax warning 41 not to trigger on uses of package variables which are guarded by a package:installed filter [#5927 @dra27]

Build

Release scripts

Testing

API updates

opam-client

  • OpamClient.init and OpamClient.reinit: now can have additional cygwin packages to install [#5930 @moyodiallo]
  • OpamInitDefaults.required_packages_for_cygwin: no longer includes git; as the need to add that is computed in OpamClient [#6000 @dra27]
  • OpamSolution: exposer print_depext_msg [#5994 @dra27]
  • OpamSolution: extracted install_sys_packages from OpamSolution.install_depexts [#5994 @dra27]

opam-repository

  • OpamDownload.download_command: separate output from stdout and stderr [#5984 @kit-ty-kate]

opam-state

  • OpamEnv.cygwin_non_shadowed_programs: exposes the list of executables (not including git) which should always come from Cygwin [#6000 @dra27]
  • OpamSysInteract.Cygwin.check_install renamed to analyse_install which now also returns whether the installation found was MSYS2 or Cygwin [#6000 @dra27]
  • OpamSysInteract.Cygwin.install: de-label packages argument [#6000 @dra27]

opam-format

  • OpamFilter.fold_down_left: correct handling of FDefined and FUndef [#5983 @dra27]
  • OpamFilter.map_up: correct handling of FDefined [#5983 @dra27]
  • OpamPath: remove OpamPath.Switch.last_env function in favor to OpamPath.last_env as the files are no more stored in switch directory [#5962 @moyodiallo - fix #5823]

opam-core

  • OpamCompat: add Seq.find_map from OCaml 4.14 [#6000 @dra27]
  • OpamConsole.menu now supports up to 35 menu items [#5992 @dra27]
  • OpamConsole: Add formatted_errmsg [#5999 @kit-ty-kate]
  • OpamProcess.run_background: name the stderr output file have the .err extension when cmd_stdout is given [#5984 @kit-ty-kate]
  • OpamStd.String: add split_quoted that preserves quoted separator [#5935 @dra27]
  • OpamStd.Sys.resolve_command: extracted the logic from OpamSystem.resolve_command, without the default environment handling from OpamProcess. [#5991 @dra27]
  • OpamStd.Sys.resolve_in_path: split the logic of OpamStd.Sys.resolve_command to allow searching for an arbitrary file in the search path [#5991 @dra27]
  • OpamStd.Sys.{get_windows_executable_variant,get_cygwin_variant,is_cygwin_variant}: renamed ~cygbin to ?search_in_path with a change in semantics so that it acts as though the directory was simply the first entry in PATH [#6000 @dra27]
  • OpamStubs.enumRegistry: on Windows, retrieves all the values of a given type from a registry key, with their names [#6000 @dra27]
  • OpamStubs.getVersionInfo: on Windows, retrives the version information block of an executable/library [#5963 @dra27]
  • OpamStubs.get_initial_environment: on Windows, returns the pristine environment for new shells [#5963 @dra27]
  • OpamStubs.readRegistry: on Windows, complements OpamStubs.writeRegistry [#5963 @dra27]
  • OpamSystem.copy_dir and OpamSystem.mv may display a warning on Windows if an invalid symlink (e.g. an LXSS Junction) is found [#5953 @dra27]
  • OpamSystem: add mk_unique_dir that returns an unique directory name as mk_temp_dir but not in temporary directory [#5457 @dra27]