From jung at mpi-sws.org Tue Sep 19 15:04:53 2017 From: jung at mpi-sws.org (Ralf Jung) Date: Tue, 19 Sep 2017 15:04:53 +0200 Subject: [Iris-Club] std++ and Iris master on opam (and: opam.pins is dead) Message-ID: Hi all, for some time now, we have used the "opam.pins" hack to declare with version of std++ is required to build Iris, and to declare which version of Iris is used by e.g. lambdaRust. We used this hack because opam cannot handle directly depending on a git SHA. Unfortunately, this meant that you could not just "opam install coq-iris" for a development version of Iris, because the Iris -> std++ dependency would have broken all the time. Well, we fixed that! We now have a magic opam repository at that will automatically contain opam versions for every single thing we push to Iris or std++ (master branches only). After doing opam repo add iris-dev https://gitlab.mpi-sws.org/FP/opam-dev.git you can obtain today's Iris via opam install coq-iris.dev.2017-09-19.0 Or maybe you want yesterday's std++? opam install coq-stdpp.dev.2017-09-18.0 This is now the preferred way to install Iris if you want to work *with* Iris, i.e., if you import Iris in your own proofs. For working *on* Iris, we still have `make build-dep` (which has a new hilarious set of hacks replacing opam.pins, but that's a story for another day). If you work on Iris, this means that in the future, if you want to update the build-dependency on std++, you do this by editing the opam file rather than opam.pins. You do not have to care about updating the new opam repository; that will be done automagically by our CI. If you work on a project depending on Iris (e.g. lambdaRust), the project has to be converted away from opam.pins to depend on versions of Iris newer than yesterday's. Please play around with this and let me know what you think! Kind regards, Ralf From mail at robbertkrebbers.nl Tue Sep 19 15:28:08 2017 From: mail at robbertkrebbers.nl (Robbert Krebbers) Date: Tue, 19 Sep 2017 15:28:08 +0200 Subject: [Iris-Club] std++ and Iris master on opam (and: opam.pins is dead) In-Reply-To: References: Message-ID: <0fd9bf0d-ee08-660c-0c86-fbf67bda5491@robbertkrebbers.nl> Hi Ralf, Thanks for implementing this! On 09/19/2017 03:04 PM, Ralf Jung wrote: > If you work on Iris, this means that in the future, if you want to > update the build-dependency on std++, you do this by editing the opam > file rather than opam.pins. You do not have to care about updating the > new opam repository; that will be done automagically by our CI. So, If I understood correctly, the workflow will be as follows: 1. Commit & push to stdpp 2. Wait until the CI has finished, and the commit appears at https://gitlab.mpi-sws.org/FP/opam-dev/ 3. Change the opam file to the version number at https://gitlab.mpi-sws.org/FP/opam-dev/ corresponding to the new commit 4. Commit & push to Iris For dependencies of Iris, step (2) may take quite a while, I suppose? I guess it is a bad idea to take an educated guess of the version number and push to Iris or its dependencies before (2) has finished. Robbert From jung at mpi-sws.org Tue Sep 19 15:34:57 2017 From: jung at mpi-sws.org (Ralf Jung) Date: Tue, 19 Sep 2017 15:34:57 +0200 Subject: [Iris-Club] std++ and Iris master on opam (and: opam.pins is dead) In-Reply-To: <0fd9bf0d-ee08-660c-0c86-fbf67bda5491@robbertkrebbers.nl> References: <0fd9bf0d-ee08-660c-0c86-fbf67bda5491@robbertkrebbers.nl> Message-ID: <61999d8f-a7a1-c97d-d878-832cd22ed355@mpi-sws.org> Hi Robbert, > Thanks for implementing this! > > On 09/19/2017 03:04 PM, Ralf Jung wrote: >> If you work on Iris, this means that in the future, if you want to >> update the build-dependency on std++, you do this by editing the opam >> file rather than opam.pins.   You do not have to care about updating the >> new opam repository; that will be done automagically by our CI. > So, If I understood correctly, the workflow will be as follows: > > 1. Commit & push to stdpp > 2. Wait until the CI has finished, and the commit appears at > https://gitlab.mpi-sws.org/FP/opam-dev/ > 3. Change the opam file to the version number at > https://gitlab.mpi-sws.org/FP/opam-dev/ corresponding to the new commit > 4. Commit & push to Iris > > For dependencies of Iris, step (2) may take quite a while, I suppose? I > guess it is a bad idea to take an educated guess of the version number > and push to Iris or its dependencies before (2) has finished. That is generally correct. For Iris, (2) typically takes less than 3 minutes (plus waiting for a free slot on the CI builder). Currently, we test against the Coq 8.7 branch; if Coq changed since the last build then you have to add another 7 minutes. The version number is pretty predictable: dev.. I wouldn't push based on this, though. Anyway, until the CI is done you will not be able to use opam to install Iris to even see whether e.g. lambdaRust still works -- at least in my workflow, I use opam to install the Iris used by lambdaRust, so even if I guessed the version number correctly I would have to wait. Kind regards, Ralf