Skip to content

Releases: ocaml/opam

2.1.0~alpha2

28 Jul 15:40
c0ce51e
Compare
Choose a tag to compare
2.1.0~alpha2 Pre-release
Pre-release

This is the second alpha release of opam 2.1.0.

This alpha release contains many fixes and a few polished or new features upon alpha1.

Binaries and full archive are signed by AltGr.

Changelog

Possibly script-breaking changes are prefixed with ✘
New options are prefixed with ◈

Init

Upgrade

Archives fetch

  • Copy instead of calling rsync when archives are in a local cache [#4270 @kit-ty-kate]

Install

Remove

Switch

Pin

  • 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]

List

  • 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]

Show

  • ✘ 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]

Var

Option

  • Fix messages advertising a command in an obsolete format [#4194 @rjbou]
  • Add switch depext-bypass as modifiable field [#4194 @rjbou - fix #4177]

Lint

  • E65: check that url local paths are absolute [#4209 @rjbou]

External dependencies handling, aka depext

  • Fix arch query [#4200 @rjbou]
  • Add message when adding a package to depext-bypass [#4194 @rjbou]
  • Fix performance issue of depext under Docker/debian [#4165 @AltGr]
  • Refactor package status [#4152 #4200 @rjbou]
  • Add environment variables handling [#4200 @rjbou]
  • Add Macport support [#4152 @rjbou]
  • Homebrew: 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 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 install command dryrun [#4200 @rjbou]
  • ◈ Add --depext-only to install only external dependencies, regardless of config depext status [#4238 @rjbou]
  • Move confirmation message after opam packages install [#4238 @rjbou]
  • Error if --depext-only is given with --assume-depexts or --no-depexts [#4238 @rjbou]
  • Handle debian virtual packages [#4269 @AltGr @rjbou - fix #4251]

Sandbox

Repository management

Build

Infrastructure

  • Use OCaml 4.09.1 for the make cold target [#4257 @dra27]

Admin

Opam installer

  • For paths, remove use of empty switch in favor of a context-less module [#4237 @rjbou]

Opam file

Solver

  • 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]

Internal

  • Disable chrono when timestamps are disables [#4206 @rjbou]
  • Expose some functionality in the OpamAction, OpamPath and OpamSwitchState modules for use without a switch value [#4147 @timberston]
    • Path: introduce a functor to permit replicating switch layout in different contexts
  • Std: Add map_reduce to Set and Map [#4263 @AltGr]
  • Fix regression in command resolution from #4072 [#4265 @dra27]

Test

Documentation

Various contributors helped us to update and add code documentation:

2.1.0~alpha

21 Apr 12:26
a74d4c8
Compare
Choose a tag to compare
2.1.0~alpha Pre-release
Pre-release

This is the alpha release of opam 2.1.0.

This alpha release contains many new features, please see blog post for some highlights and upgrade instructions.

Binaries and full archive are signed by @AltGr.

Changelog (possibly scripts breaking changes are prefixed with ✘):

New features

Recursive pin

Opam now handles lookup for opam files on subdirectories with recursive, subpath based, and subpath recursive pin: --recursive and --subpath PATH options. On recursive mode, opam goes through subdirectories to find opam files & pin them to their subdirectories. On subpath based mode, opam goes to the given subdirectory to find opam file & pin it to this subdirectory.

Switch Invariant

Define switch base packages as a switch invariant, a generic dependency formula instead of an immutable specific package/version.

  • Define switch invariants rather than "base packages" [#3894 @AltGr] {2.1.0-alpha}

  • Don't warn on switch creation with 'ocaml' as invariant [#4108 @AltGr] {2.1.0-alpha}

  • Better error handling on switch creation [#4121 @AltGr] {2.1.0-alpha}

Lock

opam-lock was during a long time an opam plugin, and it is now integrated into opam. Option --locked permits to lock an opam package, according the current switch. It produces a locked file (by default <pkgname>.opam.locked, can be specified with --lock-suffix) that contains the original opam file with its depends: field all package are set to their exact version available in the current switch.

Options configuration

Replace switch and global variables settings opam config set options, by opam var and opam option to generalize them to all modifiable options and variables:

  • opam var|option: list modifiable options and their values

  • opam var|option foo: display foo value, available for all

  • opam var|option foo(=|-=|+=)bar: update foo value

  • opam var|option foo=: remove/revert foo value

By default, acts on switch scope. It can be specified with --global or --switch sw.

It deprecates opam config (set|unset|set-global-unset-global) commands.

  • Add configuration modifications as opam config subcommands [#3992 @rjbou] {2.1.0-alpha}

  • opam var and opam option outside of opam config [#4116 @rjbou - fix #4119] {2.1.0-alpha}

  • Enable option var optim switch load [#4138 @rjbou] {2.1.0-alpha}

Depext

opam-depext is also a long time opam plugin, used to show / install external dependencies of opam packages. It is now fully integrated in the opam workflow:

  • check of installed package dependencies

  • on install, check that required dependencies are present, show / propose to install if not

Global configuration option depext, depext-verify, depext-cannot-install, depext-run-installs, and depext-bypasspermit to configure depext use and interactions. CLI options--assume-depextsand--no-depexts` can also be used for a single command.

New options

Install

  • 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] {2.1.0-alpha}

  • --ignore-conflicts to use with --deps-only in case it is needed to install dependencies without taking conflicts into account. [#3853 @rjbou - fix #3846] {2.1.0-alpha}

Show

  • 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] {2.1.0-alpha}

  • 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] {2.1.0-alpha}

  • opam show --sort <pkg> display on stdout a sorted opam file: all fields are alphabetically sorted. [#3866 @rjbou - fix ocaml-opam/opam2web#173] {2.1.0-alpha}

  • Better error handling. [#4118 @rjbou - fix #3875] {2.1.0-alpha}

Lint

  • opam lint --check-upstream enables lint checks on archive urls. This option lead to download archives to check their checksum. [#3758 @rjbou] {2.0.5}

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] {2.0.1}

Env

  • opam env --check permit to indicates if an opam environment is synchronized: returns 0 if up-to-date, 1 otherwise. [#4074 @rjbou - fix #3725] {2.1.0-alpha}

Switch export

  • --freeze option record VCS commit hash when a VCS url is specified. [#4055 @hannesm] {2.1.0-alpha}

  • With --full option, include extra-files in switch export, on import create an overlay directory with the file contents. [#4040 @hannesm] {2.1.0-alpha}

Enhancements, updates, and fixes

Repository Management

  • Optimize repository loading: we store the repository contents as .tar.gz files in ~/.opam/repo instead. Rather than resorting to a complex in-memory structure, we just untar them to /tmp when they need to be read, and re-tar them after modification (opam update, or format upgrade only). Then we let the OS disk cache do the job: in normal operation, the tree never needs to be flushed to disk, and loading the .tar.gz is orders of magnitude faster than loading the individual files. [#3752 @AltGr - fix l#3721] {2.1.0-alpha}

Fixes

  • Remove mismatching extra-files: sort list before comparing them. [#3744 @rjbou] {2.0.4}

  • Handle failure or interruption of tar during opam update. [#3861 @AltGr] {2.1.0-alpha}

  • Fallback in case repository archive doesn't exist. [#4008 @rjbou] {2.1.0-alpha}

  • In case repository archive is corrupted, delete it and ask to launch an update. [#4075 @rjbou - fix #4053] {2.1.0-alpha}

  • When adding a repository, an error is displayed in case of mismatching urls, now both urls are displayed. [#4086 @rjbou - fix #4085] {2.1.0-alpha}

Update

  • Handle url backend change to VCS of a package from repository. [#4007 @rjbou - fix #3991] {2.1.0-alpha}

Switch & install

  • Allow local compiler switch creation. [#3720 @rjbou - fix #3713] {2.1.0-alpha}

  • Fix multiple compiler candidate. [#3884 @rjbou - fix #3874] {2.1.0-alpha}

  • Make reinstall handling stricter. [#3907 @AltGr] {2.1.0-alpha}

List

Show

  • opam show 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] {2.0.1}

  • Fields are no longer required to end with a colon. [#3931 @rjbou] {2.1.0-alpha}

  • ✘ With --normalise disable terminal width wrapping. [#3868 @rjbou - fix #3751] {2.1.0-alpha}

  • String fields printed with quotes, as lists. [#3368 @rjbou - fix #3365] {2.0.1}

  • Remove pin depends messages. [#3679 @rjbou] {2.0.2}

Pinning

  • Update source of (version) pinned directory [#3726 @rjbou - fix #3651] {2.0.4}

  • Pin edit: fix editing an opam file without a name field. [#3535 @rjbou] {2.0.1}

  • Upgrade pin depends on pinning. [#3684 @rjbou - fix #3508] {2.0.2}

  • Update pin-depends confirmation message to add a skip option. [#3852 @rjbou - fix #3840] {2.1.0-alpha}

  • To avoid lint warning 57 (description error) on 1.2 opam file pinning, add auxiliary files (descr, url) before linting. [#3687 @rjbou] {2.0.2}

  • Fix --ignore-pin-depends with autopin. [#3736 @AltGr] {2.0.4}

  • Fix pin not installing/upgrading already pinned package. [#3800 @AltGr] {2.0.4}

Working directory

  • Add OPAMDROPWORKINGDIR environment variable for C. [#3792 @rjbou - fix #3727] {2.1.0-alpha}

  • Don't restrain copy to versioned file. [#3759 @rjbou] {2.1.0-alpha}

  • Don't fetch sources when working-dir is set. [#4046 @rjbou] {2.1.0-alpha}

  • Update in place source copy:

    • 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). [#3948 @rjbou] {2.1.0-alpha}
  • Fix working-dir messages on update command. [#3824 @rjbou] {2.1.0-alpha}

  • Working-dir fixes. [#3982 @rjbou] {2.1.0-alpha}

Download & url management

Download

  • Don't execute validation hook if update is empty. [#3490 @hannesm] {2.0.1}

  • Don't check hash with --no-checksum on pull_upstream. [#3658 @rjbou - fix #3652] {2.0.2}

  • Update download errors handling during actions processing. [#3811 @AltGr] {2.1.0-alpha}

  • Update ftp command, to pass url last. [#3910 @hannesm] {2.1.0-alpha}

  • Terminate (with double dashes) list of command-line download optio...

Read more

2.0.7

21 Apr 12:26
4c1704d
Compare
Choose a tag to compare

This is the release of opam 2.0.7.

This minor release contains small fixes, please see blog post for upgrade instructions.

Binaries and full archive are signed by @AltGr.
As an addendum to this release, the macOS/arm64 binary was built by @avsm (but not yet signed).

Changelog:

2.0.6

16 Jan 10:23
4ec3c60
Compare
Choose a tag to compare

This is the release of opam 2.0.6.

This minor release contains mainly fixes, please see the changelog for details, and blog post for upgrade instructions.

Binaries and full archive are signed by @AltGr.

2.0.5

11 Jul 08:24
2b2e2c6
Compare
Choose a tag to compare

This is the release of opam 2.0.5.

This minor release contains mainly fixes, please see the changelog for details, and blog post for upgrade instructions.

Binaries and full archive are signed by @AltGr.

2.0.4

10 Apr 15:03
d687193
Compare
Choose a tag to compare

This is the release of opam 2.0.4.

This minor release contains mainly fixes, please see the changelog for details, and blog post for upgrade instructions.

Binaries and full archive are signed by @AltGr.

2.0.3

31 Jan 14:12
5f5e8bd
Compare
Choose a tag to compare

This is the release of opam 2.0.3.

This minor release contains mainly fixes, please see the changelog for details, and blog post for upgrade instructions.

2.0.2

13 Dec 00:11
1109a14
Compare
Choose a tag to compare

This is the release of opam 2.0.2.

This minor release contains mainly fixes, plese see the changelog for details, and blog post for upgrade instructions.

Binaries and full archive are signed by @AltGr.

2.0.1

19 Oct 07:39
Compare
Choose a tag to compare

This is the release of opam 2.0.1.

This minor release contains mainly fixes.

Binaries and full archive are signed by @AltGr.

2.0.0

18 Sep 09:50
b2b8f1e
Compare
Choose a tag to compare

This is the release of opam 2.0.0.

See the Upgrade Guide for an overview of changes.