-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[wip] script to copy Coq's CI info into the platform #44
base: 2021.02
Are you sure you want to change the base?
Conversation
Regarding choice of CI provider, I recommend GitHub Actions because it gives a long time limit on shared runners (6 hours). Note that I've tried setting up some Windows CI but I've not been successful so far because of my lack of understanding of how the scripts work (https://github.com/Zimmi48/coq-platform/tree/windows-action). |
I'll take it here and see how it goes, thanks! |
It starts to crawl. @MSoegtropIMC it seems the unix script does not have the COQREGTEST flag, so I had to use |
mkdir -p opam/packages/$package/$package.dev/ | ||
if [ -e $TMP/git/$cip/$package.opam ]; then | ||
cp $TMP/git/$cip/$package.opam opam/packages/$package/$package.dev/opam | ||
elif [ -e $TMP/git/$cip/*.opam ]; then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the use case for this second case?
Could there be a default case where the opam file is taken from the coq-extra-dev repo?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sometimes people call, in their repo, the opam file foo.opam
instead of coq-foo
, don't ask me why.
Yes, I thought about that, and maybe the ones in the usual repo should have precedence, and we should also look in the local repo with higher precedence... I think we should think carefully about these rule (I did not yet).
Btw.: I plan to make a script which creates a "smoke test kit" - that is one or at most a few files for each package we ship, which should be compilable with coqc. Maybe you can use this in the platform CI. |
@gares : How shall we proceed with this PR? I could live with the current solution of linking all dev packages and correct it here. Or would you prefer to finish this and link the dev-ci content to Coq master? |
If the .dev packages we have in the main archive point to the branch tracked by Coq, then we can close it. Is it the case? |
I don't think the Coq team updates the .dev opam package when they pin something in Coq master, so the tests in dev-ci are independent from what is tested in Coq master. But it is very close, so I still profit from Coq's CI - most issues we have here are fixed within a day without me doing anything. I meanwhile learned that if I wait 24 hours before reporting an issue upstream I have only 1/3 of the work. In the end the main rationale for tying the versions we test to Coq is saving effort on Coq Platform side. The main rationale for staying independent is conceptual independence and testing if the opam .dev packages actually work - something which has a value on its own. So I would wait and see if the effort is manageable. If yes I would prefer to stay independent, if it is too much work we should tie it together. |
For |
My only "concern" is that I may want a have, say, coq-elpi.dev which points to my master branch, but Coq's ci points to the coq-master branch. I don't, so the .dev package can point to the branch that fits the platform CI purpose, but this scenario is not impossible. If it happens we will need to add one extra .dev package, eg .platform.dev. So I think this PR can be closed. |
But I would archive the work. It might e.g. happen that one day we have several future looking ci branches - now that dev-ci is no longer the master / default branch. |
OK, I guess we can then leave this here as a draft |
@gares : this has been around for a while and I wonder what to do with it. The general Coq Platform concept for dev builds is a bit different (using the dev opam packages) but it might make sense to also have a "Coq master" package pick, which uses this script. What do you think? |
given that now the platform is larger than coq ci, I'm not so sure these scripts are that useful |
I think the main question is if we want to offer a Coq Platform configuration which mimics the Coq master CI package pick - which is not the same as an opam dev package pick. Of course one could also think about keeping the opam extra-dev repo more or less in sync with Coq CI, say with a daily action (which is only run if Coq CI passed). As is .dev hardly builds. I think this would be useful for package maintainers. |
I see, but as I was saying, the scripts would only "pin" some parts of the platform. What about the other packages? We pick the .dev and cross fingers? We don't pick them at all? |
I think we first should discuss if it is desirable to have a dev pick which mimics Coq CI - and then only includes packages which are in Coq CI. How we implement it then is a different question, but I guess this PR would be part of it. maybe we should have this discussion on Zulip ... |
I don't think this would be useful or desirable. |
1 similar comment
This comment has been minimized.
This comment has been minimized.
@Zimmi48 : my thought behind this is that opam dev does not build frequently, while the package pick tested in Coq master CI usually does build. It might help package maintainers to have an easy way to install a close to master version of Coq Platform, and mimicking Coq master CI would IMO be the least maintenance effort to get there. Why do you think this wouldn't be useful? |
The platform contains things that are not in Coq's CI and Coq's CI contains things that are not in the platform. It could make sense to have a variant of the platform with only the intersection of the two (to have higher chances that everything works). But I don't think it makes sense to have a variant of the platform with everything that is in Coq's CI (but maybe that was not what you were proposing anyway). |
I had more in mind that we cut this down to everything which is a dependency of a package in Coq Platform, say CompCert for VST and Flocq for CompCert. This is all what package maintainers need - and this is the intended audience of such a package pick. But then I think we should make sure that all dependencies of packages in Coq Platform are in Coq CI (I think this is the case already, but we should check). |
@gares : I am not sure what to do with this PR. The main Coq Platform CI tests only releases. I just made the .dev pick more complete. As of today it compiles fine. I would treat the .dev CI only as informational, so I am not so sure I want to make it equivalent to the Coq CI - which exists for a different purpose. Coq CI is there to check Coq for regressions, while Coq Platform dev CI is there to get early warnings about potential problems. But I am not sure about this. What do you think? |
I think we can close this, the dev pick is sufficient IMO. |
There was also a recent discussion with @Zimmi48 (after I deleted the dev-ci branch which was still in use in Coq CI). I think in the end I might have 3 picks (all in one branch):
For the second one I will reuse some of the stuff here, so I will keep it open until this is done. |
This is a draft script which:
opam/packages/package/package.dev/opam
file for each package using the upstream opam package (may need fixing, to be seen) and pins the hash currently tested by Coqcoq_platform_packages_ci.sh
containing the list ofPACKAGES
built that wayThe objective is to be able to test the platform scripts on Coq's master on a regular basis.
@Zimmi48 @MSoegtropIMC I think the next step is to hook into some CI infrastructure and see how it goes.
Preferences/Ideas?
Example output: