forked from ocaml/opam
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
2851 lines (2762 loc) · 154 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
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.3.0:
* (no difference compared to 2.3.0~rc1)
2.3.0~rc1:
* Improve the release script by adding a NetBSD/x86_64 binary
[#6258 @kit-ty-kate]
2.3.0~beta2:
* Fix the detection of the current terminal size
[#6244 @kit-ty-kate - fix #6243]
* Improve the release script by upgrading the platform building the Linux
binaries to Alpine 3.20, the FreeBSD binary to FreeBSD 14.1 and the
OpenBSD binary to OpenBSD 7.6 [#6237 @kit-ty-kate]
* Make the release script produce a Linux/riscv64 binary [#6237 @kit-ty-kate]
* API changes
* `OpamStubs.get_stdout_ws_col`: new Unix-only function returning the
number of columns of the current terminal window [#6244 @kit-ty-kate]
2.3.0~beta1:
* Fix an opam 2.1 regression where the initial pin of a local VCS directory
would store untracked and ignored files. Those files would usually be
cleaned before building the package, however git submodules would not be
cleaned and would cause issues when paired with the new behaviour added in
2.3.0~alpha1 which makes opam error when git submodules fail to update
(was previously a warning) [#6221 @rjbou - fix #5809]
* Fix a regression which would make opam crash on platforms where
`getconf LONG_BIT` is not available (e.g. OpenBSD)
[#6230 @kit-ty-kate - fix #6215]
* Fix the installed packages internal cache, which was storing the wrong
version of the opam file after a build failure. This could be triggered
easily for users with custom repositories with non-populated extra-files
[#6213 @kit-ty-kate]
* Fix a regression in lint W59 with local urls that are not archives
[#6219 @rjbou - fix #6218]
* Bump to lang dune to 2.8 and bump the requirement to dune >= 2.8, which was
actually required in the previous alpha release [#6204 @kit-ty-kate]
* Bump the vendored version of dune to 3.16.0, cppo to 1.7.0 and extlib to 1.8.0
[#6223 @kit-ty-kate]
* Fix compilation with OCaml 5.3 when using the vendored extlib by updating to
the 5.3 compatible version [#6223 @kit-ty-kate]
* Fix the compilation of opam on Windows with OCaml >= 5.0 (again)
[#6216 @kit-ty-kate]
* Fix the release script after the bump to dune lang 2.6 and the introduction of
`opam_core_stubs` [#6204 @kit-ty-kate]
* Improve the release script by ignoring interactive questions asked by the
FreeBSD package manager [#6204 @kit-ty-kate]
* Improve and extend the tests [#6135 #6221 #6213 #6219 @rjbou]
* Improve the test infrastructure [#6233 #6233 #6216 @rjbou @kit-ty-kate]
* API changes
* `OpamStd.Sys.{get_terminal_columns,uname,getconf,guess_shell_compat}`:
Harden the process calls to account for failures
[#6230 @kit-ty-kate - fix #6215]
* `OpamStd.Sys.{uname,getconf}`: now accepts only one argument as parameter,
as per their documentation [#6230 @kit-ty-kate]
* `OpamSwitchState.Installed_cache`: export `load` function [#6233 @rjbou]
* `OpamSystem`: add `is_archive_from_string` that does the same than
`is_archive` but without looking at the file, only analysing the string
(extension) [#6219 @rjbou]
2.3.0~alpha1:
* (*) When loading a repository, don't automatically populate `extra-files:`
field with found files in `files/` [#5564 @rjbou]
* Fix most unhelpful conflict explanation message by merging all formulas
together [#6106 @kit-ty-kate]
* Silently mark packages requiring an unsupported version of opam as unavailable
[#5665 @kit-ty-kate - fix #5631]
* Fix Windows builds with OCaml >= 5.0 [#6189 @kit-ty-kate - fix #6148]
* (+) Add a new `opam list --latests-only` option to only list the latest
packages [#5375 @kit-ty-kate]
* (*) opam switch list-available will not display compilers flagged with
avoid-version/deprecated unless --all is given
[#6098 @kit-ty-kate - fix #6089]
* (*) Fix `opam install --check pkg` when pkg depends on a non-existing package
[#6121 @kit-ty-kate]
* (*) Make `opam install --check` check if all dependencies are installed
recursively [#6122 @kit-ty-kate - fix #6097]
* (+) Add the `--verbose-on` option to enable verbose mode on specified package
names [#5682 @desumn @rjbou]
* (+) Add `opam switch import --deps-only` option to install only dependencies
of root package at import [#5388 @rjbou - fix #5200]
* Always list all the repositories with `opam config report` regardless of
whether or not a switch is currently set [#6116 @kit-ty-kate]
* Add support for wget2 [#6104 @kit-ty-kate]
* (*) Make accepted `--repos` URLs on creation consistent with `opam repository`
[#6091 @Keryan-dev - fix #4673]
* (*) Fix the value of the 'arch' variable when the current OS is 32bit on a
64bit machine [#5950 @kit-ty-kate - fix #5949]
* Fix package names displayed on conflicts [#6055 @rjbou - fix #6030]
* Improve the error message when a directory is not available while fetching
using rsync [#6027 @kit-ty-kate]
* (*) Fail when git submodule fails to update instead of showing a warning and
ignoring the error [#6132 @kit-ty-kate - fix #6131]
* Suppress all the Windows menus when running with `opam init -ya`
[#6034 @dra27]
* Improvements to the `builtin-0install` solver:
* Add support for unordered criteria [#6130 @kit-ty-kate]
* Add support for the `-changed` criteria to make the solver prefer to keep
packages installed at their current version [#6130 @kit-ty-kate]
* Add support for the `-count[avoid-version,solution]` criteria to avoid
packages marked with `avoid-version` flag [#6130 @kit-ty-kate]
* The default criteria changed from empty to
`-changed,-count[avoid-version,solution]` [#6130 @kit-ty-kate]
* The upgrade and fixup criteria changed from empty to
`-count[avoid-version,solution]` [#6130 @kit-ty-kate]
* Fix apt/debian lookup for installed packages [#6054 @rjbou]
* Make `opam config report` return the actual invariant syntax expected by
`--invariant` [#5619 @kit-ty-kate - fixes #5491]
* (*) Make `opam switch set-invariant` return the actual invariant syntax
expected by `--invariant` [#5619 @kit-ty-kate - fixes #5491]
* Make fetching an archive from cache add missing symlinks
[#6068 @kit-ty-kate - fix #6064]
* Performance improvements:
* Stop using polymorphic comparison when comparing
`OpamTypes.switch_selections` [#6102 @kit-ty-kate]
* Improve performance of `opam install --check` [#6122 @kit-ty-kate]
* Reduce allocations in `OpamVersionCompare` [#6144 @talex5]
* Speedup `OpamVersionCompare` by 25% by removing the unused handling of epoch
[#5518 @kit-ty-kate]
* Speedup `opam list` on options that do not use availibility information
[#5317 @kit-ty-kate - fix #5314]
* Make all writes atomic [#5489 @kit-ty-kate]
* Warn when setting a variable if an option is shadowed
[#4904 @rjbou - fix #4730]
* Changes and improvements to `opam lint`:
* Add E70 to check `extra-files:` duplicated fields [#5561 @rjbou]
* Add E71 to check if the same checksum algorithm is used several times for a
given url in `url` section [#5561 @rjbou]
* Add E72 to check if the same checksum algorithm is used several times for a
given url in `extra-sources` section [#5561 @rjbou]
* Add E73 to check that paths in `extra-files:` are not escapable
[#5561 @rjbou]
* Update W59 (no checksum in `url`) to always display a warning, untying it
from `--check-upstream` [#5561 @rjbou]
* Changes and improvements to the compilation of opam itself:
* Unset `OPAM_SWITCH_PREFIX` when using `make cold` [#5534 @kit-ty-kate]
* Bump the vendored opam-0install-cudf to 0.5.0 [#6130 @kit-ty-kate]
* Require opam-0install-cudf >= 0.5.0 [#6130 @kit-ty-kate]
* Bump the vendored mccs to 1.1+18 [#6170 @kit-ty-kate]
* Upgrade the minimum required version for dune from 2.0.0 to 2.6.0
[#5381 @dra27]
* Remove `--with-acl` option from the configure script and its related C stubs
(reverts a Cygwin fix in #4265) [#5381 @kit-ty-kate - fix #5373]
* Make the shell environment update hint easier to copy/paste
[#6159 @kit-ty-kate - fix #6158]
* Remove unnecessary copies/move when fetching archives
[#5018 @kit-ty-kate @rjbou]
* (*) Change the default cache location of `opam admin add-hashes` from
`~/.cache` to `<opamroot>/download-cache/hash-cache` [#6103 @rjbou]
* Make `opam admin cache` add missing symlinks [#6068 @kit-ty-kate - fix #6064]
* Add install.exe to the list of non-shadowed programs when adding Cygwin's bin
directory to PATH (ocamlfind et al can be affected by Vim for Windows)
[#6190 @dra27]
* Propagate future opamfile parse errors correctly [#6199 @dra27]
* Ensure future syntax errors are only reported when the syntax version is
greater than the client, not the format library [#6199 @dra27 - fix #6188]
* Always pass `--no-version-check` and `--no-write-registry` to Cygwin setup
[#6046 @dra27]
* Use `--quiet-mode noinput` for the internal Cygwin installation (which is
definitely a fully-specified command line) and `--quiet-mode unattended` for
external Cygwin installations (in case the user does need to select something,
e.g. a mirror) [#6046 @dra27]
* Add cli version 2.3 [#6045 #6151 @rjbou]
* Provide a shell/install.ps1 PowerShell script to install opam on Windows
[#5906 @kit-ty-kate @dra27]
* Fix opam unable to find executables on systems where users belong to more than
32 groups when opam is built using musl libc
[#5381 #6200 @kit-ty-kate @dra27 - fix #5373]
* Allow patches to be applied regardless of CRLF or LF line ending
[#6182 @dra27]
* Internal changes:
* Move Windows stubs to opam-core [#5381 @dra27]
* Remove the meta opam packages opam and opam-admin [#6115 @kit-ty-kate]
* Improve and extend the tests
[#6045 #6045 #5989 #6055 #5642 #5327 #6103 #6068 #5377 #5474 #5682 #6125 #6121
#6139 #5375 #6105 #6146 #6098 #6132 #6122 #5561 #6106 #6199
@rjbou @kit-ty-kate @dra27 @Keryan-dev @madroach]
* Improve the benchmarks [#6094 #6078 #6123 #6149 @kit-ty-kate]
* Improve the test infrastructure
[#6105 #6155 #6184 #5564 #6079 #6081 #6132 #6074
@rjbou @kit-ty-kate @Keryan-dev @RyanGibb]
* Improve the documentation
[#5988 #5946 #6119 #6138 #6141 #5363
@kit-ty-kate @rjbou @mbarbin @shonfeder]
* API changes
* `OpamACL`: remove module [#5381 @kit-ty-kate]
* `OpamArg.build_options`: add `--verbose-on` flag [#5682 @desumn @rjbou]
* `OpamClientConfig.build_options`: add `verbose_on` field [#5682 @desumn]
* `OpamClientConfig.E`, `OpamArg.environment_variables`: and `OPAMVERBOSEON`
support [#5682 @desumn @rjbou]
* `OpamCudfCriteria`, `OpamBuiltinZ3.Syntax`: Move `OpamBuiltinZ3.Syntax`
into a dedicated module `OpamCudfCriteria` [#6130 @kit-ty-kate]
* `OpamFilename`: add `might_escape` to check if a path is escapable, ie
contains `<sep>..<sep>` [#5561 @rjbou]
* `OpamFileTools`: `read_opam` & `read_repo_opam` stop adding non registered
extra-files [#5564 @rjbou]
* `OpamFileTools.add_aux_files`: ignore non registered extra-files and make
the `files_subdir_hashes` argument optional (defaults to `false`)
[#5564 @rjbou]
* `OpamFormula`: add some missing comparison functions for `relop`,
`version_constraint` and `atom` (`compare_relop`,
`compare_version_constraint` and `compare_atom` respectively)
[#6122 @kit-ty-kate]
* `OpamFormula`: add `exists` [#5317 @kit-ty-kate]
* `OpamGit.fetch ?full_fetch` is now `true` by default instead of `false`
[#6146 @kit-ty-kate - fix #6145]
* `OpamHash`: export `compare_kind` [#5561 @rjbou]
* `OpamListCommand.selector`: Add `NotFlag` selector [#6098 @kit-ty-kate]
* `OpamRepository.fetch_from_cache`: when an archive is found, add a symlink
(or copy) for the ones found in opam file but not in cache
[#6068 @kit-ty-kate]
* `OpamStateConfig.opamroot_with_provenance`: restore previous behaviour to
`OpamStateConfig.opamroot` for compatibility with third party code
[#6047 @dra27]
* `OpamSolver.dependency_graph`: make `unavailable` a non-optional argument to
enforce speedups when availability information is not needed
[#5317 @kit-ty-kate]
* `OpamTypes.universe`: make `u_available` and `u_attrs` lazy to speedup
actions that do not require availiblity information
[#5317 @kit-ty-kate - fix #5314]
* `OpamTypesBase.switch_selections_{compare,equal}`: Add proper comparison
functions for `OpamTypes.switch_selections` [#6102 @kit-ty-kate]
* `OpamStd.Env`: add `env_string_list` for parsing string list environment
variables (comma separated) [#5682 @desumn]
* `OpamStd.Sys.getconf`: add a function to call the `getconf` command
[#5950 @kit-ty-kate]
* `OpamStd.Sys.resolve_command`: Fix opam unable to find executables on
systems where users belong to more than 32 groups when opam is built using
musl libc [#5381 @kit-ty-kate - fix #5373]
* `OpamSwitchCommand.import`: add optional `?deps_only` argument to install
only dependencies of root packages [#5388 @rjbou]
* `OpamSwitchState.{,reverse_}dependencies`: make `unavailable` a non-optional
argument to enforce speedups when availability information is not needed
[#5317 @kit-ty-kate]
2.2.1:
* (*) Fix a regression in `opam install --deps-only` where the direct
dependencies were not set as root packages [#6125 @rjbou]
* (*) Fix a regression when fetching git packages where the resulting git
repository could lead to unexpected outputs of git commands, by disabling
shallow clone by default except when fetching an opam repositories
[#6146 @kit-ty-kate - fix #6145]
* Mitigate curl/curl#13845 by falling back from `--write-out` to `--fail`
if exit code 43 is returned by curl [#6168 @dra27 - fix #6120]
* Synchronise opam-core.opam with opam-repository changes [#6043 @dra27]
* Fix and improve the release script and the creation of the
`opam-full-<version>.tar.gz` archive [#6067 @kit-ty-kate]
* Improve and extend the tests [#6125 #6146 @rjbou]
* Improve the test infrastructure [#6079 #6081 @rjbou]
* API changes
* `?full_fetch` is now `true` by default instead of `false`
[#6146 @kit-ty-kate - fix #6145]
2.2.0:
* Bump `opam-root-version` to 2.2 [#5980 @kit-ty-kate]
* Cygwin initialisation enhancement
* Always pass `--no-version-check` and `--no-write-registry` to Cygwin setup
[#6046 @dra27]
* Use `--quiet-mode noinput` for the internal Cygwin installation (which is
definitely a fully-specified command line) and `--quiet-mode` unattended
for external Cygwin installations (in case the user does need to select
something, e.g. a mirror) [#6046 @dra27]
* API changes
* `OpamStateConfig.opamroot_with_provenance`: restore previous behaviour to
`OpamStateConfig.opamroot` for compatibility with third party code
[#6047 @dra27]
2.2.0~rc1:
* Fix `opam upgrade` wanting to recompile opam files containing the
`x-env-path-rewrite` field [#6029 @kit-ty-kate - fix #6028]
* Provide defaults so `opam init -y` no longer asks questions
[#6033 @dra27 - fix #6013]
* Fix OpamConsole.menu > 9 options [#6026 @kit-ty-kate]
* Fix the lower-bound constraint on ocaml-re
(bump from >= 1.9.0 to >= 1.10.0) [#6016 @kit-ty-kate]
* Update source file location as caml.inria.fr is unavailable
[#6032 #5789 @mtelvers @kit-ty-kate]
* Fix a wrong use of `OpamFilename.of_string` [#6024 @kit-ty-kate]
* Add Windows to opam's release script [#5789 @kit-ty-kate]
* Improve and extend the tests [#6029 @kit-ty-kate]
* API changes:
* `OpamTypesBase`: Add `nullify_pos_map` and `nullify_pos_value`
[#6029 @kit-ty-kate]
2.2.0~beta3:
* (+) New option `opam init --cygwin-extra-packages=CYGWIN_PKGS
--cygwin-internal-install`, to specify additional packages for internal Cygwin
[#5930, #5964 @moyodiallo - fix #5834]
* Overhaul Windows `opam init` to determine Unix and Git configuration
simultaneously, and to detect from Cygwin, Git and MSYS2 from all the known
package managers and shells [#6000 @dra27]
* Redirect the opam root to `C:\opamroot\opam-xxx` when the opam root contains
spaces on Windows [#5457 @rjbou @dra27]
* Out-of-the-box UTF-8 paged `--help` on Windows [#5970 @kit-ty-kate]
* Sereval fixes were done related to environment reverting:
* Fix reverting of environment variables, principally on Windows
[#5935 @dra27 fix #5838]
* Fix splitting environment variables [#5935 @dra27]
* When opam creates an empty variable then appends/prepends a value, ensure
no additional separator is added [#5935 @dra27 - fix #5925]
* Fix `x-env-path-rewrite` splitting of values when reverting
[#5935 @dra27 - fix #5838]
* Rework the logic of := and =: so that an empty entry is correctly preserved
on multiple updates [#5935 @dra27 - fix #5926]
* Fix incorrect reverting of `=+` and `=:` [#5935 @dra27 - fix #5926]
* Fix a performance regression when calling `opam install --deps-only` on an
already installed package [#5908 @kit-ty-kate - fix #5817]
* Fixed some issues that could appear when upgrading from previous versions of
opam:
* Handle init OCaml `sys-ocaml-*` eval variables during format upgrade from
2.0 -> 2.1 -> 2.2 [#5829 @dra27]
* Reset the "jobs" config variable when upgrading from opam 2.1 to 2.2,
instead of 2.0 to 2.1 [#5904 @kit-ty-kate - fix #5816]
* Fixes various issues with opam tree and opam why:
* Fix `opam tree --with-*` assigning the `with-*` variables to unrequested
packages [#5919 @kit-ty-kate @rjbou - fix #5755]
* Fix combinations of `opam tree --with-*` and `--no-switch`
[#5919 @kit-ty-kate @rjbou - fix #5920]
* Allow to parse opam 2.1 switch import files containing extra-files
[#5943 @kit-ty-kate - fix #5941]
* Fix download URLs containing invalid characters on Windows
(e.g. the ? character in `?full_index=1`) [#5921 @dra27]
* Fix extraction of tarballs on Windows which contain symlinks both when those
symlinks can't be created or if they point to files which don't exist
[#5953 @dra27]
* Stop hiding the Windows specific arguments of opam init on non-Windows
platforms [#6003 @rjbou @kit-ty-kate @dra27]
* Various fixes for Windows:
* Harden the CRLF stripping when using cygcheck [#5993 @dra27]
* Fix curl failures - the progress meter can become interleaved with the
status code on Windows [#5984 @dra27 @kit-ty-kate @rjbou]
* Improve the Git-for-Windows menu shown during opam init
[#5963 @dra27 - fix #5835]
* For the `Cygwin` internal operator, don't allow `make.exe` to become
shadowed [#5996 @dra27]
* Fix incorrect quoting rule for `MANPATH` [#5972 @dra27]
* Do not special case the rewriting rule for the PKG_CONFIG_PATH environment
variable [#6002 @kit-ty-kate - fix #5923]
* Pass --symlink-type native to Cygwin setup if symlinks are available
[#5830 @dra27]
* Pass --no-version-check to Cygwin setup (suppresses a message box if setup
needs updating) [#5830 @dra27]
* Pass --quiet-mode noinput to stop the user interrupting the setup GUI
[#5830 @dra27]
* Always pass --no-write-registry to the Cygwin installer, not just on first
installation [#5995 @dra27]
* Fail if `--git-location` points to a directory not containing git
[#6000 @dra27]
* os-distribution is now by default calculated from cygpath for Cygwin and
MSYS2, instead of needing to be set by opam init [#6000 @dra27]
* Cygwin setup is now always downloaded and updated both for internal and
external Cygwin installations [#6000 @dra27]
* Display extractions in the status bar [#5977 @dra27]
* Display a note when reloading a repository [#5977 @kit-ty-kate]
* Various other fixes:
* Fix rounding error when displaying the timestamp in debug mode
[#5912 @kit-ty-kate - fix #5910]
* Relaxed warning 41 in opam lint to not trigger on uses of package variables
which are guarded by a package:installed filter [#5927 @dra27]
* Move last-env `OPAM_LAST_ENV` files outside the switch to be in `$OPAMROOT`
[#5962 @moyodiallo - fix #5823]
* Fix a typo in the variable description returned by "opam var" [#5961 @jmid]
* (*) Display lock hold/release messages on stderr instead of stdout
[#5999 @kit-ty-kate - fix #5990]
* Stop triggering "Undefined filter variable variable" debug warning for
`?variable` [#5983 @dra27]
* Remove unused/untested Makefile targets lib-pkg [#5494 @kit-ty-kate]
* Upgrade vendored packages (cmdliner 1.3.0, ocaml 4.14.2)
[#5970 #5976 @kit-ty-kate]
* Upgrade the opam-root-version to 2.2~beta [#5904 @kit-ty-kate]
* Improve and extend the tests
[#5919 #5919 #5904 #5925 #5935 #5926 #5935 #5927 @rjbou @dra27]
* Improve the benchmarks [#5909 @kit-ty-kate]
* Improve the test infrastructure [#5935 #5938 #5998 @dra27]
* API changes:
* `OpamClient.init` and `OpamClient.reinit`: now can have additional cygwin
packages to install [#5930 @moyodiallo]
* `OpamClientConfig.opam_init`: add `original_root_dir` argument that
contains the original root directory before redirection [#5457 @rjbou]
* `OpamClientConfig.opam_init`: add `root_from` argument that contains the
origin of used root[#5457 @dra27]
* `OpamInitDefaults.required_packages_for_cygwin`: no longer includes git; as
the need to add that is computed in `OpamClient` [#6000 @dra27]
* `OpamSolution`: expose `print_depext_msg` [#5994 @dra27]
* `OpamSolution`: extract `install_sys_packages` from
`OpamSolution.install_depexts` [#5994 @dra27]
* `OpamDownload.download_command`: separate output from stdout and stderr
[#5984 @kit-ty-kate]
* `OpamEnv.cygwin_non_shadowed_programs`: exposes the list of executables
(not including git) which should always come from Cygwin [#6000 @dra27]
* `OpamStateConfig.r`, `OpamStateConfig.init`: add `original_root_dir` field
to config record and argument that contains the original root directory
before redirection [#5457 @rjbou]
* `OpamStateConfig.r`, `OpamStateConfig.init`: add `root_from` field to
config record and argument that contains the origin of used root
[#5457 @dra27]
* `OpamSysInteract.Cygwin.check_install` renamed to `analyse_install` which
now also returns whether the installation found was MSYS2 or Cygwin
[#6000 @dra27]
* `OpamSysInteract.Cygwin.install`: de-label `packages` argument
[#6000 @dra27]
* `OpamFilter.fold_down_left`: correct handling of `FDefined` and `FUndef`
[#5983 @dra27]
* `OpamFilter.map_up`: correct handling of `FDefined` [#5983 @dra27]
* `OpamPath`: add `redirected` the file name of redirected opam root
[#5457 @rjbou]
* `OpamPath`: remove `OpamPath.Switch.last_env` function in favor to
`OpamPath.last_env` as the files are no more stored in switch directory
[#5962 @moyodiallo - fix #5823]
* `OpamCompat`: add `Seq.find_map` from OCaml 4.14 [#6000 @dra27]
* `OpamConsole.menu` now supports up to 35 menu items [#5992 @dra27]
* `OpamConsole`: Add `formatted_errmsg` [#5999 @kit-ty-kate]
* `OpamConsole.Symbols`: add `collision` symbol [#5457 @dra27]
* `OpamProcess.run_background`: name the stderr output file have the .err
extension when cmd_stdout is given [#5984 @kit-ty-kate]
* `OpamStd.String`: add `split_quoted` that preserves quoted separator
[#5935 @dra27]
* `OpamStd.Sys.resolve_command`: extracted the logic from
`OpamSystem.resolve_command`, without the default environment handling from
OpamProcess. [#5991 @dra27]
* `OpamStd.Sys.resolve_in_path`: split the logic of
`OpamStd.Sys.resolve_command` to allow searching for an arbitrary file in the
search path [#5991 @dra27]
* `OpamStd.Sys.{get_windows_executable_variant,get_cygwin_variant,
is_cygwin_variant}`: renamed `~cygbin` to `?search_in_path` with a change in
semantics so that it acts as though the directory was simply the first entry
in PATH [#6000 @dra27]
* `OpamStubs.enumRegistry`: on Windows, retrieves all the values of a given
type from a registry key, with their names [#6000 @dra27]
* `OpamStubs.getVersionInfo`: on Windows, retrieves the version information
block of an executable/library [#5963 @dra27]
* `OpamStubs.get_initial_environment`: on Windows, returns the pristine
environment for new shells [#5963 @dra27]
* `OpamStubs.readRegistry`: on Windows, complements `OpamStubs.writeRegistry`
[#5963 @dra27]
* `OpamSystem.copy_dir` and `OpamSystem.mv` may display a warning on Windows
if an invalid symlink (e.g. an LXSS Junction) is found [#5953 @dra27]
* `OpamSystem`: add `mk_unique_dir` that returns an unique directory name
as `mk_temp_dir` but not in temporary directory [#5457 @dra27]
2.2.0~beta2:
* Changes necessary to be able to open the PR adding support for Windows in
opam-repository:
* Add a init OCaml `sys-ocaml-system` eval variable [#5829 @dra27]
* Add warning 69: Warn for new syntax when package name in variable in string
interpolation contains several '+' [#5840 @rjbou]
* Hijack the `%{?val_if_true:val_if_false}%` syntax to support extending the
variables of packages with + in their name [#5840 @kit-ty-kate]
* Handle init OCaml `sys-ocaml-*` eval variables during format upgrade from
2.0 -> 2.1 -> 2.2 [#5829 @dra27]
* Add `winsymlinks:native` to the Cygwin environment variable when installing
a package on Windows [#5793 @kit-ty-kate - fix #5782]
* Internal Cygwin installation's bin directory is placed as far down PATH as
is necessary not to shadow `bash`, `tar`, `sort` or `git` [#5832 @dra27]
* Changes necessary for a smooth application of the plan to change
opam-repository devided in
https://github.com/ocaml/opam-repository/issues/23789
* Warn if `GNU patch` is not detected when a patch is applied
[#5893 @kit-ty-kate]
* Use `gpatch` by default instead of `patch` on NetBSD and DragonFlyBSD
[#5893 @kit-ty-kate]
* Use `gpatch` if it exists and is detected as GNU patch when `patch` is not
`GNU patch` [#5893 @kit-ty-kate]
* Improve the opam init experience on Windows:
* Recommend enabling Developer Mode on Windows [#5831 @dra27]
* Fix MSYS2 support [#5843 @rjbou - fix #5683]
* Add `sys-pkg-manager-cmd` as an accepted field in opamrc files
[#5847 @rjbou - fix #5844]
* Fix `git-location` handling in init config file [#5848 @rjbou - fix #5845]
* Make the computation of the init default `sys-ocaml-*` eval variables on
Windows faster, no more depending on Cygwin [#5829 @dra27 @rjbou]
* Mark the internal cygwin installation as recommended [#5903 @kit-ty-kate]
* Quote all the paths to `OPAMROOT` when creating the init scripts on Unix in
case OPAMROOT contains spaces, backslashes or special characters
[#5841 @kit-ty-kate - fix #5804]
* Improve the internal Cygwin installation during init on Windows:
* Disable ACL in Cygwin internal install to avoid permission mismatch errors
[#5796 @kit-ty-kate - fix #5781]
* Add rsync package to internal Cygwin packages list (enables local pinning
and is used by the VCS backends [#5808 @dra27]
* Various improvements to the shell integration:
* Test if file exists before sourcing in fish + powershell
[#5864 @ElectreAAS]
* Properly test if "we're in interactive mode" instead of "in a tty" in fish
script [#5866 @ElectreAAS]
* Unixify Windows paths in init shells scripts (sh, bash, zsh, fish & tsh)
[#5797 @rjbou]
* Various improvements to opam init:
* Simplify computation of OCaml init default `sys-ocaml-*` eval variables on
Unix [#5829 @dra27]
* Check for gpatch instead of patch on NetBSD and DragonFlyBSD
[#5893 @kit-ty-kate]
* Various improvements on Windows:
* Ensure that the system critical error dialog is disabled when opam starts
[#5828 @dra27]
* Fix loading git location at init [#5843 @rjbou]
* Remove use of deprecated function `SHGetFolderPath` and use
`SHGetKnownFolderPath` instead [#5862 @kit-ty-kate]
* Improve performance by only calling `OpamStubs.getPathToSystem` once
[#5862 @dra27]
* Various improvements to the environment handling:
* Fix shell detection on Windows when opam is called via Cygwin's
`/usr/bin/env `even though cmd/powershell is used [#5797 @kit-ty-kate]
* Fix incorrect deduplication of environment variables on update. Effect was
that `FOO += ""` would occlude the value of `FOO` in the environment
[#5837 @dra27]
* Fix regression from #5356 on the detection of out-of-date environment
variables. As part of a refactoring, a filter predicate got inverted
[#5837 @dra27]
* Disable Software Heritage fallbacks by default [#5899 @kit-ty-kate]
* Make sure `opam source --dev` with git sources, clones the whole repository
instead of using `--depth=1` [#5888 @moyodiallo - fix #5061]
* Add support for Wolfi OS, treat it like Apline family as it uses apk too
[#5878 @xnox]
* Add support for doas as an alternative to sudo to the installer
[#5820 @kit-ty-kate - fix #5792]
* Do not check for cppo in the configure script (not used directly anymore
since #5498) [#5794 @kit-ty-kate]
* Upgrade vendored packages (cmdliner 1.2.0, dune 3.14.2, re 1.11.0, ocamlgraph
2.1.0, opam-file-format 2.1.6) [#5797 #5869 #5880 #5869 @kit-ty-kate @dra27]
* Allow to compile opam when the environment contains unicode characters on
Windows [#5880 @kit-ty-kate - fix #5861]
* Sandbox: Mark the user temporary directory (as returned by `getconf
DARWIN_USER_TEMP_DIR`) as writable when TMPDIR is not defined on macOS
[#5780 @ElectreAAS]
* Improve the documentation [#5812 #5818 #5849 #5850 #5885 #5905 #5840 @sorawee
@AldanTanneo @Khady @kit-ty-kate]
* Improve and extend the tests [#5864 #5829 #5840 #5888 @moyodiallo
@kit-ty-kate @rjbou]
* Improve the benchmarks [#5900 @kit-ty-kate]
* Improve the test infrastructure [#5851 #5869 #5788 @dra27 @rjbou]
* API changes:
* `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]
* `OpamProcess.cygwin_create_process_env` no longer adjusts PATH
[#5832 @dra27]
2.2.0~beta1:
* Check and advertise to use Git for Windows [#5718 @rjbou - fix #5617]
* (+) Add the `--git-location` and `--no-git-location` cli arguments
* (+) Add a new `git-location` modifiable opam option on Windows
* When compiling opam on Windows with MinGW, the resulting opam binary now
contains libstdc++ instead of requiring the DLL to be distributed alongside
it or present in the environment [#5680 @kit-ty-kate - fixes #5647]
* Add `./configure --enable-static` to compile the opam binary statically
on Linux
* Fix `opam env` containing carriage return on Cygwin
[#5715 @dra27 @rjbou @kit-ty-kate - fix #5684]
* Remove stray comments from pwsh and cmd env
* Fix debug logs showing up regardless of verbosity on
macOS 12.7.1 / 13.6.3 / 14.2 and FreeBSD [#5769 @kit-ty-kate]
* Upgrade to, and require mccs >= 1.1+17
* Fix `opam tree --dev` [#5687 @rjbou - fix #5675]
* Fix `opam tree --no-switch`. Instead of emptying the current switch from its
installed packages, it load a fresh virtual switch [#5687 @rjbou - fix #5675]
* Display a more precise message when Ctrl-C'ing during an opam switch creation
("Switch left partially installed") [#5713 @rjbou - fix #5710]
* Improve and fix the release scripts (already used for 2.2.0~alpha3)
* Workaround incorrect `NGROUPS_MAX` in `<limits.h>` in musl for release
builds [#5383 @dra27]
* Fix check for adding `-lsha_stubs` only on `master` on OpenBSD
[#5733 @punchagan]
* Improve the documentation [#5775 lukstafi]
* Improve and extend the tests [#5687 #5742 @rjbou]
* Improve the test infrastructure [#5723 @dra27]
* API changes:
* `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]
* `OpamFile.Config`: add git-location field and its functions
[#5718 @rjbou]
* `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]
2.2.0~alpha3:
* Add `x-env-path-rewrite` extensions field to specify the rewriting rules for
environment variables defined in `setenv` and `build-env`, useful for
platforms like Windows [#5636 @rjbou - fix #5602 #4690 #2927]
* The `environment` file now stores environment variable rewriting rules
[#5636 @rjbou]
* Reinstall a package if its `x-env-path-rewrite` is updated [#5636 @rjbou]
* (*) Sandbox: Make /tmp writable again to restore POSIX compliancy
[#5634 #5662 @kit-ty-kate - fixes #5462]
* (+) opam tree: Allow packages with a specific version, directories or local
opam files, as input [#5613 @kit-ty-kate]
* (+) opam tree: Add handling of `--recurse` and `--subpath` for directory
arguments [#5613 @kit-ty-kate]
* (+) opam admin: Add `add-extrafiles` command to add, check, and update
`extra-files:` field according files present in `files/` directory
[#5647 @rjbou]
* (+) Allow to mark a set of warnings as errors using a new syntax -W @1..9
[#5652 @kit-ty-kate @rjbou - fixes #5651]
* Create ppc64le and s390x binaries during releases [#5420 @kit-ty-kate]
* Fix incorrect error message when alternate C compiler is missing on Windows
[#5667 @dra27 - partial fix #5661]
* Fix `x-locked` error message [#5636 @rjbou]
* opam lint: Improve the debug log when checking extra-files [#5640 @rjbou]
* [BUG] Fix sporadic crash and segfault in shell detection (seen in native
containers) [#5714 @dra27]
* [BUG] Fix extra-files handling when linting packages from repositories
[#5639 @rjbou]
* [BUG] On install driven by `.install` file, track intermediate directories
too, in order to have them suppressed at package removal
[#5691 @rjbou - fix #5688]
* [BUG] With `--assume-built`, resolve variables in depends filter according
switch & global environment, not only depends predefined variables
[#5700 @rjbou - fix #5698]
* [BUG] Handle undefined variables defaults to false in dependencies formula
resolution for assume built [#5701 rjbou]
* [BUG] Fix `OPAMCURL` and `OPAMFETCH` handling [#5607 @rjbou - fix #5597]
* [BUG] Fix the `OPAMVERBOSE` setting, levels 0 and 1 were inverted: "no" gave
level 1, and "yes" gave level 0 [#5686 @smorimoto]
* [BUG] Fix "make cold" on Windows when gcc is available
[#5635 @kit-ty-kate - fixes #5600]
* Improve the documentation [#5636 #5706 #5708 @MisterDA @kit-ty-kate @rjbou]
* Improve and extend the tests [#5560 #5600 #5607 #5636 #5639 #5647 #5672 #5686
#5691 #5700 #5701 @kit-ty-kate @rjbou]
* Improve the test infrastructure [#5560 #5606 #5607 #5607 #5654 #5657 @rjbou]
* API changes:
* `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]
* `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.get_cygpath_path_transform`: add labeled argument to specify
if path is a pathlist [#5636 @rjbou]
* `OpamSystem.apply_cygpath_path_transform`: fix cygpath call, use resolved
name [#5716 @rjbou]
* `OpamTreeCommand.run`: now takes an `atom` instead of `name`
[#5613 @kit-ty-kate]
* `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]
* `OpamTypes.env_update`: change from tuple to a record [#5636 @rjbou]
* `OpamTypesBase`: add `env_update`, `env_update_resolved`, and
`env_update_unresolved` builders [#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]
* `OpamPp.fallback`: add name concatenation and printing fallback too
[#5636 @rjbou]
* `OpamFormat`: add `formula_items` to permit definition of formulae pp not
only of the type `package-formula` [#5636 @rjbou]
* `OpamTypesBase`: add to_string function for `path_format` & `separator`
[#5636 @rjbou]
* `OpamFormat.V`: add `path_format` & `separator` value parser printer
[#5636 @rjbou]
* `OpamFile.OPAM`: add handling of `x-env-path-rewrite` extensions field,
that specifies rewrite rules [#5636 @rjbou]
* `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]
* `OpamTypesBase`: add `env_update_resolved` and `env_update_unresolved`
builders [#5636 @rjbou]
* `OpamPp.fallback`: add name concatenation and printing fallback too
[#5636 @rjbou]
* `OpamFormat`: add `formula_items` to permit definition of formulae pp not
only of the type `package-formula` [#5636 @rjbou]
* `OpamTypesBase`: add to_string function for `path_format` & `separator`
[#5636 @rjbou]
* `OpamFormat.V`: add `path_format` & `separator` value parser printer
[#5636 @rjbou]
* `OpamFile.OPAM`: add handling of `x-env-path-rewrite` extensions field,
that specifies rewrite rules [#5636 @rjbou]
* `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]
2.2.0~alpha2:
* Permit internal Cygwin install on Windows [#5545 @rjbou @dra27]
* Add `--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]
* opam var/option: Error with more accurate message in case of package/self
variable wrongly given as argument [#4903 @rjbou - fix #4489]
* [BUG] opam var/option: Handle package variable syntax in parse update
regexp [#4903 @rjbou - fix #4489]
* Lint: E29: The conflicts field's filter does not support package variables
[#5535 @kit-ty-kate]
* opam admin: On linting, clean output when stdout is not tty [#5594 @rjbou]
* Run autoupdate to silence autogen warnings [#5555 @MisterDA]
* Update bootstrap to use FlexDLL 0.43 from ocaml/flexdll [#5579 @MisterDA]
* configure: Ensure a complementary (32bit on 64bit platforms and 64bit on
32bit platforms) C compiler is installed on Windows [#5522 @kit-ty-kate]
* Bump versions, fix authors [#5603 #5609 #5611 @rjbou]
* Improve and extended tests: [#5385 #5535 @rjbou]
* Improve test engine: [#5481 @dra27]
* Improve Github actions: [#5555 #5588 #5598 @rjbou]
2.2.0~alpha:
* Depexts support Cygwin on Windows [#5542 @rjbou] [#5544 @rjbou]
[#5541 @dra27]
* Support MSYS2 on Windows for depexts [#5348 @jonahbeckford #5433 @rjbou]
* Generate init and variables for Windows [#5541 @dra27]
* When defined, add Cygwin binary path to build environment [#5543 @rjbou]
* On Windows, ask for pre-existent Cygwin installation, check it, and configure
opam with it [#5544 @dra27 @rjbou]
* Reactivate subpath and recursive pinning `--recursive` and `--subpath`
[#4876 @rjbou] [#5219 @rjbou]
* (+) Add `tree` subcommand to display a dependency tree of currently installed
packages [#5171 @cannorin - fix #3775] [#5303 @cannorin - fix #5298]
* (+) Add `why` subcommand to examine how the versions of currently installed
packages get constrained (alias to `tree --rev-deps`)
[#5171 @cannorin - fix #3775]
* (+) Add `--formula` option to specify a formula to install [#4975 @AltGr]
* (+) Add `--dev-setup` option to install recommended development tools from
opam file (as `with-test`/`with-doc`), and its environment variable
`OPAMWITHDEVSETUP`, and for post-messages
[#5016 #5160 #5214 @rjbou - fix #4959]
* Opamfile: Add `with-dev-setup` variable for recommended tools
[#5016 #5214 @rjbou]
* Factorise source-archive fetching. If several packages relies on the same
archive, it is downloaded once then copied to several source directories
[#4893 @rjbou - fix #3741]
* Add Software heritage fallback when downloading archive source, triggered
when all urls and cache fails, with confirmation [#4859 @rjbou @zapashcanon]
* Opamfile: Add swhid url handling in url field [#4859 @rjbou @zapashcanon]
* (+) New option `opam pin --current` to fix a package in its current state
(avoiding pending reinstallations or removals from the repository)
[#4973 @AltGr - fix #4970]
* (+) Add `opam pin remove --all` to remove all the pinned packages from a
switch [#5308 @kit-ty-kate]
* Allow `opam pin remove` to take a package (`<pkg>.<version>`) as argument
[#5325 @kit-ty-kate]
* (+) Add `opam exec --no-switch` [#4957 @kit-ty-kate - fix #4951]
* (+) Add `--no-switch` option [#4850 @rjbou - fix #4858]
* (+) Add `--untracked` option to remove interactively untracked files
[#4915 @rjbou - fix #4831]
* (+) Add support for `opam switch -` that goes to previous non-local switch
[#4910 @kit-ty-kate - fix #4688]
* (+) Add `opam admin add-constraint <cst> --packages` to select a subset of
packages to apply constraints [#5386 @rjbou - fix #3077]
* (+) Add `OPAMREPOSITORYTARRING` environment variable to enable repository
tarring optimisation, it is disabled by default because it is an optimisation
only on some os/configurations [#5015 @rjbou]
* Run the sandbox check in the temporary directory [#4787 @dra27 - fix #4783]
* Use `.opam` from `%HOME%` or `%USERPROFILE%` on Windows, only if found;
otherwise use `%LOCALAPPDATA%\opam` as root. [#5212 @dra27]
* Display actual location of OPAMROOT in `opam init` if `--root` or `OPAMROOT`
have been set [#5212 @dra27 - fix #4992]
* Surround and add a comment describing the role of the lines added to the
~/.profile or equivalent [#5456 @kit-ty-kate]
* Use menu for init setup [#5057 @AltGr; #5217 @dra27]
* (*) init menu: change default from no to yes for shell update
[#5456 #5540 @rjbou @kit-ty-kate]
* [BUG] Fix `opam init` and `opam init --reinit` when the `jobs` variable has
been set in the opamrc or the current config. [#5056 @rjbou]
* Handle empty environment variable updates - missed cherry-pick from 2.0
[#4840 @dra27]
* When a field is defined in switch and global scope, try to determine the
scope also by checking switch selection [#5027 @rjbou]
* Resolve and use global config and environment variable before polling system
informations (os, os-family, etc.) [#4892 @rjbou - fix #4883]
* Catch an package not found error and print skipping message
[#5280 @rjbou - fix #5279]
* Option: Make `archive-mirrors` modifiable (extendable) via opam config
[#5321 @hannesm @rjbou - fix #5316]
* Open the release files when determining the distribution
[#5568 @Leonidas-from-XIV]
* [BUG] Fix `OPAMCURL` and `OPAMFETCH` value setting [#5111 @rjbou - fix #5108]
* [BUG] Option: Don't error when displaying if switch is not set
[#5027 @rjbou - fix #5025]
* [BUG] Try to set a variable with option `--switch <sw>` fails instead of
writing a wrong `switch-config` file [#5027 @rjbou]
* [BUG] Fix typo in error message for opam var [#4786 @kit-ty-kate - fix #4785]
* Config report: Add invariant and compiler packages fields
[#5480 @rjbou - fix #5478]
* [BUG] Config report: Don't fail if no switch is set [#5198 @rjbou]
* Add CLI 2.2 handling [#4853 @rjbou]
* `--no-depexts` is the default in CLI 2.0 mode [#4908 @dra27]
* CLI: Error report display: print action name [#5045 @AltGr]
* CLI: Add `experimental` flags handling [#5099 @rjbou]
* Put back support for switch creation with packages argument and `--packages`
option with CLI 2.0, and a specific error message for CLI 2.1
[#4853 @rjbou - fix #4843]
* Fix default CLI handling for simple flags [#5099 @rjbou]
* Check whether the repository might need updating more often
[#4935 @kit-ty-kate]
* (*) It is no longer possible to process actions on packages that depend on a
package that was removed upstream [#4969 @AltGr]
* (*) PEF output: change `base` field into `invariant-pkg` [#5208 @rjbou]
* [BUG] Fix all empty conflict explanations [#4982 #5263 @kit-ty-kate]
partially}_
* [BUG] Fix passing `archive-mirrors` field from init config file to config
[#5315 @hannesm]
* [BUG] Fix json double printing [#5143 @rjbou]
* Reimplement deps-only [#4975 @AltGr] [#5136 @AltGr]
[#5236 @AltGr - fix #5177] [#5236 @AltGr - fix #5185]
* Log a summary of recorded `.changes` as a `ACTION` trace log to help debug
#4419 [#5144 @na4zagin3]
* Use the default criteria during reinstall/upgrade when requesting at least
one non-installed package [#5228 @kit-ty-kate]
* [BUG] Prevent `.changes` files from being updated during dry-run
[#5144 @na4zagin3 - fix #5132]
* Make the status of pinned packages more explicit during installation
[#4987 @kit-ty-kate - fix #4925]
* Show the reason for installing packages when using opam reinstall
[#5229 @kit-ty-kate]
* Refresh the actions list output, now sorted by action/package rather than
dependency [#5045 @kit-ty-kate @AltGr - fix #5041]
* Put back the actions summary as part of confirmation question [#5045 @AltGr]
* Add subpath on actions listing urls [#4876 @rjbou]
* [BUG] Fix display of pinned packages in action list [#5079 @rjbou]
* Fix message when running `opam remove` on an unavailable package
[#4995 @AltGr - fix #4890]
* Fix removal of root packages with `-a` and an optional dependency explicitly
specified [#4995 @AltGr - fix #4727]
* On switch loading, check for executable external files if they are in `PATH`,
and warn if not the case [#4932 @rjbou - fix #4923]
* When inferring a 2.1+ switch invariant from 2.0 base packages, don't filter
out pinned packages as that causes very wide invariants for pinned compiler
packages [#5176 @dra27 - fix #4501]
* When setting invariant, really install invariant formula if not installed in
switch [#5188 @rjbou]
* When setting invariant, update switch state to compute invariant packages
[#5208 @rjbou]
* On switch import, check that installed pinned packages changed, reinstall if
so [#5181 @rjbou - fix #5173]
* Update compiler / base packages handling: always updated, the field contains
installed packages resolving invariant formula [#5208 @rjbou]
[#5503 @kit-ty-kate - fix #5502]
* Fill empty switch synopsis with invariant formula instead of compiler package
name [#5208 @rjbou]
* [BUG] Ensure setenv can use package variables defined during the build
[#4841 @dra27]
* [BUG] Fix `set-invariant`: default repos were loaded instead of switch repos
[#4866 @rjbou]
* [BUG] Enforce extra-source to have a checksum when using "opam switch export
--freeze" [#5418 @kit-ty-kate]
* Switch the default pin version when undefined from `~dev` to `dev`
[#4949 @kit-ty-kate]
* pin scan: show subpaths [#4876 @rjbou]
* [BUG] Fix using `--working-dir` with non pinned packages: it was not
downloading sources as they were remove from package that need sources
[#5082 @rjbou - fix #5060]
* [BUG] Fix windows path for subpath, by introducing their own type in
`OpamFilename` [#4876 @rjbou]
* [BUG] Fix recpin of locked pins when there is no change in lock file
[#5079 @rjbou - fix #4313]
* [BUG] Fix `opam install ./file.opam` lock pinning [#5148 @rjbou - fix #4313]
* [BUG] Fix origin opam file retrieval when opam originate from locked file
[#5079 @rjbou - fix #4936]
* [BUG] When reinstalling a package that has a dirty source, if uncommitted
changes are the same than the ones stored in opam's cache, opam consider that
it is up to date and nothing is updated [#4879 @rjbou]
* [BUG] Handle external dependencies when updating switch state pin status (all
pins), instead as a post pin action (only when called with `opam pin`
[#5047 @rjbou - fix #5046]
* Some optimisations to 'opam list --installable' queries combined with other
filters [#4882 @AltGr - fix #4311]
* Improve performance of some opam list combination (e.g. --available
--installable) [#4999 @kit-ty-kate]
* Improve performance of opam list --conflicts-with when combined with other
filters [#4999 @kit-ty-kate]
* Improve performance for recursive `--required-by` and `depends-on`
[#5337 @rjbou]
* Colorise as unavailable (magenta) packages that are specified in the
invariant formula and that do not verify it (previous was non installed
compiler package) [#5208 @rjbou]
* (*) Change `--base` into `--invariant`, column name and the content is
invariant formula installed dependencies [#5208 @rjbou]
* [BUG] Fix coinstallability filter corner case [#5024 @AltGr]
* Show: Add `depexts` to default printer [#4898 @rjbou]
* Show: Add printer for `url.swhid:` [#4859 @rjbou]
* Make `opam show --list-files <pkg>` fail with not found when `<pkg>` is not
installed [#4956 @kit-ty-kate - fix #4930]
* Improve performance of opam show by 300% when the package to show is given
explicitly or unique [#4998 @kit-ty-kate - fix #4997 and partially #4172]
* Download source even if no switch is set
[#4850 @rjbou @zapashcanon - fix #4809]
* Source: [BUG] Fix directory display in dev mode [#5102 @rjbou]
* [BUG] if a package is pinned from a locked file, it is automatically
updated/upgraded accordingly a lock file (same extension) [#5080 @rjbou]
* More clear message for pinned package update that have local changes, with no
working dir given, or no arguments specified [#5300 @rjbou - fix #5294]
* Lint: Warning 68: add warning for missing license field
[#4766 @kit-ty-kate - partial fix #4598]
* Lint: Warning 47: remove the mention of the opam 1.2 descr file in the
warning message [#5069 @rjbou - fix #4989]
* Lint: Warning 56: detection removed, since `OPAM_LAST_ENV` allows reliable
reverting [#5417 @dra27]
* Lint: Error 57: (capital on synopsis) not trigger Warning 47 (empty descr)
[#5070 @rjbou]
* Lint: Error 57: Enforce synopsis to always be there, restoring behaviour from
opam 2.1 [#5442 @kit-ty-kate]
* Lint: Update repository package filename display [#5068 @rjbou]
* Lint: Warning 62: use the spdx_licenses library to check for valid licenses.
This allows to use compound expressions such as "MIT AND (GPL-2.0-only OR
LGPL-2.0-only)", as well as user defined licenses e.g.
"LicenseRef-my-custom-license" [#4768 @kit-ty-kate - fixes #4598]
[#5571 @3Rafal - fix #5570]
* [BUG] Lint: Fix linting packages from repository with tarred repositories,
the file in temporary repository was no more available when lint is done
[#5068 @rjbou]
* Lint: Error 67: check checksums only for VCS urls [#4960 @rjbou]
* [SECURITY] Fix opam installing packages without checking their checksum when
the local cache is corrupted in some cases [#5538 @kit-ty-kate]
* When several checksums are specified, instead of adding in the cache only the
archive by first checksum, name by best one and link others to this archive
[#4696 rjbou]
* Set the priority of user-set archive-mirrors higher than the repositories'.
This allows opam-repository to use the default opam.ocaml.org cache and be
more resilient to changed/force-pushed or unavailable archives.
[#4830 @kit-ty-kate - fixes #4411]
* Repository tarring "optimisation" no more needed, removed in favor of a plain
directory. It still can be used with environment variable
`OPAMREPOSITORYTARRING`. [#5015 @kit-ty-kate @rjbou @AltGr - fix #4586]
[#5109 @rjbou]
* Avoid reloading repository contents when the repo has no changes
[#5043 @Armael]
* Avoid rewriting repository cache is nothing changed [#5146 @rjbou]
* On setting url fetch failure (sync or file error), revert url change and
rollback to old one [#4967 @rjbou - fix #4780 #4779]
* Update opam repository man doc regarding removal of the last repository in a
switch [#4435 - fixes #4381]
* Don't display global message when `opam repo`'s `--this-switch` is given
[#4899 @rjbou - fix #4889]
* Remove url section from lock file, it is ignored on pinning [#5465 @rjbou]
* Fix lock generation of multiple interdependent packages [#4993 @AltGr]
* Depext: Run command as admin only when needed [#5268 @kit-ty-kate]
* Depext: Don't run depext computation when there is no depexts [#5548 @rjbou]
* [BUG] Depext: when checking again, more accurate check of missing packages
(available and not found) [#5157 @rjbou]
* Depext: Better recognize depexts on Gentoo, NetBSD, OpenBSD [#5065 @mndrix]
* Depext: Set `DEBIAN_FRONTEND=noninteractive` for unsafe-yes confirmation
level [#4735 @dra27 - partial fix #4731] [2.1.0~rc2 #4739]
* Depext: Homebrew: Add support for casks and full-names [#4801 @kit-ty-kate]
* Depext: Disable the detection of available packages on RHEL-based
distributions. This fixes an issue on RHEL-based distributions where yum list
used to detect available and installed packages would wait for user input
without showing any output and/or fail in some cases
[#4791 @kit-ty-kate - fixes #4790]
* Depext: Fallback on dnf if yum does not exist on RHEL-based systems
[#4825 @kit-ty-kate]
* Depext: Archlinux: handle virtual package detection
[#4831 @rjbou - partial fix #4759]
* Depext: Stop zypper from upgrading packages on updates on OpenSUSE
[#4978 @kit-ty-kate]
* [BUG] Depext: Fix depext alpine tagged repositories handling [#4763 @rjbou]
[2.1.0~rc2 #4758]
* Depext: Improve the error message when neither MacPorts or Homebrew could be