-
Notifications
You must be signed in to change notification settings - Fork 3.3k
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
Racon: add arm64 build #52209
Racon: add arm64 build #52209
Conversation
📝 WalkthroughWalkthroughThe pull request introduces several modifications to the Racon package, primarily focusing on enhancing support for the Possibly related PRs
Suggested labels
Warning Rate limit exceeded@mencian has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 16 minutes and 27 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
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.
Actionable comments posted: 1
🧹 Outside diff range and nitpick comments (4)
recipes/racon/build.sh (2)
25-29
: Consider conditional verbose output.The build configuration is well-structured using modern CMake practices. However, the verbose flag (-v) might generate excessive output in CI logs.
Consider making verbose output conditional:
-cmake --build build --target install -j "${CPU_COUNT}" -v +cmake --build build --target install -j "${CPU_COUNT}" ${VERBOSE_BUILD:+-v}
31-32
: Add error handling for wrapper operations.While the operations are correct, consider adding error checking to handle cases where the wrapper build might fail.
Consider this safer approach:
-chmod +w build/bin/racon_wrapper -cp -f build/bin/racon_wrapper ${PREFIX}/bin +if [ -f build/bin/racon_wrapper ]; then + chmod +w build/bin/racon_wrapper + cp -f build/bin/racon_wrapper ${PREFIX}/bin +else + echo "Error: racon_wrapper not found in build/bin" >&2 + exit 1 +firecipes/racon/meta.yaml (2)
37-41
: Consider improving documentation URLWhile the added metadata fields are good, pointing
doc_url
to the README.md file might not be the best practice. Consider creating more comprehensive documentation (e.g., ReadTheDocs, Wiki) for better user experience.
Based on the analysis of similar arm64-compatible packages in the output, I can generate the final response:
Add zlib to run requirements and include OpenMP dependencies
Please update the dependencies section to include:
- Add
zlib
torun
requirements since it's needed at runtime (seen in multiple similar packages)- Add OpenMP dependencies for proper arm64 support:
host: - llvm-openmp # [osx] - libgomp # [linux] run: - llvm-openmp # [osx] - libgomp # [linux]🔗 Analysis chain
Line range hint
18-28
: Verify dependencies for arm64 buildPlease ensure all necessary dependencies are included for arm64 support:
- Verify if zlib is needed in
run
requirements- Check if there are any architecture-specific dependencies needed for arm64
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Check for architecture-specific dependencies in similar bioconda packages # Look for patterns in other arm64-compatible packages rg -l "osx-arm64" | xargs cat | rg "requirements:" -A 10Length of output: 49484
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (3)
recipes/racon/build.sh
(1 hunks)recipes/racon/meta.yaml
(2 hunks)recipes/racon/racon_wrapper.patch
(0 hunks)
💤 Files with no reviewable changes (1)
- recipes/racon/racon_wrapper.patch
🔇 Additional comments (3)
recipes/racon/build.sh (1)
17-21
: LGTM! Proper macOS build configuration.
The Darwin-specific configuration correctly disables framework and bundle searches, which is essential for clean builds on macOS systems.
recipes/racon/meta.yaml (2)
9-9
: LGTM: Build number increment is appropriate
The build number increment is correct for adding arm64 support.
46-49
: Verify the added identifiers
Please verify that Racon is actually registered in both biotools and Galaxy EU.
arm64) | ||
SPOA_OPTS="-Dspoa_optimize_for_portability=ON" | ||
;; |
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.
💡 Codebase verification
Architecture detection pattern needs to be updated for arm64 support
The codebase analysis reveals that the current implementation in recipes/racon/build.sh
is inconsistent with the established patterns across other Bioconda recipes. Several key observations:
- Many recipes (e.g., wfa2-lib, vcf-validator, spacepharer) use
aarch64 | arm64
pattern to handle both Linux and macOS ARM architectures in a single case - The SPOA options in racon should align with its dependency spoa's configuration (recipes/spoa/build.sh)
- The current implementation might miss optimizations for macOS ARM (arm64)
Suggested changes:
- Combine arm64 and aarch64 cases to use the same SIMDE configuration
- Match the pattern used by other recipes:
aarch64 | arm64)
🔗 Analysis chain
LGTM! Architecture-specific optimization correctly configured.
The arm64 case (Apple Silicon) appropriately uses portability optimization, distinct from the aarch64 (Linux ARM64) configuration. This aligns with platform-specific best practices.
Let's verify the architecture detection logic:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Verify architecture detection patterns in other bioconda recipes
# Expected: Find similar architecture detection patterns in other recipes
# Search for similar architecture detection patterns
rg -A 5 "case.*uname -m.*in"
Length of output: 11438
Describe your pull request here
Please read the guidelines for Bioconda recipes before opening a pull request (PR).
General instructions
@BiocondaBot please add label
command.@bioconda/core
in a comment.Instructions for avoiding API, ABI, and CLI breakage issues
Conda is able to record and lock (a.k.a. pin) dependency versions used at build time of other recipes.
This way, one can avoid that expectations of a downstream recipe with regards to API, ABI, or CLI are violated by later changes in the recipe.
If not already present in the meta.yaml, make sure to specify
run_exports
(see here for the rationale and comprehensive explanation).Add a
run_exports
section like this:with
...
being one of:{{ pin_subpackage("myrecipe", max_pin="x") }}
{{ pin_subpackage("myrecipe", max_pin="x.x") }}
{{ pin_subpackage("myrecipe", max_pin="x.x") }}
(in such a case, please add a note that shortly mentions your evidence for that){{ pin_subpackage("myrecipe", max_pin="x.x.x") }}
(in such a case, please add a note that shortly mentions your evidence for that){{ pin_subpackage("myrecipe", max_pin=None) }}
while replacing
"myrecipe"
with eithername
if aname|lower
variable is defined in your recipe or with the lowercase name of the package in quotes.Bot commands for PR management
Please use the following BiocondaBot commands:
Everyone has access to the following BiocondaBot commands, which can be given in a comment:
@BiocondaBot please update
@BiocondaBot please add label
please review & merge
label.@BiocondaBot please fetch artifacts
You can use this to test packages locally.
Note that the
@BiocondaBot please merge
command is now depreciated. Please just squash and merge instead.Also, the bot watches for comments from non-members that include
@bioconda/<team>
and will automatically re-post them to notify the addressed<team>
.