You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The archive-mirrors from each repositories currently set in your switch
Currently the latter isn't used very much due to #4830, but as most people who will actually set archive-mirrors manually are most likely using opam >= 2.2, the idea of setting it in opam-repository sounds doable.
However i can see some minor problems with the way opam handles archive-mirrors for repositories.
If one adds several repositories and the all have their archive-mirrors set, then any cache miss will actually try downloading the archive as many times as there are repositories and these urls are not de-duplicated. Meaning that for opam-repository for example, a cache miss will keep sending request to opam.ocaml.org as many times as there are opam-repository forks in the current switch.
These values aren't visible anywhere for regular users. The only way for users to know their values is to do grep archive-mirrors: .opam/repo/*/repo or something of the sort.
These values aren't overridable. If for whatever reason you do not want to use the mirror from a repository, there are currently no ways of doing that without forking it and removing the archive-mirrors field manually, because...
improve the handling of the mirrors by transforming the string list to Set.(OpamUrl.t).t where the values are actually used
add a Repositories configuration section in opam option that displays the value of archive-mirrors for each repository
allow to override the repository configuration with a new opam option --repository argument. Setting it could add a note during opam update to remind them that the value from the repository isn't taken into account
add a new opam admin edit-repo-file command, which would allow to remove or edit fields in the repo file
There are two forms of
archive-mirrors:archive-mirrorsfrom the global options, displayed inopam optionand changeable there (since opamClient: pass dl_cache from initConfig to config #5315). By default empty.archive-mirrorsfrom each repositories currently set in your switchCurrently the latter isn't used very much due to #4830, but as most people who will actually set
archive-mirrorsmanually are most likely using opam >= 2.2, the idea of setting it in opam-repository sounds doable.However i can see some minor problems with the way opam handles
archive-mirrorsfor repositories.archive-mirrorsset, then any cache miss will actually try downloading the archive as many times as there are repositories and these urls are not de-duplicated. Meaning that for opam-repository for example, a cache miss will keep sending request to opam.ocaml.org as many times as there are opam-repository forks in the current switch.grep archive-mirrors: .opam/repo/*/repoor something of the sort.archive-mirrorsfield manually, because...archive-mirrorsfrom therepofile cannot currently be done automatically without assuming a certain format (e.g. Avoid duplicated archive-mirrors: field in the repo file ocaml-opam/opam2web#247) or without usingopam-edTo solve these minor issues, i propose to:
string listtoSet.(OpamUrl.t).twhere the values are actually usedRepositories configurationsection inopam optionthat displays the value ofarchive-mirrorsfor each repositoryopam option --repositoryargument. Setting it could add a note duringopam updateto remind them that the value from the repository isn't taken into accountopam admin edit-repo-filecommand, which would allow to remove or edit fields in the repo file