-
Notifications
You must be signed in to change notification settings - Fork 372
/
Copy pathCHANGES
3113 lines (3023 loc) · 168 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.4.0~alpha1:
* (*) Remove `ocaml-system` from the list of default compilers chosen at
`opam init` time [#6307 @kit-ty-kate - fix #3509]
* (*) Fail when trying to pin a package whose definition could not be found
instead of forcing interactive edition (e.g. this could happen when
making a typo in the package name of a pin-depends)
[#6319 @kit-ty-kate - fix #6322]
* Patches are now applied using the `patch` OCaml library instead of GNU Patch
[#5892 @kit-ty-kate - fix #6019 #6052]
* (*) Context diffs are not supported anymore, only Unified diffs are
(including its git extensions) [#5892 @kit-ty-kate]
* (*) Stop support of file permission changes via git extension to the
unified diff specification [#5892 @kit-ty-kate - fix #3782]
* (*) Fix `opam install <local_dir>` not updating and storing pinned
packages' metadata [#6209 @kit-ty-kate - fix #5567]
* (*) Fix `opam install --deps-only/--show-action <local_dir>` not updating
(without storing) pinned packages' metadata [#6209 @kit-ty-kate - fix #5567]
* (*) Symlinks in repositories are no longer supported [#5892 @kit-ty-kate]
* (*) Support providing external dependencies with Nix by adding support
for stateless depexts systems
[#5982 @RyanGibb @rjbou @kit-ty-kate - fix #5124]
* `opam show` now displays the version number of packages flagged with
`avoid-version`/`deprecated` gray [#6358 @kit-ty-kate - fix #6354]
* Remove the build directories of pinned packages after successful builds
[#6436 @kit-ty-kate]
* (*) Fix `pin-depends` for `with-*` dependencies when creating a lock file
[#5471 @rjbou - fix #5428]
* GNU `patch` and the `diff` command are no longer runtime dependencies
[#5892 @kit-ty-kate - fix ocaml/setup-ocaml#933 #6052]
* Fix a regression on `opam upgrade <package>` upgrading unrelated packages
[#6373 @AltGr]
* Fix a regression on `opam upgrade --all <uninstalled-pkg>` not upgrading
the whole switch [#6373 @kit-ty-kate]
* `opam pin`/`opam pin list` now displays the current revision of a pinned
repository in a new column [#6274 @desumn - fix #5533]
* Don't ask confirmation when pinning an unknown package
(absent from repositories) [#6309 @kit-ty-kate @rjbou - fix #3199]
* Do not show the not-up-to-date message with packages tagged with
`avoid-version`/`deprecated` [#6273 @kit-ty-kate - fix #6271]
* (*) Disable the detection of available system packages on SUSE-based
distributions [#6464 @kit-ty-kate]
* Allow running some opam commands on machines with limited amount of memory
by running `Gc.compact` while the main process is waiting for the children
processes [#5396 @kkeundotnet]
* Prefer curl over any other download tools on every systems,
if available [#6305 @kit-ty-kate]
* Add the `OPAMSOLVERTOLERANCE` environment variable to allow users to fix
solver timeouts for good [#5510 @kit-ty-kate - fix #3230]
* Add `fetch` on DragonFlyBSD and `ftp` on NetBSD to the list of download
tools to use, if available [#6305 @kit-ty-kate]
* Fix the detection of `ZDOTDIR` when using `zsh`
[#6299 @acasta-yhliu - fix #6281]
* Check that the repositories given to `opam repository remove` actually
exist [#5014 @kit-ty-kate - fixes #5012]
* Respect the `DUNE_CACHE_ROOT` environment variable if it exists
[#6326 @smorimoto]
* (+) Add `opam admin compare-versions` to compare package versions for
sanity checks [#6197 @mbarbin]
* Fix `opam admin check` in the presence of the `with-dev-setup` variable
[#6331 @kit-ty-kate - fix #6329]
* (*) The `-i`/`--ignore-test-doc` argument has been removed from
`opam admin check` [#6335 @kit-ty-kate]
* (*) `opam admin check` now sets `with-test` and `with-doc` to `false`
instead of `true` [#6335 @kit-ty-kate]
* (+) Add `opam admin migrate-extrafiles` which moves all `extra-files`
of an existing opam repository into `extra-sources`
[#5960 @hannesm @rjbou @kit-ty-kate]
* Fix `opam switch remove <dir>` failure when it is a linked switch
[#6276 @btjorge - fix #6275]
* (*) Ensure the right version (the pinned one) of packages are used when
simulating pinning [#6256 @rjbou @kit-ty-kate - fix #6248 #6379]
* Fix sandboxing support on NixOS [#6333 @kit-ty-kate]
* Improve the messages when a package is not up-to-date on `opam upgrade`
[#6272 @kit-ty-kate - fix #6270]
* Use a non-underline uppercase character to denote the default when
asking a question [#6289 @hannesm @kit-ty-kate - fix #6288]
* Fix the detection of installed external packages on OpenBSD to not just
consider manually installed packages [#6362 @semarie]
* Do not pre-write the answer to questions with the default anwser
[#6376 @kit-ty-kate]
* (+) Add `opam lock --keep-local` to keep local pins url in `pin-depends`
field [#6411 @rjbou - fix #4897]
* Do not ask to install `pin-depends` twice [#6375 @kit-ty-kate - fix #6374]
* Correctly handle `pkg.version` pattern in `opam switch list-available`
[#6186 @arozovyk - fix #6152]
* Fix `opam switch list-available` when given several arguments
[#6318 @kit-ty-kate]
* Avoid issues when using `wget2` as download-tool where the requested url
might return an HTML page instead of the expected content
[#6303 @kit-ty-kate]
* Speedup the detection of available system packages with `pacman` and `brew`
[#6324 @kit-ty-kate]
* (+) Add `--require-checksums` and `--no-checksums` to `opam source`
[#5563 @rjbou]
* Add `apt-rpm`/ALTLinux family support for depexts [#6207 @RiderALT]
* Display Windows `NTSTATUS` exit codes in hex [#6401 @dra27 @MisterDA]
* Use a C stub to call the `uname` function from the C standard library
instead of calling the `uname` POSIX command [#6217 @kit-ty-kate]
* Don't write empty environment update segments to `variables.sh`
(`FOO += ""` no longer adds `FOO='':"$FOO"; export FOO;`) [#6198 @dra27]
* Only download Cygwin's `setup.exe` when the command is actually going
to be displayed or used [#6467 @kit-ty-kate]
* Add W74 to `opam lint` to detect `pin-depends` packages that are neither
present in the `depends` no `depopts` field [#6317 @rjbou - fix #5795]
* Add E63 to `opam lint` to check for availability guard in case an opam
file contains a `subpath` field [#6438 @rjbou @kit-ty-kate]
* Add `--cli`/`OPAMCLI` version 2.4 [#6268 @mbarbin @rjbou]
* Fix `subpath` handling in opam files defining a local archive
[#6439 @rjbou]
* Change probing tool for SUSE-based distributions from `zypper` to `rpm`
[#6464 @kit-ty-kate]
* Build changes:
* Simplify the making of stripped binaries by introducing the
`make opam-stripped` target [#6208 @kit-ty-kate]
* Fix compilation on macOS with OCaml 5.3 by bumping the
downloaded-if-missing `mccs` to 1.1+19 [#6192 @kit-ty-kate]
* Upgrade the downloaded-if-missing `opam-file-format` to 2.2.0~alpha1,
`spdx_licenses` to 1.3.0 and `dune` to 3.16.1
[#6321 #6370 #6192 @kit-ty-kate - fix #6369]
* `menhir` is now part of the transitive dependency of opam
(via `opam-file-format`) [#6321 @kit-ty-kate]
* Accurately tag `curl` download command when loaded from global config file
[#6302 @rjbou]
* Remove `wget` support for Software Heritage fallback
[#6036 @rjbou - fix #5721]
* Fix Software Heritage liveness check [#6036 @rjbou - fix #5721]
* Update the Software Heritage API requests [#6036 @rjbou]
* Improve and extend the tests
[#5892 #6276 #6331 #6343 #6378 #6273 #6380 #6373 #6307 #6256 #6412 #6438
#6439 #6436 #6166 #6209 #6209 #6209 #6198 #6319 #6467 #5643 #5982
@rjbou @kit-ty-kate @btjorge]
* Improve and extend the benchmarks [#6212 #6212 #6443 @kit-ty-kate]
* Improve and extend the test infrastructure
[#5349 #6296 #6274 #6313 #6363 #6363 #6192 #6192 #5663 #6383 #6444 #6447
#6471 #6471 #6471 #6471 #6471 #6469 #5982
@kit-ty-kate @rjbou @RyanGibb]
* Improve and extend the documentation
[#6226 #6231 #6252 #6252 #6150 #6150 #6150 #6150 #6267 #6251 #6306 #6315
#5659 #6320 #6338 #6361 #6358 #5627 #6372 #6470
@kit-ty-kate @rjbou @RyanGibb @gridbugs @fccm2 @shym
@hannesm @tobil4sk @juergenhoetzel @MisterDA]
* API changes in `opam-client`:
* `OpamAction.prepare_package_build`: now returns `exn option` instead of
`exn option OpamProcess.job` and no longer calls the system GNU Patch
[#5892 @kit-ty-kate]
* `OpamArg.InvalidCLI`: export exception [#6150 @rjbou]
* `OpamArg`: export `require_checksums` and `no_checksums`, that are shared
with `build_options` [#5563 @rjbou]
* `OpamArg.hash_kinds`: was added [#5960 @kit-ty-kate]
* `OpamAuxCommands.{simulate_autopin,autopin ~simulate:true}`: now updates
the `reinstall` field of the returned `switch_state` if necessary
[#6209 @kit-ty-kate]
* `OpamRepositoryCommand.switch_repos`: expose the function
[#5014 @kit-ty-kate]
* `OpamLockCommand.lock_opam`: add `~keep_local` argument to add local pins
to pin-depends (and not resolve them) [#6411 @rjbou]
* `OpamLockCommand.lock_opam`: make the `?only_direct` argument non-optional
[#6411 @kit-ty-kate]
* `OpamSolution.print_depext_msg`: takes now an `OpamSysPkg.status` instead
of sets [#5982 @kit-ty-kate @RyanGibb]
* `OpamSolution.install_sys_packages`: no longer takes set of package to
install but `OpamSysPkg.to_install` [#5982 @rjbou @RyanGibb @kit-ty-kate]
* `OpamSolution.install_depexts`: instead of the package set of new package
to install, now takes 2 labelled arguments `pkg_to_install` and
`pkg_installed` to be able to keep synchronised stateless depext systems
[#5982 @rjbou @RyanGibb @kit-ty-kate]
* API changes in `opam-repository`:
* `OpamDownload.get_output`: fix `wget` option for `POST` requests
[#6036 @rjbou]
* `OpamDownload.get_output`: use long form for `curl` `POST` request option
[#6036 @rjbou]
* `OpamDownload.download`: more fine grained HTTP request error code
detection for curl [#6036 @rjbou]
* `OpamLocal.pull_url`: fix subpath handling when the url is a local archive
[#6439 @rjbou]
* `OpamRepository.revision`: now returns a `string` instead of a `version`
[#6409 @kit-ty-kate]
* `OpamRepositoryBackend.S.revision`: now returns a `string` instead of a
`version` [#6409 @kit-ty-kate]
* `OpamRepositoryBackend.get_diff`: now returns `exn option` instead of
`exn option OpamProcess.job` and no longer calls the system `diff`
utility [#5892 @kit-ty-kate]
* `OpamRepositoryBackend.get_diff`: now raises `Stdlib.Failure` if an
unsupported file type or comparison is detected [#5892 @kit-ty-kate]
* API changes in `opam-state`:
* `OpamStateConfig`: Make the `?lock_kind` parameters non-optional to avoid
breaking the library users after they upgrade their opam root
[#5488 @kit-ty-kate]
* `OpamSwitchState.load_selections`: Make the `?lock_kind` parameter
non-optional to avoid breaking the library users after they upgrade their
opam root [#5488 @kit-ty-kate]
* `OpamSysInteract.Cygwin.check_setup`: unexpose the function
[#6467 @kit-ty-kate]
* `OpamSysInteract.package_status`: SUSE-based distributions now uses `rpm`
instead of `zypper` and no longer return an `available` set of system
packages [#6464 @kit-ty-kate]
* `OpamSysInteract.packages_status`: returns now a `OpamSysPkg.status`
instead of sets [#5982 @kit-ty-kate @RyanGib]
* `OpamSysInteract.{install_packages_commands,install}: no longer takes set
of package to install but `OpamSysPkg.to_install`
[#5982 @rjbou @RyanGibb @kit-ty-kate]
* `OpamSysInteract.package_manager_name`: no longer build the command, or
run an action to retrieve system package manager name [#5982 @rjbou]
* `OpamSysInteract`: add `stateless_install` that return if system package
manager is stateless one (per switch) [#5982 @rjbou]
* `OpamSysInteract.{install_packages_commands,install}: takes a new
argument, a switch stat option, for stateless systems that need to write
on switch [#5982 @RyanGibb @rjbou]
* API changes in `opam-format`:
* `OpamFormula.string_of_relop`: export function [#6197 @mbarbin]
* `OpamFormula.all_relop`: a list of all operators [#6197 @mbarbin]
* `OpamFile.OPAM.{*read*,write*}`: Stop modifying the `available` field
when handling the builtin `x-*` fields [#6438 @kit-ty-kate]
* `OpamFile.Repos_config.t`: change the type to not allow repositories
without an URL [#6249 @kit-ty-kate]
* `OpamPath`: add `nix_env` inner switch path for nix environment
[#5982 @RyanGibb]
* `OpamSysPkg`; add new type `to_install` to store system package to
install information, newly requested ones and already installed
required ones ; and its empty recode `to_install_empty` and display
function `string_of_to_install` [#5982 @rjbou]
* API changes in `opam-core`:
* `OpamConsole`: Replace `black` text style (unused and not very readable)
by `gray` [#6358 @kit-ty-kate]
* `OpamConsole.pause`: Ensure the function always prints a newline character
at the end [#6376 @kit-ty-kate]
* `OpamFilename.patch`: now returns `exn option` instead of
`exn option OpamProcess.job` and no longer calls the system GNU Patch
[#5892 @kit-ty-kate]
* `OpamFilename.patch`: a named-parameter `~allow_unclean` was added
[#5892 @kit-ty-kate]
* `OpamHash.all_kinds`: was added, which returns the list of all possible
values of `OpamHash.kind` [#5960 @kit-ty-kate]
* `OpamParallel.*.{map,reduce,iter}`: Run `Gc.compact` when the main
process is waiting for the children processes for the first time
[#5396 @kkeundotnet]
* `OpamStd.List.split`: Improve performance [#6210 @kit-ty-kate]
* `OpamStd.Option.equal_some`: was added, which tests equality of an option
with a value [#6381 @kit-ty-kate]
* `OpamStd.Sys.getconf`: was removed, replaced by `get_long_bit`
[#6217 @kit-ty-kate]
* `OpamStd.Sys.get_long_bit`: was added, which returns the output of the
`getconf LONG_BIT` command [#6217 @kit-ty-kate]
* `OpamStd.Sys.uname`: now returns the memoized result of the `uname`
function from the C standard library [#6217 @kit-ty-kate]
* `OpamStd.Sys.get_freebsd_version`: was added, which returns the output
of the `uname -U` command [#6217 @kit-ty-kate]
* `OpamSystem.get_files`: was exposed which returns the list of files
(without prefix) inside the given directory [#5892 @kit-ty-kate]
* `OpamSystem.remove_dir`: do not fail with an exception when directory
is a symbolic link [#6276 @btjorge @rjbou - fix #6275]
* `OpamSystem.patch`: now returns `exn option` instead of
`exn option OpamProcess.job` and no longer calls the system GNU Patch
[#5892 @kit-ty-kate]
* `OpamSystem.patch`: a named-parameter `~allow_unclean` was added
[#5892 @kit-ty-kate]
* `OpamSystem.patch`: do not remove the original patch file if called with
`~preprocess:false` [#5892 @kit-ty-kate]
* `OpamSystem`, `OpamFilename`: add `with_tmp_file` and `with_tmp_file_job`
function, that create a file name in temporary directory and removes it
at the end of the call [#6036 @rjbou]
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]