Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Facing Strange Error Trying to install VST

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Facing Strange Error Trying to install VST


Chronological Thread 
  • From: Michael Soegtrop <MSoegtrop AT yahoo.de>
  • To: coq-club AT inria.fr, Andrew Appel <appel AT princeton.edu>
  • Subject: Re: [Coq-Club] Facing Strange Error Trying to install VST
  • Date: Mon, 28 Sep 2020 12:12:06 +0200
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=MSoegtrop AT yahoo.de; spf=Pass smtp.mailfrom=msoegtrop AT yahoo.de; spf=None smtp.helo=postmaster AT sonic303-48.consmr.mail.ne1.yahoo.com
  • Ironport-phdr: 9a23:Oiz7hhArG2r+kARsiPzNUyQJP3N1i/DPJgcQr6AfoPdwSP37p8uwAkXT6L1XgUPTWs2DsrQY0rWQ6f6rAzBIyK3CmUhKSIZLWR4BhJdetC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBxrwKxd+KPjrFY7OlcS30P2594HObwlSizexfLF/IA+ooQjQucUan4RvIbstxxXUpXdFZ/5Yzn5yK1KJmBb86Maw/Jp9/ClVpvks6c1OX7jkcqohVbBXAygoPG4z5M3wqBnMVhCP6WcGUmUXiRVHHQ7I5wznU5jrsyv6su192DSGPcDzULs5Vyiu47ttRRT1kyoMKSI3/3/LhcxxlKJboQyupxpjw47PfYqZMONycr7Bcd8GQGZMWNtaWS5cDYOmd4YBEvQPPehYoYf+qVUBoxSxCguwC+3gzTFFnWP20K8g3ug9CwzL0g4tEtQTu3rUttX1M6ISXPiywqnJ0TrDb+lZ1in56IPVbx4hpu+DXb1sccrLzkkvDx7Og1KXp4L4ODOayOsNs3SB7+pnTeKikG4mpBtxojiowccgkJTGiZwMx13C6C52z5o7K8eiR05nfd6rDoFQtyeCOoV4XM8vXnxltikkxrAGtpC3YTUHxIo5yhPCdvGJfJaF7g/gWeuRLjl1mmxpdrKxihux70WtzuPxW8ew3VtJridIlMTHuH4K1xzW8MeHS/1981+u2TaOywDT6vxELlsumaXHLJ4hx6Y8lp0PvkvZGy/2nF/6jKiMdkUr4uSn8f7nbanmpp+dKY97lBr+Pr0pmsyiH+Q3LBIOX3SF9uSnzrHj81f5TbNXhfM1iqnUqJHXKMUBqqKkAgJY3Jwv5wu8AjqlytgUgHsKIV1DdRmalYbmIUvOL+r9Dfqng1SjjjNrx/feM736BZXNKHnDn6vvcLph5UNQ0QU+wNNF651IDbEBJunzWkrrtNDCCx82KQ20w+L9BNV7yIwSRHiDA6+DP6PStl+I4fgjLPWLZI8QoDr9Kv4l6ODyjXIhmFIQfLOl0YYWZX22BPhqPkaUbHn2jtscE2oHsRIyTOnwh12DVT5TaWyyX6U55jwjDYKmFoDDSZ6igLydxie7GYVWa3tGC1+WEXfocIKEV+0RZy2MOsNhiCALVaC9S4890hGjrBP1y71+LubN5iIYsY/j28Nu6u3IlRAy8CR0AN6H32GMSWF0hGIISCUs0KBxu0wugmuEhKN/mrlTEcFZz/JPSAYzc5DGi6RTDdzoVx2JV8+RRVLuFty+GTw1ZsorwtkFblp6HZOvgg2VjASwBLpAsr2ABJU59urn2HX+O9x60z6S8ZImglY6WMxXHXyvhql4sQTeUd2a236FnrqnIPxPlBXG832OmC/X5BkBAVxAFJ7dVHVaXXP46NHw50fMVbirUOx1IwJBzsnEJqYYM4S132UDf+/qPZHlW0z0g325XE7a17qMa42sd2hPhHyAWnhBqBga+DO9DSZ7BiqlpDmPXidpE1PkOBu3tLUu7ni8SFQx1UePZkxlkby4o1gEjPybTLUY2bdW4Co=

Dear Andrew,

> (Personally I find this a bit mysterious, as I would have thought that
> this is exactly the purpose of opam itself, but apparently opam needs
> some help.)

The issue is that the version and prerequisite dependencies given in an opam file are not fully tested, and probably are not feasible to test in their generality.

If you have an opam package with 5 dependencies, the accepted version set for each dependency might be say 5 versions. So testing if the information in an opam package is accurate would require testing 5^5 = 3125 different combinations of package versions - each on multiple systems, compilers, .... Typically opam CI tests just one of these combinations. Some of these might not be allowed by version restrictions in the dependencies, but the allowed number can still be large.

Which combination of package versions you get with an "opam install" <some-package> might change dramatically from one day to another. There might be a package in your dependencies which only has an older version which via a chain of version requirements restricts a lot of other packages to an older version - opam telling you that you need Coq 8.7 is not that rare. An update of this one package will lead to a lot of packages changing their version and in the end might break things. So what works one day might not work a week later.

Furthermore installing two opam packages with a common dependency can lead to additional restrictions on the versions of dependencies which will lead to a combination of package versions which is tested with neither package. When installing 80 opam packages (as the Coq platform does) these effects can get very substantial.

On top of this comes the dependency on operating systems (especially the many Linux distributions), compiler versions and computer hardware (an opam install can take > 8 GB of RAM while 4 and 8 GB is still quite common).

Are there ways out of this? Well it is not that easy. One could restrict the dependency specification in opam packages to version combinations which are actually tested in CI. But this would make the dependencies so stiff that one could not install a larger Coq system any more because installing many packages would lead to unsolvable dependency conflicts. One would need a generic algorithms to find the sweet spot in package dependencies between testability and flexibility. Since already solving dependencies for a known set of version restrictions is a NP-complete problem [5][6], I have little hope that we will have this soon.

The idea behind the Coq platform [1][2][3] is to solve this problem by forcing at least all major dependencies in the Coq ecosystem into the same release cadence as Coq itself. Each author of a package provided in the Coq platform is expected to provide a version of the package which is compatible with the latest version of Coq and all other packages in the Coq platform in a reasonable time. This restricts the number of versions combinations to test to *one* while (hopefully) maintaining enough flexibility - or better enough structure - to not lead to unsolvable dependency restrictions. As you can see in the opam patch repository for the Coq platform 8.12 beta1 release [4] even finding this one set of versions requires patches to the opam database.

So yes, opam needs some help but not on its technical side - it is an excellent package manager - but on organizing the Coq opam package database in a way which makes testing it a technically feasible problem. Once we have this, a simple "opam install" should also work fine for most users and the scripts provided by the platform should just be a small extra to simplify the setup for beginners.

Best regards,

Michael

[1] https://github.com/coq/platform/blob/v8.12.0%2Bbeta1/charter.md
[2] https://github.com/coq/platform/blob/v8.12.0%2Bbeta1/README.md
[3] https://github.com/coq/platform/releases/tag/v8.12.0%2Bbeta1
[4] https://github.com/coq/platform/tree/master/opam/packages
[5] http://opam.ocaml.org/doc/External_solvers.html
[6] https://hal.archives-ouvertes.fr/file/index/docid/149566/filename/ase.pdf



Archive powered by MHonArc 2.6.19+.

Top of Page