-
Notifications
You must be signed in to change notification settings - Fork 20
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
CI on macOS failing due to IQTREE #382
Comments
This seems persistent, so I suspect some issue with an IQ-TREE version change in Bioconda, which is used to setup and test an ambient runtime for CI. Notably, the last successful CI run on 23 July got |
|
The @corneliusroemer I think you might want to look into this? It seems to me the build changes in bioconda/bioconda-recipes@f8218b4 broke the osx-64 build, at least on arm64 hardware. I can't test it on x86_64 hardware at the moment. |
The latest version will now use Conda's osx-arm64 channel on macOS when available. As it seems we're encountering issues with osx-64 packages on arm64 hardware¹, let's see if this switch helps avoid those issues. ¹ <#382>
Ah damn. I did see this illegal instruction in local tests but didn't connect the dots. Need to disable AVX for the intel build so it can be emulated by Rosetta2. This is similar to e.g. https://news.ycombinator.com/item?id=25547198 |
@corneliusroemer Ah, that makes sense. Will you handle fixing the Bioconda iqtree build? |
summarizing #384 (comment) #384 fixes the illegal instruction for the ambient runtime tests, by causing the set up to use the osx-arm64 package instead of the osx-64 package. This avoids the AVX instructions in the latter that aren't emulated by macOS Rosetta 2. However, we then run into the same illegal instructions in the Conda runtime tests since our nextstrain-base package is only published for osx-64 and incorporates the bad iqtree build. There are two sustainable ways forward:
Notably, (1) requires no changes downstream and will fix the issue for anyone else who's installing osx-64 packages on arm64 hardware, unlike (2). But also, we want to do (2) anyway. |
@tsibley sorry for the disturbance I caused here. I've now disabled AVX for both iqtree and cmaple bioconda recipes, so this issue should also be fixed upstream. I've tested that I can run the new iqtree osx-64 build through Rosetta2. As an aside, the latest macOS 15 (=Sequoia) currently in public beta will add Rosetta2 support for AVX. Won't have an impact here as we'll want to stay compatible with old OSes, but interesting coincidence. Fixes: |
Fixed now after having triggering conda-base CI. A third option would have been to exclude the offending iqtree build in conda-base recipe. |
@corneliusroemer Awesome, thank you. 🙏 No worries about the breakage. It's hard to foresee.
That was the first thing I looked into, but I don't think it's possible to exclude a specific Conda package build, just a package version (which would have been too broad an exclusion). I tried a few things based on what I knew about package specs, was unsuccessful, then re-read the package specs spec and concluded it wasn't possible. |
The latest version will now use Conda's osx-arm64 channel on macOS when available. While the original reason for this change was because we were encountering issues with osx-64 packages on arm64 hardware¹, this upgrade alone wasn't enough to fix our issues.² Still, let's upgrade since v3 is the supported version, and it'll be good to use non-emulated osx-arm64 binaries going forward anyway. ¹ <#382> ² <#384 (comment)>
That peaked my curiosity and I went down the rabbit hole looking into conda match specs to see if this was at all possible and the answer is yes and no. In theory, match specs support regexes in build numbers, so to exclude a particular build, the following should work:
This would exclude pretty much only the exact build in question (except possibly also the build number 2 of the next version in case the build string doesn't change). In practice, conda and micromamba v1 have issues with regexes like that. However, micromamba v2 will work with this. Not sure about boa - since we use it as our build system that's what really matters here. Maybe worth bearing in mind to try out if we ever need to exclude a particular build in the future. |
@corneliusroemer Ah, nice, thanks for looking into that. I vaguely recall using/seeing the square-bracketed match selectors now. Where are those documented? I was looking at the package match specs docs. I'm also not sure the square-bracketed match selectors are valid within a recipe file; are they only supported on the command-line? |
IQTREE is triggering an illegal instruction:
The text was updated successfully, but these errors were encountered: