opam is a source-based package manager. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow.
This is the second beta release of opam 2.2.0.
This beta release contains new features, enhancements, updates & fixes compared to the previous 2.2.0~beta1 release. Please see upcoming blog post for main new features highlights and upgrade instructions.
Binaries and full archive are signed by by opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92
).
sys-ocaml-*
eval variables on Windows faster, no more depending on Cygwin [#5829 @dra27 @rjbou]sys-ocaml-*
eval variables on Unix [#5829 @dra27]sys-ocaml-system
eval variable [#5829 @dra27]gpatch
instead of patch
on NetBSD and DragonFlyBSD [#5893 @kit-ty-kate]bash
, tar
, sort
or git
[#5832 @dra27]opam source --dev
with git repositories doesn't fetch with --depth 1
[#5888 @moyodiallo - fix #5061]GNU patch
is not detected during a repository update [#5893 @kit-ty-kate]"%{var?string-if-true:string-if-false-or-undefined}%"
syntax to support extending the variables of packages with + in their name (conf-c++
and conf-g++
already exist) using "%{?pgkname:var:}%"
[#5840 @kit-ty-kate]getconf DARWIN_USER_TEMP_DIR
) as writable when TMPDIR
is not defined on macOS [#5780 @ElectreAAS]winsymlinks:native
to the CYGWIN
environment variable when installing a package on Windows [#5793 @kit-ty-kate - fix #5782]rsync
system package to internal Cygwin packages list (enables local pinning and is used by the VCS backends [#5808 @dra27]sys-pkg-manager-cmd
as an accepted field in opamrc files [#5847 @rjbou - fix #5844]git-location
handling in init config file [#5848 @rjbou - fix #5845]FOO += ""
would occlude the value of FOO
in the environment [#5837 @dra27]OpamProcess.cygwin_create_process_env
no longer adjusts PATH [#5832 @dra27]sys-ocaml-*
eval variables during format upgrade from 2.0 -> 2.1 -> 2.2 [#5829 @dra27]doas
as an alternative to sudo
[#5820 @kit-ty-kate - fix #5792]OPAMROOT
when creating the init scripts on Unix in case OPAMROOT
contains spaces, backslashes or special characters [#5841 @kit-ty-kate - fix #5804]GNU patch
is not detected when a patch is applied [#5893 @kit-ty-kate]gpatch
by default instead of patch
on NetBSD and DragonFlyBSD [#5893 @kit-ty-kate]gpatch
if it exists and is detected as GNU patch when patch
is not GNU patch
[#5893 @kit-ty-kate]SHGetFolderPath
and use SHGetKnownFolderPath
instead [#5862 @kit-ty-kate]OpamStubs.getPathToSystem
once [#5862 @dra27]OpamClient.windows_checks
: On existing Cygwin install, permit to detect msys2 and store os-distribution=msys2
in global-variables
config file field [#5843 @rjbou]OpamClient.windows_checks
: When updating config file for msys2, resolve pacman
path and store it in sys-pkg-manager-cmd
for msys2 [#5843 @rjbou]OpamArg.apply_global_options
: load MSYS2 Cygwin binary path too [#5843 @rjbou]OpamRepositoryBackend.S.pull_url
, OpamVCS.fetch
, OpamRepository.pull_tree
: add full_fetch
optional argument to pull full history if url is a VCS
[#5888 @moyodiallo - fix #5061]OpamEnv.env_expansion
: Fix detection of out-of-date environment variables, a filter predicate was inverted [#5837 @dra27]OpamSysInteract.Cygwin.check_install
: add variant
argument to permit checking that it is an Cygwin-like install if it is set to true, keep checking that it is a strictly Cygwin install if false [#5843 @rjbou]OpamSysInteract.Cygwin.check_install
: look for cygcheck.exe
in usr/bin
also as MSYS2 doesn't have "bin" [#5843 @rjbou]OpamGlobalState.load_config
: load MSYS2 Cygwin binary path too at config file loading [#5843 @rjbou]OpamEnv
: add sys_ocaml_eval_variables
value, moved OpamInitDefaults
as it is also needed in OpamFormatUpgrade
too [#5829 @rjbou @kit-ty-kate]OpamEnv
supports an internal Cygwin
environment operation which pushes the given directory as far down the list as can be done without shadowing. This mechanism replaces the opposite which was done in OpamProcess [#5832 @dra27]OpamFile.InitConfig
: add sys-pkg-manager-cmd
field [#5847 @rjbou]OpamTypesBase
: add filter_ident_of_string_interp
that is used for parsing variables in string interpolation like filter_ident_of_string
but permits the parsing of '%{?pkg+:var:}%' syntax [#5840 @rjbou]OpamTypesBase.filter_ident_of_string_interp
: add accept
optional argument to be able to raise an error when several pluses are in the package name without using the new syntax, like %{pkg+++:var}%
OpamFilter
: add extract_variables_from_string
to retrieve string of variables, and exposes it [#5840 @rjbou]OpamTypes.env_update
now has an additional type parameter indicating whether the update is internal or writeable [#5832 @dra27]OpamStd.Sys
: add is_cygwin_variant_cygcheck
that returns true if in path cygcheck
is from a Cygwin or MSYS2 installation [#5843 @rjbou]OpamStd.Env.cyg_env
: takes the environment to cygify, usually OpamStd.Env.raw_env
[#5829 @dra27]OpamSystem.patch
now displays a warning when GNU patch is not detected and looks for both patch and gpatch as a backup option depending on the OS [#5893 @kit-ty-kate]This is the first beta release of opam 2.2.0.
This beta release contains new features, enhancements, updates & fixes compared to the previous 2.2.0~alpha3 release. Please see upcoming blog post for main new features highlights and upgrade instructions.
Binaries and full archive are signed by by opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92
, PR open to upload new ones).
--git-location
and --no-git-location
cli arguments for Windows [#5718 @rjbou - fix #5617]git-location
modifiable opam option used only on Windows [#5718 @rjbou - fix #5617]libstdc++
instead of requiring the DLL to be distributed alongside it or present in the environment [#5680 @kit-ty-kate - fix #5647]./configure --enable-static
to compile the opam binary statically on Linux [#5680 @kit-ty-kate - fix #5647]opam env
containing carriage return on Cygwin [#5715 @dra27 @rjbou @kit-ty-kate - fix #5684]opam tree --dev
[#5687 @rjbou - fix #5675]opam tree --no-switch
: instead of emptying the current switch from its installed packages, it load a fresh virtual switch [#5687 @rjbou - fix #5675]OpamClient
: on init
and reinit
add git lookup in windows checks [#5718 @rjbou]OpamClient.init
: add option git-location
argument for git binary location configuration [#5718 @rjbou]OpamTreeCommand.run
: remove optional argument no_switch
[@rjbou #5687]OpamFile.Config
: add git-location
field and its functions [#5718 @rjbou]OpamCoreConfig
: add git_location
field [#5718 @rjbou]OpamStd.Env.cyg_env
: add git location argument and labels cygbin
and git_location
[#5718 @rjbou]OpamSystem.apply_cygpath
: runs cygpath
over the argument [#5723 @dra27 - function itself added in #3348]This is the third alpha release of opam 2.2.0.
This alpha release contains new features, enhancements, updates & fixes. Please see upcoming blog post for main new features highlights and upgrade instructions.
Binaries and full archive are signed by by opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92
).
x-env-path-rewrite
extensions field to permit specification of rewriting rules for variables defined in setenv
and build-env
: no rewrite; separator and path format formulae [#5636 @rjbou - fix #5602 #4690 #2927]x-env-path-rewrite
is updated [#5636 @rjbou]environment
file now stores environment variable rewriting rules [#5636 @rjbou]--recurse
and --subpath
for directory arguments [#5613 @kit-ty-kate]add-extrafiles
command to add, check, and update extra-files:
field according files present in files/
directory [#5647 @rjbou]-W @1..9
[#5652 @kit-ty-kate @rjbou - fixes #5651]OPAMVERBOSE
setting, levels 0 and 1 were inverted: "no" gave level 1, and "yes" gave level 0 [#5686 @smorimoto].install
file, track intermediate directories too, in order to have them suppressed at package removal [#5691 @rjbou - fix #5688]--assume-built
, resolve variables in depends filter according switch & global environment, not only depends predefined variables [#570 @rjbou - fix #5698]OPAMCURL
and OPAMFETCH
handling [#5607 @rjbou - fix #5597]x-locked
type error message [#5636 @rjbou]<limits.h>
in musl [#5383 @dra27]-lsha_stubs
only on master
on OpenBSD [#5733 @punchagan]OpamTreeCommand.run
: now takes an atom
instead of name
[#5613 @kit-ty-kate]OpamFile.Environment
: add parsing-printing of rewriting rules, keeping backward compatibility [#5636 @rjbou]OpamFile.OPAM
: effective_part
keeps x-env-path-rewrite
, affects also effectively_equal
[#5636 @rjbou]OpamFile.OPAM
: add handling of x-env-path-rewrite
extensions field, that specifies rewrite rules [#5636 @rjbou]OpamFilter
: add expand_interpolations_in_file_full
which allows setting the output file along with the input file [#5629 @rgrinberg]OpamFilter
: expose string_interp_regex
which allows clients to identify variable interpolations in strings [#5633 @gridbugs]OpamFormat.V
: add path_format
& separator
value parser printer [#5636 @rjbou]OpamFormat
: add formula_items
to permit definition of formulae pp not only of the type package-formula
[#5636 @rjbou]OpamPp.fallback
: add name concatenation and printing fallback too [#5636 @rjbou]OpamTypes.env_update
: add a rewrite
field, that contains environment variable rewriting rules (formula to resolved, or already resolved, or no rewriting) [#5636 @rjbou]OpamTypes.env_update
: change from tuple to a record [#5636 @rjbou]OpamTypesBase
: add env_update_resolved
and env_update_unresolved
builders [#5636 @rjbou]OpamTypesBase
: add env_update
, env_update_resolved
, and env_update_unresolved
builders [#5636 @rjbou]OpamTypesBase
: add to_string function for path_format
& separator
[#5636 @rjbou]OpamStd.Config.env_level
: fix level parsing, it was inverted (eg, "no" gives level 1, and "yes" level 0) [#5686 @smorimoto]OpamStd.Sys.chop_exe_suffix
: removes .exe
from the end of a path, if present [#5714 @dra27]OpamSystem.apply_cygpath_path_transform
: fix cygpath call, use resolved name [#5716 @rjbou]OpamSystem.get_cygpath_path_transform
: add labeled argument to specify if path is a pathlist [#5636 @rjbou]OpamSystem.mk_temp_dir
: resolve real path with OpamSystem.real_path
before returning it [#5654 @rjbou]OpamSystem.resolve_command
: in command resolution path, check that the file is not a directory and that it is a regular file [#5606 @rjbou - fix #5585 #5597 #5650 #5626]This is the second alpha release of opam 2.2.0.
This alpha release contains new features, enhancements, updates & fixes. Please see upcoming blog post for main new features highlights and upgrade instructions.
Binaries and full archive are signed by by opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92
).
opam init
install Cygwin internally automatically by default instead of asking the user to install it manually [#5545 @rjbou @dra27]--no-cygwin-setup
, --cygwin-internal-install
, --cygwin-local-install
and --cygwin-location <path>
experimental flags available only on Windows to permit non-interactive Cygwin configuration [#5545 @rjbou]OpamInitDefault
: add required_packages_for_cygwin
packages tool list [#5545 @rjbou]OpamClient.init
: now propose to install internal Cygwin install [#5545 @rjbou]OpamSolution.get_depext
: do not confirm in case of internal Cygwin install [#5545 @rjbou]OpamClient.init
: add optional cygwin_setup
argument to permit non interactive setup [#5545 @rjbou]OpamCommands.init
: add cygwin setup flags [#5545 @rjbou]OpamSysinteract.Cygwin
: add install
that performs a Cygwin install in opam internals [#5545 @rjbou @dra27]OpamSysInteract.Cygwin
: add is_internal
[#5545 @rjbou]OpamSysInteract.install
: on Cygwin, upgrade automatically packages, and select local cache [#5545 @rjbou]OpamConsole.carriage_delete
: no-op when not tty out [#5595 @rjbou]OpamSystem.make_command
: Remove the warning triggered when the command contained spaces [#5596 @rjbou - fix #5163]This is the release of opam 2.1.5.
Binaries and full archive are signed by by opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92
).
archive-mirrors
field from init config file to config [#5315 @hannesm]EDIT 31/05/2023: opam-full-2.1.5.tar.gz
was rebuilt, removing the mistakenly included .gît
directory, reducing archive size.
This is the release of opam 2.1.4.
Binaries and full archive are signed by by opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92
).
dose3 >= 6.1
and base64 >= 3.1.0
are now required [#5357 @kit-ty-kate @dra27 - fix #5354]This is the release of opam 2.1.3.
Binaries and full archive are signed by by opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92
).
opam init
and opam init --reinit
when the jobs
variable has been set in the opamrc or the current config. [#5056 @rjbou]opam list --installable
queries combined with other filters [#4882 @AltGr - fix #4311]--available
, --installable
) [#4999 @kit-ty-kate]opam list --conflicts-with
when combined with other filters [#4999 @kit-ty-kate]opam show
by as much as 300% when the package to show is given explicitly or is unique [#4998 @kit-ty-kate - fix #4997 and partially #4172]opam pin
[#5047 @rjbou - fix #5046]opam var
no longer fails if no switch is set [#5027 @rjbou - fix #5025]--switch <sw>
fails instead of writing an invalid switch-config
file [#5027 @rjbou]make doc
with Dune 2.7 (unblocks opam2web
build) [#5030 @kit-ty-kate]OpamClient
: fix update_with_init_config
, when jobs
was set in init_config
, it dropped rest of config
update [#5056 @rjbou]OpamConfigCommand
: set_opt_switch
, set_var_switch
, options_list_switch
, and var_list_switch
now raise configuration error exception (50) if no switch is found [#5027 @rjbou]OpamClient.Pin.post_pin_action
: no more updates depexts information, moved to OpamSwitchState.update_pin
[#5047 @rjbou]OpamVCS.VCS
: add a clean
function to the interface clearing all the uncommited files [#4879 @rjbou]OpamVCS.pull_url
: clean repository before fetching [#4879 @rjbou]OpamSwitchState.update_pin
: updates depexts state informations (sys_packages
, avalaible_packages
) [#5047 @rjbou]OpamCompat
: add Lazy
module and Lazy.map
function [#5176 @dra27]This is the release of opam 2.1.2.
Binaries and full archive are signed by the opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92
).
Changelog:
This is the release of opam 2.1.1.
Binaries and full archive are signed by by opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92
).
--packages
option with cli 2.0, and a specific error message for cli 2.1 [#4853 @rjbou - fix #4843]set-invariant
: default repos were loaded instead of switch repos [#4866 @rjbou]Many thanks to @AltGr and @rjbou (OCamlPro), @dra27 and @kit-ty-kate (OCaml Labs), @hannesm, @avsm and everyone who's helped with issue reports, comments and feedback.