-
Notifications
You must be signed in to change notification settings - Fork 41
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
Windows-ci actions mingw32 fail for Clp and Cbc because metis package not found #25
Comments
Hi @tkralphs This issue of missing metis and lapack for msys2 for mingw32 (for Windows) is still breaking the Windows-ci builds for Cbc, Osi, etc. The easiest way around is to simply drop mingw32 32-bit Windows builds from the matrix in Windows-ci--I don't believe these are much used anyway, but I could be wrong. |
See also MSYS2 - Starting to drop some 32-bit packages and Cygwin x86 end-of-life. |
Sorry for the delay. Sure, dropping 32-bit support seems to make sense. How urgent is this? It would be good to take a look at the whole picture and sync everything up. I have the feeling that some one-off stuff has snuck in over the last year or so and I wanted to try to sync everything up. Also, there are some other weird deprecations and failures lurking, though I can't recall right now what they are. I would need to find a little time to do all that. We can also partner on that if you want. If it's urgent and you just want a quick fix, I don't object to doing PRs for just the Cbc stack. |
Not urgent for me--This mingw32 issue leads to failed red x's in the checks of PRs. Not sure if PRs are used a lot in coin-or, but soon it'll just be normal to merge PRs with failed checks, and all will go down the drain fast after that (a little overdramatic..)
Happy to help. I see there are like 11 projects with linux/windows-ci workflows in coin-or. I'll have a look at recent runs and compare masters and current stables. Something like that? |
Yes! Look at the recent runs and try to spot any deprecation warnings, etc. I think there may be some images that are being sunsetted that we are still using and I know there are some actions that are no longer maintained that we should move away from (off the top of my head, there is one that uploads assets to releases, I think?). But also look at differences between the config.yml for stable versions and master versions across projects. Ideally, they would all be identical, which makes maintenance easier. I think there are some small difference that are unavoidable, but what I'm looking for are things I fixed in one project where the fix should be applied to all others and I just never got to it. Stuff like that. |
I've firstly compared the various linux-ci. Many obvious differences that can be harmonized, such as the outdated OS matrix. But I'm not so sure about the following. Added my proposals. Comments? General:
Cbc:
Cgl:
DyLP:
SYMPHONY:
|
@tkralphs Any comments for the linux-ci harmonization proposals? |
Oops, sorry that I missed this!
|
Apologies, I got fed up now that both the linux (macos-13 issue) and windows (this here) were Failing, so I committed linux-ci and windows-ci changes starting with CoinUtils master and stable. Thanks for reviewing so thoroughly, and what an impressive memory!
I dont understand exactly. The "visibility=hidden" is done mostly in master branches.
No, this is not about the upload-release-asset (which indeed seems to work), but about upload-artifact for pull requests.
Yes, I havent gotten around to that part of the review yet, though that is somewhat easier than harmonizing all those changes.. |
Hmm not sure why I did the quote indentation backwards (indenting my replies more than your originals).
It is possible to expose only some of the functions as an API wile hiding others. This is done in Windows using In the new build system used by The |
Ah, so this only affects artifacts attached to builds from PRs? I suppose you are right. This probably came up in MibS then because I think there was a PR in which a stable was being merged back into master. OK, so this should probably not be an issue. |
Starting with CoinUtils I updated now also the deprecated actions (except upload-release-asset) for the windows-ci and linux-ci. About the name used in action\upload-artifact for PR assets: |
Great! So what about the deprecated |
The github page of upload-release-asset mentions softprops/release-gh-action. |
For linux-ci, update actions and macos-13 linker error See coin-or/COIN-OR-OptimizationSuite#26 For windows-ci, update actions and remove 32-bit builds via mingw32. See coin-or/COIN-OR-OptimizationSuite#25
For linux-ci, update actions and macos-13 linker error See coin-or/COIN-OR-OptimizationSuite#26 For windows-ci, update actions and remove 32-bit builds via mingw32. See coin-or/COIN-OR-OptimizationSuite#25
For linux-ci, update actions and macos-13 linker error See coin-or/COIN-OR-OptimizationSuite#26 For windows-ci, update actions and remove 32-bit builds via mingw32. See coin-or/COIN-OR-OptimizationSuite#25
I just realized that I forgot to compare also the Windows-ci between master and stable.
|
For linux-ci, update actions and macos-13 linker error See coin-or/COIN-OR-OptimizationSuite#26 For windows-ci, update actions and remove 32-bit builds via mingw32. See coin-or/COIN-OR-OptimizationSuite#25
For linux-ci, update actions and macos-13 linker error. See coin-or/COIN-OR-OptimizationSuite#26 For windows-ci, update actions and remove 32-bit builds via mingw32. See coin-or/COIN-OR-OptimizationSuite#25
For linux-ci, update actions and macos-13 linker error. See coin-or/COIN-OR-OptimizationSuite#26 For windows-ci, update actions and remove 32-bit builds via mingw32. See coin-or/COIN-OR-OptimizationSuite#25
For linux-ci, update actions and macos-13 linker error. See coin-or/COIN-OR-OptimizationSuite#26 For windows-ci, update actions and remove 32-bit builds via mingw32. See coin-or/COIN-OR-OptimizationSuite#25
For linux-ci, update actions and macos-13 linker error. See coin-or/COIN-OR-OptimizationSuite#26 For windows-ci, update actions and remove 32-bit builds via mingw32. See coin-or/COIN-OR-OptimizationSuite#25
Thanks for the info!
I'll give that a try..
Do I understand correctly that in order to create a Release, you manually create a Tag? This then automatically triggers a run of the Release action (on: push: tag: ), which creates a Release. Next, the windows-ci and linux-ci are triggered upon creation of a Release (on: push: release: ) and they finally both upload their binaries to that one Release. In this way, we get one Release with assets from both linux-ci and windows-ci. Both
The But first I'll complete the first harmonization. Let me know if you have any comments! |
Ah, OK, I didn't think about the fact that the tagging itself could be part of the release process. Yes, I think you understand the flow correctly. Currently, the tags are not created manually per se, but by a script that does a lot of different things related to creating a release. The current version is here (there is a similar but different one for the master branches). It automatically determines the release version number, changes it in the appropriate places, re-runs the autotools, runs the unit test, etc. For an example, look at the last release of Cbc here. Note that it says the commit doesn't belong to any branch. The last step of the script is to create the tag, which is done in a separate commit outside the stable branch so as not to pollute the stable branch with the change of version number, etc., which would need to be immediately changed back. So there is probably no really easy way to have the tag created as part of an action, since that probably assumes the release is the tip of some branch, which it isn't for us.
|
Unfortunately, it seems GitHub is maintaining fewer and fewer actions itself, relying instead on the community.
Honestly, I'd go with Dependabot and then pinning only the major release of the dependency ( [Edit] |
OK, I get your point. I originally thought of this because I thought we might be forced to build some custom actions to get what we want, starting from existing ones. If we end up wanting tweaks, but also want to get updates, then forking makes sense. But this probably isn't necessary after all.
OK, sure, there is a small risk that a new patch release could introduce something malicious, but I guess we can live with that.
It's not that clear to me. I did receive some alerts over time about projects I don't directly manage, but I've never seen an automated PR like you demonstrated, but I don't think we have that many dependencies explicitly visible to Github. Believe it or not, I cannot see an easy way to know whether security features are enabled organization-wide. I hit the "Enable All" button for as many features as I could, but the button is still available to hit again, which is weird. Anyway, as far as I know, yes, now, it is enabled for all projects. |
I just became aware that there are runners for MacOS on Apple Silicon, we could consider adding those. Basically, it should be just be a matter of adding
|
OK, do you propose to add as third macos matrix entry after the macos-13 clang and gcc entries, or replace the two macos-13 with this macos-14 with that arch? |
I was proposing to add as a third entry, since I think we still want the Intel-based builds for now. |
So macos-14 builds fine. Note I created an Issue for the coin-or-tools platform-analysis-tools for wrong macos version string, which seems to have been around for a while (macos-12 artifacts are called "macos106", e.g.) |
For linux-ci, update actions and macos-13 linker error. See coin-or/COIN-OR-OptimizationSuite#26 For windows-ci, update actions and remove 32-bit builds via mingw32. See coin-or/COIN-OR-OptimizationSuite#25
@tkralphs Thanks for fixing platform-analysis-tools. With the exception of the create-release and upload-release-assets outdated issue, all changes to windows-ci and linux-ci are now pushed or will be pushed shortly:
These changes are committed to Cbc, Clp, Cgl, CoinUtils, Osi master and latest stables. TODO: Now creating PRs for master and stables for CHIPPS-ALPS, etc. Some notes:
|
@tkralphs How shall I do the Windows-ci updates for the other projects, notably for the MSVS (Visual Studio) build steps? I realize for MSVS these add a lot of steps that are not used in these projects. Therefore, I can either
|
Hmm, I thought I responded to this, but I guess I didn't! I needed to fix up the MibS CI to make a release and for that one, I left out the MSVS steps altogether. Having two "templates", one for projects with VS solutions and one for projects without doesn't seem too bad. But it occurs to me that the real solution is probably to have a fourth yaml file that does the MSVS and just isn't included in the repos where we don't need it. Is there a down side to that, aside from the fact that there is some work involved in modifying lots of files one more time? |
Thanks for your feedback and good point!
But the current Windows yaml indeed has "if matrix.arch == 'msvs'" in about half the steps. First, for the remaining projects I'll leave out the MSVS steps altogether like you did. |
I created all PRs for master and stable for CHiPPS-ALPS, CHiPPS-BiCePS, CHiPPS-BLIS, MibS, Symphony and DyLP. All the CHiPPS-* projects PRs checks pass and are awaiting your review. The PR for MibS stable (which you had already updated) includes the 'remaining' minor updates to get also MibS stable aligned to the other yamls. Unfortunately, the DyLP master PR but also the Symphony master PR and consequently also MibS master PR have issues in the Linux builds. I had a look, but I cant see how to fix these issues. Any suggestions? |
Hmm, that is weird. The SYMPHONY issues is that clang indeed does not support |
The problem seems to be that you removed the It's probably best to add it back everywhere, since otherwise, configure has no way of knowing whether it's using clang or gcc and this could matter at some point, though it doesn't seem to now. Having said that, I know it could be a huge pain to do that so we can always fix this in the next round. |
The DyLP error seems to be a legit issue that needs to be addressed by the author, so we can just leave that one sit for now. |
Sorry about that! Could it be that originally only SYMPHONY and MibS use clang with "CXX=clang++"?
Do you mean that CXX=clang++ should be in the baseline yml used for linux-ci for all projects? |
Yes, that is entirely possible.
It's not so much that it's an exception for SYMPHONY and MibS, it's more that we are getting lucky to a certain extent that this is working with most projects. I could imagine any number of things going wrong at some point in the future due to the configure script thinking that it is working with It's not a big deal for this to wait until our next batch change for some other reason, but in the long run, I guess it should be done. |
@tkralphs Thanks for explaining why we need to add Regarding splitting Windows builds for Visual Studio ('msvs') to a separate yaml: I'll update the masters and stables of Cbc, Clp, Cgl, CoinUtils and Osi with this split msvs. Once that is completed, I propose to close this issue. |
Sounds good, thanks so much for your help on this and for pushing it ahead! |
The split of windows ci is completed for masters and stables of Cbc, Cgl, Clp, Osi, and CoinUtils. All the PRs are still awaiting approval for masters and stables of linux and windows ci (without the msvs steps) for CHiPPS-*,MibS, SYMPHONY and DyLP, outside of my control. Overall, this closes this issue. |
…load artifact [master] (#32) * Update linux-ci and windows-ci for outdated actions and build issues For linux-ci, update actions and macos-13 linker error. See coin-or/COIN-OR-OptimizationSuite#26 For windows-ci, update actions and remove 32-bit builds via mingw32. See coin-or/COIN-OR-OptimizationSuite#25 * Add macos-13, always upload artifact, no MD in enable-msvc * Update linux-ci.yml for new tools for macos
All PRs have been merged. I guess we should archive the "standard" version of these files here: https://github.com/coin-or/coinbrew/tree/master/.ci What is there now is old, from before we moved to Github Actions. |
Since ~ 14 DEC 2023, the mingw32 windows-ci actions for Clp and Cbc fail with
This comes up in open PRs such as CBC PR 630.
This still works fine for mingw64 builds where this resolves to the mingw-w64-x86_64-metis-5.1.0-4 package.
I'm not familiar with pacman under msys2, but indeed the metis (and lapack) package is not listed on the mingw32 package list but is listed on the mingw64 list.
Any suggestions how to fix this? Get the package from somewhere else?
We could consider retiring the Windows 32-bit builds, or building them without Metis? The Windows MSVS and MSVC builds already don't use metis, though that is not a feature.
The text was updated successfully, but these errors were encountered: