A conflict between A and B can happen because of several things:
B is listed in the conflicts field of A
A is listed in the conflicts field of B
A and B share a conflict-class
In the package page, opam2web displays conflicts in a global way: it loads all the universe, and determines which packages conflicts with it (for whichever of the above reasons).
The problem with this approach is that it is slow: it requires analyzing the universe, for each package.
This commit does something simpler: it just displays the metadata corresponding to the package rendered on the current page. This is consistent with how ocaml.org now renders package metadata.
For an example of changed behaviour: dune.3.12.2 declares a conflict against old versions of merlin. the old behaviour would display a dune conflict on the merlin.3.3.9 page.
This creates a huge speedup: a 2077s job now takes 183s (11.3 times faster).
A conflict between A and B can happen because of several things:
conflicts
field of Aconflicts
field of Bconflict-class
In the package page, opam2web displays conflicts in a global way: it loads all the universe, and determines which packages conflicts with it (for whichever of the above reasons).
The problem with this approach is that it is slow: it requires analyzing the universe, for each package.
This commit does something simpler: it just displays the metadata corresponding to the package rendered on the current page. This is consistent with how
ocaml.org
now renders package metadata.For an example of changed behaviour:
dune.3.12.2
declares a conflict against old versions ofmerlin
. the old behaviour would display adune
conflict on themerlin.3.3.9
page.This creates a huge speedup: a 2077s job now takes 183s (11.3 times faster).