2.1.0~rc2
Pre-releaseThis 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
andOPAMCONFIRMLEVEL
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 toopam
during build access the correct root and switch (#4668) - Introduce a
default-invariant
config field, restore the 2.0 semantics fordefault-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 noinstall:
instructions (and no preinstall commands) (#4422) - Opam file: Rename
hidden-version
toavoid-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
andsys-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 withopam 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 enforceopam-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 theOpamVersion.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.