For this specific bug,running "make tests" would have been enough (I just tested on my VM). For being defensive and having ./configure refuse newer version of dependencies, the m4 macros don't seem to provide version filtering (only API testing. Here the API was compatible, anyway that would have failed at build-time). Does ocamlfind even provide an easy way to get the version of a package?
But my feeling is that what happened really shouldn't happen -- I mean, a small, but API compatible change, that would cause the older version to break _but not the newer version, just by chance_, so that it could get unnoticed ? What are the odds of this happening _again_ ? ;)
On using the -full archive, that can be a good thing, but it probably won't go well with the Debian/Ubuntu policies. Really, packaging scripts should run "make tests"; not sure if it's worth preventing upgrades in ./configure -- although that at least gives the opportunity to fix ./configure (and hopefully check that nothing is broken) by hand.
Cheers,
Louis
> - Anil Madhavapeddy, 12/12/2014 15:32 -
> Excellent detective work all around -- thanks for helping to pin this down,
> Louis and Roberto. Ideally Ubuntu will just upgrade to OPAM 1.2 rather than
> just fix Dose
>
> Louis -- can we do anything in OPAM 1.2 to ensure that packagers don't get
> this mixed up in the future via a failing configure script, as David suggests?
> In OpenBSD, I elected to import the -full archive rather than piecemeal
> packaging of the libraries required to build OPAM.
>
> -anil
>
>
> > On 11 Dec 2014, at 13:56, Roberto Di Cosmo <roberto@xxxxxxxxxxx> wrote:
> >
> > Just for completeness, here is the info I can confirm after checking with
> > the Debian side:
> >
> > - in Debian Jessie and Sid, opam 1.2 is now correctly packaged together with
> > aspcud 1.9 and dose 3.3
> >
> > - unfortunately, the time-boxed development process of Ubuntu, with a release
> > in mid-October, ended in picking up an inconsistent set of versions of our
> > beloved packages from the Debian timeline; this is not something that only
> > happen to us, it is intrinsically related to these imperfectly aligned
> > processes, and I suppose the Ubuntu people will be quick to act on this,
> > as they are probably used to this kind of events
> >
> > --
> > Roberto
> >
> > On Thu, Dec 11, 2014 at 10:40:57AM +0900, Louis Gesbert wrote:
> >> It's indeed completely broken, that's bad news indeed.
> >>
> >> But I confirm my diagnostic: aspcud is not in cause, Dose is (well, or the dose interface in opam 1.1, not trying to put the blame on anyone). The problem happens even without aspcud installed.
> >>
> >> Here is the original report: https://github.com/ocaml/opam/issues/1683
> >>
> >> Opam build got broken between 1.1.1-1 (trusty) and 1.1.1-1build3 (utopic) because the dose version was upgraded from 3.1.3-7build1 to 3.2.2-2build1. It's very painful when everything types and compiles after an upgrade, but gets subtly broken :(
> >>
> >> I filed a bug at https://bugs.launchpad.net/ubuntu/+source/opam/+bug/1401346
> >> Hope they can act on it quickly...
> >>
> >> Thanks for notifying and helping trace this!
> >> Louis
> >>
> >>> - Anil Madhavapeddy, 10/12/2014 14:54 -
> >>> I just reproduced it by following the referenced bug report.
> >>>
> >>> From a fresh Ubuntu 14.10, if I do:
> >>>
> >>> $ sudo apt-get install opam camlp4-extra aspcud
> >>> $ opam init -a
> >>> $ opam install mirage -y
> >>> $ eval `opam config env`
> >>>
> >>> At this point some packages have been installed and mirage is installed.
> >>>
> >>> Now however, if I use mirage it invokes opam install again and packages
> >>> are reinstalled as a duplicate. See below:
> >>>
> >>> opam install --yes conduit cow cowabloga crunch cstruct io-page lwt mirage-clock-unix mirage-conduit mirage-console mirage-fs-unix mirage-http mirage-net-unix mirage-types mirage-unix tcpip vchan
> >>> [NOTE] Package mirage-types is already installed (current version is 2.1.0).
> >>> [NOTE] Package lwt is already installed (current version is 2.4.6).
> >>> [NOTE] Package io-page is already installed (current version is 1.1.1).
> >>> [NOTE] Package cstruct is already installed (current version is 1.4.0).
> >>> [NOTE] Package crunch is already installed (current version is 1.3.0).
> >>> [WARNING] mirage-unix.2.1.0 references unknown package mirage-profile
> >>> The following actions will be performed:
> >>> - install ocamlfind.1.5.5 [required by cowabloga, crunch, mirage-fs-unix, mirage-http]
> >>> - install base-no-ppx.base [required by cowabloga, mirage-fs-unix, mirage-http]
> >>> - install camlp4.4.01.0 [required by cowabloga, mirage-fs-unix, mirage-http]
> >>> - install base-threads.base [required by cowabloga, mirage-fs-unix, mirage-http]
> >>> - install base-bigarray.base [required by cowabloga]
> >>> - install base-unix.base [required by cowabloga, mirage-fs-unix, mirage-http]
> >>> - install xmlm.1.2.0 [required by cowabloga]
> >>> - install uutf.0.9.3 [required by cowabloga]
> >>> - install stringext.1.1.0 [required by cowabloga, mirage-http]
> >>> - install ssl.0.4.7 [required by cowabloga, mirage-fs-unix, mirage-http]
> >>> - install re.1.2.2 [required by cowabloga, mirage-http]
> >>> - install ounit.2.0.0 [required by cowabloga, mirage-fs-unix, mirage-http]
> >>> - install hex.0.1.0 [required by cowabloga]
> >>> - install cmdliner.0.9.5 [required by cowabloga, crunch, mirage-http]
> >>> - install base64.1.0.0 [required by cowabloga, mirage-http]
> >>> - install base-bytes.legacy [required by cowabloga, mirage-fs-unix, mirage-http]
> >>> - install ulex.1.1 [required by cowabloga]
> >>> - install type_conv.111.13.00 [required by cowabloga, mirage-fs-unix, mirage-http]
> >>> - install optcomp.1.6 [required by cowabloga, mirage-fs-unix, mirage-http]
> >>> - install omd.1.2.3 [required by cowabloga]
> >>> - install jsonm.0.9.1 [required by cowabloga]
> >>> - install lwt.2.4.6 [required by cowabloga, mirage-fs-unix, mirage-http]
> >>> - install crunch.1.3.0
> >>> - install sexplib.111.25.00 [required by cowabloga, mirage-fs-unix, mirage-http]
> >>> - install fieldslib.109.20.03 [required by cowabloga, mirage-http]
> >>> - install dyntype.0.9.0 [required by cowabloga]
> >>> - install ocplib-endian.0.7 [required by cowabloga, mirage-fs-unix, mirage-http]
> >>> - install uri.1.7.2 [required by cowabloga, mirage-http]
> >>>
> >>> I've not managed to narrow it down further to a smaller test case, but the OPAMDEBUG
> >>> gist is up at: https://gist.github.com/avsm/62e28b05e2b282ed5fbe
> >>>
> >>> Any inspiration from there from the CUDF interactions in the above gist?
> >>>
> >>> -anil
> >>>
> >>>> On 10 Dec 2014, at 01:15, Louis Gesbert <louis.gesbert@xxxxxxxxxxxx> wrote:
> >>>>
> >>>> I've been trying to reproduce the issue, but things seem fine, sort of:
> >>>>
> >>>> From what I could gather:
> >>>> * trusty (14.04LTS) has 1.1 and aspcud 1.8, it works fine
> >>>> * utopic (14.10, latest) has 1.1 and aspcud 1.9
> >>>> * vivid (15.04, unreleased) has OPAM 1.2, so it's ok. Recommends aspcud, too
> >>>>
> >>>> Note that there should be no conflict that I know of between OPAM 1.1 and aspcud 1.9 -- it's just that newer OPAM will benefit from the more advanced criteria offered. Where we have been hitting problems on Debian was by compiling with a different version of *Dose* [1] (which has a much less standardised interface).
> >>>>
> >>>> There is still a known issue, though, the missing dependency on m4 that will bite you as soon as you try to install ocamlfind [2] and which is very badly reported with
> >>>> ```
> >>>> ===== ERROR while installing ocamlfind.1.5.5 =====
> >>>> Internal error:
> >>>> "ocamlfind": command not found.
> >>>> ```
> >>>>
> >>>> so it would still be nice if they could backport (so that there is a better error) or recommend m4.
> >>>>
> >>>> Cheers,
> >>>> Louis
> >>>>
> >>>>
> >>>> [1] https://github.com/ocaml/opam/issues/1683
> >>>> [2] https://github.com/ocaml/opam/issues/1658
> >>>>
> >>>> - Anil Madhavapeddy, 09/12/2014 11:16 -
> >>>>> It looks like the latest Ubuntu has a completely broken OPAM out of the box since it ships with OPAM 1.1.1 and Aspcud 1.9 (which requires OPAM 1.2 due to a changed solver interface).
> >>>>>
> >>>>> This leads to issues such as this: https://github.com/mirage/mirage-skeleton/issues/59
> >>>>>
> >>>>> Does anyone know how to get in touch with Ubuntu folk to request a backport of OPAM 1.2 to Ubuntu 14.10?
> >>>>>
> >>>>> -anil
> >>>>> _______________________________________________
> >>>>> opam-devel mailing list
> >>>>> opam-devel@xxxxxxxxxxxxxxx
> >>>>> http://lists.ocaml.org/listinfo/opam-devel
> >>>> _______________________________________________
> >>>> opam-devel mailing list
> >>>> opam-devel@xxxxxxxxxxxxxxx
> >>>> http://lists.ocaml.org/listinfo/opam-devel
> >>>>
> >>>
> >>> _______________________________________________
> >>> opam-devel mailing list
> >>> opam-devel@xxxxxxxxxxxxxxx
> >>> http://lists.ocaml.org/listinfo/opam-devel
> >> _______________________________________________
> >> opam-devel mailing list
> >> opam-devel@xxxxxxxxxxxxxxx
> >> http://lists.ocaml.org/listinfo/opam-devel
> >
> |