2.2.0~beta3
Pre-release
Pre-release
kit-ty-kate
released this
10 Jun 20:07
·
365 commits
to master
since this release
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
).
Major changes
Global CLI
- Out-of-the-box UTF-8 paged --help on Windows [#5970 @kit-ty-kate]
- stop hiding the Windows specific arguments of opam init on non-Windows platforms [#6003 @rjbou @kit-ty-kate]
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
- Fix
opam tree --with-*
assigning thewith-*
variables to unrequested packages [#5919 @kit-ty-kate @rjbou - fix #5755] - Fix combinations of
opam tree --with-*
and--no-switch
[#5919 @kit-ty-kate @rjbou - fix #5920]
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
- Allow to parse opam 2.1 switch import files containing extra-files [#5943 @kit-ty-kate - fix #5941]
Miscellaneous changes
Init
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
- Fix rounding error when displaying the timestamp in debug mode [#5912 @kit-ty-kate - fix #5910]
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 allowmake.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 fromcygpath
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
- Upgrade the
opam-root-version
to2.2~beta
[#5904 @kit-ty-kate]
Config
- Move last-env
OPAM_LAST_ENV
files outside the switch to be in theopam root
[#5962 @moyodiallo - fix #5823]
Update / Upgrade
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
- Upgrade vendored cmdliner to 1.3.0 [#5970 @kit-ty-kate]
- Remove unused/untested Makefile targets lib-pkg [#5494 @kit-ty-kate]
- Upgrade vendored OCaml compiler to 4.14.2 [#5976 @kit-ty-kate]
Release scripts
- Upgrade the OCaml compiler used for releases to 4.14.2 [#5976 @kit-ty-kate]
Testing
- Improve and extend the tests [#5919 #5919 #5904 #5925 #5935 #5926 #5935 #5927 @rjbou @dra27]
- Improve the benchmarks [#5909 @kit-ty-kate]
- Improve the test infrastructure [#5935 #5938 #5998 @dra27]
API updates
opam-client
OpamClient.init
andOpamClient.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 inOpamClient
[#6000 @dra27]OpamSolution
: exposerprint_depext_msg
[#5994 @dra27]OpamSolution
: extractedinstall_sys_packages
fromOpamSolution.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 toanalyse_install
which now also returns whether the installation found was MSYS2 or Cygwin [#6000 @dra27]OpamSysInteract.Cygwin.install
: de-labelpackages
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
: removeOpamPath.Switch.last_env
function in favor toOpamPath.last_env
as the files are no more stored in switch directory [#5962 @moyodiallo - fix #5823]
opam-core
OpamCompat
: addSeq.find_map
from OCaml 4.14 [#6000 @dra27]OpamConsole.menu
now supports up to 35 menu items [#5992 @dra27]OpamConsole
: Addformatted_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
: addsplit_quoted
that preserves quoted separator [#5935 @dra27]OpamStd.Sys.resolve_command
: extracted the logic fromOpamSystem.resolve_command
, without the default environment handling from OpamProcess. [#5991 @dra27]OpamStd.Sys.resolve_in_path
: split the logic ofOpamStd.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, complementsOpamStubs.writeRegistry
[#5963 @dra27]OpamSystem.copy_dir
andOpamSystem.mv
may display a warning on Windows if an invalid symlink (e.g. an LXSS Junction) is found [#5953 @dra27]OpamSystem
: addmk_unique_dir
that returns an unique directory name asmk_temp_dir
but not in temporary directory [#5457 @dra27]