Hi all,
A note on the continued compatibility of the main package repository with OPAM
1.1, following the github issue at [1]. Sorry for the length; there's a tl;dr
at the start of each paragraph.
## Current situation of OPAM 1.1 support
[TL;DR] it works for existing installations, but newcomers are greeted by
lots of scary warnings and
required to `opam update`.
* The base idea was to redirect OPAM 1.1 clients to a repo at
https://opam.ocaml.org/1.1/ , which is automatically rewritten from the main
(1.2) repo still hosted at https://opam.ocaml.org/ . This parts works quite
well.
* Sadly, a bug in OPAM 1.1 prevents redirection on `opam init`. So OPAM 1.1
will try to load the default repository, in 1.2 format, until you run `opam
update` the first time.
* The current consequence of this is frightening screens full of errors at
`opam init` with OPAM 1.1, but mostly harmless. This is documented in the FAQ
[2], but is likely to turn away new 1.1 users, e.g. on Ubuntu.
* Another OPAM 1.1 bug causes a _fatal_ parsing error on the `!=` comparator in
package version constraints. The consequence is that, were we to start using it
in the (1.2) repo, OPAM 1.1 will fail to `init` before getting the chance to be
redirected, unless you explicitely direct it to the new repo with `opam init
https://opam.ocaml.org/1.1`, as documented in the FAQ.
* A completely different issue, the OPAM package in Ubuntu "utopic" has a
broken solver interface [3], it'll seem to work at first, until you try to
upgrade.
## Where we want to go, and consequences
[TL;DR] some 1.2 enhancements to the repo are blocked unless we accept to
turn the scary warnings
into a fatal error. Specific init command (workaround) and existing
setups would be
unaffected.
* The `!=` limitation is annoying because it forces ugly workarounds in the
current, main repository (detailed reasons in [1])
* It doesn't look like much but it actually blocks widespread usage of the new
OPAM 1.2 features (new fields like `dev-repo`, etc.) that go through PR #3143
[1] for some sanitization prerequisites. In short, I could change #3143 not to
use `!=` but that would become an issue on the longer term.
* If we accept `!=` in the repo, OPAM 1.1 will _fail_ to initialize rather than
output lots of errors that get fixed by `opam update`. Existing installations,
or `opam init https://opam.ocaml.org/1.1` will still work without problem.
* At some point we'll want to freeze 1.1 support anyway ; but stopping updates
to opam.ocaml.org/1.1 won't solve this specific issue
## Remarks
[TL;DR] some other solutions possible, but mostly: how important is OPAM 1.1
support at the moment ?
* An unpleasant, but reliable workaround could be to redirect the main
repository to opam.ocaml.org/1.2 and serve a compatible repository at
opam.ocaml.org/ . This may get misleading for users, and on the website.
* On a plus note, the "scary warnings" do mention upgrading OPAM.
* This raises the main question: how important is OPAM 1.1 support, how many
users will encounter these issues, and when can we safely drop it ? I haven't
heard many complaints, but the users hit by this aren't the most likely to give
feedback (but maybe to turn around).
Sorry for this sad state of affairs, remarks welcome !
Louis
[1] https://github.com/ocaml/opam-repository/pull/3143
[2]
http://opam.ocaml.org/doc/FAQ.html#Gaspopaminitgivesmescreensfullsoferrorsaboutupgrading
[3]
http://opam.ocaml.org/doc/FAQ.html#OPAMfailstryingtoreinstallalreadyinstalledpackagesatfirstupgrade
_______________________________________________
opam-devel mailing list
[email protected]
http://lists.ocaml.org/listinfo/opam-devel