Skip to content

2.3.0~alpha1

Pre-release
Pre-release
Compare
Choose a tag to compare
@kit-ty-kate kit-ty-kate released this 20 Sep 14:33
· 189 commits to master since this release
6ed22cb

This is the first alpha release of opam 2.3.0.

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

Please see our blog post for a highlight on the major changes and upgrade instructions.

Changelog:

Major changes

Repository

  • Silently mark packages requiring an unsupported version of opam as unavailable [#5665 @kit-ty-kate - fix #5631]
  • When loading a repository, don't automatically populate extra-files: field with found files in files/ [#5564 @rjbou]

List

  • ◈ Add a new --latests-only option to only list the latest packages [#5375 @kit-ty-kate]

Install

  • [BUG] Fix opam install --check pkg when pkg depends on a non-existing package [#6121 @kit-ty-kate]
  • Make opam install --check check if all dependencies are installed recursively [#6122 @kit-ty-kate - fix #6097]

Build (package)

  • ◈ Add --verbose-on option to enable verbose mode on specified package names [#5682 @desumn @rjbou]

Switch

  • ◈ Add opam switch import --deps-only option to install only dependencies of root package at import [#5388 @rjbou - fix #5200]
  • [BUG] Make accepted --repos URLs on creation consistent with opam repository [#6091 @Keryan-dev - fix #4673]
  • ◈ opam switch list-available will not display compilers flagged with avoid-version/deprecated unless --all is given [#6098 @kit-ty-kate - fix #6089]
  • Make opam switch set-invariant return the actual invariant syntax expected by --invariant [#5619 @kit-ty-kate - fixes #5491]

Solver

  • Add support for unordered criteria with the builtin-0install solver [#6130 @kit-ty-kate]
  • Add support for the -changed criteria with the builtin-0install solver, to make the solver prefer to keep packages installed at their current version [#6130 @kit-ty-kate]
  • Add support for the -count[avoid-version,solution] criteria with the builtin-0install solver, to avoid packages marked with avoid-version flag [#6130 @kit-ty-kate]
  • The default criteria for the builtin-0install solver changed from empty to -changed,-count[avoid-version,solution] [#6130 @kit-ty-kate]
  • The upgrade and fixup criteria for the builtin-0install solver changed from empty to -count[avoid-version,solution] [#6130 @kit-ty-kate]
  • Fix must unhelpful conflict messages by merging all formulas together [#6106 @kit-ty-kate]

Var/Option

  • Fix the value of the 'arch' variable when the current OS is 32bit on a 64bit machine [#5950 @kit-ty-kate - fix #5949]

VCS

  • Fail when git submodule fails to update instead of showing a warning and ignoring the error [#6132 @kit-ty-kate - fix #6131]

Miscellaneous changes

Global CLI

Init

  • Suppress all the Windows menus when running with opam init -ya [#6034 @dra27]

Actions

Config report

  • Always list all the repositories regardless of whether or not a switch is currently set [#6116 @kit-ty-kate]
  • Make opam config report return the actual invariant syntax expected by --invariant [#5619 @kit-ty-kate - fixes #5491]

Install

Build (package)

List

Var/Option

  • Warn when setting a variable if an option is shadowed [#4904 @rjbou - fix #4730]

Lint

  • Add E70 to check extra-files: duplicated fields [#5561 @rjbou]
  • Add E71 to check if the same checksum algorithm is used several times for a given url in url section [#5561 @rjbou]
  • Add E72 to check if the same checksum algorithm is used several times for a given url in extra-sources section [#5561 @rjbou]
  • Add E73 to check that paths in extra-files: are not escapable [#5561 @rjbou]
  • Update W59 (no checksum in url) to always display a warning, untying it from --check-upstream [#5561 @rjbou]

Env

  • Make the shell environment update hint easier to copy/paste [#6159 @kit-ty-kate - fix #6158]
  • Add install.exe to the list of non-shadowed programs when adding Cygwin's bin directory to PATH (ocamlfind et al can be affected by Vim for Windows) [#6190 @dra27]

Opamfile

  • Make all writes atomic [#5489 @kit-ty-kate]
  • Propagate future opamfile parse errors correctly [#6199 @dra27]
  • Ensure future syntax errors are only reported when the syntax version is greater than the client, not the format library [#6199 @dra27 - fix #6188]

External dependencies

  • Always pass --no-version-check and --no-write-registry to Cygwin setup [#6046 @dra27]
  • Use --quiet-mode noinput for the internal Cygwin installation (which is definitely a fully-specified command line) and --quiet-mode unattended for external Cygwin installations (in case the user does need to select something, e.g. a mirror) [#6046 @dra27]
  • [BUG] Fix apt/debian lookup for installed packages [#6054 @rjbou]

Build

Release scripts

  • Remove the getgroups workaround allowing users belonging to more than 32 groups now that it is no longer necessary [#6200 @dra27 @kit-ty-kate]

Install script

Admin

  • Change hash cache location from ~/.cache to <opamroot>/download-cache/hash-cache [#6103 @rjbou]
  • Make opam admin cache add missing symlinks [#6068 @kit-ty-kate - fix #6064]

Internal

  • Stop using polymorphic comparison when comparing OpamTypes.switch_selections [#6102 @kit-ty-kate]
  • Remove the meta opam packages opam and opam-admin [#6115 @kit-ty-kate]
  • Reduce allocations in OpamVersionCompare [#6144 @talex5]
  • Speedup OpamVersionCompare by 25% by removing the unused handling of epoch [#5518 @kit-ty-kate]
  • Fix error in OpamSystem.transform_patch - patches were only applied when debugging [#6182 @dra27 regression since #3449]
  • Move Windows stubs to opam-core [#5381 @dra27]

Testing and documentation

API updates

opam-client

  • OpamSwitchCommand.import: add optional ?deps_only argument to install only dependencies of root packages [#5388 @rjbou]
  • OpamArg.build_options: add --verbose-on flag [#5682 @desumn @rjbou]
  • OpamClientConfig.build_options: add verbose_on field [#5682 @desumn]
  • OpamClientConfig.E, OpamArg.environment_variables: and OPAMVERBOSEON support [#5682 @desumn @rjbou]
  • OpamListCommand.selector: Add NotFlag selector [#6098 @kit-ty-kate]

opam-repository

  • OpamRepository.fetch_from_cache: when an archive is found, add a symlink (or copy) for the ones found in opam file but not in cache [#6068 @kit-ty-kate]
  • ?full_fetch is now true by default instead of false [#6146 @kit-ty-kate - fix #6145]

opam-state

  • OpamStateConfig.opamroot_with_provenance: restore previous behaviour to OpamStateConfig.opamroot for compatibility with third party code [#6047 @dra27]
  • OpamSwitchState.{,reverse_}dependencies: make unavailable a non-optional argument to enforce speedups when availability information is not needed [#5317 @kit-ty-kate]
  • OpamFilteTools.add_aux_files: ignore non registered extra-files and make the files_subdir_hashes argument optional (defaults to false) [#5564 @@rjbou]
  • OpamFileTools: read_opam & read_repo_opam no more add non registered extra-files [#5564 @rjbou]

opam-solver

  • OpamCudfCriteria, OpamBuiltinZ3.Syntax: Move OpamBuiltinZ3.Syntax into a dedicated module OpamCudfCriteria [#6130 @kit-ty-kate]
  • OpamSolver.dependency_graph: make unavailable a non-optional argument to enforce speedups when availability information is not needed [#5317 @kit-ty-kate]

opam-format

  • Add OpamTypesBase.switch_selections_{compare,equal}: proper comparison functions for OpamTypes.switch_selections [#6102 @kit-ty-kate]
  • OpamFormula: add exists [#5317 @kit-ty-kate]
  • OpamTypes.universe: make u_available and u_attrs lazy to speedup actions that do not require availiblity information [#5317 @kit-ty-kate - fix #5314]
  • OpamFormula: add some missing comparison functions for relop, version_constraint and atom (compare_relop, compare_version_constraint and compare_atom respectively) [#6122 @kit-ty-kate]

opam-core

  • OpamStd.Env: add env_string_list for parsing string list environment variables (comma separated) [#5682 @desumn]
  • OpamHash: export compare_kind [#5561 @rjbou]
  • OpamFilename: add might_escape to check if a path is escapable, ie contains <sep>..<sep> [#5561 @rjbou]
  • Add OpamStd.Sys.getconf [#5950 @kit-ty-kate]
  • OpamStd.Sys.resolve_command: Fix opam unable to find executables on systems where users belong to more than 32 groups when opam is built using musl libc [#5381 @kit-ty-kate - fix #5373]
  • OpamACL: remove module [#5381 @kit-ty-kate]