Skip to content

Releases: ocaml/opam

2.1.4

14 Dec 18:00
3dd624a
Compare
Choose a tag to compare

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:

2.1.3

12 Aug 16:31
c3a6a09
Compare
Choose a tag to compare

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

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

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

Documentation

Tests

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]

2.1.2

08 Dec 18:34
1388025
Compare
Choose a tag to compare

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]

2.1.1

05 Nov 14:44
838b017
Compare
Choose a tag to compare

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

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

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.

2.0.10

05 Nov 11:56
7d4a0f2
Compare
Choose a tag to compare

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]

2.1.0

26 Jul 08:43
fee5861
Compare
Choose a tag to compare

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.

2.0.9

26 Jul 08:42
619b70e
Compare
Choose a tag to compare

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.

2.1.0~rc2

22 Jun 14:33
68329da
Compare
Choose a tag to compare
2.1.0~rc2 Pre-release
Pre-release

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.

2.1.0~rc

15 Jun 15:53
84ac315
Compare
Choose a tag to compare
2.1.0~rc Pre-release
Pre-release

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.

2.0.8

08 Feb 15:07
806baaa
Compare
Choose a tag to compare

This is the release of opam 2.0.8.

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:

Fish

Sandbox

Install

  • The stdout of pre- and post-session hooks is now propagated to the user [#4382 @AltGr - fix #4359]
  • Run switch pre/post sessions hooks [#4476 @rjbou - fix #4472]

Build

Internal