package opam-solver
Solver library for opam 2.1
Install
Dune Dependency
opam.ocaml.org
Readme
Changelog
LGPL-2.1-only WITH OCaml-LGPL-linking-exception License
Edit opam file
Versions (38)
Authors
-
VVincent Bernardoff <vb@luminar.eu.org>
-
RRaja Boujbel <raja.boujbel@ocamlpro.com>
-
RRoberto Di Cosmo <roberto@dicosmo.org>
-
TThomas Gazagnaire <thomas@gazagnaire.org>
-
LLouis Gesbert <louis.gesbert@ocamlpro.com>
-
FFabrice Le Fessant <Fabrice.Le_fessant@inria.fr>
-
AAnil Madhavapeddy <anil@recoil.org>
-
GGuillem Rieu <guillem.rieu@ocamlpro.com>
-
RRalf Treinen <ralf.treinen@pps.jussieu.fr>
-
FFrederic Tuong <tuong@users.gforge.inria.fr>
Maintainers
Sources
2.1.0-rc.tar.gz
md5=7af974033874dcb8d3e8f98312e1c146
sha512=5debf3f090e67ca7cfcaa02a59fc21245b68545a23a5909b9cca16547241b1c72ccbb4bfd12c29361a23e0efdb065255e62e874e094f52a513cffb3d0b130d5f
CHANGES.html
CHANGES
Changes prefixed with "(*)" are potentially breaking to scripts or existing repositories (changes that are automatically handled by the format upgrade tools are not marked). Those prefixed with "(+)" are new command/option (since 2.1.0~alpha2). 2.1.0~rc: * (*) Environment variables initialised only at opam client launch, no more via libraries [#4606 #4703 @rjbou] * (*) Deprecated `build-doc`, `build-test`, `make` flags [#4581 @rjbou] * (+) Add `--confirm-level` and `OPAMCONFIRMLEVEL` for automatic answering [#4582 @rjbou - fix #4168; #4683 @dra27 - fix #4682; #4691 @rjbou - fix #4682] * (+) Add `--no` [#4582 @rjbou] * (+) Add a `--with-0install-solver` option to the configure script to enable the 'builtin-0install' solver [#4646 @kit-ty-kate] * Add default cli mechanism: deprecated options are accepted (in the major version) if no cli is specified [#4575 @rjbou] * Add `opam config` deprecated subcommands in the default cli [#4575 @rjbou - fix #4503] * Add cli versioning for opam environment variables [#4606 @rjbou] * Add cli versioning for enums of flags with predefined enums [#4606 @rjbou] * Clearer messages about using --cli and OPAMCLI [#4655 @dra27] * 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 @LasseBlaauwbroek] * Add cli versioning for enums of flags with predefined enums [#4626 @rjbou] * Preprocess `--confirm-level` for plugins calls/install [#4694 @rjbou] * Ensure the symlink for a plugin is maintained on each invocation [#4621 @dra27 - partially fixes #4619] * Initialise environment variables for plugins call/install [#4582 @rjbou] * Expect plugins to end in .exe on Windows [#4709 @dra27] * Introduce a `default-invariant` config field, restore the 2.0 semantics for `default-compiler` [#4607 @AltGr] * Fix default invariant with no system compiler [#4644 @AltGr - fix #4640] * Perform an hard upgrade on intermediate roots, ie root from `2.1~alpha/beta`, and keep a light upgrade from `2.0` [#4638 @rjbou] * Send the 'opam root layout update' message to stderr [#4692 @AltGr] * If opam root is different from the binary, allow reading it and try to read in best effort mode [#4638 @rjbou - fix #4636] * Don't check opam system dependencies on reinit after a format upgrade [#4638 @rjbou] * Fix `sys-ocaml-cc`, `sys-ocaml-arch` and `sys-ocaml-libc` when no system compiler installed [#4706 @dra27] * Fix `Not_found` (config file) in config report [#4570 @rjbou] * Config report: Print variables of installed compilers and their (installed) dependencies [#4570 @rjbou] * Don't patch twice file [#4529 @rjbou] * With `--deps-only`, set dependencies as root packages [#4964 @rjbou - fix #4502] * Keep global lock only if root format upgrade is performed [#4612 @rjbou - fix #4597] * 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) [#4494 @kit-ty-kate @rjbou; #4667 @dra27 - fix #4422] * Scrub OPAM* environment variables added since 2.0 from package builds to prevent warnings when a package calls opam [#4663 @dra27 - fix #4660] * Correct the message when more than one depext is missing [#4678 @dra27] * Only display one conflict message when they are all owing to identical missing depexts [#4678 @dra27] * 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 @dra27] * Don't refer to base packages in messages any more [#4623 @dra27 - fixes #4572] * Give the correct command when demonstrating switch creation [#4675 @dra27 - fixes #4673] * On switch loading, if invariant is inferred and a write lock required, write the file [#4638 @rjbou] * Don't look for lock files for pin depends [#4511 @rjbou - fix #4505] * Fetch sources when pinning an already pinned package with a different url when using working directory [#4542 @rjbou - fix #4484] * Don't ask for confirmation for pinning base packages (similarly makes no sense with 2.1 switch invariants) [#4571 @dra27] * Fix version pin source retrieving: mustn't error if archive opam file is malformed [#4580 @rjbou] * `opam list --silent` renamed to `--check` [#4595 @dra27 - fix #4323] * Include doc field in opam-show [#4567 @dra27 - partially fix #4565] * Fix `switch` global variable resolving [#4685 @rjbou - fix #4684] * Fix `hash` package variable resolving [#4687 @rjbou] * Lint: Fix W59 & E60 for conf packages (no url required) [#4550 @rjbou - fix #4549] * Lint: Fix W59 & E60 with VCS urls, don't check upstream if url has VCS backend [#4635 @rjbou] * Lint: Add E67 checksum specified with non archive url [#4635 @rjbou] * Lint: Disable subpath warning E63,W64 [#4638 @rjbou] * Lint: Fix manpage listing [#4708 @rjbou] * Don't write lock file with `--read-only', `--safe`, and `--dryrun` [#4562 @rjbou - fix #4320] * Make `opam lock` consistent with `opam install`, on local pin always take last opam file even if uncommitted [#4562 @rjbou - fix #4320] * Opam file: Fix `features` parser [#4507 @rjbou] * Opam file: Rename `hidden-version` to `avoid-version` [#4527 @dra27] * Opam file: Fix rewriting with preserved format empty field error [#4634 @rjbou - fix #4628] * Opam file: Switch config: Defined `invariant` field as an option to differentiate when it is not defined [#4638 @rjbou] * Opam file: Differentiate bad format from bad (opam) version with `Bad_version` exception, raised from `OpamFormat.check_opam_version` [#4638 @rjbou] * Opam file: Always print the `opam-version` field on files [#4638 @rjbou] * Opam file: Config: add `opam-root-version` field as a marker for the whole opam root [#4638 @rjbou - fix #4636] * Opam file: Add `BestEffort` modules with reading functions that don't show errors, given the `opam_file_format` internal field [#4638 @rjbou - fix #4636] * Depext: Handle macport variants [#4509 @rjbou - fix #4297] * Depext: Always upgrade all the installed packages when installing a new package on Archlinux [#4556 @kit-ty-kate] * Depext: Handle some additional environment variables (`OPAMASSUMEDEPEXTS`, `OPAMNODEPEXTS`) [#4587 @AltGr] * Depext: Improve messages to hint that answering `no` doesn't abort installation [#4591 @AltGr] * Depext: Add support for non-interactive mode in macports [#4676 @kit-ty-kate] * Depext: Handling of packages of tagged repositories for alpine [#4700 @rjbou - fix #4670] * Depext: Clarify some `assume-depexts` related messages [#4671 @AltGr - partial fix #4662] * Depext: Warn the user if epel-release is missing and unavailable depexts are detected [#4679 @dra27 fix #4669] * Depext: Ignore config yes automatic answering when asking confirmation to run install commands [#4698 @rjbou - fix #4680] * Sandbox: Fix the conflict with the environment variable name used by dune [#4535 @smorimoto - fix ocaml/dune#4166] * Sandbox: Kill builds on Ctrl-C with bubblewrap [#4530 @kit-ty-kate - fix #4400] * Sandbox: Linux: mount existing TMPDIR read-only, re-bind `$TMPDIR` to a separate tmpfs [#4589 @AltGr] * Sandbox: Fix the sandbox check [#4589 @AltGr] * Sandbox: Fix sandbox script shell mistake that made `PWD` read-write on remove actions [#4589 @AltGr] * Sandbox: Port bwrap improvements to sandbox_exec [#4589 @AltGr] * Sandbox: Fix realpath use for macos, partial revert of #4589 [#4609 @AltGr] * Add missing shell quoting to support space and special shell characters in switch directory path [#4707 @kit-ty-kate] * 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 [#4642 @dra27 - fix #4554] * Fix Cudf preprocessing [#4534 #4627 @AltGr - fix #4624] * Allow to upgrade to a hidden-version package if a hidden-version package is already installed [#4525 @kit-ty-kate] * 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 @kit-ty-kate] * Fix opam-devel's tests on platforms without openssl, GNU-diff and a system-wide ocaml [#4500 @kit-ty-kate] * Use dune to run reftests [#4376 @emillon] * Restrict `extlib` and `dose` version [#4517 @kit-ty-kate] * Restrict to `opam-file-format.2.1.2` [#4495 @rjbou] * Require `opam-file-format.2.1.3+` in order to enforce `opam-version: "2.1"` as first non-comment line [#4639 @dra27 - fix #4394] * Switch to newer version of MCCS (based on newer GLPK) for src_ext [#4559 @AltGr] * Bump dune version to 2.8.2 [#4592 @AltGr] * Bump the minimal dune requirement to dune 1.11 [#4437 @dra27 @kit-ty-kate] * 4.12 compatibility [#4437 @dra27 @kit-ty-kate] * Cold compiler updated to 4.12 [#4616 @dra27] * Fix build from source when a dune-project file is presented in the parent directory [#4545 @kit-ty-kate] * Fix build from source when a dune-project file is presented in the parent directory [#4545 @kit-ty-kate - fix #4537] * Fix opam-devel.install not to install two files called opam [#4664 @dra27] * Build release tags as non-dev versions, as for release tarballs [#4665 @dra27 - fix #4656] * Disable dev version for tests (needed for format upgrade test) [#4638 @rjbou] * Add a hint for missing `openssl` in `make cold` [#4702 @rjbou] * Remove test field from opam-devel, they need the network [#4702 @rjbou] * Update src_ext for Dune and MCCS [#4704 @dra27] * Release scripts: switch to OCaml 4.10.2 by default, add macos/arm64 builds by default [#4559 @AltGr] * Release scripts: add default cli version check on full archive build [#4575 @rjbou] * Arg: Generalise `mk_tristate_opt` to `mk_state_opt` [#4575 @rjbou] * Arg: Fix `mk_state_opt` and rename to `mk_enum_opt` [#4626 @rjbou] * Arg: Add `mk_enum_opt_all` for state flags that appears more than once [#4582 @rjbou] * Fix `opam exec` on native Windows when calling cygwin executables [#4588 @AltGr] * Fix temporary file with a too long name causing errors on Windows [#4590 @AltGr] * CLI: Add flag deprecation and replacement helper [#4595 @rjbou] * Win32 Console: fix VT100 support [#3897 #4710 @dra27] * Tidied the opam files [#4620 @dra27] * Externalise cli versioning tools from `OpamArg` into `OpamArgTools` [#4606 @rjbou] * Each library defines its own environment variables, that fills the config record [#4606 @rjbou] * Harden cygpath wrapper [#4625 @dra27] * Reset the plugin symlinks when the root is upgraded [#4641 @dra27 - partial fix for #4619] * Formalise opam dev version detection with `OpamVersion.is_dev_version` [#4665 @dra27] * Add `OpamStd.String.is_prefix_of` [#4694 @rjbou @dra27] * Fix `OpamStd.Format.pretty_list`: `last` argument dropped if list contains more than 2 elements [#4694 @rjbou] * Run the shell hooks with closed stdin (bash, zsh) [#4692 @AltGr] * Improved and extended tests [#4376 #4504 #4545 #4612 #4668 #4612 #4634 #4672 #4638 #4702 #4697 #4697 @AltGr @dra27 @emillon @rjbou] * Improve Github Actions [#4593 #4575 #4610 #4610 #4618 #4606 #4695 #4695 @AltGr @dra27 @rjbou] * Improve documentation [#4496 #4506 #4513 #4637 #4681 #4702 @dannywillems @eth-arm @kit-ty-kate @rjbou @UnixJunkie] 2.1.0~beta4: * (*) Implemented CLI version compatibility layer [#4385 @rjbou] * (*) Return code 31 (`Sync_error`) instead of code 40 (`Package_operation_error`) when all failures happend during fetching [#4416 @rjbou - fix #4214] * (+) Add `--download-only` flag [#4071 @Armael @rjbou - fix #4036] * (+) Provide `opam update --depexts` to request an update of the system package manager databases [#4379 @AltGr - fix #4355] * Set OPAMCLI=2.0 during package action commands [#4492 @kit-ty-kate] * Fix sandbox check on first `opam init` [#4370 @rjbou - fix #4368] * Print shell-appropriate eval command on `opam init` [#4427 @freevoid] * Fix init script check in csh [#4482 @gahr] * The stdout of `pre-` and `post-session` hooks is now propagated to the user [#4382 @AltGr - fix #4359] * `post-install` hooks are now allowed to modify or remove installed files [#4388 @lefessan] * Add support for switch-specific pre/post sessions hooks [#4476 @rjbou - fix #4472] * Ensure we don't advertise upgrades to hidden versions [#4477 @AltGr - fix #4432] * Fix `opam remove --autoremove <PKG>` to not autoremove unrelated packages [#4369 @AltGr - fix #4250 #4332] * Fix cases where `opam remove -a` could trigger conflicts in the presence of orphan packages [#4369 @AltGr - fix #4250 #4332] * Fix `--update-invariant` when removing or changing package name [#4360 @AltGr - fix #4353] * Fix updates of the invariant with `--update-invariant` [#4431 @AltGr] * Fix cleanup of build dirs for version pinned packages [#4436 @rjbou - fix #4255] * Fix opamfile format upgrade on pinning [#4366 @rjbou - fix #4365] * Fix `pin --show` actually pinning [#4367 @rjbou - fix #4348] * When several pins are needed, do their fetching in parallel [#4399 @rjbou - fix #4315] * Don't cleanup VCS pin source directories [#4399 @rjbou] * Fix `--working-dir` with local switches [#4433 @rjbou] * Add package variable `opamfile-loc`, containing the location of installed package opam file [#4402 @rjbou] * Fix `arch` detection when using 32bit mode on ARM64 [#4462 @kit-ty-kate] * Fix `arch` detection of i486 [#4462 @kit-ty-kate] * Skip loading the switch state for variable lookup when possible [#4428 @rjbou] * Fix package variables display when no config file is found [#4428 @rjbou] * Fix `opam option depext-bypass-=["XXX"]` [#4428 @rjbou] * Lint: add a check that strings in filtered package formula are booleans or variables [#443 @rjbou - fix #4439] * Fix handling of filename-encoded pkgname in opam files [#4401 @AltGr - fix ocaml-opam/opam-publish#107] * Don't recompile when modifying the package flags [#4477 @AltGr] * Add depext support for NetBSD and DragonFlyBSD [#4396 @kit-ty-kate] * Fix depexts on OpenBSD, FreeBSD and Gentoo: Allow short names and full name paths for ports-based systems [#4396 @kit-ty-kate] * Handle the case where `os-family=ubuntu` as `os-family=debian` [#4441 @alan-j-hu] * Update opam's opam files to 2.0 [#4371 @AltGr] * Makefile: Add rule `custom-libinstall` for `opam-custom-install` use [#4401 @AltGr] * Use the archive caches when running `opam admin cache` [#4384 @AltGr - fix #4352] * Fix explosion of `opam admin check --cycles` on repositories with huge cliques [#4392 @AltGr] * Much improved format-preserving printer [#4298 #4302 @rjbou - fix #3993] * Fix missing conflict message when trying to remove required packages [#4362 @AltGr] * Fix the Z3 backend for upgrades [#4393 @AltGr] * Fix cases where opam would wrongly complain about action cycles [#4358 @AltGr - fix #4357] * Fix permission denied fallback for openssl [#4449 @Blaisorblade - fix #4448] * Add debug & verbose log for patch & subst applications [#4464 @rjbou - fix #4453] * Be more robust w.r.t. new caches updates when `--read-only` is not used [#4467 @AltGr - fix #4354] * Improved and extended tests [#4375 #4395 #4428 #4385 #4467 #4475 #4483 @emillon @rjbou @AltGr @freevoid @dra27] * Switched to Github actions [#4463 @rjbou] 2.1.0~beta2: * Reduced startup times, in particular for `opam exec` [#4341 @altgr] * Fixed the sandboxing check on fresh inits [#4342 @altgr] * Fixed cases where `--with-version` was not respected by `opam pin` [#4346 @altgr] * Upgraded the bootstrap OCaml compiler from 4.09.1 to 4.11.1 [#4242 @avsm @dra27 @MisterDA @rjbou] 2.1.0~beta: * (*) `--cli` / `OPAMCLI` option added [#4316 @dra27] * `--help/--version` documented in wrong section for aliases [#4317 @dra27] * `opam lock --help` missing common information {#4317 @dra27] * (+) `--yes` passed to all commands, and plugins [#4316 @dra27] * On init, check availability of sandbox and propose to disable [#4284 @rjbou - fix #4089] * config upgrade: on the fly upgrade if no write lock required [#4313 @rjbou] * (*) Add `pin scan` subcommand to list available pins [#4285 @rjbou] * (*) Add `--normalise` option to print a normalised list when scanning, that can be taken by `opam pin add` [#4285 @rjbou] * (*) Add `with-version` option to set the pinned package version [#4301 @rjbou] * Add error message in case git repo is empty [#4303 @rjbou - fix #3905] * Lock: Support -d as alias of --direct-only (to match plugin) [#4319 @dra27] * Switch: Support -n as an alias of --no-action (to match opam-pin) [#4324 @dra27] * List: <field> form no longer advertised as valid for --columns [#4322 @dra27] * Admin: <field> form no longer advertised as valid for --columns in list [#4322 @dra27] * Solver: Don't penalise packages with more recent 'hidden-versions' [#4312 @AltGr] * `OpamCommand.pin` refactor, including adding `OpamClient.PIN.url_pins` to pin a list of package with url [#4285 #4301 @rjbou] * `OpamPinCommand.source_pin', for new package confirmation, don't check that no opam file is given as argument [#4301 @rjbou] * CLI: Provide all functions in the client library [#4329 @AltGr] * Process: don't display status line if not verbose, and status line disabled [#4285 @rjbou] * Optimise package name comparison [#4328 @AltGr - fix #4245] 2.1.0~alpha3: * Confirmation on non-compiler switch invariant: not on dryrun, Y by default [#4289 @AltGr] * (*) Fix pin kind automatic detection consistency [#4300 @rjbou]: With `opam pin target', when opam file is not versioned and at root, vcs-pin the package instead of path-pin, and with `opam pin add nv target', take opam file even if not versioned. * External dependencies: Fix non-interactive mode on OpenSuse [#4293 @kit-ty-kate] * src-ext: bump topkg to 1.0.2 and dune to 2.6.2, with a second compiler built in case main one is < 4.07.0 (dune restriction) [#4294 @dra27] * Allow Z3 backend to return sub-optimal solutions on timeout, add `OPAMSOLVERALLOWSUBOPTIMAL` environment variable [#4289 @AltGr] * Add an optional solver relying on opam-0install-cudf [#4240 @kit-ty-kate] 2.1.0~alpha2: * Remove m4 from the list of recommended tools [#4184 @kit-ty-kate] * Fix config solver field ignored at init [#4243 @rjbou - fix #4241] * Fix atoms formula restriction with `--all` at upgrade [#4221 @rjbou - fix #4218] * Copy instead of calling rsync when archives are in a local cache [#4270 @kit-ty-kate] * Opam file build using dune, removal of opam-%.install makefile target [#4178 @rjbou #4229 @kit-ty-kate - fix #4173] * Use version var in opam file instead of equal current version number in opamlib dependencies [#4178 @rjbou] * src ext: fix extlib url [#4248 @rjbou] * Add `_build` to rsync exclusion list [#4230 @rjbou - fix #4195] * Recursive opam file lookup: ignore `_build` [#4230 @rjbou] * Assume-built fix & rewriting [#4211 @rjbou] * Fix autoremove env var handling [#4219 @rjbou - fix #4217] * Fix Not_found with `opam switch create . --deps` [#4151 @AltGr] * Package Var: resolve self `name` variable for orphan packages [#4228 @rjbou - fix #4224] * (*) Reject (shell) character on switch names [#4237 @rjbou - fix #4231] * Fix `OPAMSWITCH` empty string setting, consider as unset [#4237 @rjbou] * opam-installer: For paths, remove use of empty switch in favor of a context-less module [#4237 @rjbou] * Add missing depext to unavailable reasons [#4194 @rjbou #4279 @rjbou - fix #4176] * (*) Bump config file version to 2.1 (new depext fields) [#4280 @rjbou - fix #4266] * Add depext handling on new pinned packages [#4194 @rjbou - fix #4189] * Don't keep unpinned package version if it exists in repo [#4073 @rjbou - fix #3630] * Fix path resolving when pinning with `file://` [#4209 @rjbou - fix #4208] * (*) Disable recursive & subpath pinning (only present experimentally in opam 2.1.0~alpha) [#4252 @rjbou] * Add switch depext-bypass as modifiable field [#4194 @rjbou - fix #4177] * Add `--no-depexts` option to disable depexts packages unavailability [#4194 @rjbou - fix #4205] * Warn if packages are not listed because of depexts unavailability [#4194 @rjbou - fix #4205] * (*) Display error message for all not found packages [#4179 @rjbou - fix #4164] * (*) Keep package order given via cli [#4179 @rjbou - fix #4163] * `--sort`` apply to with all options, not only `--just-file` [#4179 @rjbou] * Add scope display to Not found message [#4192 @rjbou] * No scope needed for variable display [#4192 @rjbou - fix #4183] * Fix package variable resolution [#4192 @rjbou - fix #4182] * opam option: Fix messages advertising a command in an obsolete format [#4194 @rjbou] * E65: check that url local paths are absolute [#4209 @rjbou] * Fix arch query depext [#4200 @rjbou] * Add message when adding a package to `depext-bypass` [#4194 @rjbou] * Fix performance issue of depext under Docker/debian [#4165 @AltGr] * Handle debian virtual packages [#4269 @AltGr @rjbou - fix #4251] * Refactor `OpamSysInteract` package status [#4152 #4200 @rjbou] * Add environment variables handling on depext query [#4200 @rjbou] * Add depext Macport support [#4152 @rjbou] * Homebrew/depext: add no auto update env var for install, accept `pkgname` and `pkgname@version` on query [#4200 @rjbou] * Tag packages with missing depexts in Cudf [#4235 @AltGr] * Force LC_ALL=C for depext query commands [#4200 @rjbou] * Put back opam-depext-2.0's behaviour with regards to asking users' consent before installing system packages [#4168 @kit-ty-kate @rjbou] * Add OPAMDEPEXTYES env variable to pass --yes options to system package manager [#4168 @kit-ty-kate @rjbou] * Fix system install command dryrun [#4200 @rjbou] * (+) Add --depext-only to install only external dependencies, regardless of config depext status [#4238 @rjbou] * Move system install confirmation message after opam packages install [#4238 @rjbou] * Error if '--depext-only' is given with '--assume-depexts' or '--no-depexts' [#4238 @rjbou] * Sanddbox: no error when linked directory doesn't exist (e.g. XDG defined) [#4278 @kit-ty-kate] * Sandbox: add quotes to avoid space unwanted behaviors [#4278 @kit-ty-kate] * Fix temp files repository cleaning [#4197 @rjbou] * Fix admin cache synchronisation message [#4193 @rjbou - fix #4167] * Fix mismatching extra files detection [#4198 @rjbou] * Fix Cudf generation for compat with external solvers [#4261 @AltGr] * Check for a solution before calling the solver [#4263 @AltGr] * Add the package flag 'hidden-version' to discourage selection by the solver [#4281 @AltGr] * Tweak the default criteria to handle 'missing-depexts' and 'hidden-version' flags [#4281 @AltGr] * Disable chrono when timestamps are disables [#4206 @rjbou] * Expose some functionality in the `OpamAction`, `OpamPath` and `OpamSwitchState` modules for use without a `switch` value (introduce a functor to permit replicating switch layout in different contexts) [#4147 @timberston] * Std: Add map_reduce to Set and Map [#4263 @AltGr] * Fix regression in command resolution from #4072 (ocaml code for looking up commands in PATH) [#4265 @dra27] * Use OCaml 4.09.1 for the make cold target [#4257 @dra27] * Add show cram test [#4206 @rjbou] * Add envrionnement variable handling on cram test [#4206 @rjbou] 2.1.0~alpha: * Recursive & subpath based pin [#3499 @rjbou @hngrgr - fix #3174 #3477] * Define switch invariants rather than "base packages" [#3894 @AltGr] * Don't warn on switch creation with 'ocaml' as invariant [#4108 @AltGr] * Better error handling on switch creation [#4121 @AltGr] * Integrate lock plugin [#3746 @rjbou - fix #3734 #3769 #3694] * Add configuration modifications as opam config subcommands [#3992 @rjbou] * opam var and opam option outside of opam config [#4116 @rjbou - fix #4119] * Enable option var optimisation switch load [#4138 @rjbou] * Integrate depext plugin [#3975 @rjbou @AltGr - fix #3790 #1519 #2426 #3692] * Enable command/output display only from verbose level 3 [#4141 @rjbou] * Add `opam install --check <pkg>` checks that `<pkg>` dependencies are already installed in the switch. It reports missing ones and exits with 1, 0 otherwise. It is used on a check only purpose, additionally to `--deps-only`. [#3854 @rjbou - fix #3823] * Add `opam install <pkg> --ignore-conflicts` to use with `--deps-only` in case it is needed to install dependencies without taking conflicts into account. [#3853 @rjbou - fix #3846] * Add `opam show --just-file <file>` shows information of a given file, without loading the switch state. It can be combined with other options, as field filter `--field`. It deprecates `--file` option. [#3729 @rjbou - fix #3721] * Add `opam show --all-versions <pkg>` displays information of all versions of the given package. It can be used in combination of field filter. [#3867 @rjbou - fix #2980] * Add `opam show --sort <pkg>` display on stdout a sorted opam file: all fields are alphabetically sorted. [#3866 @rjbou - fix ocaml/opam2web#173] * opam show better error handling. [#4118 @rjbou - fix #3875] * `opam show --field` are no longer required to end with a colon. [#3931 @rjbou] * (*) `opam show --normalise` disable terminal width wrapping. [#3868 @rjbou - fix #3751] * `opam env --check` permit to indicates if an opam environment is synchronized: returns 0 if up-to-date, 1 otherwise. [#4074 @rjbou - fix #3725] * Add `opam switch export --freeze` to record VCS commit hash when a VCS url is specified. [#4055 @hannesm] * Add `opam switch export --full` option, include extra-files in switch export, on import create an overlay directory with the file contents. [#4040 @hannesm] * Optimize repository loading: we store the repository contents as .tar.gz files in ~/.opam/repo instead. [#3752 @AltGr - fix #3721] * Handle failure or interruption of tar during `opam update`. [#3861 @AltGr] * Fallback in case repository archive doesn't exist. [#4008 @rjbou] * In case repository archive is corrupted, delete it and ask to launch an update. [#4075 @rjbou - fix #4053] * When adding a repository, an error is displayed in case of mismatching urls, now both urls are displayed. [#4086 @rjbou - fix #4085] * Handle url backend change to VCS of a package from repository. [#4007 @rjbou - fix #3991] * Allow local compiler switch creation. [#3720 @rjbou - fix #3713] * Switch creation, fix multiple compiler candidate. [#3884 @rjbou - fix #3874] * Make reinstall handling stricter. [#3907 @AltGr] * (*) `opam list --resolve`: restrain test dependencies to direct one instead of listing all test dependencies of queried package(s) [#3923 @rjbou - fix ocaml/opam-depext#121] * Update pin-depends confirmation message to add a skip option. [#3852 @rjbou - fix #3840] * Add OPAMDROPWORKINGDIR environment variable for C. [#3792 @rjbou - fix #3727] * Don't restrain copy to versioned file. [#3759 @rjbou] * Don't fetch sources when working-dir is set. [#4046 @rjbou] * Update in place source copy: [#3948 @rjbou] - review `sync_dirty` on VCS: - use VCS to synchronize, then rsync & remove others files - exclude `_build`, `_opam` & VCS directories - when `--inplace-build` is given, it does a dirty synchronization of the sources, in order to keep tracking package stats (clean, local or dirty). * Fix `working-dir` messages on update command. [#3824 @rjbou] * Working-dir fixes. [#3982 @rjbou] * Update download errors handling during actions processing. [#3811 @AltGr] * Update `ftp` command, to pass url last. [#3910 @hannesm] * Terminate (with double dashes) list of command-line download option. [#3913 @cfcs] * Repository: remove 'file://' prefix for darcs. [#3761 @rjbou] * Opam{Git,Hg}: Fix diffs in presence of binary file. [#3879 @kit-ty-kate] * Set core.autocrlf and core.eol for Git remotes. [#3882 @dra27] * Add a git clean on `reset_tree` to keep source dir clean. [#3948 @rjbou] * Lint W62: Add a lint check for SPDX license. [#3976 @AltGr] * Lint: add result in json output. [#3848 @rjbou - fix #3046] * Add lint codes in manpage. [#3903 @rjbou] * Default configuration file: add `getconf` to required tools. [#3813 @rjbou] * Clarify message in `opam init --yes`. [#3892 @dra27] * Shell setup: don't advice an infinite sourcing loop. [#3832 @rjbou] * Default configuration file: Add compilation target globals, `sys-ocaml-arch, `sys-ocaml-cc`, and `sys-ocaml-libc`. [#3900 @dra27] * Ensure that environment is initialized lazily, not before init functions are called [#4111 @gasche] * Fix OPAMLOGS handling, and logdir `opam_init` argument [#4117 @rjbou - fix #4076] * Include base packages configuration variables in opam config report. [#3798 @dra27] * Determine jobs number at launch (`OpamStateConfig`) [#4004 @rjbou - fix #3986] * Fully test native Windows in the testsuite. [#3260 @dra27] * Allow native Windows to use Cygwin tool. [#3348 @dra27] * Deal with Windows path conventions (backslashes, .exe, etc.) [#3350 @dra27] * Correct display of dir separator on Windows. [#3893 @dra27] * Tested wrong variable in OPAMW_HasGlyp. [#3898 @dra27] * Default use `fetch` on FreeBSD, `ftp` on OpenBSD. [#3904 @hannesm] * Don't overwrite user's sandbow script modification. [#4020 #4092 @rjbou] * Handle `CCACHE_DIR` environment variable in sandbox script. [#4087 @rjbou - fix #4079] * Follow links of `~/.cache` & `~/.cache/dune` for bwrap call. [#4087 @rjbou - fix #4086] * On MacOS sandbox script, always read write mount `/tmp` [#3742 @rjbou - fix ocaml/opam-repository#13339] * Environment file right handling for empty switch. [#3899 @dra27] * Add colon for fish MANPATH fix. [#4084 @rjbou - fix #4078] * Update zsh check interactive terminal [#4095 @OCamlPro-mattiasdrp #4128 @AltGr] * Add package selection to `opam admin add-hashes` [#3787 @rjbou - fix #3767] * Download files (patches, etc.) using a safe filename. [#3900 @dra27] * `opam admin --add-constraints`, add constraint on depopts. [#4002 @rjbou - fix #3994] * Add `format-version` field to all opam files. [#3478 @AltGr] [#3906 @AltGr] * Clarify pin depend parse error. [#3762 @rjbou] * Opam file extensions (`x-` fields) enhancement. [#4049 @hannesm] * Add support for Z3 as a solver backend. [#3845 @AltGr] * Interleave download actions with build/install actions. [#3777 @Armael] [#4083 @rjbou - fix #4080] * Generalization of the job scheduler: provide separate job pools for different subsets of the tasks. [#3778 @AltGr] * Refactor the return types of `OpamSolution.{apply,resolve_and_apply}` [#3781 @Armael] * Use the scheduler pools to respect the download-jobs parameter. [#3791 @AltGr] * Set the right opam file `format-version` field on upgrade. [#4014 @rjbou] * Streamline the output from download action. [#3794 @AltGr] * Use a character that displays better on terminals for download action. [ #3802 @AltGr] * Change symbol for download action. [#3862 @AltGr] * Include the version number in "compilation failed" message. [#4052 @Armael] * Propagate `--force` remove option to directory tracking revert function. [#4094 @rjbou - fix #4091] * Add `OpamDirTack.string_of_changes` [#4107 @rjbou @hannesm] * Introduce state `drop` function to replace `ignore (unlock ..)` for more lock-type-safety. [#3783 @gasche - #3812 @rjbou] * Change `OpamStateTypes.switch_state.conf_files `from package_map` to `name_map` [#3799 @dra27] * Fix handling of availability outside of switches. [#3864 @AltGr] * Sorting formulas function. [#3945 @rjbou] * Sort formula: fix `compare_formula` & add `compare` [#3960 @rjbou] * Patch rewrite test. [#3456 @dra27] * Command errors display: differentiate command not found & permission denied. [#3865 @rjbou] * Factorize option functions in `OpamProcess` [#4016 @nobrakal] * Use ocaml code for looking up commands in `PATH` [#4072 @Armael] * Copy files using OCaml code instead of calling to cp or install [#4064 @Armael] * Sort & clean pkg:depend. [#4060 @rjbou - fix #4057] * Add `of_json` functions & crowbar. [#3776 @gasche] * JSON (de)serialization for OpamParallel graph. [#3786 @gasche] * Url: catch failure & specific exception. [#3946 @rjbou] * Update: don't update installed dev package that is not pinned. [#3947 @rjbou] * Use `OpamArg` helpers for option. [#4059 @rjbou] * Steps towards sudo-enabled make install. [#3522 @dra27] * Port build system to Dune (1.2) [#3618 @dra27] * Update shell/msvs-detect to 0.4.0. [#3869 @dra27] * Sort out repository script mode. [#3963 @dra27] * Preliminary support for Dune 2.0. [#3965 @dra27] * Update mccs.1.1+11 [#4109 #4146 @MisterDA] * Fix developer mode option. [#3646 @rjbou] * Ensure configure generates consistently. [#3935 @dra27] * Documentation [#3542 @0xflotus] [#3571 @hannesm] [#3780 @gasche] [#3944 @tchajed] [#3955 @nbraud] [#4106 @vp2177] [#3863 @dra27] [#3554 @rjbou - fix #3540 #2255c #3612 #3606c] [#4058 @rjbou] [#4114 @rjbou @AltGr] 2.0.7: * opam exec: display command not found message. [#4133 @rjbou - fix #4131] * Escape Windows paths on manpages. [#4129 @AltGr @rjbou - fix #4100] * Fix opam installer opam file. [#4058 @rjbou] * Fix various warnings. [#4132 @rjbou @AltGr - fix #4100] 2.0.6: * Do not fail if `$HOME/.ccache` is missing. [#3957 @mseri - fix https://discuss.ocaml.org/t/dune-1-11-1-compilation-failed/4248] * Add dune cache as rw. [#4019 @rjbou - fix #4012] * Check both size and mtime for dirtrack cached entries. [#4038 @hannesm] * Build man pages with dune. [#3937 @AltGr @dra27] * make cold: fail if patch or bunzip2 missing. [#4006 @rjbou - fix #3842] * Documentation [#3999 @maroneze] 2.0.5: * `opam lint --check-upstream` enables lint checks on archive urls. This option lead to download archives to check their checksum. [#3758 @rjbou] * Lint W59: No url checksum given (if `check-upstream` enabled). [#3758 @rjbou] * Lint E60: Unavailable archive or checksum mismatching (if `check-upstream` enabled). [#3758 @rjbou] * Lint E61: Out-of-scope `with-test` variable in `run-test:` field. [#3763 @rjbou - fix AltGr/Camelus/issues/27] * Lint W58: Restrain warning to filters. [#3871 @rjbou - fix ocaml/opam-repository#14280 (comment)] * Lint E61: Restrain to `run-test:`. [#3860 @rjbou] * Read jobs variable from `OpamStateConfig` [#3881 @dra27] * Fix cppo detection. [#3915 @rjbou] * Documentation [#3809#3891 @dra27] 2.0.4: * Remove mismatching extra-files: sort list before comparing them. [#3744 @rjbou] * Update source of (version) pinned directory. [#3726 @rjbou - fix #3651] * Fix `--ignore-pin-depends` with autopin. [#3736 @AltGr] * Fix pin not installing/upgrading already pinned package. [#3800 @AltGr] * Fix hg opam1.2 url parsing. [#3754 @rjbou] * Use `git -c diff.noprefix=false diff`. [#3788/#3628 @Blaisorblade - fix #3627] * Lint W47: Update warning message. [#3753 @rjbou - fix #3738] * Harmonization of `opam config list` and `opam config var <var>`: resolve variable first with switch state (loading it only for package defined variables), otherwise, global state. [#3723 @rjbou - fix #3717] * Considering the possibility that TMPDIR is unset. [#3597 @herbelin - fix #3576] * Unconditionally display MANPATH when fish version is 2.7 or late. [#3728 @gregory-nisbet] * Fix precise tracking mode: missing `to_hex` conversion. [#3796 @rjbou] * Catch signal to select ones that are really cancelling a blocking state (e.g. waiting for a lock to be released). [#3541 @rjbou] * `opam clean`: ignore errors trying to remove directories. [#3732 @kit-ty-kate] * Documentation [#3731 @MisterDA] 2.0.3: * On init, retrieve `root is ok` from global options instead of initialization. [#3704 @rjbou - fix #3695] * Regenerate missing environment file. [#3691 @rjbou - fix #3690 #3594] * Documentation [#3703 @rjbou - fix #3700] 2.0.2: * Check consistency with opam file when reading lock file to suggest regeneration message [#3680 @rjbou - fix #3654] * Remove pin depends messages. [#3679 @rjbou] * Upgrade pin depends on pinning. [#3684 @rjbou - fix #3508] * To avoid lint warning 57 (description error) on 1.2 opam file pinning, add auxiliary files (descr, url) before linting. [#3687 @rjbou] * Don't check hash with --no-checksum on pull_upstream. [#3658 @rjbou - fix #3652] * Lint E52: Fix `light_uninstall` flag. [#3631 @rjbou - fix #3625] * On init, don't fail if empty compiler given. [#3633 @rjbou - fix #3614] * Sandbox: make `/var` read-only instead of empty and rw. [#3605 @bobot - fix #3604] * Handle symlinks in bwrap sandbox. [#3661 @mroch - fix #3660] * Sandbox: Change one-line conditional to `if` statement which was incompatible with `set -e`. [#3645 @rjbou - fix #3607] * Release use of unix sockets on MacOS. [#3663 @silene - fix #3659] * Fix closure computation in the presence of cycle. [#3670 @AltGr - fix #3662 #3666] * Fix some cases of listing coinstallable package. [#3689 @AltGr] * Extract archived source files of version-pinned packages. [#3610 @rjbou - fix #3600] * Add function to upgrade opam file, including its auxiliary files: descr, url, files/. [#3624 @rjbou] * Set `.out` suffix for `read_command_output` stdout file. [#3644 @rjbou] {2.0.2} * Default opam root is resolved at creation, in order to have the correct linked path. [#3681 @rjbou - fix #3622] * Reinsert and deprecate `alias-of` & `no-autoinstall` option. [#3685 @rjbou - fix #3390] * Updates for OCaml 4.07. [#3474 @dra27] * Documentation [#3656 @rjbou - fix #3634 #3653 #3639] [#3685 @rjbou - fix #3390] 2.0.1: * Add `opam list --silent` to not write in the output, exit with return code 0 if the list is not empty, 1 otherwise. [#3533 @rjbou - fix #3525] * Fix `opam list --external` [#3558 @rjbou - fix #3557 ocaml/opam-repository#12677] * Show command with local opam file returns local file information. Fixes also the non 1.2 conversion to 2.0 format of local files with `opam show --raw`. [#3536 @rjbou - fix #3423] * Show command display string fields printed with quotes, as lists. [#3368 @rjbou - fix #3365] * Pin edit: fix editing an opam file without a name field. [#3535 @rjbou] * Don't execute validation hook if update is empty. [#3490 @hannesm] * Git: fallback, fetch all repository remotes to get SHA1 with git < 2.1. [#3561 @rjbou - fix #3523 #3548] * Lint E57: A description or a synopsis must be present and non empty. [#3581 @rjbou - fix ocaml/opam-repository#12729] * Lint W58: Advise to use `with-test` and `with-doc` variables if `test` and `doc` are present. [#3591 @rjbou - fix #3580 ocaml/opam-repository#12729] * Add `gtar` as OpenBSD required tool, as tar does not support the `J` flag. [#3538 @adamsteen] * Hash: fallback to internal library in case of openssl error. [#3543 @rjbou - fix ocaml/opam-repository#12613] * Respect user's TMPDIR when invoking bwrap sandbox. [#3487 @3noch] * Add a way to mount unusual path in bwrap sandbox: introduction of `OPAM_USER_PATH_RO` environment variable. [#3540 @ErwanGa] * opam admin: handle non http backend on repository upgrade: compute hash only for http or distant rsync backend [#3596 @rjbou - fix #3590] * Upgrade to opam 2.0 format overlay opam files of pinned package. [#3528 @rjbou - fix #3513] * Add compiler file translation to opam 2.0 format function. [#3530 @rjbou - fix ocaml/opam-repository#12523] * Tar extract fail error message: if a tar extract fails, it checks the presence of underlying commands (bzip2, xz, lzma, gzip) to display the error message in verbose mode. [#3502 @rjbou - fix #3497] * Remove link files only if it exists. [#3519 @rjbou - fix ocaml/opam-depext#104] * Remove GNUism from bootstrap-ocaml.sh [#3481 @dra27 - fix #3480] * Avoid sed -i, a GNU sed extension, use mv instead [#3603 @hannesm] * Add patch & bunzip2 check in configure. [#3531 @rjbou - fix #3520] * Not having wget or curl is now only a hard-error if src_ext/archives doesn't contain the archives (i.e. if make -C src_ext cache-archives has not been run) which means that this should no longer be a requirement for building with the "full" tarball. [#3572 @dra27 - fix #3551] * C++ test for MCCS is now moved to the correct place and the message as to whether the solver will be build should work correctly with --disable-checks. Note that not having a C++ compiler is not considered an error if --disable-checks is specified because configure is permitted to believe that the MCCS library exists even if it couldn't detect it. [#3572 @dra27] 2.0.0 * Fixes and documentation * Add `opam admin add-hashes` helper to add more secure hashes to the repository 2.0.0~rc3 * Fixes * Added subcommand `switch link` to link a local switch to a defined one * Added option `--assume-built` to install an already built pinned package * Better Windows support * Obsolete `opam config setup` option 2.0.0~rc2 * Fixes * Much faster CUDF universe loading * Much faster `opam env` and similar commands * Added `opam admin check` for integrity checks on package repositories * Added the ability to setup scripts on `opam init` from `.opamrc` * Setup wrappers to sandbox builds by default, based on `bubblewrap` on Linux and `sandbox-exec` on MacOS * Windows support for many aspects including parallel processes, environment variables setup, color console and utf8 (using specific C stubs) * Better detection of the running shell * Added shell helpers to automatically sync the environment on every prompt * Support for selecting different backends if compiled in the `ocaml-mccs` solver lib 2.0.0~rc * Fixes * Support compiling on OCaml 4.06.0 * `opam env` and `opam exec` no longer set the `OPAMROOT` or `OPAMSWITCH` variables * Allow in-source package metadata to be gathered in an `opam/` directory 2.0.0~beta6 * Small UI fixes * Fixed a rare case of looping while processing actions 2.0.0~beta5 * Added timeout support to the solvers (default 1min) * Added `--unlock-base` to allow changing the compiler of a switch * Added the `{post}` dependency flag for packages to be installed together, but in no specific order. Use it for `base-*` packages. * Fixed issue with OCaml 4.05.0 and installed programs not found (`Unix.execvpe` behaviour changes, https://caml.inria.fr/mantis/view.php?id=7640) * Added a `pin-depends` field for easier development project dependency management and sharing * Some optimisations to repository loading * Fixed --best-effort with the built-in solver * Shorten conflict messages even more * Added `opam admin add-constraint` to amend a set of reverse dependencies in a repository * New format for `depexts:`, easier to understand and more flexible. Depexts for the host can now be inferred by opam * Optimised search criteria for the built-in solver * Added a `build-id` variable to identify package builds * Extend hooks (new variable `installed-files`, new session hooks) * `opam switch create DIR` now installs packages defined in `DIR` * Added system-related variables `arch`, `os`, `os-distribution`, `os-family`, `os-version` * Added support for using `opam.locked` files instead of `opam` ones (`--locked`) * Opam plugins are now made available across switches 2.0.0~beta4 * Building with OCaml < 4.02.3 is no longer supported * Support compilation with a built-in mccs solver (removing run-time dependency to aspcud). Integrated half-working "heuristics" dropped. * Remove jsonm and transitive uutf dependency. * Switch build systems to `jbuilder`, including `lib-ext` support * Allow repeated and or'd arguments to the `list` command * Many code and build system portability fixes (Windows, BSD) * Add `switch export --full` to include package definitions * Add `announce:` and `stamp:` fields to repositories (`repo` files) * Add a global cache of git objects (greatly speeding up multiple cloning) * Allow `opam pin URL` without a package name * Many error handling, messages and corner case fixes * Updated the versions of dependencies * Removed the unused `features:` field, and proposal for a new syntax * More informative exit codes, and documentation thereof 2.0.0~beta3 * (*) Renamed `--soft-request` to `--best-effort` * Fixed and improved speed of the package file tracking mechanism * Added `--ignore-constraints-on` to temporarily bypass version constraints on some dependencies * Fields `build-test:`, `build-doc:` are now deprecated, in favor of specifying conditions on the `with-test` and `with-doc` variables within the `build:` field, and of the new `run-test:` field * (*) The command-line options have been renamed accordingly to `--with-test` and `--with-doc` * Removed the `opam build` command * Allow directories in place of package specifications for the `install`, `remove`, `upgrade`, `reinstall` and `show` commands. `opam` files can also be specified for `install` and `show` * On local switch creation, check for package definitions and choose a compatible compiler if possible * Add `opam install|remove --destdir` to copy the package's installed files somewhere else * Allow `opam init --config=URL` 2.0~beta2 * Fixes (mainly to `opam build`) * Faster coinstallability check 2.0~beta * New, by-hash package archive caching system * Simpler HTTP repository update * Allow specification of multiple checksums per file * Add `opam reinstall --pending`, to handle reinstallations of changed packages * Support for defining trust anchors and repository validation hooks (for use with Conex) * (*) Added `opam install --working-dir`, removed "mixed mode" for pinned packages * Added `opam install --soft-request`, a non-failing "do what can be done" install mode * Simplified, better conflict messages * Added `opam list --coinstallable-with PKG` * Added command `opam clean` * Added `opam upgrade --all PKGS`, to do a full upgrade while guaranteeing `PKGS` are kept installed * Allow `&` in conflict version constraints, e.g. `conflicts: "foo" {>= "3" & < "4"}` * Added an `opam admin` command, with various, better organised repository admin commands, and remove the `opam-admin` tool * Added an `opam build` command, to handle `opam` files found in the current directory * Internally upgrade repositories in 1.2 format automatically to 2.0 (on `init`, `update` or `repo add`) 2.0~alpha5 * Merge stdout and stderr of child processes by default * Fixed regression on solver call times * Added a few shorter command aliases: `opam var` `opam exec`, `opam env` for the corresponding `opam config` commands * (*) Simplified `opam repo` to only use `add` and `remove` in normal use, always meaning the current switch (only) if not specified otherwise * (*) Restrict package names and versions to a reasonable character set * Added support for SHA256 and SHA512 checksums * Separated the opam format lexer/parser/printers into a separate `opam-file-format` library * Reporting on package definition file errors only when the file will be used, and on by default (rather than all-off by default, and optionally all-on) * `opam lint` now accept multiple input files * `opam pin` interface yet improved, allow pinning all at once when a source directory contains multiple packages. `opam unpin <dir>` now allowed to cancel `opam pin <dir>` * Updated version of the dose lib dependency * (*) All patch files used in package definitions are now assumed to apply with `-p1`. 2.0~alpha4 * Added pre and post hooks for package command sections; allowed per-switch configuration * Re-packaged the libraries and opam into 7 individual packages * Convert opam 1.2 files on the fly when pinning * `opam list` can now match patterns on versions * Allow switches to be created below arbitrary directories using `opam switch create <dir>`. Automatically select a switch found in `$PWD` * Add `install --reuse-build-dir` to be used together with `--keep-build-dir` and allow incremental recompilations * Add `install --inplace-build` to build locally pinned packages directly in their source directory 2.0~alpha3 * (*) Refactored 'opam switch' command, creation of new switches no longer implicit * (*) Allow per-switch selection of repositories * Better update of the environment variables across switches or opam roots * Add `opam install --restore` to recover packages that got removed due to errors or interruptions * Added `synopsis:` and `description:` fields to integrate package descriptions in a single package definition file * Removed the clever hack to skip downloads when uninstalling packages with `ocamlfind remove`; this now needs to be explicit through the `light-uninstall` flag. * Provide `opam admin upgrade-format` to migrate package repositories to the new format, and create the proper OCaml compiler package wrappers * Allow initialisation parameters from a .opamrc file, possibly completely overriding OCaml and opam.ocaml.org repository defaults 2.0~alpha2 * Extended the `opam lint` command-line options (package descriptions from opam metadata, warnings selection) * Allow to create a new switch with `opam switch import` * (*) Rewritten, much more flexible `opam list` command, with composable filters and output selection * Delay the removals of packages as much as possible, avoiding most cases of mass uninstalled packages after a build failure * Use a specific `opam` user-agent for downloads * Remove globalisation of compiler package variables and support for `available:` constraints depending on those. Rewrite the repository accordingly to use explicit dependencies towards the compiler version. 2.0~alpha * Changed license to LGPL 2.1 with linking exception, like OCaml (#2573) * Track files installed by packages for cleaner removal and listing, add `opam search --owns-file` (#502, #1215) *this requires packages to properly separate build and install*, or unrelated files could get removed on package uninstall. * Allow command wrappers around package build/install/remove commands to be defined in `~/.opam/config`; include sample Linux wrappers to restrict process permissions (e.g. ensure `build:` doesn't install) * (*) Reworked `opam show`, with more fields and the ability to select raw fields from the opam file (#2122) * Dropped ability to compile opam with OCaml earlier than 4.01.0 * Version constraints in `depopts:` allowed again, but with consistent semantics * Allow mixing filters within dependency constraints * More flexible `opam pin` command interface * New internal file-lock handling, less obtrusive and safer * New `switch export` format, now including local (pinned) package definitions * No longer uses insecure arguments of curl/wget (#55, #2006, #2460) * Installed package source and metadata are now handled per-switch, which is more reliable * `opam pin edit` now allows changing version and even URL; better editor handling * Discarded built-in variables based on polling OCaml (they are now defined by the compiler package at installation) * Discarded compiler files, `opam switch` now based on packages with the `compiler` flag set * Extended package configuration files * Allow initialised opam without switch, initialised switch without compiler. Better handling of compiler install failure * (*) Large API rework, switch and repository state now handled separately, used in functional style and avoiding many loads * Git submodules are now automatically fetched by the git backend * (*) Package definition files now prioritize `&` higher than `|`, like is most common * (*) `opam list -a` now lists all available packages, even if they can't be installed (missing depends...), which is much faster (#2370) * Added ability to reprint files with reduced diffs (#2363) * Url and description can now be included within a single package definition `opam` file (#2328) * Internal switch state now all below `<switch-dir>/.opam-switch/`, state in a single `switch-state` file (#2340) * Add a `setenv:` field to package definitions, allowing to export environment variables (#2337, #2361) * Built-in support for alternative solver `mccs` (#2333) * `opam upgrade pkg` now prompts to install `pkg` if absent (#2327) * (*) Assume plugin package and exec names start with "opam-" (#2316, #2317) * Reworked, cleaner and bidirectional file manipulation library (kind of lenses) (#2325) * Allow packages to specify extra remote overlay files within their definition files * Heuristic to detect bad solutions and print a hint when no solver is available * (*) Proper URL handling with version-control + transport handling (e.g. `git+https://`) * Allow unescaped strings enclosed between `"""` markers in package definition files * Don't rely on '.zip' extension for downloaded archive handling (#2289) * `opam config` extended with `set`, `unset`, `expand` subcommands, allows variables in `exec` argument (#2268) * `conflict:` field is now handled as a disjunction in all regards (#2267) * Better handling of concurrent removal/build/install actions (#2161, #2266, #2370) * Allow fields `x-fieldname` in package definition files, for use by external tools (#2265) * Extended, more useful JSON output (including full package failure logs) (#2236) * Use the switch paths that are defined in the switch configuration file (#2185) * Allow package definition files to reference the package's own variables through "%{_:varname}%" (#2184) * Initialise number of jobs from host's number of processors (#2180) 1.2.2 * Fixed wrong locks being taken during `switch reinstall` (#2051) * Fixed `config report` that wasn't displaying the external solver (#2059) * Follow glibc standard on detecting an UTF8 locale (#2065) * Fixed issues with fish shell init scripts (#2063) * Restored printing of commands with `--verbose` and `--dry-run` * More concise printing of conflicts, with accurate version numbers * Small improvements to the causes of actions * Fixed issue causing the state cache not to be used on some OSes (OSX) (#2077) * Added numbers to lint checks, and some new checks * Restored the handling of a simple path to an `aspcud`-compatible executable in variable OPAMEXTERNALSOLVER (#2085) * Added package universe output to new PEF format for diagnostics * Prioritise newer versions even when the latest can't be installed (#2109) * Automatically install plugins on `opam plugin-name` (#2092) * Fixed a fd leak on solver calls (#2134) * Accept opam files with errors when no debug or strict options are set, for easier format updates * Add `opam list --resolve` to get dependencies as a consistent set of packages * Provide the expected checksum to download commands * Changed return code of `opam list` when no patterns are supplied and the list is empty 1.2.1 * Non-system compiler definitions without source are now allowed * Better handling of compiler "base" packages allows one to move build instructions from compiler definitions to packages * Rewritten action resolution mechanism to be based on atomic actions. Actions are not aborted anymore on first failure when there is no inter-dependency * Rewritten parallel command execution engine * Better display of actions, lots of improved messages * `opam upgrade pkg` now fails if no new version of `pkg` can be installed * fixed shell configuration for various shells * Updated Dose dependency to 3.3 * Fixed behaviour of `opam switch` and related commands when a switch is locally set in a shell (through `OPAMSWITCH`) * Better behaviour on failed `opam switch` * New pinning mode: when pinning using version-control on a local path and without a branch specified, use current file tree, but limited to version-tracked files * Faster and cleaner handling of downloads * Now compiles with --safe-string on OCaml 4.02, better compatibility handling * `opam unpin` now accepts multiple arguments * `opam pin add <pkg>.<version> <target>` is now allowed to specify the advertised version * Fixed bug leading to a bad `CAML_LD_LIBRARY_PATH` when switching from system * Better `opam lint`, reporting warnings and errors, including format errors * `opam config setup` now takes `--shell=` instead of `--sh`, `--csh`, `--fish`, `--zsh` * Provisional feature: dependency flag `dev` is accepted (but does nothing) * Provisional feature: field `features` in opam files implemented (beta), not for use in production * Better definition of the `filter` language within opam files: propagates undefined values, bool-to-string converter syntax * Provisional feature: `verbose` may be specified in package flags * OPAM git-like plugins (commands of the form opam-xxx) are now searched in the correct OPAM path * ~/.opam/config doesn't refer to OPAM's patch-version anymore, to allow downgrading * Recognise <name>.opam files and directories when pinning a package to source * Cleaned up debug and verbose messages, allow more control (`-v` can now be repeated) * Pinning URL can now be explicit in the form `VC+URL`, e.g. `git+ssh://`, `hg+https://`... * New flexible way to specify download and solver commands in `~/.opam/config` or in variables `OPAMFETCH` and `OPAMEXTERNALSOLVER` * Lots of bug-fixes 1.2.0 * Handle locally installed self-upgrade opam binary (#1257) * Added `opam list --depends-on` to show reverse dependencies (#693) * More consistent checks on user-specified packages (#1241) * Handle version constraints from the command line (`package>=version`) (#380) * Output clear and concise messages on non solvable requests (#595, #1238) * Much better internal parser. File locations in error messages (#1260, #1222) * Removed dependency on camlp4 (#917) * Fixed orphan packages handling (installed packages with no upstream) (#1198) * Solver: optimize default preferences, depending on the solver version. New --criteria option (#1208) * Better PATH modifications handling, add 'opam config env --inplace-path' (#1189, #1749) * Specify variable overrides with environment OPAMVAR_name (#1153) * Much better overall failsafe behaviour. Error reports on interruption (#1202, #1125, #1188...) * Better action processing, with downloads first (#984) * Much improved and faster interface with the Cudf solver (#1185, #1179) * Ask the user to confirm actions whenever non-trivial (#1165) * Added option --show-actions, made --dry-run simulate actions (#1142) * Now prints meaningful causes explaining the actions (#1174) * Fixed the stats displayed after update (#1161) * Added variables to query ocaml native tools and arch (#979) * Enable packagers to specify mirrors in url files (#807) * Cleaned up the command-line interface (#1250, #1170, #1472). Incompatible changes: - 'opam config exec': takes command args directly rather than as a string (use -- for command arguments) - 'opam switch import|export': now have a mandatory FILE argument. '-f' no longer accepted. - 'opam pin' now takes a subcommand 'add', 'remove', 'list' or 'edit'. - 'opam config -env': no longer accepted for 'opam config env' - '--no-aspcud' is now '--use-internal-solver'. - Removed unused `opam config -I`, `opam config {asm,byte}{comp,link}` - '-r' isn't accepted anymore for '--root' * Much extended pinning features, with the ability to use opam files from the source, pin packages that don't exist in a repository, fill a local opam file from a template, etc. * Improved the internal solver to handle much larger problems (#1358) * Use Unix.lockf for more reliable internal repository locks (#1299) * Large performance improvements (#1363) * Upgraded external dependencies to dose 3.2.2, ocamlgraph 1.8.5, cmdliner 0.9.4, cudf 0.7 * Switch export file now include pinning data. Pinned package restored through 'opam switch import' (#1393) * Meaningful messages explaining why packages aren't available (#1419, #1398) * More informative 'opam config list', more complete 'opam config var' * Added 'opam config cudf-universe' for use in external tools * opam files: added a 'dev-repo' field, and the experimental 'flags' field (#1217, #1472) * Generate an opam-admin.top to easily apply scripts on a package repository (#1454). Provide scripts to ease adding new metadata ('dev-repo', etc.) * Added 'opam upgrade --fixup' to save the day if your installed package set gets inconsistent. * Fixed some return codes * Added option to query (recursive) (reverse) dependencies and external dependencies to 'opam list * Fixed opam init for some shells * OPAM search now includes the 'syntax' and 'libs' fields in the search, as well as 'findlib' files * 'opam source' command to get the package archive or upstream source easily * Added an 'install' field in opam files, to separate from build * Added the 'build', 'test' and 'doc' dependency flags to limit the scope of some dependencies * Added Check for common dependencies at init time * Pinning to a local git directory pins as path, but advertises pinning as git will now automatically select the pin kind to 'git' (#1555) * Fixed init scripts for fish and csh (#952) * More reliable and faster usage of git branches in the git backend * Friendlier env variable handling (true/1/yes or false/0/no/"" for true and false) (#1608) * Specify what is not rather than 'already up-to-date' when some packages couldn't be upgradedd (#1645) * Override Make variables in sub-processes (#1617) * 'opam update' no longer needed after 'opam repo add' * Attempt to read files in 'permissive mode' when they claim a newer OPAM version (#1662) * Fixed ignore of SIGPIPE in sub-processes (#1681) * New shell completion scripts * Added 'opam lint' to perform checks on opam files * Use the published version of jsonm rather than include it (#1574) * Changed findlib package name from 'opam' to 'opam-lib' * Hundreds of smaller fixes and UI improvements 1.1.2 * Rewritten, more compatible build system based on Makefiles (#1362, #1424) 1.1.1 * Fix `opam-admin make <packages> -r` (#990) * Explicitly prettyprint list of lists, to fix `opam-admin depexts` (#997) * Tell the user which fields is invalid in a configuration file (#1016) * Add `OpamSolver.empty_universe` for flexible universe instantiation (#1033) * Add `OpamFormula.eval_relop` and `OpamFormula.check_relop` (#1042) * Change `OpamCompiler.compare` to match `Pervasives.compare` (#1042) * Add `OpamCompiler.eval_relop` (#1042) * Add `OpamPackage.Name.compare` (#1046) * Add types `version_constraint` and `version_formula` to `OpamFormula` (#1046) * Clearer command aliases. Made `info` an alias for `show` and added the alias `uninstall` (#944) * Fixed `opam init --root=<relative path>` (#1047) * Display OS constraints in `opam info` (#1052) * Add a new 'opam-installer' script to make `.install` files usable outside of opam (#1026) * Add a `--resolve` option to `opam-admin make` that builds just the archives you need for a specific installation (#1031) * Fixed handling of spaces in filenames in internal files (#1014) * Replace calls to `which` by a more portable call (#1061) * Fixed generation of the init scripts in some cases (#1011) * Better reports on package patch errors (#987, #988) * More accurate warnings for unknown package dependencies (#1079) * Added `opam config report` to help with bug reports (#1034) * Do not reinstall dev packages with `opam upgrade <pkg>` (#1001) * Be more careful with `opam init` to a non-empty root directory (#974) * Cleanup build-dir after successful compiler installation to save on space (#1006) * Improved OSX compatibility in the external solver tools (#1074) * Fixed messages printed on update that were plain wrong (#1030) * Improved detection of meaningful changes from upstream packages to trigger recompilation 1.1.0 [Oct 2013] * Fix update of dev packages (#962) * Add support for zip source archives (#958) * Add `OPAMCURL` environment variable to control invocation of curl (#960) * Ensure repository redirects only happen for http remotes (#955) * Turn malformed package files into warnings instead of hard errors (#957) * Improve robustness of pinned package update (#949) * Finish conversion of default repository to <https://opam.ocaml.org> (#948) * Fix regression in handling archives with no extension (treat them as tar again) (#972) * Fixed stale archives causing packages to be marked as NEW when they weren't (#945) 1.1.0RC1 [Oct 2013] * Add `make cold` target to build OPAM without a system OCaml installed (#910) * More informative error messages from `curl` (#905) * Document use of `OPAMCOLOR` for optional ANSI coloring * Add `opam-admin depexts` utility to rewrite OPAM files with external dependencies * Added `repo` files for repository meta-information * Added support for repo redirections * Added scripts for automated testing in Travis * Fixed bug in opam-admin that could keep not up-to-date archives * Added an `opam-admin depexts` script to ease handling of external dependencies * Added the `--deps-only` option to `opam install` * Fixed upgrade with corner-cases of orphan packages * Added a `note` display form * Better handling of external solver failures, and added a `--no-aspcud` option * Fixed unpinning of some installed packages * Fixed upgrade of metadata from 1.0 when there are orphan custom compilers 1.1.0-beta [Sept 2013] * Automatic backup before any operation which might alter the list of installed packages * Support for arbitrary sub-directories for metadata repositories * Lots of colors * New option `opam update -u` equivalent to `opam update && opam upgrade --yes` * New `opam-admin` tool, bundling the features of `opam-mk-repo` and `opam-repo-check` + new 'opam-admin stats' tool * New `available`: field in opam files, superseding `ocaml-version` and `os` fields * Package names specified on the command-line are now understood case-insensitively (#705) * Fixed parsing of malformed opam files (#696) * Fixed recompilation of a package when uninstalling its optional dependencies (#692) * Added conditional post-messages support, to help users when a package fails to install for a known reason (#662) * Rewrite the code which updates pin et dev packages to be quicker and more reliable * Add {opam,url,desc,files/} overlay for all packages * `opam config env` now detects the current shell and outputs a sensible default if no override is provided. * Improve `opam pin` stability and start display information about dev revisions * Add a new `man` field in `.install` files * Support hierarchical installation in `.install` files * Add a new `stublibs` field in `.install` files * OPAM works even when the current directory has been deleted * speed-up invocation of `opam config var VARIABLE` when variable is simple (eg. `prefix`, `lib`, ...) * `opam list` now display only the installed packages. Use `opam list -a` to get the previous behavior. * Inverse the depext tag selection (useful for `ocamlot`) * Add a `--sexp` option to `opam config env` to load the configuration under emacs * Purge `~/.opam/log` on each invocation of OPAM * System compiler with versions such as `version+patches` are now handled as if this was simply `version` * New `OpamVCS` functor to generate OPAM backends * More efficient `opam update` * Switch license to LGPL with linking exception * `opam search` now also searches through the tags * minor API chanages for `API.list` and `API.SWITCH.list` * Improve the syntax of filters * Add a `messages` field * Add a `--jobs` command line option and add `%{jobs}%` to be used in OPAM files * Various improvements in the solver heuristics * By default, turn-on checking of certificates for downloaded dependency archives: use `./configure --disable-certificate-check` to go back to the previous behavior * Check the md5sum of downloaded archives when compiling OPAM * Improved `opam info` command (more information, non-zero error code when no patterns match) * Display OS and OPAM version on internal errors to ease error reporting * Fix `opam reinstall` when reinstalling a package which is a dependency of installed packages (regression introduced in 0.9.5) * Export and read `OPAMSWITCH` to be able to call OPAM in different switches * `opam-client` can now be used in a toplevel * `-n` now means `--no-setup` and not `--no-checksums` anymore * Fix support for FreeBSD * Fix installation of local compilers with local paths endings with `.../ocaml/` * Fix the contents of `~/.opam/opam-init/variable.sh` after a switch 1.0.0 [Mar 2013] * Improve the lexer performance (thx to @oandrieu) * Fix various typos (thx to @chaudhuri) * Fix build issue (thx to @avsm) 0.9.6 [Mar 2013] * Fix installation of pinned packages on BSD (thx to @smondet) * Fix configuration for zsh users (thx to @AltGr) * Fix loading of `~/.profile` when using dash (eg. in Debian/Ubuntu) * Fix installation of packages with symbolic links (regression introduced in 0.9.5) 0.9.5 [Mar 2013] * If necessary, apply patches and substitute files before removing a package * Fix `opam remove <pkg> --keep-build-dir` keeps the folder if a source archive is extracted * Add build and install rules using ocamlbuild to help distro packagers * Support arbitrary level of nested subdirectories in packages repositories * Add `opam config exec "CMD ARG1 ... ARGn" --switch=SWITCH` to execute a command in a subshell * Improve the behaviour of `opam update` wrt. pinned packages * Change the default external solver criteria (only useful if you have aspcud installed on your machine) * Add support for global and user configuration for OPAM (`opam config setup`) * Stop yelling when OPAM is not up-to-date * Update or generate `~/.ocamlinit` when running `opam init` * Fix tests on *BSD (thx Arnaud Degroote) * Fix compilation for the source archive 0.9.4 [Feb 2013] * Disable auto-removal of unused dependencies. This can now be enabled on-demand using `-a` * Fix compilation and basic usage on Cygwin * Fix BSD support (use `type` instead of `which` to detect existing commands) * Add a way to tag external dependencies in OPAM files * Better error messages when trying to upgrade pinned packages * Display `depends` and `depopts` fields in `opam info` * `opam info pkg.version` shows the metadata for this given package version * Add missing `doc` fields in `.install` files * `opam list` now only shows installable packages 0.9.3 [Feb 2013] * Add system compiler constraints in OPAM files * Better error messages in case of conflicts * Cleaner API to install/uninstall packages * On upgrade, OPAM now perform all the remove action first * Use a cache for main storing OPAM metadata: this greatly speed-up OPAM invocations * after an upgrade, propose to reinstall a pinned package only if there were some changes * improvements to the solver heuristics * better error messages on cyclic dependencies 0.9.2 [Jan 2013] * Install all the API files * Fix `opam repo remove repo-name` * speed-up `opam config env` * support for `opam-foo` scripts (which can be called using `opam foo`) * 'opam update pinned-package' works * Fix 'opam-mk-repo -a' * Fix 'opam-mk-repo -i' * clean-up pinned cache dir when a pinned package fails to install 0.9.1 [Jan 2013] * Use ocaml-re 1.2.0 0.9.0 [Jan 2013] * add a new `--fake` option to simulate build and installation of packages. Use this option this care, it can easily corrupt the state of OPAM. * Better messages in case of error * OPAM proposes better solutions to the user * support for installed roots and auto-clean of unused packages * rename `--cores` to `--jobs` * better error messages for wrong argument of 'opam init' * show the root causes of actions done by OPAM * opam import and export now uses -f to specify the filename, and uses stdin and stdout if no filename is specified * Fix environment initialisation for some corner-cases * Add a way to specify how to run tests and build documentation for the packages * Display homepage, authors, doc link, license with 'opam info' * Improve `opam remove` efficiency when using `ocamlfind` command(s) only * Git pinning now works with commits/tags/branches * `opam init` works without preinstalled compiler * Support for DARCS backends * Each global command-line flag `xxx` as can be set using the `OPAMxxx` environment variable instead * Better display of compiler switch (+ read compiler descriptions) * Clearer error message when trying to pin a non-existing package * Fix issue with pinning to version number * Add a `shared` location to be used in OPAM files * Improve (but break) the command-line interface by using cmdliner 0.8.2 [Dec 2012] * Fix an issue with `opam reinstall` where packages were reinstalled in reverse order 0.8.1 [Nov 2012] * Simplify string substitution in OPAM files * Recompile the installed packages when the system compiler is upgraded * Fix various regressions in pinned and dev packages introduced in 0.8.0 0.8.0 [Nov 2012] * Improvements in the solver interface and API * The solver now use an external SAT-solver (aspcud) if found in the path * More expressive constraints in optional dependencies * Clean-up the build directory when build succeeds 0.7.7 [Oct 2012] * Add an `--alias` global command-line argument to overwrite the default alias value * Allow more concurrency between no conflicting opam commands * Upgrade to the latest version of DOSE and CUDF (solver libraries) * Add repository priorities * Create the default directories (`bin/`, `lib/` ...) when installing a new compiler 0.7.6 [Oct 2012] * major internal API refactoring * repositories are now versionned, and we try to auto-update when possible * more expressive compiler constraints in opam files 0.7.5 [Oct 2012] * dependencies can now be expressed by any formula (instead of just CNF) * It's easier to compose the value of environment variable (ie. to write `%{lwt+ssl:enable}%`) * Fix regression on init for rsync repositories 0.7.4 [Oct 2012] * improve `opam pin`: the code is more robust and it is now possible to pin a package to a git repository * add support for patches per package * add `opam switch -import file` and `opam switch -export file` 0.7.3 [Sep 2012] * Better user-message when no solution is found * Improve the minimality of installed packages 0.7.2 [Sep 2012] * Fix regression in init introcuced in 0.7.0 * Fix regression in update introduced in 0.7.0 0.7.1 [Sep 2012] * Remove forgotten debug statement 0.7.0 [Sep 2012] * report upgrade statistic on update * do no ask y/n when installing compiler's base packages * improve opam-mk-repo * fix `opam search` to be caseless * ability to filter some commands (depending on some predicates) in opam file * improvements when packages disappear upstream * check for ocaml 3.12.1 on configure * tell the user to unset some potentially dangerous variables when running opam * fix few git backend issues 0.6.0 [Sep 2012] * semantics changes in `opam switch` * solver improvements in case of install and remove * better error reporting * fix caching of package archives * fix `~/.opam/repo/index` priorities 0.5.0 [Sep 2012] * add opam search * add opam reinstall * ability to upgrade only a subset of packages * lot of bug fixes in the rsync and curl backend * better `--help` messages * better information displayed to the user 0.4.0 [Aug 2012] * better layout of repository files * (partial) possibility to specify archive checksums * if the archive is not on ocamlpro.com, download it upstream * suffix +opam to the versions of archives available on ocamlpro.com * prompt the user to evaluate `opam config -env` more often * changes in meta-data aren't picked up by the CURL backen * more modulare repository system: the 'kind' of repository is no more linked to the kind of package archives 0.3.2 [Aug 2012] * fix regression for `opam switch` introduced in 0.3 * fix deletion of optional dependencies * support for pinned packages * fix compilation for ocaml 4.00 * fix compilation for *BSD 0.3.1 [Jul 2012] * fix regression for `opam install` introduced in 0.3 0.3.0 [Jul 2012] * improve parallel compilation of packages * better recovery on compilation/installation errors * first draft of version pinnig * fix`'opam config -env` for old shells * install the latest version of packages when possible * more robust `opam update` (ie. old files are gc-ed) * add a (more or less) generic way to install and use topfind 0.2.0 [Jul 2012] * more robust switch command * more robust parallel build (not yet activated by default) * support for compiler-constraints in packages * new solver heuristics * improved performance on init with the rsync backend 0.1.0 [Jun 2012] * Initial version
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>