Releases: ocaml/opam
2.4.1
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.
Changes
- Fix
pin-depends
being ignored on simulated pins (e.g.opam install --deps-only
) [#6612 @kit-ty-kate - fix #6610] - Improve and extend the testsuite [#6612 @kit-ty-kate]
2.4.0
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
).
Changes
- Fix a regression in
opam pin list
which crashed when the source of the pinned package doesn't exist [#6598 @kit-ty-kate - fix #6600] - Improve and extend the testsuite [#6598 @kit-ty-kate]
To get the detailed list of changes compared to 2.3.0, you can look at the pre-releases' release notes:
- the release note for 2.4.0~alpha1
- the release note for 2.4.0~alpha2
- the release note for 2.4.0~beta1
- the release note for 2.4.0~rc1
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
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.
Changes
- Fix
opam switch create <version>
when all compilers of that version are flagged withavoid-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'sshasum
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
andpatch 3.0.0
[#6580 @kit-ty-kate]
Testing and documentation
- Improve and extend the testsuite [#6473 #6571 @rjbou @kit-ty-kate]
- Improve and extend the test infrastructure [#6575 @kit-ty-kate]
API updates
opam-format
OpamLocal
:fetch_repo_update
no longer copies vcs directories [#6575 @kit-ty-kate]
opam-core
OpamSystem
: Addcopy_dir_except_vcs
[#6575 @kit-ty-kate]OpamSystem
: Addget_files_except_vcs
[#6575 @kit-ty-kate]
2.4.0~beta1
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.
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 havepkg.1
installed, installing dependencies ofpkg.2
no longer removespkg.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 andopam install ./pkg --deps
is called, if there is a conflict between the installedpkg
dependencies and the definition of the localpkg
, the conflict was not seen and the already installedpkg
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 casecygwin.com
is inaccessible [#6538 @kit-ty-kate]
Build changes
- Bump the downloaded-if-missing
dune
to3.19.0
,cppo
to1.8.0
,ocamlgraph
to2.2.0
,uutf
to1.0.4
andpatch
to3.0.0~beta1
[#6527 @kit-ty-kate] - Allows
./configure --without-dune
to build with OCaml5.4
[#6527 @kit-ty-kate] - Add a
--with-cygwin-setup
option to theconfigure
script, only available on Windows and disabled by default, which includes the optionally givensetup-x86_64.exe
binary inside the opam binary. If the option is given without a filename, the file with be fetched fromcygwin.com
[#6526 @kit-ty-kate @dra27 @rjbou - fix #6498]
Testing and documentation
- Improve and extend the testsuite [#6530 #6533 #6539 #6544 #6550 #6520 @rjbou @kit-ty-kate]
- Improve and extend the test infrastructure [#6524 #6553 #6549 @kit-ty-kate @rjbou]
API updates
opam-client
2.4.0~alpha2
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.
Changes
- Do not include compiler packages flagged with
avoid-version
/deprecated
in the generated invariant when callingopam 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
- Update the requirement for the
patch
library to3.0.0~alpha2
[#6490 @kit-ty-kate] - Upgrade the downloaded-if-missing
patch
library to3.0.0~alpha2
[#6490 @kit-ty-kate]
Testing and documentation
- Improve and extend the testsuite [#6490 #6494 @rjbou @kit-ty-kate]
- Improve and extend the test infrastructure [#6277 @rjbou @kit-ty-kate]
API updates
opam-core
OpamArg.environment_variable
: makeSTATS
as removed from cli 2.3 [#6485 @rjbou]OpamClientConfig
: removeSTATS
variant and relatedprint_stats
field in config record [#6485 @hannesm]
opam-format
opam-core
OpamSystem
: removeprint_stats
function [#6485 @hannesm]OpamSystem
: add thermdir_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
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.
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 atopam 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 thediff
command are no longer runtime dependencies
Depexts
- Support providing external dependencies with Nix by adding support for stateless depexts systems [#5982 @RyanGibb @rjbou @kit-ty-kate - fix #5124]
Show
opam show
now displays the version number of packages flagged withavoid-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 allextra-files
of an existing opam repository intoextra-sources
[#5960 @hannesm @rjbou @kit-ty-kate] - ✘ The
-i
/--ignore-test-doc
argument has been removed fromopam admin check
[#6335 @kit-ty-kate] - ✘
opam admin check
now setswith-test
andwith-doc
tofalse
instead oftrue
[#6335 @kit-ty-kate]
Miscellaneous changes
Global CLI
Install
- Remove the build directories of pinned packages after successful builds [#6436 @kit-ty-kate]
UI
- Improve the messages when a package is not up-to-date on opam upgrade [#6272 @kit-ty-kate - fix #6270]
- Use a non-underline uppercase character to denote the default when asking a question [#6289 @hannesm @kit-ty-kate - fix #6288]
- Do not pre-write the answer to questions with the default anwser [#6376 @kit-ty-kate]
- Display Windows
NTSTATUS
exit codes in hex [#6401 @dra27 @MisterDA]
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 inopam 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
Lint
- ◈ Add W74 to
opam lint
to detectpin-depends
packages that are neither present in thedepends
nodepopts
field [#6317 @rjbou - fix #5795] - ◈ Add E63 to
opam lint
to check for availability guard in case an opam file contains asubpath
field [#6438 @rjbou @kit-ty-kate]
Lock
- Fix
pin-depends
forwith-*
dependencies when creating a lock file [#5471 @rjbou - fix #5428] - ◈ Add
opam lock --keep-local
to keep local pins url inpin-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 addsFOO='':"$FOO"; export FOO;
) [#6198 @dra27]
Sandbox
- Respect the
DUNE_CACHE_ROOT
environment variable if it exists [#6326 @smorimoto] - Fix sandboxing support in NixOS [#6333 @kit-ty-kate]
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
- Fix the detection of
ZDOTDIR
when usingzsh
[#6299 @acasta-yhliu - fix #6281]
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
andbrew
[#6324 @kit-ty-kate] - Change probing tool for SUSE-based distributions from
zypper
torpm
[#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
- Don't ask confirmation when pinning an unknown package (absent from repositories) [#6309 @kit-ty-kate @rjbou - fix #3199]
- Do not ask to install
pin-depends
twice [#6375 @kit-ty-kate - fix #6374] - Ensure the right version (the pinned one) of packages are used when simulating pinning [#6256 @rjbou @kit-ty-kate - fix #6248 #6379]
- No longer double pin of packages located in ./opam/opam [#6343 @kit-ty-kate - fix #6342]
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 anddune
to 3.16.1 [#6321 #6370 #6192 @kit-ty-kate - fix #6369] menhir
is now part of the transitive dependency of opam (viaopam-file-format
) [#6321 @kit-ty-kate]
Admin
- Fix
opam admin check
in the presence of thewith-dev-setup
variable [#6331 @kit-ty-kate - fix #6329]
Download
- Add
fetch
on DragonFlyBSD andftp
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 theuname
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
- Improve and extend the tests [#5892 #6276 #6331 #6343 #6378 #6273 #6380 #6373 #6307 #6256 #6412 #6438 #6439 #6436 #6166 #6209 #6198 #6319 #6467 #5643 #5982 @rjbou @kit-ty-kate @btjorge]
- Improve and extend the benchmarks [#6212 #6443 @kit-ty-kate]
- Improve and extend the test infrastructure [#5349 #6296 #6274 #6313 #6363 #6192 #5663 #6383 #6444 #6447 #6471 #6469 #5982 @kit-ty-kate @rjbou @RyanGibb]
- Improve and extend the documentation [#6226 #6231 #6252 #6150 #6267 #6251 #6306 #6315 #5659 #6320 #6338 #6361 #6358 #5627 #6372 #6470 @kit-ty-kate @rjbou @RyanGibb @gridbugs @fccm2 @shym @hannesm @tobil4sk @juergenhoetzel @MisterDA]
API updates
opam-client
OpamAction.prepare_package_build
: now returnsexn option
instead ofexn 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
: exportrequire_checksums
andno_checksums
, that are shared withbuild_options
[#5563 @rjbou]OpamAuxCommands.{simulate_autopin,autopin ~simulate:true}
: now updates thereinstall
field of the returnedswitch_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...
2.3.0
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
).
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:
- the release note for 2.3.0~alpha1
- the release note for 2.3.0~beta1
- the release note for 2.3.0~beta2
- the release note for 2.3.0~rc1
For a more descriptive and simplified list of changes, please read our blog post.
2.3.0~rc1
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.
Changes
No significant change compared to 2.3.0~beta2.
2.3.0~beta2
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.
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
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.
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
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
- Improve and extend the tests [#6135 #6221 #6213 #6219 @rjbou]
- Improve the test infrastructure [#6233 #6233 #6216 @rjbou @kit-ty-kate]
API updates
opam-state
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
: addis_archive_from_string
that does the same thanis_archive
but without looking at the file, only analysing the string (extension) [#6219 @rjbou]