opam

opam is a source-based package manager. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow.

OTHER License

Stars
1.2K
Committers
159

Bot releases are hidden (Show)

opam - 2.2.1 Latest Release

Published by kit-ty-kate about 2 months ago

This is the release of opam 2.2.1.

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

Changelog:

Bug fixes

  • Fix a regression in opam install --deps-only where the direct dependencies were not set as root packages [#6125 @rjbou]
  • Fix a regression when fetching git packages where the resulting git repository could lead to unexpected outputs of git commands, by disabling shallow clone by default except when fetching an opam repositories [#6146 @kit-ty-kate - fix #6145]
  • Mitigate curl/curl#13845 by falling back from --write-out to --fail if exit code 43 is returned by curl [#6168 @dra27 - fix #6120]

Build, test updates

  • Synchronise opam-core.opam with opam-repository changes [#6043 @dra27]
  • Fix and improve the release script and the creation of the opam-full-<version>.tar.gz archive [#6067 @kit-ty-kate]
  • Improve and extend the tests [#6125 #6146 @rjbou]
  • Improve the test infrastructure [#6079 #6081 @rjbou]

API changes

  • ?full_fetch is now true by default instead of false [#6146 @kit-ty-kate - fix #6145]

Note: the linux binaries were built using 34fb54e9f23aed602b49958b3e545ab1a26ebf49 instead of the release tag

opam - 2.2.0

Published by kit-ty-kate 4 months ago

This is the release of opam 2.2.0.

This release candidate contains a couple of fixes compared to the previous 2.2.0~rc1 release.

Please see the blog post for a description of the main features compared to opam 2.1.6 and the upgrade instructions.

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

Changelog compared to 2.2.0~rc1:

Miscellaneous changes

Version

  • Bump opam-root-version to 2.2 [#5980 @kit-ty-kate]

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]

API updates

opam-state

  • OpamStateConfig.opamroot_with_provenance: restore previous behaviour to OpamStateConfig.opamroot for compatibility with third party code [#6047 @dra27]

⚠️ opam-full-2.2.0-1.tar.gz is equivalent to opam-full-2.2.0.tar.gz but contains the missing mccs archive as noted in https://github.com/ocaml/opam/pull/6066

opam - 2.2.0~rc1

Published by kit-ty-kate 4 months ago

This is the first release candidate of opam 2.2.0.

This release candidate contains enhancements, updates & fixes compared to the previous 2.2.0~beta3 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

Update / Upgrade

  • Fix opam upgrade wanting to recompile opam files containing the x-env-path-rewrite field [#6029 @kit-ty-kate - fix #6028]

Init

  • Provide defaults so opam init -y no longer asks questions [#6033 @dra27 - fix #6013]

Miscellaneous changes

Global CLI

  • Fix OpamConsole.menu > 9 options [#6026 @kit-ty-kate]

Build

  • Fix the lower-bound constraint on ocaml-re (bump from >= 1.9.0 to >= 1.10.0) [#6016 @kit-ty-kate]
  • Update source file location as caml.inria.fr is unavailable [#6032 #5789 @mtelvers @kit-ty-kate]

Release scripts

  • Add Windows to opam's release script [#5789 @kit-ty-kate]

Internal

  • Fix a wrong use of OpamFilename.of_string [#6024 @kit-ty-kate]

Testing

  • Improve and extend the tests [#6029 @kit-ty-kate]

API updates

opam-format

  • OpamTypesBase: Add nullify_pos_map and nullify_pos_value [#6029 @kit-ty-kate]
opam - 2.2.0~beta3

Published by kit-ty-kate 4 months ago

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

  • 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 the with-* 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

  • [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

  • 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 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

  • Upgrade the opam-root-version to 2.2~beta [#5904 @kit-ty-kate]

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

  • 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 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]
opam - 2.1.6

Published by kit-ty-kate 5 months ago

This is the release of opam 2.1.6.

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

Changelog:

  • Changes necessary for opam repository (see https://github.com/ocaml/opam-repository/issues/23789):
    • 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]
  • Better recognize depexts on Gentoo, NetBSD, OpenBSD [#5065 @mndrix]
  • Upgrade the vendored dune to 3.14.0 [#5869 @kit-ty-kate]
  • Upgrade the vendored mccs to 1.1+17 [#5769 @kit-ty-kate]
  • Require mccs >= 1.1+17: Fix debug logs showing up regardless of verbosity on macOS 12.7.1 / 13.6.3 / 14.2 and FreeBSD [#5769 @kit-ty-kate]
  • API Changes:
    • 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]

Pre-compiled binaries built using the release script in 1cb2f337b53c316da92de3370016a220d141497e

opam - 2.2.0~beta2

Published by kit-ty-kate 6 months ago

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

  • Disable Software Heritage fallback by default [#5899 @kit-ty-kate]

Repository

  • Warn if GNU patch is not detected during a repository update [#5893 @kit-ty-kate]

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

  • Do not check for cppo in the configure script (not used directly anymore since #5498) [#5794 @kit-ty-kate]
  • Upgrade vendored cmdliner to 1.2.0 [#5797 @kit-ty-kate]
  • Upgrade the vendored dune to 3.14.0 [#5869 @kit-ty-kate]
  • Upgrade the vendored re to 1.11.0 [#5869 @dra27]
  • Upgrade the vendored ocamlgraph to 2.1.0 [#5869 @dra27]
  • Upgrade the vendored opam-file-format to 2.1.6 [#5869 @dra27]
  • Upgrade the vendored dune to 3.14.2 [#5880 @kit-ty-kate]

Install script

  • Add support for doas as an alternative to sudo [#5820 @kit-ty-kate - fix #5792]

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

  • [#5812 #5818 #5849 #5850 #5885 #5905 #5840 @Khady @sorawee @AldanTanneo @kit-ty-kate]

Testing

  • Improve and extend the tests [#5864 #5829 #5840 #5888 @moyodiallo @kit-ty-kate @rjbou]
  • Improve the benchmarks [#5900 @kit-ty-kate]
  • Improve the test infrastructure [#5851 #5869 #5788 @dra27 @rjbou]

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]
opam - 2.2.0~beta1

Published by kit-ty-kate 9 months ago

This is the first beta release of opam 2.2.0.

This beta release contains new features, enhancements, updates & fixes compared to the previous 2.2.0~alpha3 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, PR open to upload new ones).

Changelog:

Major changes

Init

  • Check and advertise to use Git for Windows [#5718 @rjbou - fix #5617]
  • Add the --git-location and --no-git-location cli arguments for Windows [#5718 @rjbou - fix #5617]

Option

  • Add a new git-location modifiable opam option used only on Windows [#5718 @rjbou - fix #5617]

Build

  • When compiling opam on Windows with MinGW, the resulting opam binary now contains libstdc++ instead of requiring the DLL to be distributed alongside it or present in the environment [#5680 @kit-ty-kate - fix #5647]
  • Add ./configure --enable-static to compile the opam binary statically on Linux [#5680 @kit-ty-kate - fix #5647]

Env

  • Fix opam env containing carriage return on Cygwin [#5715 @dra27 @rjbou @kit-ty-kate - fix #5684]
  • Remove stray comments from pwsh and cmd env [#5715 @dra27]

Miscellaneous changes

Solver

  • Fix debug logs showing up regardless of verbosity on macOS 12.7.1 / 13.6.3 / 14.2 and FreeBSD [#5769 @kit-ty-kate]

Build

  • Upgrade to, and require mccs >= 1.1+17 [#5769 @kit-ty-kate]

Tree

  • Fix opam tree --dev [#5687 @rjbou - fix #5675]
  • Fix opam tree --no-switch: instead of emptying the current switch from its installed packages, it load a fresh virtual switch [#5687 @rjbou - fix #5675]

Switch

  • Display a more precise message when Ctrl-C'ing during an opam switch creation ("Switch left partially installed") [#5713 @rjbou - fix #5710]

Documentation

  • [#5775 @lukstafi]

Testing

  • Improve and extend tests [#5687 #5742 @rjbou]
  • Improve test engine [#5723 @dra27]

API updates

opam-client

  • OpamClient: on init and reinit add git lookup in windows checks [#5718 @rjbou]
  • OpamClient.init: add option git-location argument for git binary location configuration [#5718 @rjbou]
  • OpamTreeCommand.run: remove optional argument no_switch [@rjbou #5687]

opam-format

  • OpamFile.Config: add git-location field and its functions [#5718 @rjbou]

opam-core

  • OpamCoreConfig: add git_location field [#5718 @rjbou]
  • OpamStd.Env.cyg_env: add git location argument and labels cygbin and git_location [#5718 @rjbou]
  • OpamSystem.apply_cygpath: runs cygpath over the argument [#5723 @dra27 - function itself added in #3348]
opam - 2.2.0~alpha3

Published by kit-ty-kate 11 months ago

This is the third alpha release of opam 2.2.0.

This alpha release contains new features, enhancements, updates & fixes. 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

Environment variables path rewriting

  • When computing environment variables updates, use rewriting rules (defined in opam file, or default per variable) to split, join, quote, etc. [#5636 @rjbou - fix #5602 #4690 #2927]
  • Add x-env-path-rewrite extensions field to permit specification of rewriting rules for variables defined in setenv and build-env: no rewrite; separator and path format formulae [#5636 @rjbou - fix #5602 #4690 #2927]
  • Reinstall if x-env-path-rewrite is updated [#5636 @rjbou]
  • environment file now stores environment variable rewriting rules [#5636 @rjbou]

Sandbox

  • Make /tmp writable again to restore POSIX compliancy [#5634 #5662 @kit-ty-kate - fixes #5462]

Tree

  • Allow packages with a specific version, directories or local opam files, as input [#5613 @kit-ty-kate]
  • Add handling of --recurse and --subpath for directory arguments [#5613 @kit-ty-kate]

Admin

  • Add add-extrafiles command to add, check, and update extra-files: field according files present in files/ directory [#5647 @rjbou]

Lint

  • Allow to mark a set of warnings as errors using a new syntax -W @1..9 [#5652 @kit-ty-kate @rjbou - fixes #5651]

Miscellaneous changes

Global CLI

  • [BUG] Fix the OPAMVERBOSE setting, levels 0 and 1 were inverted: "no" gave level 1, and "yes" gave level 0 [#5686 @smorimoto]

Install

  • [BUG] On install driven by .install file, track intermediate directories too, in order to have them suppressed at package removal [#5691 @rjbou - fix #5688]
  • [BUG] With --assume-built, resolve variables in depends filter according switch & global environment, not only depends predefined variables [#570 @rjbou - fix #5698]
  • [BUG] Handle undefined variables defaults to false in dependencies formula resolution for assume built [#5701 rjbou]

Lint

  • [BUG] Fix extra-files handling when linting packages from repositories, see #5068 [#5639 @rjbou]
  • Improve the debug log when checking extra-files [#5640 @rjbou]

Repository

  • [BUG] Fix OPAMCURL and OPAMFETCH handling [#5607 @rjbou - fix #5597]

Opamfile

  • Fix x-locked type error message [#5636 @rjbou]

Build

  • [BUG] Fix "make cold" on Windows when gcc is available [#5635 @kit-ty-kate - fixes #5600]
  • Fix incorrect error message when alternate C compiler is missing [#5667 @dra27 - partial fix #5661]

Internal: Windows

  • Fix sporadic crash and segfault in shell detection (seen in native containers) [#5714 @dra27]

Release

  • Create ppc64le and s390x binaries during releases [#5420 @kit-ty-kate]
  • Workaround incorrect <limits.h> in musl [#5383 @dra27]
  • Upgrade to FreeBSD 13.2 and OpenBSD 7.4 [#5727 @kit-ty-kate]

Documentation

  • [#5636 #5706 #5708 @MisterDA @kit-ty-kate @rjbou]

Testing

  • Improve and extend tests [#5560 #5600 #5607 #5636 #5639 #5647 #5672 #5686 #5691 #5700 #5701 @kit-ty-kate @rjbou]
  • Improve test engine [#5560 #5606 #5607 #5654 #5657 @rjbou]

API updates

opam-client

  • OpamTreeCommand.run: now takes an atom instead of name [#5613 @kit-ty-kate]

opam-format

  • OpamFile.Environment: add parsing-printing of rewriting rules, keeping backward compatibility [#5636 @rjbou]
  • OpamFile.OPAM: effective_part keeps x-env-path-rewrite, affects also effectively_equal [#5636 @rjbou]
  • OpamFile.OPAM: add handling of x-env-path-rewrite extensions field, that specifies rewrite rules [#5636 @rjbou]
  • OpamFilter: add expand_interpolations_in_file_full which allows setting the output file along with the input file [#5629 @rgrinberg]
  • OpamFilter: expose string_interp_regex which allows clients to identify variable interpolations in strings [#5633 @gridbugs]
  • OpamFormat.V: add path_format & separator value parser printer [#5636 @rjbou]
  • OpamFormat: add formula_items to permit definition of formulae pp not only of the type package-formula [#5636 @rjbou]
  • OpamPp.fallback: add name concatenation and printing fallback too [#5636 @rjbou]
  • OpamTypes.env_update: add a rewrite field, that contains environment variable rewriting rules (formula to resolved, or already resolved, or no rewriting) [#5636 @rjbou]
  • OpamTypes.env_update: change from tuple to a record [#5636 @rjbou]
  • OpamTypesBase: add env_update_resolved and env_update_unresolved builders [#5636 @rjbou]
  • OpamTypesBase: add env_update, env_update_resolved, and env_update_unresolved builders [#5636 @rjbou]
  • OpamTypesBase: add to_string function for path_format & separator [#5636 @rjbou]

opam-core

  • OpamStd.Config.env_level: fix level parsing, it was inverted (eg, "no" gives level 1, and "yes" level 0) [#5686 @smorimoto]
  • OpamStd.Sys.chop_exe_suffix: removes .exe from the end of a path, if present [#5714 @dra27]
  • OpamSystem.apply_cygpath_path_transform: fix cygpath call, use resolved name [#5716 @rjbou]
  • OpamSystem.get_cygpath_path_transform: add labeled argument to specify if path is a pathlist [#5636 @rjbou]
  • OpamSystem.mk_temp_dir: resolve real path with OpamSystem.real_path before returning it [#5654 @rjbou]
  • OpamSystem.resolve_command: in command resolution path, check that the file is not a directory and that it is a regular file [#5606 @rjbou - fix #5585 #5597 #5650 #5626]
opam - 2.2.0~alpha2

Published by rjbou about 1 year ago

This is the second alpha release of opam 2.2.0.

This alpha release contains new features, enhancements, updates & fixes. 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:

New feature

Init

  • Make opam init install Cygwin internally automatically by default instead of asking the user to install it manually [#5545 @rjbou @dra27]
  • Add --no-cygwin-setup, --cygwin-internal-install, --cygwin-local-install and --cygwin-location <path> experimental flags available only on Windows to permit non-interactive Cygwin configuration [#5545 @rjbou]

Enhancements, updates, and fixes

Var/Option

  • Error with more accurate message in case of package/self variable wrongly given as argument [#4903 @rjbou - fix #4489]
  • Handle package variable syntax in parse update regexp [#4903 @rjbou - fix #4489]

Lint

  • E29: The conflicts field's filter does not support package variables [#5535 @kit-ty-kate]

Admin

  • On linting, clean output when stdout is not tty [#5594 @rjbou]

Build

  • Run autoupdate to silence autogen warnings [#5555 @MisterDA]
  • Update bootstrap to use FlexDLL 0.43 from ocaml/flexdll [#5579 @MisterDA]
  • configure: Ensure a complementary (32bit on 64bit platforms and 64bit on 32bit platforms) C compiler is installed on Windows [#5522 @kit-ty-kate]
  • Bump version, authors [#5603 #5609 #5611 @rjbou]

Testing

Improve and extend tests

  • [#5385 #5535 @rjbou]

Improve test engine

Cram tests

  • [#5481 @dra27]

Github Actions

  • [#5555 #5588 #5598 @rjbou]
  • OpamInitDefault: add required_packages_for_cygwin packages tool list [#5545 @rjbou]
  • OpamClient.init: now propose to install internal Cygwin install [#5545 @rjbou]
  • OpamSolution.get_depext: do not confirm in case of internal Cygwin install [#5545 @rjbou]
  • OpamClient.init: add optional cygwin_setup argument to permit non interactive setup [#5545 @rjbou]
  • OpamCommands.init: add cygwin setup flags [#5545 @rjbou]
  • OpamSysinteract.Cygwin: add install that performs a Cygwin install in opam internals [#5545 @rjbou @dra27]
  • OpamSysInteract.Cygwin: add is_internal [#5545 @rjbou]
  • OpamSysInteract.install: on Cygwin, upgrade automatically packages, and select local cache [#5545 @rjbou]
  • OpamConsole.carriage_delete: no-op when not tty out [#5595 @rjbou]
  • OpamSystem.make_command: Remove the warning triggered when the command contained spaces [#5596 @rjbou - fix #5163]
opam - 2.2.0~alpha

Published by rjbou over 1 year ago

This is the alpha release of opam 2.2.0.

This alpha release contains new features, enhancements, updates & fixes. 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 (possibly scripts breaking changes are prefixed with ✘):

New features

Windows Support

Opam 2.2 comes with native Windows compatibility. You can now use opam from your preferred Windows terminal! We rely on the Cygwin UNIX-like environment for Windows as a compatibility layer, but it is possible for packages to generate native executables.

For more details, see blog post entry.

  • Support MSYS2 on Windows for depexts [#5348 @jonahbeckford #5433 @rjbou]
  • Don't require cc on Windows [#5541 @dra27]
  • Generate init and variables for Windows [#5541 @dra27]
  • When defined, add Cygwin binary path to build environment [#5543 @rjbou]
  • Depexts support Cygwin on Windows [#5542 @rjbou] [#5544 @rjbou]
  • On Windows, ask for pre-existent Cygwin installation, check it, and configure opam with it [#5544 @dra27 @rjbou]

Recursive Pin

Recursive pinning allows to have opam lookup for opam files into subdirectories. It provides 2 new options --recursive and --subpath <path> that permit, respectively, to lookup recursively in directories, and to focus on a given directory. They can be combined.

For more details, see blog post entry.

  • Reactivate subpath and recursive pinning --recursive and --subpath [#4876 @rjbou] [#5219 @rjbou]

Tree

opam tree show packages and their dependencies on a tree view. It can also display a reverse-dependency tree (through opam why, which is an alias to opam tree --rev-deps`), which can be useful to examine how dependency versions get constrained.

For more details, see blog post entry.

  • Add tree subcommand to display a dependency tree of currently installed packages [#5171 @cannorin - fix #3775]
  • Add why subcommand to examine how the versions of currently installed packages get constrained (alias to tree --rev-deps) [#5171 @cannorin - fix #3775]
  • tree subcommand now supports --json option [#5303 @cannorin - fix #5298]

Recommended development tools

There is now a way for a project maintainer to share their project developments tools: the with-dev-setup dependency flag. It is used in the same way as with-doc and with-test.

For more details, see blog post entry.

  • Add --dev-setup option to install recommended development tools from opam file (as with-test/with-doc), and its environment variable OPAMWITHDEVSETUP, and for post-messages [#5016 #5160 #5214 @rjbou - fix #4959]
  • Opam file: Add with-dev-setup variable for recommended tools [#5016 #5214 @rjbou]

Software Heritage binding

Opam now integrates a fallback to Software Heritage archive retrieval, based on SWHID. If an SWHID url is present in an opam file, the fallback can be activated.

For more details, see blog post entry.

  • Add Software Heritage fallback when downloading archive source, triggered when all urls and cache fails, with confirmation [#4859 @rjbou @zapashcanon]
  • Add swhid url handling in url field [#4859 @rjbou @zapashcanon]

Formula (experimental)

It is now possible to leverage the full expressivity of package dependency formulas from the command-line during switch creation and package operations.

  • Add --formula option to specify a formula to install [#4975 @AltGr]

New options

Pin

  • New option opam pin --current to fix a package to its current state (disabling pending reinstallations or removals from the repository) [#4973 @AltGr - fix #4970]
  • Add opam pin remove --all to remove all the pinned packages from a switch [#5308 @kit-ty-kate]
  • Allow opam pin remove to take a package (<pkg>.<version>) as argument [#5325 @kit-ty-kate]

Exec

  • Add opam exec --no-switch to remove opam environment from launched command [#4957 @kit-ty-kate - fix #4951]

Source

  • Add --no-switch option [#4850 @rjbou - fix #4858]

Clean

  • Add --untracked option to remove untracked files interactively [#4915 @rjbou - fix #4831] {2.1.3}

Switch

  • Add support for opam switch - that goes to previous selected global switch [#4910 @kit-ty-kate - fix #4688]
  • ✘ Change --base into --invariant, column name and the content is invariant formula installed dependencies [#5208 @rjbou]

Admin

  • Add opam admin add-constraint <cst> --packages to select a subset of packages to apply constraints [#5386 @rjbou - fix #3077]

Repository

  • Add OPAMREPOSITORYTARRING environment variable to enable repository tarring optimisation, it is disabled by default because it is an optimisation only on some os/configurations [#5015 @rjbou]

Enhancements, updates, and fixes

Initialisation

opam init

  • Run the sandbox check in the temporary directory [#4787 @dra27 - fix #4783] {2.1.1}
  • Use .opam from %HOME% or %USERPROFILE% on Windows, only if found; otherwise use %LOCALAPPDATA%\opam as root. [#5212 @dra27]
  • Display actual location of OPAMROOT in opam init if --root or OPAMROOT have been set [#5212 @dra27 - fix #4992]
  • Surround and add a comment describing the role of the lines added to the ~/.profile or equivalent [#5456 @kit-ty-kate]
  • Use menu for init setup [#5057 @AltGr #5217 @dra27]
    • ✘ Change default from no to yes for shell update [#5456 #5540 @rjbou @kit-ty-kate]

Fixes

  • Fix opam init and opam init --reinit when the jobs variable has been set in the opamrc or the current config. [#5056 @rjbou] {2.1.3}

Variable & option configuration

  • Handle empty environment variable updates - missed cherry-pick from 2.0 [#4840 @dra27] {2.1.1}
  • When a field is defined in switch and global scope, try to determine the scope also by checking switch selection [#5027 @rjbou] {2.1.3}
  • Resolve and use global config and environment variable before polling system informations (os, os-family, etc.) [#4892 @rjbou - fix #4883]
  • Catch an package not found error and print skipping message [#5280 @rjbou - fix #5279]
  • Make archive-mirrors modifiable (extendable) via opam config [#5321 @hannesm @rjbou - fix #5316]
  • Open the release files when determining the distribution [#5568 @Leonidas-from-XIV

Fixes

  • Fix OPAMCURL and OPAMFETCH value setting [#5111 @rjbou - fix #5108]
  • Don't error when displaying if switch is not set [#5027 @rjbou - fix #5025] {2.1.3}
  • Try to set a variable with option --switch <sw> fails instead of writing a wrong switch-config file [#5027 @rjbou] {2.1.3}
  • Fix typo in error message for opam var [#4786 @kit-ty-kate - fix #4785] {2.1.1}

Config report

  • Add invariant and compiler packages fields [#5480 @rjbou - fix #5478]

Fixes

  • Don't fail if no switch is set [#5198 @rjbou]

CLI

  • Add CLI 2.2 handling [#4853 @rjbou] {2.1.1}
  • --no-depexts is the default in CLI 2.0 mode [#4908 @dra27] {2.1.2}
  • Error report display: print action name [#5045 @AltGr]
  • Add experimental flags handling [#5099 @rjbou]
  • Put back support for switch creation with packages argument and --packages option with CLI 2.0, and a specific error message for CLI 2.1 [#4853 @rjbou - fix #4843] {2.1.1}

Fixes

  • Fix default CLI handling for simple flags [#5099 @rjbou]

Client

  • Check whether the repository might need updating more often [#4935 @kit-ty-kate]
  • ✘ It is no longer possible to process actions on packages that depend on a package that was removed upstream [#4969 @AltGr]
  • ✘ PEF output: change base field into invariant-pkg [#5208 @rjbou]

Fixes

  • Fix all empty conflict explanations [#4982 #5263 @kit-ty-kate] {2.1.4 partially} {2.1.3}
  • Fix passing archive-mirrors field from init config file to config [#5315 @hannesm] {2.1.5}
  • Fix json double printing [#5143 @rjbou]

Download optimisation

  • Factorise source-archive fetching. If several packages relies on the same archive, it is downloaded once then copied to several source directories [#4893 @rjbou - fix #3741]

Install

  • Reimplement deps-only [#4975 @AltGr]
    • Fix conflict handling [#5136 @AltGr]
    • Ensure correct handling of dev dependencies [#5236 @AltGr - fix #5177]
    • Ensure correct handling of external dependencies [#5236 @AltGr - fix #5185]
  • Log a summary of recorded .changes as a ACTION trace log to help debug #4419 [#5144 @na4zagin3]
  • Use the default criteria during reinstall/upgrade when requesting at least one non-installed package [#5228 @kit-ty-kate]

Fixes

  • Prevent .changes files from being updated during dry-run [#5144 @na4zagin3 - fix #5132]

UI

  • Add subpath on actions listing urls [#4876 @rjbou]
  • Make the status of pinned packages more explicit during installation [#4987 @kit-ty-kate - fix #4925]
  • Refresh the actions list output, now sorted by action/package rather than dependency [#5045 @kit-ty-kate @AltGr - fix #5041]
  • Put back the actions summary as part of confirmation question [#5045 @AltGr]
  • Fix display of pinned packages in action list [#5079 @rjbou]
  • Show the reason for installing packages when using opam reinstall [#5229 @kit-ty-kate]

Remove

Fixes

  • Fix message when running opam remove on an unavailable package [#4995 @AltGr - fix #4890]
  • Fix removal of root packages with -a and an optional dependency explicitly specified [#4995 @AltGr - fix #4727]

Switch

  • On loading, check for executable external files if they are in PATH, and warn if not the case [#4932 @rjbou - fix #4923]
  • When inferring a 2.1+ switch invariant from 2.0 base packages, don't filter out pinned packages as that causes very wide invariants for pinned compiler packages [#5176 @dra27 - fix #4501] {2.1.3}
  • When setting invariant, really install invariant formula if not installed in switch [#5188 @rjbou]
  • When setting invariant, update switch state to compute invariant packages [#5208 @rjbou]
  • On import, check that installed pinned packages changed, reinstall if so [#5181 @rjbou - fix #5173]
  • Update compiler / base packages handling: always updated, the field contains installed packages resolving invariant formula [#5208 @rjbou]
    • Fix performance issue from #5208 [#5503 @kit-ty-kate - fix #5502]
  • Fill empty switch synopsis with invariant formula instead of compiler package name [#5208 @rjbou]

Fixes

  • Ensure setenv can use package variables defined during the build [#4841 @dra27] {2.1.1}
  • Fix set-invariant: default repos were loaded instead of switch repos [#4869 @rjbou] {2.1.1}
  • Enforce extra-source to have a checksum when using "opam switch export --freeze" [#5418 @kit-ty-kate]

Pin

  • Switch the default version when undefined from ~dev to dev [#4949 @kit-ty-kate]
  • Scan: show subpaths [#4876 @rjbou]

Fixes

  • Fix using --working-dir with non pinned packages: it was not downloading sources as they were remove from package that need sources [#5082 @rjbou - fix #5060]
  • Fix windows path for subpath, by introducing their own type in OpamFilename [#4876 @rjbou]
  • Fix recpin of locked pins when there is no change in lock file [#5079 @rjbou - fix #4313]
  • Fix opam install ./file.opam lock pinning [#5148 @rjbou - fix #4313]
  • Fix origin opam file retrieval when opam originate from locked file [#5079 @rjbou - fix #4936]
  • When reinstalling a package that has a dirty source, if uncommitted changes are the same than the ones stored in opam's cache, opam consider that it is up to date and nothing is updated [#4879 @rjbou] {2.1.3}
  • Handle external dependencies when updating switch state pin status (all pins), instead as a post pin action (only when called with opam pin [#5047 @rjbou - fix #5046] {2.1.3}

List

Updates

  • Some optimisations to 'opam list --installable' queries combined with other filters [#4882 @AltGr - fix #4311] {2.1.3}
  • Improve performance of some opam list combination (e.g. --available --installable) [#4999 @kit-ty-kate] {2.1.3}
  • Improve performance of opam list --conflicts-with when combined with other filters [#4999 @kit-ty-kate] {2.1.3}
  • Improve performance for recursive --required-by and depends-on [#5337 @rjbou]
  • Colorise as unavailable (magenta) packages that are specified in the invariant formula and that do not verify it (previous was non installed compiler package) [#5208 @rjbou]

Fixes

  • Fix coinstallability filter corner case [#5024 @AltGr] {2.1.3}

Show

New field

  • Add depexts to default printer [#4898 @rjbou]
  • Add printer for url.swhid: [#4859 @rjbou]

Updates

  • Make opam show --list-files <pkg> fail with not found when <pkg> is not installed [#4956 @kit-ty-kate - fix #4930]
  • Improve performance of opam show by 300% when the package to show is given explicitly or unique [#4998 @kit-ty-kate - fix #4997 and partially #4172] {2.1.3}

Source

Fixes

  • Fix directory display in dev mode [#5102 @rjbou]
  • Download source even if no switch is set [#4850 @rjbou @zapashcanon - fix #4809]

Update / Upgrade

Fixes

  • If a package is pinned from a locked file, it is automatically updated/upgraded accordingly a lock file (same extension) [#5080 @rjbou]

UI

  • More clear message for pinned package update that have local changes, with no working dir given, or no arguments specified [#5300 @rjbou - fix #5294]

Lint

New lint

  • Warning 68: add warning for missing license field [#4766 @kit-ty-kate - partial fix #4598]

Updates

  • Warning 47: remove the mention of the opam 1.2 descr file in the warning message [#5069 @rjbou - fix #4989]
  • Warning 56: detection removed, since OPAM_LAST_ENV allows reliable reverting [#5417 @dra27]
  • Error 57: (capital on synopsis) not trigger Warning 47 (empty descr) [#5070 @rjbou]
  • Error 57: Enforce synopsis to always be there, restoring behaviour from opam 2.1 [#5442 @kit-ty-kate]
  • Update repository package filename display [#5068 @rjbou]
  • Warning 62: use the spdx_licenses library to check for valid licenses. This allows to use compound expressions such as "MIT AND (GPL-2.0-only OR LGPL-2.0-only)", as well as user defined licenses e.g. "LicenseRef-my-custom-license" [#4768 @kit-ty-kate - fix #4598] [#5571 @3Rafal - fix #5570]

Fixes

  • Fix linting packages from repository with tarred repositories, the file in temporary repository was no more available when lint is done [#5068 @rjbou]
  • Error 67: check checksums only for VCS urls [#4960 @rjbou]

Repository

Security fix

  • [SECURITY] Fix opam installing packages without checking their checksum when the local cache is corrupted in some cases [#5538 @kit-ty-kate] {2.1.5}

Updates

  • When several checksums are specified, instead of adding in the cache only the archive by first checksum, name by best one and link others to this archive [#4696 @rjbou]
  • Set the priority of user-set archive-mirrors higher than the repositories'. This allows opam-repository to use the default opam.ocaml.org cache and be more resilient to changed/force-pushed or unavailable archives. [#4830 @kit-ty-kate - fix #4411]
  • Repository tarring "optimisation" no more needed, removed in favor of a plain directory. It still can be used with environment variable OPAMREPOSITORYTARRING. [#5015 @kit-ty-kate @rjbou @AltGr - fix #4586] {2.1.3}
    • Fix loading a plain repository from a tarred one [#5109 @rjbou]
  • Avoid reloading repository contents when the repo has no changes [#5043 @Armael]
  • Avoid rewriting cache is nothing changed [#5146 @rjbou]
  • On setting url fetch failure (sync or file error), revert url change and rollback to old one [#4967 @rjbou - fix #4780 #4779]
  • Update opam repository man doc regarding removal of the last repository in a switch [#4435 - fix #4381]

UI

  • Don't display global message when this-switch is given [#4899 @rjbou - fix #4889]

Lock

Update

  • Remove url section from lock file, it is ignored on pinning [#5465 @rjbou]

Fix

  • Fix lock generation of multiple interdependent packages [#4993 @AltGr]

External dependencies

General

  • Run command as admin only when needed [#5268 @kit-ty-kate]
  • Don't run depext computation when there is no depexts [#5548 @rjbou]

Fix

  • When checking again, more accurate check of missing packages (available and not found) [#5157 @rjbou]

System-specific

  • Better recognize depexts on Gentoo, NetBSD, OpenBSD [#5065 @mndrix]
  • Set DEBIAN_FRONTEND=noninteractive for unsafe-yes confirmation level [#4735 @dra27 - partial fix #4731]
  • Homebrew: Add support for casks and full-names [#4801 @kit-ty-kate] {2.1.1}
  • Disable the detection of available packages on RHEL-based distributions. This fixes an issue on RHEL-based distributions where yum list used to detect available and installed packages would wait for user input without showing any output and/or fail in some cases [#4791 @kit-ty-kate - fix #4790] {2.1.1}
  • Fallback on dnf if yum does not exist on RHEL-based systems [#4825 @kit-ty-kate] {2.1.2}
  • Archlinux: handle virtual package detection [#4831 @rjbou - partial fix #4759]
  • Stop zypper from upgrading packages on updates on OpenSUSE [#4978 @kit-ty-kate] {2.1.3}

Fix

  • Fix depext alpine tagged repositories handling [#4763 @rjbou] [2.1.0~rc2 #4758]

UI

  • Improve the error message when neither MacPorts or Homebrew could be detected on macOS [#5240 @kit-ty-kate]
  • Print depexts together with action list on --show [#5236 @AltGr]
  • Don't display system package manager helper if packages are not found [#5157 @rjbou]
  • Increase verbose logging of command to 4 [#5151 @rjbou]
  • Refactored depext-related questions, with a flat menu instead of nested y/n questions [#5053 @AltGr - fix #5026]
    • Fix removal of interactive special characters is output is not tty [#5155 @rjbou]
    • Fix behaviour of menu and depexts in non-interactive environments [#5295 @AltGr]
    • Reword message for the ignore path to avoid ambiguity [#5499 @AltGr]

Testing

  • Introduce dummy-success & dummy-failure os-family to make testing depexts behaviour easier [#5268 @kit-ty-kate]
    • Add specification of installed/available packages: dummy-<success|failure>[:<*|0|pkgslist>:*|0|pkgslist>]" [#5453 @rjbou @dra27]

Shell

Updates

  • dash: recognize dash as a POSIX shell for opam env [#4816 @jonahbeckford]
  • pwsh,powershell: use $env: for opam env [#4816 @jonahbeckford]
    • Use :: instead of REM [#5541 @dra27]
    • Don't generate .profile for cmd & powershell [#5541 @dra27]
  • Command prompt: use SET for opam env [#4816 @jonahbeckford]
    • Use set instead [#5541 @dra27]

Fix

  • Fish: fix deprecated redirection syntax ^ [#4736 @vzaliva]

Admin

  • opam admin cache now ignores all already present cache files. Option --check-all restores the previous behaviour of validating all checksums.

Fixes

  • Fix repo-upgrade internal error [#4965 @AltGr] {2.1.3}
  • Fix --environment documentation [#5235 @rjbou - fix #5184]
  • Fix opam admin add-constraint failing with Not_found in some situations [#5336 @kit-ty-kate - fix #5334]

Sandbox

  • Sync the behaviour of the macOS sandbox script with Linux's: /tmp is now ready-only [#4719 @kit-ty-kate]
  • Always mount every directories under / on Linux [#4795 @kit-ty-kate]
  • Get rid of OPAM_USER_PATH_RO (never used on macOS and no longer needed on Linux) [#4795 @kit-ty-kate]
  • Resolve symlink for ccache directory [#5267 @rjbou - fix #5194]
  • Enforce the macOS sandbox script to use /bin/bash instead of /usr/bin/env bash for a more consistent experience [#5451 @kit-ty-kate]

UI

  • Print error message if command doesn't exist [#4971 @kit-ty-kate - fix #4112] {2.1.3}

Opamfile

  • Add x-locked extension fields for overlay internal use, it stores if the files originate from a locked file, if so its extension [#5080 @rjbou]
  • Set depext-bypass parsing with depth 1, no needed bracket if single package [#5154 @rjbou]

Fixes

  • Fix substring errors in `to_string_with_preserved_format [#4941 @rjbou - fix #4936]
  • Variables are now expanded in build-env (as for setenv) [#5352 @dra27] {2.1.5}

Solver

  • Add builtin support for the 'deprecated' flag. Any packages flagged with deprecated would be avoided by the solver unless there is no other choice (e.g. some user wants to install package a which depends on b which is deprecated) If it is installed, show up a note after installation notifying the user that the package is deprecated. [#4523 @kit-ty-kate]
  • Make sure that --best-effort only installs root package versions that where requested [#4796 #5261 @LasseBlaauwbroek]
  • Ask users to report errors when no explanations are given to them [#4981 @kit-ty-kate]
  • Fix and improve the Z3 solver backend [#4880 @AltGr]
  • Refactored, fixed, improved and optimised the z3 solver backend [#4878 @AltGr]
  • Add an explanation for "no longer available" packages [#4969 @AltGr]
  • Orphan packages are now handled at the solver level instead of a pre-processing phase, better ensuring consistency [#4969 @AltGr #5182 @rjbou]
  • Make the 0install solver non-optional [#4909 @kit-ty-kate]
  • Optimised reverse dependencies calculation [#5005 @AltGr]
  • Enable CUDF preprocessing for (co)insallability calculation, resulting in a x20 speedup [#5024 @AltGr]
  • Log the time dose3's check_request takes [#5407 @kit-ty-kate]

Fixes

  • On CUDF strong and weak dependencies computation, some weak dependencies were wrongly kept, from #4627 [#5338 @rjbou @AltGr]
  • Fix "opam list -s --coinstallable-with pkg.1 pkg.2" listing pkg.2 as coinstallable with pkg.1 [#5414 @kit-ty-kate]

Internal enhancements

State

  • Repository state: stop scanning directory once opam file is found [#4847 @rgrinberg]
  • Fix reverting environment additions to PATH-like variables when several dirs added at once [#4861 @dra27] {2.1.1} {2.0.10}
  • Actually allow multiple state caches to co-exist [#4934 @dra27 - fix #4554 properly this time] {2.1.3}
  • Don’t rebuild packages when updating dependencies or availability, unless the current state needs to be changed [#5118 @kit-ty-kate - fix #4647]
  • Rebuild packages when removing or adding the "plugin" flag [#5118 @kit-ty-kate]
  • Do not rebuild packages when an extra-source's url changes but not its checksum [#5258 @kit-ty-kate]
  • Correctly handle empty environment variable additions [#5350 @dra27] {2.1.5}
  • Skip empty environment variable additions [#5350 @dra27] {2.1.5}

Config

  • Add sys-pkg-manager-cmd field to store specific system package manager command paths [#5433 @rjbou]
  • Regenerate the environment file when a local switch is moved [#5476 @dra27 - fix #3411]
  • Regenerate the environment file in opam exec [#5476 @dra27]
  • Regenerate the environment file when a local switch is moved [#5417 @dra27 - fix #3411]
  • Regenerate the environment file in opam exec [#5417 @dra27]
  • Store the exact environment in OPAM_LAST_ENV [#5417 @dra27 - fix #3411]

VCS

  • git, hg: Use the full SHA1 revision instead of just the 8 first characters [#5342 @reynir] {2.1.5}
  • git: differentiate non initialised repo and branch not found errors [#5326 @rjbou - fix #5324]
  • Pass --depth=1 to git-fetch in the Git repo backend [#4442 @dra27]
  • git: disable colored output [#4884 @rjbou]
  • Use 4.08's unnamed functor arguments to silence warning 67 [#4775 @dra27]
  • Check if a source is up to date with subpath [#4876 @rjbou]

Format upgrade

  • Reorganise intermediate roots that need an upgrade handling (for 2.1, prone to generalisation) [#4926 @rjbou]
  • Reset the "jobs" config variable when upgrading from opam 2.0 [#5284 @kit-ty-kate #5305 @rjbou]

Fix

  • Fix root format upgrade when only an inner file format is upgraded : new mechanism does the usual on-the-fly upgrade and keeps the information of needed inner upgrade or no, to perform them when a write lock is required [#5305 @rjbou]

Windows portability

  • Support MSYS2: treat MSYS2 and Cygwin as equivalent [#4813 @jonahbeckford]
  • Process control: close stdin by default for Windows subprocesses and on all platforms for the download command [#4615 @dra27]
  • OpamCudf: provide machine-readable information on conflicts caused by cycles [#4039 @gasche]
  • Remove memoization from best_effort () to allow for multiple different settings during the same session (useful for library users) [#4805 @LasseBlaauwbroek]
  • Permissions: chmod+unlink before copy [#4827 @jonahbeckford @dra27]
  • Support MSYS2: two-phase rsync on MSYS2 to allow MSYS2's behavior of copying rather than symlinking [#4817 @jonahbeckford]
  • Environment: translate PATH from Windows to Unix during opam env. [#4844 @jonahbeckford]
  • Correct invocation of Cygwin binaries when Cygwin bin directory is first in PATH [#5293 @dra27]
  • Always open files with O_SHARE_DELETE, which eliminates unnecessary "access denied" errors in various situations on Windows. [#5435 @dra27]
  • Use OCaml code to copy/move/remove directories instead of unix commands [#4823 @kit-ty-kate - fix #1073]
  • Update Windows-on-Windows detection for ARM [#5541 @dra27]
  • Overhaul parent process detection [#5541 @dra27]
  • Tweak UTF-8 support for Windows Terminal [#5541 @dra27]
  • Handle Windows specific environment variables [#5541 @dra27]

Fixes

  • handle converted variables correctly when no_undef_expand is true [#4811 @timbertson]
  • Check Unix.has_symlink before using Unix.symlink [#4962 @jonahbeckford]
  • Catch EACCES in lock function [#4948 @oandrieu - fix #4944]
  • Fix case insensitive variable handling [#5356 @dra27]

Misc

  • Add license and lowerbounds to opam files [#4714 @kit-ty-kate]
  • Bump version to 2.2.0alphadev [#4725 @dra27]
  • Upgrade root version to 2.2~alpha [#4926 @rjbou]
  • Add specific comparison function on several module (that includes OpamStd.ABSTRACT) [#4918 @rjbou]
  • Homogeneise is_archive tar & zip: if file exists check magic number, otherwise check extension [#4964 @rjbou]
  • Add some debug log to OpamCudf.extract_explanations to help debug #4373 [#4981 @kit-ty-kate]
  • Make SHA computation faster by using ocaml-sha [#5042 @kit-ty-kate]
  • Overhaul Windows C stubs and update for Unicode [#5190 @dra27]
  • Unify constructors for powershell hosts [#5203 @dra27]
  • Use grep -F instead of fgrep, as the latter is deprecated [#5309 @MisterDA]
  • Ensure the cwd is restored when launching a process fails [#5441 @dra27]
  • Move the .ocamlinit script out of the root directory [#5526 @kit-ty-kate]
  • Do not show --yes and --no as special global options when using cmdliner >= 1.1 [#5269 @kit-ty-kate]
  • Make the plugin lookup faster when mistyping a subcommand [#5297 @kit-ty-kate]

Fixes

  • Remove windows double printing on commands and their output [#4940 @rjbou] {2.1.3}
  • Fix display of command when parallelised [#5091 @rjbou]
  • Display correct exception backtrace on uncaught exception on Windows [#5216 @dra27]
  • Fix behaviour on closed stdout/stderr [#4901 @AltGr - fix #4216]
  • Fix spaces in root and switch dirs [#5205 @jonahbeckford]
  • Fix linting on opam-crowbar.opam [#5507 @kit-ty-kate]
  • Fix lazy compilation of regular expression in OpamFormula.atom_of_string [#5211 @dra27]

Build

Dependencies

  • Bump the minimum requirement to build any of the opam libraries to OCaml >= 4.08 [#5466 @kit-ty-kate]
  • Add jsonm (and uutf) dependency [#5098 @rjbou - fix #5085]
  • Add sha dependency [#5042 @kit-ty-kate]
  • Add swhid_core dependency [#4859 @rjbou] [#5497 @kit-ty-kate]
  • Bump vendored base64 to 3.5.1 to fix compilation on OCaml >= 5.0 in vendored mode [#5464 @deech]
  • Bump src_exts and fix build compat with Dune 2.9.0 [#4752 @dra27]
  • Upgrade to dose3 >= 6.1 and vendor dose3 7.0.0 [#4760 @kit-ty-kate]
  • Change minimum required Dune to 2.0 [#4770 @dra27]
  • Change minimum required OCaml to 4.08.0 for everything except opam-core, opam-format and opam-installer [#4770 #4775 @dra27]
  • Update bootstrap ocaml to 4.12.1 to integrate mingw fix [#4927 @rjbou] {2.1.2}
  • Update cold compiler to 4.13 [#5017 @dra27] {2.1.3}
  • Bump vendored dependency: jsonm 1.0.2 [#5467 @kit-ty-kate]
  • Bump opam-file-format to 2.1.4 [#5117 @kit-ty-kate - fix #5116] {2.1.3}
  • Bump CUDF to 0.10 [#5195 @kit-ty-kate]
  • Upgrade to cmdliner >= 1.1 [#5269 @kit-ty-kate]
  • Update the bootstrap compiler to 4.14.0 [#5250 @kit-ty-kate]
  • Upgrade the vendored dune to 3.5.0 to fix make cold in an OCaml 5.0 env [#5355 @kit-ty-kate]
  • Upgrade vendored deps to support lib-ext in OCaml 5.0 [#5355 @kit-ty-kate @dra27]
  • Upgrade spdx_licenses to 1.2.0 [#5412 @kit-ty-kate]
  • Upgrade the vendored sha to 1.15.4 [#5424 @kit-ty-kate]
  • Upgrade src_ext vendored bootstrap dependencies [#5437 @MisterDA]
  • Update bootstrap to use FlexDLL 0.42 from ocaml/flexdll [#5434 @MisterDA]
  • Remove unused vendored dependency: result [#5465 @kit-ty-kate]
  • Replace CPPO dependency with simple conditional compilation helper [#5498 @Leonidas-from-XIV

Configure & builds

  • Fix the cold target in presence of an older OCaml compiler version on macOS [#4802 @kit-ty-kate - fix #4801] {2.1.1}
  • Harden the check for a C++ compiler [#4776 @dra27 - fix #3843]
  • Add --without-dune to configure to force compiling vendored Dune [#4776 @dra27]
  • Use --without-dune in make cold to avoid picking up external Dune [#4776 @dra27 - fix #3987]
  • Add --with-vendored-deps to replace make lib-ext instruction [#4776 @dra27 - fix #4772]
    • Stop the configure script from downloading and vendoring dependencies by default [#5511 @kit-ty-kate #5539 @rjbou]
  • Add a 'test' target [#5129 @kit-ty-kate @mehdid - partial fixes #5058]
  • Fix vendored build on mingw-w64 with g++ 11.2 [#4835 @dra27] {2.1.1}
  • Switch to vendored build if spdx_licenses is missing [#4842 @dra27]
  • Check versions of findlib packages in configure [#4842 @dra27]
  • Fix dose3 download url since gforge is gone [#4870 @avsm] {2.1.1}
  • Update bootstrap to use -j for Unix (Windows already does) [#4988 @dra27]
  • Bring the autogen script from ocaml/ocaml to be compatible with non-ubuntu-patched autoconf [#5090 @kit-ty-kate #5093 @dra27]
  • configure: Use gmake instead of make on Unix systems (fixes BSDs) [#5090 @kit-ty-kate]
  • Patch AltGr/ocaml-mccs#36 in the src_ext build to fix Cygwin32 [#5094 @dra27]
  • Silence warning 70 [#5104 @dra27]
  • shell/bootstrap-ocaml.sh: do not fail if curl/wget is missing [#5223 #5233 @kit-ty-kate] {2.1.3}
  • Cleared explanation of dependency vendoring in configure [#5277 @dra27 - fix #5271]
  • Switch autoconf required version to 2.71 [#5161 @dra27]
  • Remove src/client/no-git-version when calling make clean [#5290 @kit-ty-kate]
  • Remove unused variable in opamACL.c [#5403 @purplearmadillo77]
  • shell/bootstrap-ocaml.sh: do not fail if curl/wget is missing [#5223 @kit-ty-kate] {2.1.3}
  • opam-state depends on opam-solver [#5208 @rjbou]
  • Specify the opam package for all rules that need opamMain.exe.exe [#5496 @Leonidas-from-XIV
  • Remove conditional compilation [#5508 @Leonidas-from-XIV
  • Update msvs-detect [#5514 @MisterDA]
  • Do not silently disable mccs if a C++ compiler is not present [#5527 @kit-ty-kate - fix #4452]
  • Ensure all make targets are run serially [#5532 @kit-ty-kate]
  • Fix openssl missing message in shell/bootstrap-ocaml.sh [#5557 @MisterDA]
  • Fix detection of C++ compiler when it is prefixed [#5556 @MisterDA]

Documentation

  • [#4421 @johnwhitington]
  • [#4782 @kit-ty-kate]
  • [#4855 @rjbou - fix #4848]
  • [#4863 @kit-ty-kate - fix #4862]
  • [#4896 @AltGr - fix #4864]
  • [#5001 @mndrix]
  • [#5040 @gasche @Armael]
  • [#5040 @gasche @Armael]
  • [#5095 @dra27]
  • [#5097 @rjbou] {2.1.3}
  • [#5159 @javiljoen]
  • [#5165 @omnisci3nce]
  • [#5167 @metanivek]
  • [#5168 @cnmade]
  • [#5175 @hannesm]
  • [#5215 @rjbou - fix #5207]
  • [#5226 @kit-ty-kate]
  • [#5289 @kit-ty-kate]
  • [#5311 @rjbou - fix #5307]
  • [#5340 @purplearmadillo77]
  • [#5343 @kit-ty-kate]
  • [#5512 @emillon]

Testing

Improve and extend tests

  • [#4841 #4861 #4974 #4975 #4979 #5004 #5007 #5024 #5031 #5236 @AltGr]
  • [#5171 #5303 @cannorin]
  • [#4841 #4861 #4974 #5203 #5356 #5476 @dra27]
  • [#4523 #5006 #5176 #5228 #5229 #5253 #5257 #5261 #5262 #5268 #5270 #5325 #5402 #5525 #5538 @kit-ty-kate]
  • [#4159 #4841 #4859 #4861 #4866 #4915 #4918 #4963 #4967 #4974 #5015 #5027 #5081 #5097 #5101 #5106 #5131 #5143 #5160 #5176 #5181 #5205 #5208 #5214 #5258 #5268 #5301 #5303 #5304 #5315 #5329 #5336 #5336 #5385 #5385 #5386 #5476 #5476 #5538 #5574 #5577 #5578 @rjbou]

Improve test engine

Cram tests

  • [#4966 #4979 #5004 #5024 #5031 @AltGr]
  • [#4910 #5009 #5019 #5179 #5252 #5257 #5308 @kit-ty-kate]
  • [#4892 #4913 #4966 #5143 #5285 #5308 #5572 @rjbou]

Github Actions

  • [#5090 #5281 @dra27]
  • [#5090 #5218 @kit-ty-kate]
  • [#4729 #4773 #4788 #4865 #4865 #4922 #4966 #5010 #5067 #5067 #5153 #5365 #5410 @rjbou]

API updates

For this release, we tested to track API changelog.

opam-client

  • OpamAction: prepare_package_source can now take any switch state (previously required rw) [#4850 @rjbou]
  • OpamAction: add ?dev_setup filtering argument in build_package, install_package [#5016 #5214 @rjbou]
  • OpamAction: in build_package, install_package, and remove_package expand build-env variables content added to the environment [#5352 @dra27] {2.1.5}
  • OpamAction: when defined, add Cygwin binary path to build environment [#5543 @rjbou]
  • OpamArg.mkd_subdoc: add an optional argument for extra default elements: ?extra_defaults:(validity * string * string) list [#4910 @kit-ty-kate]
  • OpamArg.opam_init: retrieve Cygwin binary path from config (low level reading) to add it to OpamCoreConfig.r.cygbin [#5543 @rjbou]
  • OpamArgTools: all flag definition takes now a section as a labelled argument [#5275 @rjbou]
  • OpamArg: all flag definition takes now a section as an optional argument, default is set to Manpage.s_options [#5275 @rjbou]
  • OpamArg: externalise post, dev, doc_flag, test, and devsetup package selection flags, to avoid redefining them [#5299 @rjbou]
  • OpamArg, OpamArgTools: add experimental optional argument to cli_from and replace default by option:['experimental | 'default] for cli_between, to handle experimental features [#5099 @rjbou]
  • OpamAuxCommand: add ?locked (and handle lock file then) argument to name_and_dir_of_opam_file, opams_of_dir, opams_of_dir_w_target, resolve_locals, autopin, and simulate_autopin [#5080 @rjbou]
  • OpamClient.PIN: change ?locked:bool argument into string, to have lock extension name [#5080 @rjbou]
  • OpamClient.PIN.post_pin_action: no more updates depexts information, moved to OpamSwitchState.update_pin [#5047 @rjbou] {2.1.3}
  • OpamClient.update_with_init_config: Fix passing the dl_cache from InitConfig to Config [#5315 @hannesm] {2.1.5}
  • OpamClient: requested argument moved from name_package_set to package_set, to precise installed packages with --best-effort [#4796 @LasseBlaauwbroek]
  • OpamClient: fix update_with_init_config, when ``jobswas set ininit_config`, it dropped rest of `config` update [#5056 @rjbou] {2.1.3}
  • OpamClient: handle formula on several functions, adding a formula labelled or optional argument (upgrade_t, compute_upgrade_t, upgrade, fixup, install_t, install, remove_t, and remove) [#4975 @AltGr]
  • OpamConfigCommand.global_allowed_fields: make it fully lazy [#5162 @LasseBlaauwbroek]
  • OpamConfigCommand.global_allowed_fields: add archive-mirrors (dl_cache) to allowed modifiable fields, extendable [#5321 @hannesm @rjbou]
  • OpamConfigCommand: set_opt_switch, set_var_switch, options_list_switch, and var_list_switch now raise configuration error exception (50) if no switch is found [#5027 @rjbou] {2.1.3}
  • OpamConfigCommand: add a labelled argument no_switch to exec [#4957 @kit-ty-kate]
  • OpamListCommand.apply_selector, string_of_selector: change column name base to invariant, and the content is invariant formula installed dependencies [#5208 @rjbou]
  • OpamListCommand: add ?dev_setup filtering argument in dependency_toggles [#5016 #5214 @rjbou]
  • OpamListCommand: add swhid in info printable fields and its handling in details_printer
  • OpamPinCommand.fetch_all_pins: return the list of well fetched pins instead of fetched urls [#5080 @rjbou]
  • OpamPinCommand, OpamClient, OpamAuxCommands: use OpamStateTypes pin record types [#5080 @rjbou]
  • OpamSolution.apply: take an optional argument skip, to avoid filtering solution beforehand [#4975 @AltGr]
  • OpamSolution: add dry_run to simulate the new switch state after applying a solution [#5171 @cannorin]
  • OpamSolution: add print_requested to print actions reasons [#4975 @AltGr]
  • OpamStd.ABSTRACT: add compare and equal, that added those functions to OpamCLIVersion [#4918 @rjbou]
  • OpamSwitchCommand.install_compiler: fill empty switch synopsis with invariant formula instead of compiler package name [#5208 @rjbou]
  • OpamSwitchCommand: add previous_switch [#4910 @kit-ty-kate]
  • OpamTreeCommand: add module [#5171 @cannorin]

opam-repository

  • OpamRepositoryConfig: add in config record repo_tarring field and as an argument to config functions, and a new constructor REPOSITORYTARRING in E environment module and its access function [#5015 @rjbou] {2.1.3}
  • New download functions for shared source, old ones kept [#4893 @rjbou]
  • OpamClient.filter_unpinned_locally now display a warning of skipped packages instead of debug log [#5083 @rjbou]
  • OpamSolution.parallel_apply: fix sources_needed package set, now integrate requested but not locally pinned packages [#5082 @rjbou]
  • Add ?subpath to OpamRepository.fetch_dev_packages, OpamVCS.is_up_to_date and VCS specific functions in OpamDarcs, OpamHG, and OpamGit [#4876 @rjbou]
  • OpamRepositoryConfig.E: add curl_t and fetch_t to get their respective environment variables value dynamically, without lazyness. It is used in opamClient.InitDefaults, that can be called at topelevel [#5111 @rjbou]
  • OpamRepository.update: Return a change state result of the repo update [#5043 @Armael]
  • OpamVCS.VCS: add a clean function to the interface clearing all the uncommitted files [#4879 @rjbou] {2.1.3}
  • OpamVCS.pull_url: clean repository before fetching [#4879 @rjbou] {2.1.3}
  • OpamDownload: Add SWHID submodule that implements SWH fallback (retrieve url, download, check hash, and copy in target) [#4859 @rjbou]
  • OpamCLIVersion.of_string: print version when failing to parse it [#5566 @MisterDA]
  • OpamInitdefaults.recommended_tools: don't require cc on Windows [#5541 @dra27]

opam-state

  • OpamEnv: add env_expansion [#5352 @dra27] {2.1.5}
  • OpamEnv: add handling of SH_pwsh and SH_cmd in shell lists [#5541 @dra27]
  • OpamEnv: fix invalid argument raised when trying to unzip empty string [#5350 @dra27] {2.1.5}
  • OpamEnv: generalise splitting of environment variables [#5541 @dra27]
  • OpamEnv: skip environment updates and revert with empty strings [#5350 @dra27] {2.1.5}
  • OpamFormatUpgrade: add repo_switch_hard_upgrade to perform inner layers hard upgrade when needed if write lock is required [#5305 @rjbou]
  • OpamGlobalState.load: Retrieve Cygwin binary path from config to add it to opamCoreConfig.r.cygbin [#5543 @rjbou]
  • OpamGlobalState: add as_necessary_repo_switch_upgrade that checks conditions and call OpamFormatUpgrade.repo_switch_hard_upgrade [#5305 @rjbou]
  • OpamPackageVar: add ?dev_setup filtering argument in filter_depends_formula, all_depends [#5016 #5214 @rjbou]
  • OpamPinned: add ?locked:string (and handle lock file then) argument to files_in_source, and name_of_opam_filename [#5080 @rjbou]
  • OpamPinned: add version_opt` [#5325 @kit-ty-kate]
  • OpamPinned: use pin record types [#5080 @rjbou]
  • OpamPinned: when looking at opam files, keep (and return) information about its locked origin [#5080 @rjbou]
  • OpamStateTypes.global_state: add global_state_to_upgrade field to keep incomplete upgrade information [#5305 @rjbou]
  • OpamStateConfig: add with-dev-setup support ; i.e. add E.withdevsetup, add with_sev_setup in config record [#5016 #5214 @rjbou]
  • OpamStateTypes: Add record types for to pin and pinned packages informations (in order to avoid n-uplet with n growing) ; name_and_file, name_and_file_w_url, nameopt_and_file, nameopt_and_file_w_url, and pinned_opam [#5080 @rjbou]
  • OpamSwitchState.load: fill empty switch synopsis with invariant formula instead of compiler package name [#5208 @rjbou]
  • OpamSwitchState.universe: requested argument moved from name_package_set to package_set, to precise installed packages with --best-effort [#4796 @LasseBlaauwbroek]
  • OpamSwitchState.universe: add a chrono for universe loading [#4975 @AltGr]
  • OpamSwitchState.universe: set to false unresolved variables used in constraint, and warn [#5141 @rjbou - fix #5139]
  • OpamSwitchState.update_pin: updates depexts state informations (sys_packages, avalaible_packages) [#5047 @rjbou] {2.1.3}
  • OpamSwitchState, OpamRepositoryState: at the beginning of load function, check if an upgrade is needed with OpamGlobalState.as_necessary_repo_switch_upgrade [#5305 @rjbou]
  • OpamSwitchState: add ?dev_setup filtering argument in universe [#5016 #5214 @rjbou]
  • OpamSwitchState: add compiler_packages that returns set of installed compilers, with their dependencies including only build & depopt [#5480 @rjbou]
  • OpamSwitchState: move and reimplement opam-solver dependencies and reverse_dependencies [#5337 @rjbou]
  • OpamSysInteract.Cygwin: add cygbin_opt to retrieve Cygwin binary path from config file [#5543 @rjbou]
  • OpamSysInteract.Cygwin: add check_install to check that a given path is a Cygwin installation, regarding presence of cygcheck.exe [#5544 @rjbou @dra27]
  • OpamSysInteract.Cygwin: add check_setup to check, copy or download a Cygwin setup.exe [#5544 @rjbou]
  • OpamSysInteract.install_packages_command: change return type to (['AsAdmin of string | 'AsUser of string] * string list) list [#5268 @kit-ty-kate]
  • OpamSysInteract: add package_manager_name [#5268 @rjbou]
  • OpamSysInteract: add global config argument to function, in order to be able to retrieve system package manager path for MSYS2, and in the future Cygwin, etc. [#5433 @rjbou]
  • OpamSysPoll, OpamSysInteract: Add optional argument ?env:(variable_contents option Lazy.t * string) OpamVariable.Map.t to OpamSysPoll and OpamSysInteract functions. It is used to get syspolling variables from the environment first. [#4892 @rjbou]
  • OpamUpdate.download_package_source: add SWH fallback when archive remain not found [#4859 @rjbou]
  • OpamUpdate.pinned_package: use locked information to automatically update from locked file if present, if ?autolock is given to true [#5080 @rjbou]
  • OpamUpdate: change repository output to update function option, to not write cache and new repo config if nothing changed in repositories [#5146 @rjbou]

opam-solver

  • OpamActionGraph.to_aligned_strings: add explicit optional argument to print action name in utf8 [#5045 @AltGr]
  • OpamCudf.filter_solution: can do not remove recursively actions with optional ~recursive:true [#4975 @AltGr]
  • OpamCudf.print_solution: add optional skip, to avoid filtering solution beforehand [#4975 @AltGr]
  • OpamCudf: Change type of conflict_case.Conflict_cycle (string list list to Cudf.package action list list) and cycle_conflict, string_of_explanations, conflict_explanations_raw types accordingly [#4039 @gasche]
  • OpamCudf: add conflict_cycles [#4039 @gasche]
  • OpamCudf: add trim_universe [#5024 @AltGr] {2.1.3}
  • OpamCudf: add trim_universe, opam_deprequest_package_name, and opam_deprequest_package [#4975 @AltGr]
  • OpamSolver.coinstallable_subset: add add_invariant optional argument [#5024 @AltGr] {2.1.3}
  • OpamSolver.CUDF_versions_map: no more takes a package set as argument, compute whole packages (repo + installed) and take accounet of invariant [#5024 @AltGr] {2.1.3}
  • OpamSolver.explicit: when adding fetch nodes, add shared source ones. Change of sources_needed argument type [#4893 @rjbou]
  • OpamSolver.installable: use installable_subset that uses coinstallable_subset [#5024 @kit-ty-kate] {2.1.3}
  • OpamSolver.load_CUDF_universe: change staging of add_invariant [#5024 @AltGr] {2.1.3}
  • OpamSolver.print_solution: change output format [#5045 @AltGr]
  • OpamSolver, OpamCudf: Several changes to handle installation from a formula [#4975 @AltGr]
  • OpamSolver, OpamCudf: remove dependencies and reverse_dependencies [#5337 @rjbou]
  • OpamSolver: add removed_packages to retrieve packages that are removed from solution [#5208 @rjbou]
  • OpamSwitchAction.update_switch_state: compiler_packages now computes dependency cone of invariant formula [#5208 @rjbou]
  • OpamSwitchState: add invariant_root_packages, compute_invariant_packages, compute_compiler_packages [#5208 @rjbou]
    • OpamSwitchState: invariant_root_packages, compute_invariant_packages, compute_compiler_packages no more take an universe argument [#5503 @kit-ty-kate - fix #5502]

opam-format

  • OpamFile.Config: order list of installed switches according their last use, update with_switch accordingly, and add previous_switch [#4910 @AltGr]
  • OpamFile.Dot_install: Exposed with_* functions [#5169 @panglesd]
  • OpamFile.Environment: enable atomic writing [#5476 @dra27]
  • OpamFile.OPAM.effective_part and OpamFile.OPAM.effectively_equal now take an optional ?modulo_state:bool parameter, that if true, eliminates the fields relying on the state of the switch (depends, available, …). This is false by default. [#5118 @kit-ty-kate]
  • OpamFile.OPAM.effective_part: empty extra-source url if checksum is specified and take first one (as for url) [#5258 @kit-ty-kate]
  • OpamFile.OPAM.effectively_equal: return true if an extra-source url changes but not its checksum (as for url) [#5258 @kit-ty-kate]
  • OpamFile.OPAM.to_string_with_preserved_format: handle substring errors [#4941 @rjbou - fix #4936]
  • OpamFile.OPAM: Add locked, file origin and extension, in the record with its modifiers/getter [#5080 @rjbou]
  • OpamFile.URL: add swhid field in t record, and its access functions [#4859 @rjbou]
  • OpamFile.URL: add with_mirrors [#4859 @rjbou]
  • OpamFile: add atomic value in IO_Arg to enable/disable atomic file writing [#5476 @dra27]
  • OpamFilter: add ?custom argument in to_string to tweak the output [#5171 @cannorin]
  • OpamFilter: add ?dev_setup filtering argument in filter_deps [#5016 #5214 @rjbou]
  • OpamFormula: add generic formula_to_cnf and formula_to_dnf, and use them in to_cnf and to_dnf [#5171 @cannorin]
  • OpamPackage.Version: add default returning the version number used when no version is given for a package [#4949 @kit-ty-kate]
  • OpamPath.Switch: add man_dirs [#4915 @rjbou] {2.1.3}
  • OpamStd.ABSTRACT: add compare and equal, that added those functions to OpamSysPkg and OpamVariable [#4918 @rjbou]
  • OpamTypes.universe: remove u_base field, as it is no more needed with switch invariant [#5208 @rjbou]
  • OpamTypes: Change 'Fetch action to take several packages, in order to handle shared fetching of packages [#4893 @rjbou]
  • OpamTypes: request.wish_install now takes a formula instead of a conjunction [#4975 @AltGr]

opam-core

  • OpamCompat.Unix: add realpath for ocaml < 4.13, and use it in OpamSystem [#5152 @rjbou]
  • OpamCompat: add Filename.quote_command [#5543 @rjbou]
  • OpamCompat: add Int.equal (for ocaml < 4.12)
  • OpamCompat: add Lazy module and Lazy.map function [#5176 @dra27] {2.1.3}
  • OpamConsole.Tree: add valu and children getters [#5303 @cannorin]
  • OpamConsole.header_msg: remove trailing space when there is no left padding [#5363 @rjbou]
  • OpamConsole: add a Tree submodule to draw a unicode/ascii-art tree [#5171 @cannorin]
  • OpamCoreConfig.r: remove openssl related config: use_openssl parameter & config field, and OPAMUSEOPENSSL environment variable [#5042 @kit-ty-kate]
  • OpamCoreConfig: add cygbin, the Cygwin install binary path [#5543 @rjbou]
  • OpamDirTrack: Add to_summary_string to summarise changes [#5144 @na4zagin3]
  • OpamFilename.SubPath: remove pretty_string in favor to OpamUrl.to_string_w_subpath [#5219 @rjbou]
  • OpamFilename.clean_dir: as the directory is recreated after removal, checks that the directory exists beforhand. It avoid creating a new empty directory uselessly [#4967 @rjbou]
  • OpamFilename: add with_open_out_bin and with_open_out_bin_atomic [#5476 @dra27]
  • OpamFilename: add a SubPath submodule to handle multi-platform subpath specifications. It has an effect on a lot of functions signatures [#4876 @rjbou]
  • OpamHash: add is_null
  • OpamHash: add sort from strongest to weakest kind
  • OpamHash: add module SWHID that create and check Software Heritage IDs hashes format [#4859 @rjbou]
  • OpamJson: use Jsonm and add an of_string function [#5142 @rjbou]
  • OpamJson: use Jsonm and add an of_string function [#5142 @rjbou]
  • OpamParallel, MakeGraph(_).to_json: fix incorrect use of List.assoc [#5038 @Armael]
  • OpamProcess.apply_cygpath: fix empty output [#5543 @rjbou]
  • OpamProcess.wait_one: display command in verbose mode for finished found process [#5091 @rjbou]
  • OpamProcess: add default_env to retrieve environment, if Cygwin is set, adds Cygwin binary path to environment ; and use it instead of Unix.environment [#5543 @rjbou]
  • OpamProcess: expose the command type as a private type [#5452 @Leonidas-from-XIV
  • OpamSHA: add sha1 support [#4859 @rjbou]
  • OpamSHA: use now only sha, some function removed (shaxxx, shaxxx_bytes, etc.) [#5042 @kit-ty-kate]
  • OpamSWHID: add module to handle swhid [#4859 @rjbou]
  • OpamStd.ABSTRACT: add compare and equal, that added those functions to OpamFilename, OpamHash, OpamStd, OpamStd, OpamUrl, and OpamVersion [#4918 @rjbou]
  • OpamStd.Compare: add module to flag polymorphic comparison functions in opam codebase [#5374 @kit-ty-kate @rjbou]
  • OpamStd.Config.E: add value_t to allow getting environment variable value dynamically [#5111 @rjbou]
  • OpamStd.Config.E: add a REMOVED variant to allow removing completely an environment variable handling [#5112 @rjbou]
  • OpamStd.Env.: introduce OpamStd.Env.Name to abstract environment variable names [#5356 @dra27]
  • OpamStd.Env: add cyg_env that returns the environment with PATH containing Cygwin binary path [#5543 @rjbou]
  • OpamStd.List: add find_map_opt (for ocaml < 4.10) and fold_left_map (for ocaml < 4.11) [#5171 @cannorin]
  • OpamStd.List: add pick [#4859 @rjbou]
  • OpamStd.List: add comparison function argument to some OpamList functions [#5374 @kit-ty-kate @rjbou]
  • OpamStd.Map: add filter_map [#5337 @rjbou]
  • OpamStd.Option: add equal function [#5374 @rjbou]
  • OpamStd.Set: Add to_list_map [#5308 @kit-ty-kate]
  • OpamStd.String: add is_hex [#4859 @rjbou]
  • OpamStd.Sys.get_windows_executable: Add cygbin argument to pass Cygwin binary path [#5543 @rjbou]
  • OpamStd.Sys.is_Cygwin_variant: returns a boolean [#5543 @rjbou]
  • OpamStd.Sys: add SH_pwsh of powershell_host and SH_cmd to shell type [#4816 @jonahbeckford #5203 @dra27 #5541 @dra27]
  • OpamStd.Sys: add all_shells list of all supported shells [#5217 @dra27]
  • OpamStd.Sys: add get_windows_executable_variant to use instead of is_Cygwin_variant [#4817 @jonahbeckford]
  • OpamStd.Sys: add is_Cygwin_cygcheck anf get_Cygwin_variant [#5543 @rjbou]
  • OpamStd.Sys: fix get_windows_executable_variant to distinguish MSYS2 from Cygwin, esp. for rsync rather than symlinking [#5404 @jonahbeckford]
  • OpamSystem.copy_dir: two-pass rsync copy for MSYS2, to handle symlinks [#4817 @jonahbeckford]
  • OpamSystem.read_command_output: add an optional parameter to unmerge stdout and stderr [#4859 @rjbou]
  • OpamSystem.real_path: Remove the double chdir trick on OCaml >= 4.13.0 [#4961 @kit-ty-kate]
  • OpamSystem: avoid calling Unix.environment at top level [#4789 @hannesm] {2.1.1}
  • OpamURL: add module SWHID that contains helpers from and to internal swhid url [#4859 @rjbou]
  • OpamURL: add to_string_w_subpath to display subpath inside urls (before hash) [#5219 @rjbou]
opam - 2.1.5

Published by rjbou over 1 year ago

This is the release of opam 2.1.5.

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

Changelog:

  • [BUG] Variables are now expanded in build-env (as for setenv) [#5352 @dra27]
  • Correctly handle empty environment variable additions [#5350 @dra27]
  • Skip empty environment variable additions [#5350 @dra27]
  • [BUG] Fix passing archive-mirrors field from init config file to config [#5315 @hannesm]
  • git, hg: Use the full SHA1 revision instead of just the 8 first characters [#5342 @reynir]
  • [BUG] Fix opam installing packages without checking their checksum when the local cache is corrupted in some case [#5538 @kit-ty-kate]

EDIT 31/05/2023: opam-full-2.1.5.tar.gz was rebuilt, removing the mistakenly included .gît directory, reducing archive size.

opam - 2.1.4

Published by kit-ty-kate almost 2 years ago

This is the release of opam 2.1.4.

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

Changelog:

  • Add support for OCaml 5.0. dose3 >= 6.1 and base64 >= 3.1.0 are now required [#5357 @kit-ty-kate @dra27 - fix #5354]
  • [BUG] Fix all empty conflict explanation messages [#5378 @kit-ty-kate - partial fix #4373]
opam - 2.1.3

Published by rjbou about 2 years ago

This is the release of opam 2.1.3.

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

Changelog:

Fixes

Init

  • Fix opam init and opam init --reinit when the jobs variable has been set in the opamrc or the current config. [#5056 @rjbou]

Switch

  • When inferring a 2.1+ switch invariant from 2.0 base packages, don't filter out pinned packages as that causes very wide invariants for pinned compiler packages [#5176 @dra27 - fix #4501]

Pin

  • When reinstalling a package that has a dirty source, if uncommitted changes are the same than the ones stored in opam's cache , opam consider that it is up to date and nothing is updated [#4879 @rjbou]

List

  • Some optimisations to opam list --installable queries combined with other filters [#4882 @AltGr - fix #4311]
  • Improve performance of some opam list combinations (e.g. --available, --installable) [#4999 @kit-ty-kate]
  • Improve performance of opam list --conflicts-with when combined with other filters [#4999 @kit-ty-kate]

Show

  • Improve performance of opam show by as much as 300% when the package to show is given explicitly or is unique [#4998 @kit-ty-kate - fix #4997 and partially #4172]
  • Handle external dependencies when updating switch state pin status (all pins), instead as a post pin action (only when called with opam pin [#5047 @rjbou - fix #5046]

Var/Option

  • opam var no longer fails if no switch is set [#5027 @rjbou - fix #5025]
  • Setting a variable with option --switch <sw> fails instead of writing an invalid switch-config file [#5027 @rjbou]
  • When a field is defined in switch and global scope, try to determine the scope also by checking switch selection [#5027 @rjbou]

External dependencies

  • Stop Zypper from upgrading packages on updates on OpenSUSE [#4978 @kit-ty-kate]

Sandbox

  • Clearer error message if a command doesn't exist [#4971 @kit-ty-kat - fix #4112]

State

  • Actually allow multiple state caches to co-exist [#4934 @dra27 - actually fixes #4554]

Client

  • Fix some empty conflict explanations [#4982 @kit-ty-kate - partially fix #4373]

Internal

  • Remove windows double printing on commands and their output [#4940 @rjbou]

Admin

  • Fix an internal error on repository upgrade from OPAM 1.2 [#4965 @AltGr]

Misc

Build

  • Update cold compiler to 4.13 to avoid issues with glibc 2.34 on Unix [#5017 @dra27]
  • Bump opam-file-format to 2.1.4 [#5117 @kit-ty-kate - fix #5116]
  • When building opam, do not fail if curl/wget is missing [#5223 #5233 @kit-ty-kate]

Documentation

  • Fix make doc with Dune 2.7 (unblocks opam2web build) [#5030 @kit-ty-kate]
  • Update for git protocol deprecation on GitHub [#5097 @rjbou]

Tests

  • Port some tests from master [#4841 #4974 #4861 #4915 #4979 #5004 #5006 #5015 #5024 #5025 #5031 #5131 #5176 @AltGr @dra27 @rjbou @kit-ty-kate]
  • Update test engine to allow for additional tests [#4913 #4966 #4979 #5004 #5009 #5024 #5097 @AltGr @kit-ty-kate @rjbou]

API updates

opam-client

  • OpamClient: fix update_with_init_config, when jobs was set in init_config, it dropped rest of config update [#5056 @rjbou]
  • OpamConfigCommand: set_opt_switch, set_var_switch, options_list_switch, and var_list_switch now raise configuration error exception (50) if no switch is found [#5027 @rjbou]
  • OpamClient.Pin.post_pin_action: no more updates depexts information, moved to OpamSwitchState.update_pin [#5047 @rjbou]

opam-repository

  • OpamVCS.VCS: add a clean function to the interface clearing all the uncommited files [#4879 @rjbou]
  • OpamVCS.pull_url: clean repository before fetching [#4879 @rjbou]

opam-state

  • OpamSwitchState.update_pin: updates depexts state informations (sys_packages, avalaible_packages) [#5047 @rjbou]

opam-core

  • OpamCompat: add Lazy module and Lazy.map function [#5176 @dra27]
opam - 2.1.2

Published by kit-ty-kate almost 3 years ago

This is the release of opam 2.1.2.

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

Changelog:

  • Fallback on dnf if yum does not exist on RHEL-based systems [#4825 @kit-ty-kate]
  • Use --no-depexts in CLI 2.0 mode [#4908 @dra27]
  • bootstrap: update ocaml version (fixes the compilation of opam with mingw) [#4927 @kit-ty-kate]
opam - 2.1.1

Published by AltGr almost 3 years ago

This is the release of opam 2.1.1.

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

Changelog:

Bug fixes

Switch

  • Put back support for switch creation with packages argument and --packages option with cli 2.0, and a specific error message for cli 2.1 [#4853 @rjbou - fix #4843]
  • Fix set-invariant: default repos were loaded instead of switch repos [#4866 @rjbou]

External dependencies

  • Homebrew: Add support for casks and full-names [#4801 @kit-ty-kate]
  • Archlinux: handle virtual package detection [#4833 @rjbou - partial fix #4759]
  • Disable the detection of available packages on RHEL-based distributions. This fixes an issue on RHEL-based distributions where yum list used to detect available and installed packages would wait for user input without showing any output and/or fail in some cases [#4791 @kit-ty-kate - fixes #4790]

Sandbox

  • Run the sandbox check in the temporary directory [#4787 @dra27 - fix #4783]

System

  • Fix reverting environment additions to PATH-like variables when several dirs added at once [#4861 @dra27]
  • Ensure setenv can use package variables defined during the build [#4841 @dra27]
  • OpamSystem: avoid calling Unix.environment at top level [#4789 @hannesm] [#4802 @kit-ty-kate - fix #4801]
  • Handle empty environment variable updates - missed cherry-pick from 2.0 [#4840 @dra27]

opam build

  • Fix the cold target in presence of an older OCaml compiler version on macOS
  • Fix vendored build on mingw-w64 with g++ 11.2 [#4835 @dra27]
  • Fix dose3 download url since gforge is gone [#4870 @avsm]

Misc

  • Fix typo in error message for opam var [#4786 @kit-ty-kate - fix #4785]

Many thanks to @AltGr and @rjbou (OCamlPro), @dra27 and @kit-ty-kate (OCaml Labs), @hannesm, @avsm and everyone who's helped with issue reports, comments and feedback.

opam - 2.0.10

Published by AltGr almost 3 years ago

This is the release of opam 2.0.10.

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

Changelog:

Bug fixes

  • Fix reverting environment additions to PATH-like variables when several dirs added at once [#4861 @dra27]
  • Ensure setenv can use package variables defined during the build [#4841 @dra27]
opam - 2.1.0

Published by AltGr about 3 years ago

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

Please see blog post to discover this release's new features.

It contains some fixes since the second release candidate:

  • Set DEBIAN_FRONTEND=noninteractive for unsafe-yes confirmation level (partially fixes #4731)
  • Fix 2.1~alpha2 to 2.1 format upgrade for opam init --reinit (#4748)
  • Fix --bypass-checks handling with --reinit (#4750)
  • Fish: stop using deprecated ^ syntax to fix support for Fish 3.3.0+ (#4736)
  • Fix build compatibility with Dune 2.9.0 (#4754)
  • Fix depext alpine tagged repositories handling (#4758)

Many thanks to @AltGr and @rjbou (OCamlPro), @dra27 and @kit-ty-kate (OCaml Labs), @vzaliva and everyone who's helped with issue reports, comments and feedback.

opam - 2.0.9

Published by AltGr about 3 years ago

This is the release of opam 2.0.9.

This minor release contains some fixes, please see blog post for 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:

New features

  • Back-ported ability to load upgraded roots read-only; allows applications compiled with opam-state 2.0.9 to load a root which has been upgraded to opam 2.1 (#4636)
  • macOS sandbox now supports OPAM_USER_PATH_RO for adding a custom read-only directory to the sandbox (#4589, #4609)
  • OPAMROOT and OPAMSWITCH now reflect the --root and --switch parameters in the package build (#4668)
  • When built with opam-file-format 2.1.3+, opam-format 2.0.x displays better errors for newer opam files (#4394)

Bug fixes

  • Stop clobbering DUNE_CACHE in the sandbox script (#4535, fixing ocaml/dune#4166)
  • Ctrl-C now correctly terminates builds with bubblewrap; sandbox now requires bubblewrap 0.1.8 or later (#4400)
  • Linux sandbox now mounts host $TMPDIR read-only, then sets the sandbox $TMPDIR to a new separate tmpfs (#4589)
  • Linux sandbox script no longer makes PWD read-write on remove actions (#4589)
  • Lint W59 and E60 no longer trigger for packages flagged conf (#4549)
  • Reduce the length of temporary file names for pin caching to ease pressure on Windows (#4590)
  • Security: correct quoting of arguments when removing switches (#4707)
  • Stop advertising the removed option --compiler when creating local switches (#4718)
  • Pinning no longer fails if the archive's opam file is malformed (#4580)
  • Fish: stop using deprecated ^ syntax to fix support for Fish 3.3.0+ (#4736)

Many thanks to @AltGr and @rjbou (OCamlPro), @dra27 and @kit-ty-kate (OCaml Labs), @emillon (Tarides), @LasseBlaauwbroek, @smorimoto, @vzaliva and everyone who's helped with issue reports, comments and feedback.

opam - 2.1.0~rc2

Published by AltGr over 3 years ago

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

It contains 2 fixes in addition to the original release candidate:

  • Fix upgrade issue from opam 2.1.0~alpha2+ where local switches were manually deleted (#4713)
  • Fix local switch format upgrade handling if they were created with an alpha or beta release of opam 2.1 (#4715)
  • Fix compilation of the z3 optional solver backend (#4717)

Release Candidate Overview

Since beta4, the release candidates further extend the CLI versioning feature and introduce support to allow tools compiled with older versions of the opam libraries to read opam roots which have been upgraded by a newer version of the opam client. Naturally, it includes many bug fixes since the last beta.

New features

  • CLI versioning: new "default" CLI where deprecated options are accepted (in the major version) if the CLI hasn't been explicitly selected with --cli (#4503)
  • CLI versioning now applies to environment variables and flag enums
  • Environment variables are now only read by the client when the configuration is loaded, rather than the library (#4606)
  • Deprecated build-doc, build-test, make flags (#4581)
  • Add --no, --confirm-level and OPAMCONFIRMLEVEL for automatic answering of prompts (#4582)
  • Add a --with-0install-solver option to the configure script to enable the 'builtin-0install' solver (#4646)
  • The options --root and --switch are now reflected in environment variables when building packages so that calls to opam during build access the correct root and switch (#4668)
  • Introduce a default-invariant config field, restore the 2.0 semantics for default-compiler (#4577)
  • opam roots upgraded to a newer version of opam are read in best effort mode by an older opam library (#4636)
  • Improve installation times by only tracking files listed in .install instead of the whole switch prefix when there are no install: instructions (and no preinstall commands) (#4422)
  • Opam file: Rename hidden-version to avoid-version (#4527)
  • Include doc field in opam-show (#4565)

Bug fixes

CLI versioning

  • Scrub OPAM* environment variables added since 2.0 from package builds to prevent warnings when a package calls opam (#4660)
  • Add opam config deprecated subcommands in the default cli (#4503)
  • Clearer messages about using --cli and OPAMCLI (#4655)

Plugin handling

  • Ensure the symlink for a plugin is maintained on each invocation and reset the plugin symlinks when the root is upgraded (#4619)
  • Expect plugins to end in .exe on Windows (#4709)

Switch & install

  • Don't patch file twice (#4529)
  • With --deps-only, set dependencies as root packages (#4502)
  • Keep global lock only if root format upgrade is performed (#4597)
  • Send the 'opam root layout update' message to stderr (#4692)
  • Fix default invariant with no system compiler (#4640)
  • Correct the message when more than one depext is missing (#4678)
  • Only display one conflict message when they are all owing to identical missing depexts (#4678)
  • Don't exclude base packages from rebuilds (made some sense in opam 2.0 with base packages but doesn't make sense with 2.1 switch invariants) (#4569)
  • Don't refer to base packages in messages any more (#4572)
  • Give the correct command when demonstrating switch creation (#4673)

Pin

  • Don't look for lock files for pin depends (#4505)
  • Fetch sources when pinning an already pinned package with a different url when using working directory (#4484)
  • Don't ask for confirmation for pinning base packages (similarly makes no sense with 2.1 switch invariants) (#4571)
  • Fix version pin source retrieving: mustn't error if archive opam file is malformed (#4580)
  • opam list --silent renamed to --check (#4323)

Opam variables

  • Fix sys-ocaml-cc, sys-ocaml-arch and sys-ocaml-libc when no system compiler installed (#4706)
  • Fix Not_found (config file) in config report (#4570)
  • Config report: Print variables of installed compilers and their (installed) dependencies (#4570)
  • Fix switch global variable resolving (#4684)
  • Fix hash package variable resolving (#4687)

Lint

  • Fix W59 & E60 for conf packages (no url required) (#4549)
  • Fix W59 & E60 with VCS urls, don't check upstream if url has VCS backend (#4635)
  • Add E67 checksum specified with non archive url (#4635)
  • Disable subpath warnings E63, W64 (#4638)

Lock & opam file

  • Don't write lock file with --read-only, --safe, and --dryrun (#4320)
  • Make opam lock consistent with opam install, on local pin always take last opam file even if uncommitted (#4320)
  • Fix features parser (#4507)
  • Fix rewriting with preserved format empty field error (#4628)
  • Require opam-file-format.2.1.3+ in order to enforce opam-version: "2.1" as first non-comment line (#4394)

External dependencies

  • Handle macport variants (#4297)
  • Always upgrade all the installed packages when installing a new package on Archlinux (#4556)
  • Handle some additional environment variables (OPAMASSUMEDEPEXTS, OPAMNODEPEXTS) (#4587)
  • Improve messages to hint that answering no doesn't abort installation (#4591)
  • Add support for non-interactive mode in macports (#4676)
  • Handling of packages of tagged repositories for alpine (#4670)
  • Clarify some assume-depexts related messages (#4662)
  • Warn the user if epel-release is missing and unavailable depexts are detected (#4669)
  • Ignore config yes automatic answering when asking confirmation to run install commands (#4680)
  • Don't check opam system dependencies on reinit after a format upgrade (#4638)

Sandbox

  • Fix the conflict with the environment variable name used by dune (#4535; fixes ocaml/dune#4166)
  • Kill builds on Ctrl-C with bubblewrap (#4400)
  • Various fixes (#4589 and #4609)

Solver

  • Fix Cudf preprocessing (#4624)
  • Add support for a few select criteria useful to CI to the 0install solver: +count(version-lag,solution) to always choose the oldest version available, +removed to not try to keep installed packages (#4631)
  • Allow to upgrade to a hidden-version package if a hidden-version package is already installed (#4525)

Misc

  • Add missing shell quoting to support space and special shell characters in switch directory path (#4707)
  • Rename state.cache to include the OpamVersion.magic() string. All .cache files are deleted if any cache file is written to, allowing multiple versions of the library to co-exist without constantly regenerating it (#4554)
  • Win32 Console: fix VT100 support (#3897 #4710)
  • Harden cygpath wrapper (#4625)
  • Formalise opam dev version detection with OpamVersion.is_dev_version (#4665)
  • Run the shell hooks with closed stdin (bash, zsh) (#4692)
  • Fix build from source when a dune-project file is presented in the parent directory (#4537)
  • Fix opam-devel.install not to install two files called opam (#4664)
  • Build release tags as non-dev versions, as for release tarballs (#4656)
  • Fix opam exec on native Windows when calling cygwin executables (#4588)
  • Fix temporary file with a too long name causing errors on Windows (#4590)
  • Tests and documentation extended and improved

Many thanks to @AltGr and @rjbou (OCamlPro), @dra27 and @kit-ty-kate (OCaml Labs), @emillon (Tarides), @dannywillems, @eth-arm, @LasseBlaauwbroek, @smorimoto and @UnixJunkie and everyone who's helped with issue reports, comments and feedback.

opam - 2.1.0~rc

Published by AltGr over 3 years ago

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

Overview

This release candidate further extends the CLI versioning feature and introduces support to allow tools compiled with older versions of the opam libraries to read opam roots which have been upgraded by a newer version of the opam client. Naturally, it includes many bug fixes since the last beta.

New features

  • CLI versioning: new "default" CLI where deprecated options are accepted (in the major version) if the CLI hasn't been explicitly selected with --cli (#4503)
  • CLI versioning now applies to environment variables and flag enums
  • Environment variables are now only read by the client when the configuration is loaded, rather than the library (#4606)
  • Deprecated build-doc, build-test, make flags (#4581)
  • Add --no, --confirm-level and OPAMCONFIRMLEVEL for automatic answering of prompts (#4582)
  • Add a --with-0install-solver option to the configure script to enable the 'builtin-0install' solver (#4646)
  • The options --root and --switch are now reflected in environment variables when building packages so that calls to opam during build access the correct root and switch (#4668)
  • Introduce a default-invariant config field, restore the 2.0 semantics for default-compiler (#4577)
  • opam roots upgraded to a newer version of opam are read in best effort mode by an older opam library (#4636)
  • Improve installation times by only tracking files listed in .install instead of the whole switch prefix when there are no install: instructions (and no preinstall commands) (#4422)
  • Opam file: Rename hidden-version to avoid-version (#4527)
  • Include doc field in opam-show (#4565)

Bug fixes

CLI versioning

  • Scrub OPAM* environment variables added since 2.0 from package builds to prevent warnings when a package calls opam (#4660)
  • Add opam config deprecated subcommands in the default cli (#4503)
  • Clearer messages about using --cli and OPAMCLI (#4655)

Plugin handling

  • Ensure the symlink for a plugin is maintained on each invocation and reset the plugin symlinks when the root is upgraded (#4619)
  • Expect plugins to end in .exe on Windows (#4709)

Switch & install

  • Don't patch file twice (#4529)
  • With --deps-only, set dependencies as root packages (#4502)
  • Keep global lock only if root format upgrade is performed (#4597)
  • Send the 'opam root layout update' message to stderr (#4692)
  • Fix default invariant with no system compiler (#4640)
  • Correct the message when more than one depext is missing (#4678)
  • Only display one conflict message when they are all owing to identical missing depexts (#4678)
  • Don't exclude base packages from rebuilds (made some sense in opam 2.0 with base packages but doesn't make sense with 2.1 switch invariants) (#4569)
  • Don't refer to base packages in messages any more (#4572)
  • Give the correct command when demonstrating switch creation (#4673)

Pin

  • Don't look for lock files for pin depends (#4505)
  • Fetch sources when pinning an already pinned package with a different url when using working directory (#4484)
  • Don't ask for confirmation for pinning base packages (similarly makes no sense with 2.1 switch invariants) (#4571)
  • Fix version pin source retrieving: mustn't error if archive opam file is malformed (#4580)
  • opam list --silent renamed to --check (#4323)

Opam variables

  • Fix sys-ocaml-cc, sys-ocaml-arch and sys-ocaml-libc when no system compiler installed (#4706)
  • Fix Not_found (config file) in config report (#4570)
  • Config report: Print variables of installed compilers and their (installed) dependencies (#4570)
  • Fix switch global variable resolving (#4684)
  • Fix hash package variable resolving (#4687)

Lint

  • Fix W59 & E60 for conf packages (no url required) (#4549)
  • Fix W59 & E60 with VCS urls, don't check upstream if url has VCS backend (#4635)
  • Add E67 checksum specified with non archive url (#4635)
  • Disable subpath warnings E63, W64 (#4638)

Lock & opam file

  • Don't write lock file with --read-only, --safe, and --dryrun (#4320)
  • Make opam lock consistent with opam install, on local pin always take last opam file even if uncommitted (#4320)
  • Fix features parser (#4507)
  • Fix rewriting with preserved format empty field error (#4628)
  • Require opam-file-format.2.1.3+ in order to enforce opam-version: "2.1" as first non-comment line (#4394)

External dependencies

  • Handle macport variants (#4297)
  • Always upgrade all the installed packages when installing a new package on Archlinux (#4556)
  • Handle some additional environment variables (OPAMASSUMEDEPEXTS, OPAMNODEPEXTS) (#4587)
  • Improve messages to hint that answering no doesn't abort installation (#4591)
  • Add support for non-interactive mode in macports (#4676)
  • Handling of packages of tagged repositories for alpine (#4670)
  • Clarify some assume-depexts related messages (#4662)
  • Warn the user if epel-release is missing and unavailable depexts are detected (#4669)
  • Ignore config yes automatic answering when asking confirmation to run install commands (#4680)
  • Don't check opam system dependencies on reinit after a format upgrade (#4638)

Sandbox

  • Fix the conflict with the environment variable name used by dune (#4535; fixes ocaml/dune#4166)
  • Kill builds on Ctrl-C with bubblewrap (#4400)
  • Various fixes (#4589 and #4609)

Solver

  • Fix Cudf preprocessing (#4624)
  • Add support for a few select criteria useful to CI to the 0install solver: +count(version-lag,solution) to always choose the oldest version available, +removed to not try to keep installed packages (#4631)
  • Allow to upgrade to a hidden-version package if a hidden-version package is already installed (#4525)

Misc

  • Add missing shell quoting to support space and special shell characters in switch directory path (#4707)
  • Rename state.cache to include the OpamVersion.magic() string. All .cache files are deleted if any cache file is written to, allowing multiple versions of the library to co-exist without constantly regenerating it (#4554)
  • Win32 Console: fix VT100 support (#3897 #4710)
  • Harden cygpath wrapper (#4625)
  • Formalise opam dev version detection with OpamVersion.is_dev_version (#4665)
  • Run the shell hooks with closed stdin (bash, zsh) (#4692)
  • Fix build from source when a dune-project file is presented in the parent directory (#4537)
  • Fix opam-devel.install not to install two files called opam (#4664)
  • Build release tags as non-dev versions, as for release tarballs (#4656)
  • Fix opam exec on native Windows when calling cygwin executables (#4588)
  • Fix temporary file with a too long name causing errors on Windows (#4590)
  • Tests and documentation extended and improved

Many thanks to @AltGr and @rjbou (OCamlPro), @dra27 and @kit-ty-kate (OCaml Labs), @emillon (Tarides), @dannywillems, @eth-arm, @LasseBlaauwbroek, @smorimoto and @UnixJunkie and everyone who's helped with issue reports, comments and feedback.