Skip to content

Releases: ocaml/opam

2.4.1

23 Jul 09:38
7c92631
Compare
Choose a tag to compare

This is the release of opam 2.4.1.

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

Please see our blog post for the upgrade instructions.

Changelog:

Changes

2.4.0

18 Jul 08:51
38abdc4
Compare
Choose a tag to compare

This is the final release of opam 2.4.0.

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

Changelog:

Changes

To get the detailed list of changes compared to 2.3.0, you can look at the pre-releases' release notes:

For a more descriptive and simplified list of changes, please read our blog post.


Special thanks to the whole haematology department of the NHS Greater Glasgow for making this release – in the state that it is – possible. Fighting cancer is not easy but it is much more bearable with great people <3

2.4.0~rc1

04 Jul 12:25
8db1c67
Compare
Choose a tag to compare
2.4.0~rc1 Pre-release
Pre-release

This is the first release candidate of opam 2.4.0.

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

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

Changelog:

Changes

  • Fix opam switch create <version> when all compilers of that version are flagged with avoid-version [#6571 @rjbou - fix #6563]
  • Opam update performance: No longer copy VCS directories when adding or updating local non-VCS repositories [#6575 @kit-ty-kate - fix #6560]
  • Do not remove the generated patch file during updates when debug-mode is on [#6575 @kit-ty-kate]

Release script

  • Switch the host of qemu-base-images from gitlab to github [#6510 @kit-ty-kate]
  • Speedup the initial clone of qemu-base-images when missing [#6510 @kit-ty-kate]
  • Update some of the platforms the prebuilt binaries are built on to Alpine 2.21, FreeBSD 14.3, OpenBSD 7.7 and NetBSD 10.1 [#6510 @kit-ty-kate]

Build changes

  • Use coreutils' sha512sum instead of perl's shasum utility when using ./configure --with-cygwin-setup [#6566 @kit-ty-kate - fix #6557]
  • Upgrade the download-if-missing dependencies to dune 3.19.1, opam-file-format 2.2.0, spdx_licenses 1.4.0 and patch 3.0.0 [#6580 @kit-ty-kate]

Testing and documentation

API updates

opam-format

opam-core

2.4.0~beta1

19 Jun 16:15
3916518
Compare
Choose a tag to compare
2.4.0~beta1 Pre-release
Pre-release

This is the first beta release of opam 2.4.0.

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

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

Changelog:

New option/command/subcommand are prefixed with ◈.

Changes

Install of dependencies --deps-only

Behaviour

  • ◈ Change the behaviour of --deps-only, where it no longer requires unicity of package version between the request and the installed packages. In other words, if you have pkg.1 installed, installing dependencies of pkg.2 no longer removes pkg.1. This also allows to install dependencies of conflicting packages when their dependencies are compliant. [#6520 @rjbou]

Fixes

Fixed some bugs in opam install --deps-only (and other commands simulating package pins, such as --depext-only) more visible in 2.4:

  • When a package pkg is already installed and opam install ./pkg --deps is called, if there is a conflict between the installed pkg dependencies and the definition of the local pkg, the conflict was not seen and the already installed pkg was kept [#6530 @rjbou - fix #6529]
  • No longer fetch and write the sources when simulating packages that were already pinned [#6533 @rjbou - fix #6532]
  • opam was triggering the reinstall of the package based on the already pinned packages instead of the expected newly simulated pinned packages [#6522 @rjbou - partial fix #6501]
  • opam was using the opam description of the wrong package in some cases [#6544 @kit-ty-kate - fix #6535]

Reinstall

  • Fix a regression where the internal sources directory was removed unexpectedly on reinstall actions, making opam re-fetch the package [#6550 @rjbou - fix #6551]

Update

Fixed a couple of regressions in opam update:

  • An unexpected stack overflow exception was raised when updating repositories with large files when opam is compiled with OCaml < 5.1 [#6527 @kit-ty-kate - fix #6513]
  • Updating a repository where a line was added at the end of a file without final newline character was making the update fail [#6527 @kit-ty-kate - fix hannesm/patch#28]

Windows

  • Improve the prebuilt Windows binaries by including Cygwin's setup-x86_64.exe in the binary itself as fallback, in case cygwin.com is inaccessible [#6538 @kit-ty-kate]

Build changes

  • Bump the downloaded-if-missing dune to 3.19.0, cppo to 1.8.0, ocamlgraph to 2.2.0, uutf to 1.0.4 and patch to 3.0.0~beta1 [#6527 @kit-ty-kate]
  • Allows ./configure --without-dune to build with OCaml 5.4 [#6527 @kit-ty-kate]
  • Add a --with-cygwin-setup option to the configure script, only available on Windows and disabled by default, which includes the optionally given setup-x86_64.exe binary inside the opam binary. If the option is given without a filename, the file with be fetched from cygwin.com [#6526 @kit-ty-kate @dra27 @rjbou - fix #6498]

Testing and documentation

API updates

opam-client

  • OpamAction.cleanup_artefacts: no longer removes the internal sources directory if the package is installed but not pinned [#6550 @rjbou]

2.4.0~alpha2

05 May 18:52
7a2860d
Compare
Choose a tag to compare
2.4.0~alpha2 Pre-release
Pre-release

This is the second alpha release of opam 2.4.0.

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

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

Changelog:

Changes

  • Do not include compiler packages flagged with avoid-version/deprecated in the generated invariant when calling opam switch create [name] <version> [#6494 @kit-ty-kate]
  • Cygwin: Fallback to the existing setup-x86_64.exe if its upgrade failed to be fetched [#6482 @kit-ty-kate - fix #6495, partial fix #6474]
  • Fix a memory leak happening when running large numbers of commands or opening large number of opam files [#6485 @hannesm - fix #6484]
  • Remove handling of the OPAMSTATS environment variable [#6485 @hannesm]

Regression fixes from 2.4.0~alpha1

  • Fix a crash when updating a repository that is deleting or adding empty files [#6490 @kit-ty-kate]
  • Fix an extreme performance issue (takes several hours) when applying a large repository update [#6490 @kit-ty-kate]
  • Fix a crash when updating a git repository that moved a file to a new directory [#6490 @kit-ty-kate]

Build changes

Testing and documentation

API updates

opam-core

  • OpamArg.environment_variable: make STATS as removed from cli 2.3 [#6485 @rjbou]
  • OpamClientConfig: remove STATS variant and related print_stats field in config record [#6485 @hannesm]

opam-format

opam-core

  • OpamSystem: remove print_stats function [#6485 @hannesm]
  • OpamSystem: add the rmdir_cleanup function [#6490 @kit-ty-kate]
  • OpamSystem.dir_is_empty: Speedup and change its type to handle unreachable directories better [#6490 @kit-ty-kate]
  • OpamSystem.internal_patch: remove parent directories when all of their content has been moved somewhere else [#6490 @kit-ty-kate]
  • OpamSystem.internal_patch: fix moving files to new directories when receiving a git diff [#6490 @kit-ty-kate]

2.4.0~alpha1

18 Apr 11:33
34f65ad
Compare
Choose a tag to compare
2.4.0~alpha1 Pre-release
Pre-release

This is the first alpha release of opam 2.4.0.

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

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

Changelog:

Possibly scripts breaking changes are prefixed with ✘.
New option/command/subcommand are prefixed with ◈.

Major changes

Init

  • Remove ocaml-system from the list of default compilers chosen at opam init time [#6307 @kit-ty-kate - fix #3509]

Patch: update & install

  • Patches are now applied using the patch OCaml library instead of GNU Patch [#5892 @kit-ty-kate - fix #6019 #6052 #3782 ocaml/setup-ocaml#933]
    • Context diffs are not supported anymore, only Unified diffs are (including its git extensions)
    • Stop support of file permission changes via git extension to the unified diff specification
    • GNU patch and the diff command are no longer runtime dependencies

Depexts

Show

  • opam show now displays the version number of packages flagged with avoid-version/deprecated gray [#6358 @kit-ty-kate - fix #6354]

Install

  • Fix opam install <local_dir> not updating or storing pinned packages' metadata [#6209 @kit-ty-kate - fix #5567]
  • Fix opam install --deps-only/--show-action <local_dir> not updating (without storing) pinned packages' metadata [#6209 @kit-ty-kate - fix #5567]

Pin

  • ✘ Fail when trying to pin a package whose definition could not be found instead of forcing interactive edition (e.g. this could happen when making a typo in the package name of a pin-depends) [#6319 @kit-ty-kate - fix #6322]
  • opam pin/opam pin list now displays the current revision of a pinned repository in a new column [#6274 @desumn - fix #5533]

Admin

  • ◈ Add opam admin compare-versions to compare package versions for sanity checks [#6197 @mbarbin]
  • ◈ Add opam admin migrate-extrafiles which moves all extra-files of an existing opam repository into extra-sources [#5960 @hannesm @rjbou @kit-ty-kate]
  • ✘ The -i/--ignore-test-doc argument has been removed from opam admin check [#6335 @kit-ty-kate]
  • opam admin check now sets with-test and with-doc to false instead of true [#6335 @kit-ty-kate]

Miscellaneous changes

Global CLI

Install

  • Remove the build directories of pinned packages after successful builds [#6436 @kit-ty-kate]

UI

Switch

  • Fix opam switch remove <dir> failure when it is a linked switch [#6276 @btjorge - fix #6275]
  • Fix opam switch list-available when given several arguments [#6318 @kit-ty-kate]
  • Correctly handle pkg.version pattern in opam switch list-available [#6186 @arozovyk - fix #6152]

Upgrade

  • Do not show the not-up-to-date message with packages tagged with avoid-version/deprecated [#6273 @kit-ty-kate - fix #6271]
  • Fix a regression on opam upgrade <package> upgrading unrelated packages [#6373 @AltGr]
  • Fix a regression on opam upgrade --all <uninstalled-pkg> not upgrading the whole switch [#6373 @kit-ty-kate]

Source

  • ◈ Add options --require-checksums and --no-checksums to harmonise with opam install [#5563 @rjbou]

Lint

  • ◈ Add W74 to opam lint to detect pin-depends packages that are neither present in the depends no depopts field [#6317 @rjbou - fix #5795]
  • ◈ Add E63 to opam lint to check for availability guard in case an opam file contains a subpath field [#6438 @rjbou @kit-ty-kate]

Lock

  • Fix pin-depends for with-* dependencies when creating a lock file [#5471 @rjbou - fix #5428]
  • ◈ Add opam lock --keep-local to keep local pins url in pin-depends field [#6411 @rjbou - fix #4897]

Env

  • Add the OPAMSOLVERTOLERANCE environment variable to allow users to fix solver timeouts for good [#5510 @kit-ty-kate - fix #3230]
  • Don't write empty environment update segments to variables.sh (FOO += "" no longer adds FOO='':"$FOO"; export FOO;) [#6198 @dra27]

Sandbox

Software Heritage

  • Rework Software heritage fallback to have a more correct archive retrieval and more fine grained error handling [#6036 @rjbou - fix #5721]
  • Fix Software Heritage liveness check [#6036 @rjbou - fix #5721]
  • Update the Software Heritage API requests [#6036 @rjbou]
  • Remove wget support for Software Heritage fallback [#6036 @rjbou - fix #5721]

Repository

  • Fix curl download command selection when loaded from global config file [#6302 @rjbou]
  • Check that the repositories given to opam repository remove actually exist [#5014 @kit-ty-kate - fixes #5012]
  • ✘ Symlinks in repositories are no longer supported [#5892 @kit-ty-kate]
  • Fix subpath handling in opam files defining a local archive [#6439 @rjbou]

Init

External dependencies (depexts)

  • ◈ Add apt-rpm/ALTLinux family support for depexts [#6207 @RiderALT]
  • Fix the detection of installed external packages on OpenBSD to not just consider manually installed packages [#6362 @semarie]
  • Speedup the detection of available system packages with pacman and brew [#6324 @kit-ty-kate]
  • Change probing tool for SUSE-based distributions from zypper to rpm [#6464 @kit-ty-kate]
  • Disable the detection of available system packages on SUSE-based distributions [#6464 @kit-ty-kate]
  • Add support for stateless depexts systems, by keeping synchronised already installed systems dependencies with switch state [#5982 @RyanGibb @rjbou @kit-ty-kate]

Pin

Build changes

  • Simplify the making of stripped binaries by introducing the make opam-stripped target [#6208 @kit-ty-kate]
  • Fix compilation on macOS with OCaml 5.3 by bumping the downloaded-if-missing mccs to 1.1+19 [#6192 @kit-ty-kate]
  • Upgrade the downloaded-if-missing opam-file-format to 2.2.0~alpha1, spdx_licenses to 1.3.0 and dune to 3.16.1 [#6321 #6370 #6192 @kit-ty-kate - fix #6369]
  • menhir is now part of the transitive dependency of opam (via opam-file-format) [#6321 @kit-ty-kate]

Admin

Download

  • Add fetch on DragonFlyBSD and ftp on NetBSD to the list of download tools to use, if available [#6304 #6305 @kit-ty-kate]
  • Prefer curl over any other download tools on every systems, if available [#6305 @kit-ty-kate]
  • Avoid issues when using wget2 as download-tool where the requested url might return an HTML page instead of the expected content [#6303 @kit-ty-kate]

Internal

  • Allow running some opam commands on machines with limited amount of memory by running Gc.compact while the main process is waiting for the children processes [#5396 @kkeundotnet]
  • Use a C stub to call the uname function from the C standard library instead of calling the uname POSIX command [#6217 @kit-ty-kate]
  • Only download Cygwin's setup.exe when the command is actually going to be displayed or used [#6467 @kit-ty-kate]

Testing and documentation

API updates

opam-client

  • OpamAction.prepare_package_build: now returns exn option instead of exn option OpamProcess.job and no longer calls the system GNU Patch [#5892 @kit-ty-kate]
  • OpamArg.InvalidCLI: export exception [#6150 @rjbou]
  • OpamArg.hash_kinds: was added [#5960 @kit-ty-kate]
  • OpamArg: export require_checksums and no_checksums, that are shared with build_options [#5563 @rjbou]
  • OpamAuxCommands.{simulate_autopin,autopin ~simulate:true}: now updates the reinstall field of the returned switch_state if necessary [#6209 @kit-ty-kate]
  • OpamLockCommand.lock_opam: add ~keep_local argument to add local pins to pin-depends (and not resolve them) [#6411 @rjbou]
  • OpamLockCommand.lock_opam: make the ?only_direct argument non-optional [#6411 @kit-ty-kate]
  • `OpamRepositoryCommand.switc...
Read more

2.3.0

13 Nov 21:14
e131094
Compare
Choose a tag to compare

This is the release of opam 2.3.0.

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

Changelog:

Changes

No significant change compared to 2.3.0~rc1.

To get the detailed list of changes compared to 2.2.1, you can look at the pre-releases' release notes:

For a more descriptive and simplified list of changes, please read our blog post.

2.3.0~rc1

31 Oct 12:41
42992f5
Compare
Choose a tag to compare
2.3.0~rc1 Pre-release
Pre-release

This is the first release candidate of opam 2.3.0.

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

Please see our blog post for the upgrade instructions.

Changelog:

Changes

No significant change compared to 2.3.0~beta2.

2.3.0~beta2

24 Oct 10:26
4275a0e
Compare
Choose a tag to compare
2.3.0~beta2 Pre-release
Pre-release

This is the second beta release of opam 2.3.0.

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

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

Changelog:

Changes

UI

  • [BUG] Fix a regression in the detection of the current terminal size that leads to opam output that tries to fit itself into 80 columns regardless of the current terminal size [#6244 @kit-ty-kate - fix #6243]

Release scripts

  • Upgrade the Alpine Linux container where the Linux release binaries are built from Alpine 3.13 to 3.20 [#6237 @kit-ty-kate]
  • Make the release script produce a Linux/riscv64 binary [#6237 @kit-ty-kate]
  • Upgrade the FreeBSD qemu image where the FreeBSD binary is built from FreeBSD 13.2 to 14.1 [#6237 @kit-ty-kate]
  • Upgrade the OpenBSD qemu image where the OpenBSD binary is built from OpenBSD 7.4 to 7.6 [#6237 @kit-ty-kate]
  • Simplify and improve the reliability of the one-click release script by switching away from a passwordless setup [#6237 @kit-ty-kate]
  • Make the release script produce a NetBSD/x86_64 binary [#6258 @kit-ty-kate]

API updates

opam-core

  • OpamStubs.get_stdout_ws_col: new Unix-only function returning the number of columns of the current terminal window [#6244 @kit-ty-kate]

2.3.0~beta1

15 Oct 10:19
e16a04e
Compare
Choose a tag to compare
2.3.0~beta1 Pre-release
Pre-release

This is the first beta release of opam 2.3.0.

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

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

Changelog:

Changes

Pin

  • [BUG] Fix an opam 2.1 regression where the initial pin of a local VCS directory would store untracked and ignored files. Those files would usually be cleaned before building the package, however git submodules would not be cleaned and would cause issues when paired with the new behaviour added in 2.3.0~alpha1 which makes opam error when git submodules fail to update (was previously a warning) [#6221 @rjbou - fix #5809]

Var

  • [BUG] Fix a regression which would make opam crash on platforms where getconf LONG_BIT is not available (e.g. OpenBSD) [#6230 @kit-ty-kate - fix #6215]

Actions

  • [BUG] Fix the installed packages internal cache, which was storing the wrong version of the opam file after a build failure. This could be triggered easily for users with custom repositories with non-populated extra-files [#6213 @kit-ty-kate]

Lint

  • [BUG] Fix a regression in lint W59 with local urls that are not archives [#6219 @rjbou - fix #6218]

Build

  • Bump to lang dune to 2.8 and bump the requirement to dune >= 2.8, which was actually required in the previous alpha release [#6204 @kit-ty-kate]
  • Bump the vendored version of dune to 3.16.0, cppo to 1.7.0 and extlib to 1.8.0 [#6223 @kit-ty-kate]
  • Fix compilation with OCaml 5.3 when using the vendored extlib by updating to the 5.3 compatible version (e.g. make cold or ./configure --with-vendored-deps) [#6223 @kit-ty-kate]
  • Fix the compilation of opam on Windows with OCaml >= 5.0 (again) [#6216 @kit-ty-kate]

Release scripts

  • Fix the release script after the bump of dune lang to 2.6 [#6204 @kit-ty-kate]
  • Fix the release script after the introduction of opam_core_stubs [#6204 @kit-ty-kate]
  • Improve the release script by ignoring interactive questions asked by the FreeBSD package manager [#6204 @kit-ty-kate]

Testing and documentation

API updates

opam-state

  • OpamSwitchState.Installed_cache: export load function [#6233 @rjbou]

opam-core

  • OpamStd.Sys.{get_terminal_columns,uname,getconf,guess_shell_compat}: Harden the process calls to account for failures [#6230 @kit-ty-kate - fix #6215]
  • OpamStd.Sys.{uname,getconf}: now accepts only one argument as parameter, as per their documentation [#6230 @kit-ty-kate]
  • OpamSystem: add is_archive_from_string that does the same than is_archive but without looking at the file, only analysing the string (extension) [#6219 @rjbou]