Releases: ocaml/opam
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]
2.3.0~alpha1
This is the first alpha release of opam 2.3.0.
Binaries and full archive are signed by the opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92
).
Please see our blog post for a highlight on the major changes and upgrade instructions.
Major changes
Repository
- Silently mark packages requiring an unsupported version of opam as unavailable [#5665 @kit-ty-kate - fix #5631]
- When loading a repository, don't automatically populate
extra-files:
field with found files infiles/
[#5564 @rjbou]
List
- ◈ Add a new
--latests-only
option to only list the latest packages [#5375 @kit-ty-kate]
Install
- [BUG] Fix
opam install --check pkg
when pkg depends on a non-existing package [#6121 @kit-ty-kate] - Make
opam install --check
check if all dependencies are installed recursively [#6122 @kit-ty-kate - fix #6097]
Build (package)
Switch
- ◈ Add
opam switch import --deps-only
option to install only dependencies of root package at import [#5388 @rjbou - fix #5200] - [BUG] Make accepted
--repos
URLs on creation consistent withopam repository
[#6091 @Keryan-dev - fix #4673] - ◈ opam switch list-available will not display compilers flagged with avoid-version/deprecated unless --all is given [#6098 @kit-ty-kate - fix #6089]
- Make
opam switch set-invariant
return the actual invariant syntax expected by--invariant
[#5619 @kit-ty-kate - fixes #5491]
Solver
- Add support for unordered criteria with the
builtin-0install
solver [#6130 @kit-ty-kate] - Add support for the
-changed
criteria with thebuiltin-0install
solver, to make the solver prefer to keep packages installed at their current version [#6130 @kit-ty-kate] - Add support for the
-count[avoid-version,solution]
criteria with thebuiltin-0install
solver, to avoid packages marked withavoid-version
flag [#6130 @kit-ty-kate] - The default criteria for the
builtin-0install
solver changed from empty to-changed,-count[avoid-version,solution]
[#6130 @kit-ty-kate] - The upgrade and fixup criteria for the
builtin-0install
solver changed from empty to-count[avoid-version,solution]
[#6130 @kit-ty-kate] - Fix must unhelpful conflict messages by merging all formulas together [#6106 @kit-ty-kate]
Var/Option
- Fix the value of the 'arch' variable when the current OS is 32bit on a 64bit machine [#5950 @kit-ty-kate - fix #5949]
VCS
- Fail when git submodule fails to update instead of showing a warning and ignoring the error [#6132 @kit-ty-kate - fix #6131]
Miscellaneous changes
Global CLI
- Add cli version 2.3 [#6045 #6151 @rjbou]
- Improve the error message when a directory is not available while fetching using rsync [#6027 @kit-ty-kate]
Init
Actions
- Add support for wget2 [#6104 @kit-ty-kate]
Config report
- Always list all the repositories regardless of whether or not a switch is currently set [#6116 @kit-ty-kate]
- Make
opam config report
return the actual invariant syntax expected by--invariant
[#5619 @kit-ty-kate - fixes #5491]
Install
- Fix package name display for no agreement conflicts [#6055 @rjbou - fix #6030]
- Make fetching an archive from cache add missing symlinks [#6068 @kit-ty-kate - fix #6064]
- Improve performance of
opam install --check
[#6122 @kit-ty-kate]
Build (package)
- Remove unnecessary copies/move when fetching archives [#5018 @kit-ty-kate @rjbou]
List
- Speedup
opam list
on options that do not use availability information [#5317 @kit-ty-kate - fix #5314]
Var/Option
Lint
- Add E70 to check
extra-files:
duplicated fields [#5561 @rjbou] - Add E71 to check if the same checksum algorithm is used several times for a given url in
url
section [#5561 @rjbou] - Add E72 to check if the same checksum algorithm is used several times for a given url in
extra-sources
section [#5561 @rjbou] - Add E73 to check that paths in
extra-files:
are not escapable [#5561 @rjbou] - Update W59 (no checksum in
url
) to always display a warning, untying it from--check-upstream
[#5561 @rjbou]
Env
- Make the shell environment update hint easier to copy/paste [#6159 @kit-ty-kate - fix #6158]
- Add install.exe to the list of non-shadowed programs when adding Cygwin's bin directory to PATH (ocamlfind et al can be affected by Vim for Windows) [#6190 @dra27]
Opamfile
- Make all writes atomic [#5489 @kit-ty-kate]
- Propagate future opamfile parse errors correctly [#6199 @dra27]
- Ensure future syntax errors are only reported when the syntax version is greater than the client, not the format library [#6199 @dra27 - fix #6188]
External dependencies
- Always pass --no-version-check and --no-write-registry to Cygwin setup [#6046 @dra27]
- Use --quiet-mode noinput for the internal Cygwin installation (which is definitely a fully-specified command line) and --quiet-mode unattended for external Cygwin installations (in case the user does need to select something, e.g. a mirror) [#6046 @dra27]
- [BUG] Fix apt/debian lookup for installed packages [#6054 @rjbou]
Build
- Unset
OPAM_SWITCH_PREFIX
when usingmake cold
[#5534 @kit-ty-kate] - Bump the vendored opam-0install-cudf to 0.5.0 [#6130 @kit-ty-kate]
- Require opam-0install-cudf >= 0.5.0 [#6130 @kit-ty-kate]
- Bump the vendored mccs to 1.1+18 [#6170 @kit-ty-kate]
- Fix Windows builds with OCaml >= 5.0 [#6189 @kit-ty-kate - fix #6148]
- Upgrade the minimum required version for dune from 2.0.0 to 2.6.0 [#5381 @dra27]
- Remove
--with-acl
option from the configure script and its related C stubs (reverts a Cygwin fix in #4265) [#5381 @kit-ty-kate - fix #5373]
Release scripts
- Remove the getgroups workaround allowing users belonging to more than 32 groups now that it is no longer necessary [#6200 @dra27 @kit-ty-kate]
Install script
- Provide a shell/install.ps1 PowerShell script to install opam on Windows [#5906 @kit-ty-kate @dra27]
Admin
- Change hash cache location from
~/.cache
to<opamroot>/download-cache/hash-cache
[#6103 @rjbou] - Make
opam admin cache
add missing symlinks [#6068 @kit-ty-kate - fix #6064]
Internal
- Stop using polymorphic comparison when comparing
OpamTypes.switch_selections
[#6102 @kit-ty-kate] - Remove the meta opam packages opam and opam-admin [#6115 @kit-ty-kate]
- Reduce allocations in OpamVersionCompare [#6144 @talex5]
- Speedup OpamVersionCompare by 25% by removing the unused handling of epoch [#5518 @kit-ty-kate]
- Fix error in
OpamSystem.transform_patch
- patches were only applied when debugging [#6182 @dra27 regression since #3449] - Move Windows stubs to opam-core [#5381 @dra27]
Testing and documentation
- Improve and extend the tests [#6045 #6045 #5989 #6055 #5642 #5327 #6103 #6068 #5377 #5474 #5682 #6125 #6121 #6139 #5375 #6105 #6146 #6098 #6132 #6122 #5561 #5210 #6199 @rjbou @kit-ty-kate @dra27 @Keryan-dev @madroach]
- Improve the benchmarks [#6094 #6078 #6123 #6149 @kit-ty-kate]
- Improve the test infrastructure [#6105 #6155 #6184 #5564 #6079 #6081 #6132 #6074 @rjbou @kit-ty-kate @Keryan-dev @RyanGibb]
- Improve the documentation [#5988 #5946 #6119 #6138 #6141 #5363 @kit-ty-kate @rjbou @mbarbin @shonfeder]
API updates
opam-client
OpamSwitchCommand.import
: add optional?deps_only
argument to install only dependencies of root packages [#5388 @rjbou]OpamArg.build_options
: add--verbose-on
flag [#5682 @desumn @rjbou]OpamClientConfig.build_options
: addverbose_on
field [#5682 @desumn]OpamClientConfig.E
,OpamArg.environment_variables
: andOPAMVERBOSEON
support [#5682 @desumn @rjbou]OpamListCommand.selector
: AddNotFlag
selector [#6098 @kit-ty-kate]
opam-repository
OpamRepository.fetch_from_cache
: when an archive is found, add a symlink (or copy) for the ones found in opam file but not in cache [#6068 @kit-ty-kate]?full_fetch
is nowtrue
by default instead offalse
[#6146 @kit-ty-kate - fix #6145]
opam-state
OpamStateConfig.opamroot_with_provenance
: restore previous behaviour toOpamStateConfig.opamroot
for compatibility with third party code [#6047 @dra27]OpamSwitchState.{,reverse_}dependencies
: makeunavailable
a non-optional argument to enforce speedups when availability information is not needed [#5317 @kit-ty-kate]OpamFilteTools.add_aux_files
: ignore non registered extra-files and make thefiles_subdir_hashes
argument optional (defaults tofalse
) [#5564 @@rjbou]OpamFileTools
:read_opam
&read_repo_opam
no more add non registered extra-files [#5564 @rjbou]
opam-solver
OpamCudfCriteria
,OpamBuiltinZ3.Syntax
: MoveOpamBuiltinZ3.Syntax
into a dedicated moduleOpamCudfCriteria
[#6130 @kit-ty-kate]OpamSolver.dependency_graph
: makeunavailable
a non-optional argument to enforce speedups when availability information is not needed [#5317 @kit-ty-kate]
opam-format
- Add
OpamTypesBase.switch_selections_{compare,equal}
: proper comparison functions forOpamTypes.switch_selections
[#6102 @kit-ty-kate] OpamFormula
: addexists
[#5317 @kit-ty-kate]OpamTypes.universe
: makeu_available
andu_attrs
lazy to speedup actions that do not require availiblity information [#5317 @kit-ty-kate - fix #5314]OpamFormula
: add some missing comparison...
2.2.1
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
).
Please see our blog post for a highlight on the major changes and upgrade instructions.
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 nowtrue
by default instead offalse
[#6146 @kit-ty-kate - fix #6145]
Note: the linux binaries were built using 34fb54e instead of the release tag
2.2.0
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 toOpamStateConfig.opamroot
for compatibility with third party code [#6047 @dra27]
2.2.0~rc1
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
).
Major changes
Update / Upgrade
- Fix
opam upgrade
wanting to recompile opam files containing thex-env-path-rewrite
field [#6029 @kit-ty-kate - fix #6028]
Init
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
: Addnullify_pos_map
andnullify_pos_value
[#6029 @kit-ty-kate]
2.2.0~beta3
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
).
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 thewith-*
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
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 allowmake.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 fromcygpath
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
to2.2~beta
[#5904 @kit-ty-kate]
Config
- Move last-env
OPAM_LAST_ENV
files outside the switch to be in theopam root
[#5962 @moyodiallo - fix #5823]
Update / Upgrade
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
andOpamClient.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 inOpamClient
[#6000 @dra27]OpamSolution
: exposerprint_depext_msg
[#5994 @dra27]OpamSolution
: extractedinstall_sys_packages
fromOpamSolution.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 toanalyse_install
which now also returns whether the installation found was MSYS2 or Cygwin [#6000 @dra27]OpamSysInteract.Cygwin.install
: de-labelpackages
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
: removeOpamPath.Switch.last_env
function in favor toOpamPath.last_env
as the files are no more stored in switch directory [#5962 @moyodiallo - fix #5823]
opam-core
OpamCompat
: addSeq.find_map
from OCaml 4.14 [#6000 @dra27]OpamConsole.menu
now supports up to 35 menu items [#5992 @dra27]OpamConsole
: Addformatted_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
: addsplit_quoted
that preserves quoted separator [#5935 @dra27]OpamStd.Sys.resolve_command
: extracted the logic fromOpamSystem.resolve_command
, without the default environment handling from OpamProcess. [#5991 @dra27]OpamStd.Sys.resolve_in_path
: split the logic ofOpamStd.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, complementsOpamStubs.writeRegistry
[#5963 @dra27]OpamSystem.copy_dir
andOpamSystem.mv
may display a warning on Windows if an invalid symlink (e.g. an LXSS Junction) is found [#5953 @dra27]OpamSystem
: addmk_unique_dir
that returns an unique directory name asmk_temp_dir
but not in temporary directory [#5457 @dra27]