-
Notifications
You must be signed in to change notification settings - Fork 133
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
feat: add Linux aarch64/arm64 support for bioconda-utils #866
Conversation
67d4efe
to
c193c38
Compare
Test passed in my local fork: Yikun#2 |
This one needs a rebase. |
A question about bioconda-utils/bioconda_utils/utils.py Lines 1136 to 1140 in 1923d24
With this PR, all aarch64 pkg without verison bump (even with the bioconda-utils/bioconda_utils/build.py Lines 324 to 327 in 1923d24
I'm not sure what's the meaning this exception? What's the meaning of cc @bgruening @epruesse Is this behavior normal? Would you give some idea on here? (I also dump the values compared to x86 to see how bioconda-utils/bioconda_utils/utils.py Line 1119 in 1923d24
|
I think I understand the meaning of And it's ready for review! |
Yes, see in matrix :) What is your deployment strategy for the entire repo? Should we have an initial allow list and migrate single recipes one by one? |
ff3869f
to
178c720
Compare
@bgruening I thought the strategy might be: Step 1: Support bioconda-utils on Linux aarch64. (This PR)
Step 2: Support bioconda-utils mulled test on Linux aarch64 (depends on bioconda/bioconda-containers#55 and this PR)
(After step1 / step2 completed, users can build their wanted packages in a local aarch64 env) Step 3: Run bulk test on Linux aarch64 and get build/test results
Step 4: Upload all passed package and enable Linux aarch64 CI.
This is just an initial idea, there is no doubt that the bioconda team has a more professional perspective, so we'd also like to hear your suggestions, any thoughts? |
Signed-off-by: Yikun Jiang <yikunkero@gmail.com>
I pick two packages randomly to test the build / test / push step:
All is well! Feel free to tell me if any other preworks should be done before merged. |
@bgruening Is there any way to run all package build/test without failfast but also consider dependency?
I hope there is a way like:
but also consider the dependency, otherwise we have to run above command multiple times when publish aarch64 at first time. |
@Yikun yes this should be possible. We are doing this on the bulk branch. I think if you try your rebuild on this branch it should work. Background is that we use this branch to bulk-rebuild the entire tree against new version-pins and 100 of package-updates at once. |
@bgruening OK, thanks for your reply. Do you think it's time to get this PR merge? This will help to setup arm CI and also help to build bioconda on aarch64, otherwise we have to apply the change and do local build in each CI env. Besides |
What command one should use to build multiple packages ? In parallel or sequentially, but without stopping on the first failed package. I tried
on both
for |
I think it should be:
|
@@ -28,12 +37,19 @@ jobs: | |||
tag=${{ steps.release.outputs.tag_name }} | |||
printf %s "::set-output name=tag::${tag#v}" | |||
|
|||
- name: Build Image | |||
if: ${{ steps.release.outputs.release_created }} |
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.
Why did you remove this?
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.
Oh, good catch. It was the bad copy paste from build-image.yml
.
Resolved!
Signed-off-by: Yikun Jiang <yikunkero@gmail.com>
🤖 I have created a release \*beep\* \*boop\* --- ## [1.6.0](https://www.github.com/bioconda/bioconda-utils/compare/v1.5.7...v1.6.0) (2023-05-02) ### Features * Add --mulled-conda-image ([#867](https://www.github.com/bioconda/bioconda-utils/issues/867)) ([1923d24](https://www.github.com/bioconda/bioconda-utils/commit/1923d24c4f3cd38740ecfbf240b92d5eb1432e09)) * add Linux aarch64/arm64 support for bioconda-utils ([#866](https://www.github.com/bioconda/bioconda-utils/issues/866)) ([794ec06](https://www.github.com/bioconda/bioconda-utils/commit/794ec068afd3b1eaababb79e2680cf2ad3fdc1a2)) ### Bug Fixes * allow lint for blacklist to see blacklisted recipes ([#863](https://www.github.com/bioconda/bioconda-utils/issues/863)) ([0e63e73](https://www.github.com/bioconda/bioconda-utils/commit/0e63e73c22e3c1160eb5c8ad3f35c34ac4ea6f27)) * fix autobump ([#865](https://www.github.com/bioconda/bioconda-utils/issues/865)) ([b6b674c](https://www.github.com/bioconda/bioconda-utils/commit/b6b674ca81326a6bd6700cb9802b3d7440c08762)) ### Performance Improvements * upgrade to latest conda, conda-build, and boa versions ([#872](https://www.github.com/bioconda/bioconda-utils/issues/872)) ([21a6452](https://www.github.com/bioconda/bioconda-utils/commit/21a6452fcad99b78f976746a2b14339e094327df)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
matrix: | ||
include: | ||
- arch: arm64 | ||
image: bioconda-utils-build-env-cos7-aarch64 |
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.
https://quay.io/repository/bioconda/bioconda-utils-build-env-cos7-aarch64 gives me 404
Is there a release after the merge of this PR ?
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.
Seems only repos are created:
https://quay.io/repository/bioconda/bioconda-utils-build-env-cos7-aarch64?tab=tags&tag=latest
But docker image fail to push due to auth reason:
https://github.com/bioconda/bioconda-utils/actions/runs/5200214305/jobs/9378654544
⏳ Pushing "bioconda-utils-build-env-cos7-aarch64:latest, bioconda-utils-build-env-cos7-aarch64:2.3.1" to "***/bioconda-utils-build-env-cos7-aarch64:latest, ***/bioconda-utils-build-env-cos7-aarch64:2.3.1" respectively as "***"
/usr/bin/podman push --quiet --digestfile bioconda-utils-build-env-cos7-aarch64-latest_digest.txt bioconda-utils-build-env-cos7-aarch64:latest ***/bioconda-utils-build-env-cos7-aarch64:latest --tls-verify=true --creds=***:***
Error: writing blob: initiating layer upload to /v2/bioconda/bioconda-utils-build-env-cos7-aarch64/blobs/uploads/ in quay.io: unauthorized: access to the requested resource is not authorized
Removing temporary Podman image storage for pulling from Docker daemon
/usr/bin/podman --root /tmp/podman-from-docker-KJX7Zt rmi -a -f
(node:12371) [DEP0147] DeprecationWarning: In future versions of Node.js, fs.rmdir(path, { recursive: true }) will be removed. Use fs.rm(path, { recursive: true }) instead
(Use `node --trace-deprecation ...` to show where the warning was created)
Error: podman exited with code 125
Error: writing blob: initiating layer upload to /v2/bioconda/bioconda-utils-build-env-cos7-aarch64/blobs/uploads/ in quay.io: unauthorized: access to the requested resource is not authorized
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.
@johanneskoester Would you mind taking a look? Maybe we need some configure on Quay bioconda 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.
also cc @bgruening
https://github.com/bioconda/bioconda-utils/actions/runs/5471986195/jobs/9963670995 Would you mind taking a look?
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.
Friendly ping!
Could someone please push the new Docker image for aarch64 ? Thank you!
Does this work already? I would like to make my recipes available for linux arm64. They would need a different |
Now you can build the aarch64 package in your linux arm64 env locally by below cmd:
We still need to support [1][2] before pulish the bioconda packages. [1] Support mulled test: bioconda/bioconda-containers#55
|
Thanks for the update! I'll wait until the two steps are merged/completed. |
In the bioconda#866 we introduced the `--docker-base-image` to help user to specify customized build docker image (such as Linux aarch64 build). But we noticed that it doesn’t work after the bioconda#894 , because a local var introduced and the `docker-base-image` arguments is ignored: https://github.com/bioconda/bioconda-utils/blame/9a85115ae306f58c8b4e65e5f92f6cbdb5b68f04/bioconda_utils/cli.py#L468 This PR try to recover it, if user specify the `--docker-base-image`, it will be used directly otherwise use the local var. Signed-off-by: Yikun Jiang <yikunkero@gmail.com>
In the #866 we introduced the `--docker-base-image` to help user to specify customized build docker image (such as Linux aarch64 build). But we noticed that it doesn’t work after the #894 , because a local var introduced and the `docker-base-image` arguments is ignored. This PR try to recover it, if user specify the `--docker-base-image`, it will be used directly otherwise use the local var. Test: ``` [root@kunpeng bioconda-recipes]# bioconda-utils build --docker --packages bamstats --docker-base-image ghcr.io/yikun/bioconda-utils-build-env-cos7-aarch64 11:50:12 BIOCONDA INFO Considering total of 1 recipes (bamstats). 11:50:12 BIOCONDA INFO Processing 1 recipes (bamstats). 11:50:12 BIOCONDA WARNING Using tag 2.3.4 for docker image, since there is no image for a not yet release version (2.3.4+0.g9a85115.dirty). 11:50:12 BIOCONDA INFO Using docker image ghcr.io/yikun/bioconda-utils-build-env-cos7-aarch64 for building. // ... ... ``` Signed-off-by: Yikun Jiang <yikunkero@gmail.com>
This PR try to add Linux aarch64/arm64 support for bioconda-utils:
BASE_IMAGE
build args inDockerfile
: the devs can specifyBASE_IMAGE
to switch base image.bioconda_utils/bioconda_utils-requirements.txt
: Upgrade packages version to support Linux aarch64.--docker-base-image
image to help users specify docker base image.release-please.yml
andbuild-image.yml
workflowbioconda_utils/docker_utils.py
: create conda build subdir according to arch.After this PR, users can build the bioconda package by using same cmd with x86 by specifing
--docker-base-image
to build the package.Note that the
mulled-test
are still not supported, there are a circle dependency betweenbioconda-containers
and bioconda-utils, we'd better to support bioconda-utils aarch64 image first.Related: #706
Test step:
After this PR merged: