Skip to content
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

Update kmer-db #49740

Merged
merged 20 commits into from
Oct 9, 2024
Merged

Update kmer-db #49740

merged 20 commits into from
Oct 9, 2024

Conversation

agudys
Copy link
Contributor

@agudys agudys commented Aug 1, 2024

Due to problems with compiling sources with clang (the software uses c++20 multithreading features which are available only in g++ 11 or higher) we configured package to download precompiled binaries. We would appreciate if you accept our pull request once the tests are passed.


Please read the guidelines for Bioconda recipes before opening a pull request (PR).

General instructions

  • If this PR adds or updates a recipe, use "Add" or "Update" appropriately as the first word in its title.
  • New recipes not directly relevant to the biological sciences need to be submitted to the conda-forge channel instead of Bioconda.
  • PRs require reviews prior to being merged. Once your PR is passing tests and ready to be merged, please issue the @BiocondaBot please add label command.
  • Please post questions on Gitter or ping @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:

build:
  run_exports:
    - ...

with ... being one of:

Case run_exports statement
semantic versioning {{ pin_subpackage("myrecipe", max_pin="x") }}
semantic versioning (0.x.x) {{ pin_subpackage("myrecipe", max_pin="x.x") }}
known breakage in minor versions {{ pin_subpackage("myrecipe", max_pin="x.x") }} (in such a case, please add a note that shortly mentions your evidence for that)
known breakage in patch versions {{ pin_subpackage("myrecipe", max_pin="x.x.x") }} (in such a case, please add a note that shortly mentions your evidence for that)
calendar versioning {{ pin_subpackage("myrecipe", max_pin=None) }}

while replacing "myrecipe" with either name if a name|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 Merge the master branch into a PR.
@BiocondaBot please add label Add the please review & merge label.
@BiocondaBot please fetch artifacts Post links to CI-built packages/containers.
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>.

Copy link
Contributor

coderabbitai bot commented Oct 3, 2024

📝 Walkthrough
📝 Walkthrough

Walkthrough

The pull request updates the meta.yaml file for the kmer-db package, changing the version from "1.11.1" to "2.2.2" and resetting the build number from 2 to 0. It introduces a run_exports section that includes a pinning directive for the kmer-db subpackage. The source URL format is modified to specify the version and system architecture, replacing the previous URL format. Multiple SHA256 checksums are added for different platforms: linux (x86_64 and arm64) and osx (x86_64 and arm64).

The requirements section is significantly altered, with the removal of zlib from both the build and run sections, while retaining the make entry. The compiler specifications for C++ are also removed. The build script is updated to include a command for copying the kmer-db binary to the appropriate directory.

A new extra section is added, specifying additional platform support for linux-aarch64 and osx-arm64, along with a list of linting checks to skip. The test commands are expanded to include a help command for kmer-db.

Possibly related PRs

  • updated revision and enabled osx build #51176: This PR updates the pgrc package's meta.yaml, which is directly related to the changes made in the main PR that also involves modifications to the meta.yaml file for the kmer-db package, particularly in terms of versioning and build numbers.
  • recipe for pgrc #50973: This PR introduces a new meta.yaml for the pgrc package, which shares a similar context with the main PR's updates to the meta.yaml file for kmer-db, focusing on package configuration and dependencies.
  • Update panacus recipe to add cmake and c++ dependency #50982: This PR updates the meta.yaml for the panacus package, adding C++ and CMake dependencies, which aligns with the main PR's changes that involve build requirements and package dependencies in kmer-db.
  • Update python to >=3.8 in k8 recipe #51054: This PR updates the meta.yaml for the k8 package, including changes to the requirements section, which is relevant to the main PR's modifications in the meta.yaml file for kmer-db.
  • Add KmerCamel #51245: This PR introduces a new recipe for KmerCamel, which is related to the kmer-db package in the main PR, as both involve k-mer related functionalities and updates to their respective meta.yaml files.

Suggested reviewers

  • martin-g: Suggested reviewer for this pull request based on relevant expertise.

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?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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 (5)
recipes/kmer-db/build.sh (2)

9-9: Approve make command update with a suggestion for cross-platform compatibility

The updated make command is a good improvement:

  1. It utilizes parallel jobs based on CPU_COUNT, which can significantly speed up the build process.
  2. The use of g++-12 aligns with the installation of gcc@12 for macOS.

However, to ensure cross-platform compatibility, consider using a conditional statement to set the compiler.

Consider updating the make command as follows:

-make -j${CPU_COUNT} CXX=g++-12
+if [ "$uname_S" == "Darwin" ]; then
+    make -j${CPU_COUNT} CXX=g++-12
+else
+    make -j${CPU_COUNT} CXX=${CXX}
+fi

This change will use g++-12 on macOS and fall back to the environment's CXX variable on other systems, ensuring better cross-platform compatibility.


1-11: Summary of changes and suggestions

The modifications to the build script align well with the PR objectives. The addition of OS-specific handling and the use of g++-12 on macOS are good improvements for cross-platform compatibility and proper compilation.

To recap the suggested changes:

  1. Fix the syntax error in the OS detection block and improve its robustness.
  2. Update the make command to use conditional compilation based on the OS.

These changes will enhance the script's reliability and cross-platform compatibility.

Would you like assistance in implementing these changes or creating a GitHub issue to track these improvements?

🧰 Tools
🪛 Shellcheck

[error] 4-4: Couldn't find 'fi' for this 'if'.

(SC1046)


[error] 4-4: Couldn't parse this if expression. Fix to allow more checks.

(SC1073)

recipes/kmer-db/meta.yaml (3)

1-1: Version update approved. Consider documenting potential breaking changes.

The version update from 1.11.1 to 2.2.0 is significant. This major version bump might introduce breaking changes.

Consider adding a comment in the recipe or updating the package documentation to highlight any potential breaking changes or new features in this version.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


33-33: Consider adding more comprehensive tests.

Given the significant version update, it might be beneficial to add more comprehensive tests to ensure all functionalities are working as expected.

Consider adding tests that exercise new features or changes introduced in version 2.2.0.


34-40: Extra section changes approved. Add newline at end of file.

The addition of new platforms and appropriate linting skips are good changes.

Please add a newline character at the end of the file to address the yamllint warning.

🧰 Tools
🪛 yamllint

[error] 40-40: no new line character at the end of file

(new-line-at-end-of-file)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 53f85c6 and 0d20f19.

📒 Files selected for processing (2)
  • recipes/kmer-db/build.sh (1 hunks)
  • recipes/kmer-db/meta.yaml (2 hunks)
🧰 Additional context used
🪛 Shellcheck
recipes/kmer-db/build.sh

[error] 4-4: Couldn't find 'fi' for this 'if'.

(SC1046)


[error] 4-4: Couldn't parse this if expression. Fix to allow more checks.

(SC1073)

🪛 yamllint
recipes/kmer-db/meta.yaml

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


[error] 40-40: no new line character at the end of file

(new-line-at-end-of-file)

🔇 Additional comments (3)
recipes/kmer-db/meta.yaml (3)

8-10: Build section changes approved.

The build number reset and the addition of run_exports are appropriate for this version update. The pinning strategy helps ensure compatibility with dependent packages.


13-14: Source section changes approved. Addressing uses_vcs_url lint.

The switch to using GitHub sources with a git revision tag aligns with the PR objectives and is a good practice for version control.

The uses_vcs_url lint has been appropriately skipped in the extra section. To verify the git URL and revision, run:

This should return the commit hash for the v2.2.0 tag if it exists.

✅ Verification successful

Verification Successful

The git_url and git_rev specified in recipes/kmer-db/meta.yaml are valid and correctly reference the v2.2.0 tag.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify git URL and revision
git ls-remote https://github.com/refresh-bio/kmer-db.git v2.2.0

Length of output: 123


19-21: Requirements changes approved. Verify zlib removal.

The addition of nasm and explicit C compiler are good changes. However, the removal of zlib needs verification.

Please verify that zlib is no longer required. Run the following to check for zlib usage in the source code:

If there are no matches, it confirms that zlib is no longer used.

Comment on lines 3 to 4
uname_S=`uname -s 2>/dev/null || echo not`
if [ "$uname_S" == "Darwin" ]; then brew install gcc@12;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix syntax error and improve robustness of OS-specific setup

The OS detection is a good addition for cross-platform compatibility. However, there are a few issues to address:

  1. The if statement is not properly closed with fi.
  2. The brew install command might fail if Homebrew is not installed or if the user doesn't have sufficient permissions.

Please apply the following changes to fix the syntax error and improve robustness:

 uname_S=`uname -s 2>/dev/null || echo not`
-if [ "$uname_S" == "Darwin" ]; then brew install gcc@12;
+if [ "$uname_S" == "Darwin" ]; then
+    if ! command -v brew &> /dev/null; then
+        echo "Homebrew is required but not installed. Please install Homebrew first."
+        exit 1
+    fi
+    if ! brew install gcc@12; then
+        echo "Failed to install gcc@12. Please check your Homebrew installation and permissions."
+        exit 1
+    fi
+fi

This change will:

  1. Properly close the if statement.
  2. Check if Homebrew is installed before attempting to use it.
  3. Handle potential failures when installing gcc@12.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
uname_S=`uname -s 2>/dev/null || echo not`
if [ "$uname_S" == "Darwin" ]; then brew install gcc@12;
uname_S=`uname -s 2>/dev/null || echo not`
if [ "$uname_S" == "Darwin" ]; then
if ! command -v brew &> /dev/null; then
echo "Homebrew is required but not installed. Please install Homebrew first."
exit 1
fi
if ! brew install gcc@12; then
echo "Failed to install gcc@12. Please check your Homebrew installation and permissions."
exit 1
fi
fi
🧰 Tools
🪛 Shellcheck

[error] 4-4: Couldn't find 'fi' for this 'if'.

(SC1046)


[error] 4-4: Couldn't parse this if expression. Fix to allow more checks.

(SC1073)

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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 (3)
recipes/kmer-db/meta.yaml (3)

1-11: LGTM! Improved version management and cross-platform support.

The update to version 2.2.1 and the addition of system-specific variables and SHA256 checksums greatly improve the recipe's cross-platform support. This change aligns well with the PR objectives of utilizing GitHub sources and supporting submodules.

Consider adding a comment explaining the significant version jump from 1.11.1 to 2.2.1, if there are any notable changes or reasons for this update.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


37-39: Consider expanding test coverage.

While the current test command is valid, it might be beneficial to add more comprehensive tests to ensure the functionality of the updated version.

Consider adding more specific test commands, such as:

test:
  commands:
    - kmer-db > /dev/null
    - kmer-db --version
    - kmer-db --help

This will help verify that the basic functionality and command-line interface are working as expected.


40-46: LGTM! Extra section added to improve cross-platform support and linting.

The addition of the extra section with additional-platforms improves cross-platform support, which is great. The skip-lints entries are necessary due to the new build process using pre-built binaries.

Consider adding a comment explaining why these specific lints are being skipped, to provide context for future maintainers.

🧰 Tools
🪛 yamllint

[error] 46-46: no new line character at the end of file

(new-line-at-end-of-file)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 4699e19 and 38799bc.

📒 Files selected for processing (2)
  • recipes/kmer-db/build.sh (0 hunks)
  • recipes/kmer-db/meta.yaml (2 hunks)
💤 Files with no reviewable changes (1)
  • recipes/kmer-db/build.sh
🧰 Additional context used
🪛 yamllint
recipes/kmer-db/meta.yaml

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


[error] 46-46: no new line character at the end of file

(new-line-at-end-of-file)

🔇 Additional comments (2)
recipes/kmer-db/meta.yaml (2)

26-27: LGTM! Source configuration updated to use GitHub releases.

The change to use GitHub releases instead of archives aligns perfectly with the PR objectives. This approach ensures that submodules are included, which was a key goal of this update. The use of variables for system-specific URLs and SHA256 checksums improves maintainability and cross-platform support.


19-23: LGTM! Build configuration updated correctly.

The build number reset and the addition of the run_exports section are appropriate for the new version. The simplified build script suggests a shift to using pre-built binaries, which aligns with the PR objectives.

To ensure the build process is correct, please run the following script:

- osx-arm64
skip-lints:
- uses_vcs_url
- missing_hash
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Add a newline character at the end of the file.

To comply with YAML best practices and resolve the linting error, please add a newline character at the end of the file.

Apply this change to add a newline at the end of the file:

    - uses_vcs_url 
    - missing_hash
+
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- missing_hash
- uses_vcs_url
- missing_hash
🧰 Tools
🪛 yamllint

[error] 46-46: no new line character at the end of file

(new-line-at-end-of-file)

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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 (2)
recipes/kmer-db/meta.yaml (2)

1-11: LGTM! Good job on multi-architecture support.

The update to version 2.2.1 and the addition of system-specific variables and checksums for different architectures are well-implemented. This change improves the package's compatibility across various platforms.

Consider adding a comment explaining the purpose of the system variable for better readability:

{% set system = "x64_linux" %}       # [linux and x86_64] # Used to select the correct binary for the current platform
🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


36-40: LGTM! Good addition of a help command test.

The addition of the kmer-db -help test is a good improvement. It helps ensure that the basic functionality of the package is working correctly.

Consider adding one more test to check the version of the installed package:

test:
  commands:
    - kmer-db > /dev/null
    - kmer-db -help
    - kmer-db -version | grep {{ version }}

This will help verify that the correct version is installed.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 38799bc and 2036432.

📒 Files selected for processing (1)
  • recipes/kmer-db/meta.yaml (2 hunks)
🧰 Additional context used
🪛 yamllint
recipes/kmer-db/meta.yaml

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)

🔇 Additional comments (5)
recipes/kmer-db/meta.yaml (5)

26-27: LGTM! Good switch to GitHub releases.

The update to use GitHub releases instead of the archive is a good change. This ensures that submodules are included, addressing the concern mentioned in the PR objectives. The use of variables for the URL and SHA256 is also a good practice for maintainability.


47-47: LGTM! Newline issue resolved.

The newline character has been added at the end of the file, addressing the issue mentioned in the past review comments.


Line range hint 1-47: Overall, good improvements with some minor issues to address.

This update to the kmer-db recipe brings several positive changes:

  1. Version update to 2.2.1
  2. Multi-architecture support
  3. Switch to GitHub releases for source
  4. Addition of run_exports
  5. Improved test commands

Please address the following points:

  1. Clarify the change in the build process (using pre-built binaries)
  2. Verify the accuracy of the about section
  3. Consider adding a version check to the test commands
  4. Remove unnecessary skip-lints

Once these issues are addressed, the recipe will be in excellent shape for merging.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


13-23: LGTM! Good addition of run_exports.

The reset of the build number and the addition of the run_exports section are appropriate for this update. The pinning strategy looks good and aligns with the PR objectives.

Could you please clarify the change in the build process? It seems we're now using pre-built binaries instead of building from source. Is this intentional and aligned with Bioconda best practices?

To verify the contents of the downloaded archive, please run the following script:

#!/bin/bash
# Description: Verify the contents of the downloaded kmer-db archive

# Download the archive
curl -LO https://github.com/refresh-bio/kmer-db/releases/download/v2.2.1/kmer-db-v2.2.1_x64_linux.tar.gz

# List the contents of the archive
tar -tvf kmer-db-v2.2.1_x64_linux.tar.gz

# Check if the kmer-db binary is present and executable
tar -xOf kmer-db-v2.2.1_x64_linux.tar.gz kmer-db > /dev/null && echo "kmer-db binary found and extracted successfully" || echo "Failed to extract kmer-db binary"

Line range hint 29-34: Verify the accuracy of the about section.

The about section remains unchanged. Please verify that the home URL, summary, and license information are still accurate for version 2.2.1.

Run the following script to check for any changes in the project's README or LICENSE files:

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)

Comment on lines 41 to 47
extra:
additional-platforms:
- linux-aarch64
- osx-arm64
skip-lints:
- uses_vcs_url
- missing_hash
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Good addition of platform support, but skip-lints need review.

The addition of support for linux-aarch64 and osx-arm64 is excellent for broader compatibility.

However, the skip-lints for 'uses_vcs_url' and 'missing_hash' seem unnecessary given the changes made in the source section. The recipe now uses a GitHub release URL (not a VCS URL) and includes a SHA256 hash. Consider removing these skip-lints:

 extra:
   additional-platforms:
     - linux-aarch64
     - osx-arm64
-  skip-lints:
-    - uses_vcs_url 
-    - missing_hash
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
extra:
additional-platforms:
- linux-aarch64
- osx-arm64
skip-lints:
- uses_vcs_url
- missing_hash
extra:
additional-platforms:
- linux-aarch64
- osx-arm64

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (3)
recipes/kmer-db/meta.yaml (3)

13-23: LGTM: Build section updates with a minor suggestion.

The package name and version are correctly set, and resetting the build number to 0 for the new version is appropriate. The addition of the run_exports section with proper version pinning is an excellent practice for dependency management.

The build script has been simplified to copy the binary directly. While this works, it might be more robust to add an error check:

script: mkdir -p ${PREFIX}/bin && cp -r kmer-db ${PREFIX}/bin || exit 1

This ensures the build fails if the copy operation doesn't succeed.


41-47: Consider removing unnecessary skip-lints.

The addition of support for linux-aarch64 and osx-arm64 is excellent for broader compatibility. However, the skip-lints for 'should_not_be_noarch_source' and 'should_not_be_noarch_compiler' seem unnecessary given the changes made in the recipe. The recipe now uses architecture-specific binaries and doesn't involve compilation. Consider removing these skip-lints:

 extra:
   additional-platforms:
     - linux-aarch64
     - osx-arm64
-  skip-lints:
-    - should_not_be_noarch_source
-    - should_not_be_noarch_compiler

48-49: Remove extra blank lines at the end of the file.

To comply with YAML best practices and resolve the linting warning, please remove the extra blank lines at the end of the file.

Apply this change:

     - should_not_be_noarch_compiler
-
-
🧰 Tools
🪛 yamllint

[warning] 49-49: too many blank lines

(2 > 0) (empty-lines)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 2036432 and 0eb8b13.

📒 Files selected for processing (1)
  • recipes/kmer-db/meta.yaml (2 hunks)
🧰 Additional context used
🪛 yamllint
recipes/kmer-db/meta.yaml

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


[warning] 49-49: too many blank lines

(2 > 0) (empty-lines)

🔇 Additional comments (3)
recipes/kmer-db/meta.yaml (3)

1-11: LGTM: Version update and multi-architecture support.

The version update to 2.2.1 and the addition of system-specific variables and checksums for multiple architectures (x86_64 and arm64 for both Linux and macOS) are excellent improvements. This change aligns with the PR objectives and enhances the package's compatibility across different platforms.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


26-27: LGTM: Improved source URL and dynamic checksums.

The update to use GitHub releases instead of archives in the source URL is an excellent change. This ensures that submodules are included, addressing the main objective of the PR. The use of dynamic SHA256 checksums based on the system architecture is a robust approach to support multiple platforms.


38-39: LGTM: Enhanced test coverage.

The addition of the kmer-db -help test command is a good improvement. This helps ensure that the binary is not only present but also executable and responds to basic commands.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (2)
recipes/kmer-db/meta.yaml (2)

13-23: Good updates to build section, with a minor suggestion.

The reset of the build number to 0 for the new version and the addition of the run_exports section with proper pinning are excellent changes. These ensure correct version management and dependency handling.

However, the build script could be improved slightly:

Consider updating the build script for better error handling and verbosity:

-  script: mkdir -p ${PREFIX}/bin; ls; cp -r kmer-db  ${PREFIX}/bin
+  script: |
+    mkdir -p "${PREFIX}/bin"
+    cp -rv kmer-db "${PREFIX}/bin/"
+    if [ ! -f "${PREFIX}/bin/kmer-db" ]; then
+      echo "Error: kmer-db binary not found or not copied correctly"
+      exit 1
+    fi

This change adds error checking and increases verbosity, which can help with debugging if issues arise during the build process.


41-47: Consider removing unnecessary skip-lints.

The addition of support for linux-aarch64 and osx-arm64 is excellent and aligns well with the multi-architecture approach in this recipe.

However, the skip-lints should_be_noarch_generic and should_not_be_noarch_source seem unnecessary:

  1. This package is clearly not "noarch" as it provides architecture-specific binaries.
  2. The source is not using a VCS URL, so the should_not_be_noarch_source lint is not applicable.

Consider removing the skip-lints section entirely:

extra:
  additional-platforms:
    - linux-aarch64
    - osx-arm64
-  skip-lints:
-    - should_be_noarch_generic
-    - should_not_be_noarch_source

This will help maintain a cleaner recipe without suppressing potentially useful linter warnings in the future.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 0eb8b13 and bb4eeb4.

📒 Files selected for processing (1)
  • recipes/kmer-db/meta.yaml (2 hunks)
🧰 Additional context used
🪛 yamllint
recipes/kmer-db/meta.yaml

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


[warning] 48-48: too many blank lines

(1 > 0) (empty-lines)

🔇 Additional comments (4)
recipes/kmer-db/meta.yaml (4)

1-11: Excellent update with multi-platform support!

The version update to 2.2.1 and the addition of system-specific variables and SHA256 checksums for different architectures (x86_64 and arm64 for both Linux and macOS) greatly improve the package's compatibility across platforms. This aligns well with the PR objectives and Bioconda best practices.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


26-27: Excellent update to source URL and checksum!

The change to use GitHub releases instead of the archive aligns perfectly with the PR objectives. The use of variables for the system and SHA256 checksum ensures consistency and makes the recipe more maintainable across different platforms.


38-39: Good addition to test commands!

The new test command kmer-db -help provides an additional check to ensure the package is correctly installed and functional. This improves the overall reliability of the package installation process.


Line range hint 1-48: Regarding static analysis hints

  1. The yamllint error about the '%' character can be safely ignored. This is a false positive due to the use of Jinja2 templating in the YAML file, which is a common practice in Bioconda recipes.

  2. The warning about too many blank lines at the end of the file has already been addressed in a previous review comment.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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 (2)
recipes/kmer-db/meta.yaml (2)

13-23: Good updates to build section, with a minor suggestion.

The reset of the build number to 0 for the new version and the addition of the run_exports section with proper version pinning are excellent changes. These updates align with Bioconda best practices and ensure proper dependency management.

However, the build script could be improved slightly:

Consider updating the build script for better error handling and verbosity:

-  script: mkdir -p ${PREFIX}/bin; ls; cp -r kmer-db  ${PREFIX}/bin
+  script: |
+    mkdir -p "${PREFIX}/bin"
+    cp -v kmer-db "${PREFIX}/bin/" || { echo "Error: Failed to copy kmer-db binary"; exit 1; }

This change adds error checking and increases verbosity, which can help with debugging if issues arise during the build process.


48-48: Minor: Remove extra blank lines at the end of the file.

To comply with YAML best practices and resolve the linting warning, please remove the extra blank lines at the end of the file.

Apply this change:

   skip-lints:
     - should_be_noarch_generic
     - should_not_be_noarch_source
-
-
🧰 Tools
🪛 yamllint

[warning] 48-48: too many blank lines

(1 > 0) (empty-lines)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between bb4eeb4 and ba2639c.

📒 Files selected for processing (1)
  • recipes/kmer-db/meta.yaml (2 hunks)
🧰 Additional context used
🪛 yamllint
recipes/kmer-db/meta.yaml

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


[warning] 48-48: too many blank lines

(1 > 0) (empty-lines)

🔇 Additional comments (3)
recipes/kmer-db/meta.yaml (3)

1-11: Excellent update with improved cross-platform support!

The version update to 2.2.2 and the addition of system-specific variables and SHA256 checksums for different architectures (x86_64 and arm64 for both Linux and macOS) significantly improve cross-platform support. This change aligns well with the PR objectives and follows Bioconda best practices.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


26-27: Excellent update to source URL and checksum handling!

The change to use GitHub releases instead of the archive aligns perfectly with the PR objectives. This ensures that submodules are included, which was the main goal of this update. The use of Jinja2 variables for both the system-specific URL and SHA256 checksum is a great practice, allowing for flexible and accurate package building across different platforms.


39-40: Good addition to test commands.

The inclusion of kmer-db -help as an additional test command is a valuable improvement. This helps ensure that the installed package not only exists but also responds correctly to basic commands, enhancing the reliability of the installation process.

Comment on lines +41 to +47
extra:
additional-platforms:
- linux-aarch64
- osx-arm64
skip-lints:
- should_be_noarch_generic
- should_not_be_noarch_source
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Good addition of platform support, but skip-lints need review.

The addition of support for linux-aarch64 and osx-arm64 is excellent for broader compatibility. However, the skip-lints for 'should_be_noarch_generic' and 'should_not_be_noarch_source' seem unnecessary and potentially contradictory given the nature of the package (architecture-specific binaries).

Consider removing the skip-lints section:

 extra:
   additional-platforms:
     - linux-aarch64
     - osx-arm64
-  skip-lints:
-    - should_be_noarch_generic
-    - should_not_be_noarch_source

These lints are typically used for packages that should be architecture-independent, which doesn't apply to kmer-db as it provides architecture-specific binaries.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
extra:
additional-platforms:
- linux-aarch64
- osx-arm64
skip-lints:
- should_be_noarch_generic
- should_not_be_noarch_source
extra:
additional-platforms:
- linux-aarch64
- osx-arm64

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (1)
recipes/kmer-db/meta.yaml (1)

40-42: Good addition to test commands, with a suggestion for improvement.

The addition of kmer-db -help to the test commands is a good practice to ensure the binary is functional. To further improve the test, consider capturing and verifying the output:

test:
  commands:
    - kmer-db > /dev/null
    - kmer-db -help 2>&1 | grep -q "kmer-db options"

This change would verify that the help output contains expected content, providing a more robust test.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between ba2639c and a6be9b2.

📒 Files selected for processing (1)
  • recipes/kmer-db/meta.yaml (2 hunks)
🧰 Additional context used
🪛 yamllint
recipes/kmer-db/meta.yaml

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


[warning] 50-50: too many blank lines

(1 > 0) (empty-lines)

🔇 Additional comments (5)
recipes/kmer-db/meta.yaml (5)

1-11: Excellent update with improved cross-platform support!

The version update and the addition of system-specific variables and SHA256 checksums for different architectures (x86_64 and arm64 for both Linux and macOS) significantly improve the package's cross-platform compatibility. This change aligns well with the PR objective of utilizing GitHub sources and supporting multiple platforms.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


19-25: Good updates to build section and dependency management!

The changes in the build section are appropriate:

  1. Resetting the build number to 0 is correct for a new version.
  2. Adding the run_exports section with pin_subpackage is excellent for proper dependency management.
  3. The updated build script ensures the kmer-db binary is correctly placed in the bin directory.

These changes align well with Bioconda best practices and the PR objectives.


28-29: Source URL and checksum updates align with PR objectives!

The changes to the source section are excellent:

  1. Updating the URL to use GitHub releases instead of the archive addresses the PR's main objective of utilizing GitHub sources.
  2. Using the sha256 variable ensures the correct checksum is applied for each target architecture.

These changes improve the recipe's reliability and cross-platform compatibility.


50-50: Ensure proper file ending

To comply with YAML best practices, please ensure that the file ends with a single newline character. This addresses both the yamllint warning and a previous review comment.

If not already present, add a newline at the end of the file:

 extra:
   additional-platforms:
     - linux-aarch64
     - osx-arm64
+
🧰 Tools
🪛 yamllint

[warning] 50-50: too many blank lines

(1 > 0) (empty-lines)


43-49: ⚠️ Potential issue

Good addition of platform support, but skip-lints need review.

The addition of support for linux-aarch64 and osx-arm64 is excellent for broader compatibility and aligns with the PR objectives.

However, as mentioned in a previous review comment, the skip-lints for 'should_be_noarch_generic' and 'should_not_be_noarch_source' seem unnecessary and potentially contradictory given the nature of the package (architecture-specific binaries).

Consider removing the skip-lints section:

 extra:
   additional-platforms:
     - linux-aarch64
     - osx-arm64
-  skip-lints:
-    - should_be_noarch_generic
-    - should_not_be_noarch_source

These lints are typically used for packages that should be architecture-independent, which doesn't apply to kmer-db as it provides architecture-specific binaries.

@agudys agudys closed this Oct 4, 2024
@agudys agudys reopened this Oct 4, 2024
@agudys agudys closed this Oct 4, 2024
@agudys agudys reopened this Oct 5, 2024
@agudys
Copy link
Contributor Author

agudys commented Oct 9, 2024

@BiocondaBot please add label

@BiocondaBot BiocondaBot added the please review & merge set to ask for merge label Oct 9, 2024
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (3)
recipes/kmer-db/meta.yaml (3)

13-25: LGTM: Build section updates are appropriate.

The changes in the build section, including resetting the build number and adding the run_exports section, are well-implemented. The updated build script correctly copies the binary, aligning with the PR objective to use precompiled binaries.

Consider adding a comment explaining the reason for using precompiled binaries, e.g.:

# Using precompiled binaries due to C++20 multithreading features compatibility
script: |
  mkdir -p "${PREFIX}/bin"
  cp -v kmer-db "${PREFIX}/bin/" || { echo "Error: Failed to copy kmer-db binary"; exit 1; }

38-42: Consider enhancing the test command.

The addition of the kmer-db -help test is good. To make it more robust, consider capturing and checking the output:

test:
  commands:
    - kmer-db > /dev/null
    - kmer-db -help 2>&1 | grep -q "Usage"

This change ensures that the help output contains expected content.


50-50: Remove extra blank line at the end of the file.

While not a significant issue, it's generally good practice to have exactly one newline at the end of the file. Consider removing the extra blank line.

🧰 Tools
🪛 yamllint

[warning] 50-50: too many blank lines

(1 > 0) (empty-lines)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between a6be9b2 and 21f20c5.

📒 Files selected for processing (1)
  • recipes/kmer-db/meta.yaml (2 hunks)
🧰 Additional context used
🪛 yamllint
recipes/kmer-db/meta.yaml

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


[warning] 50-50: too many blank lines

(1 > 0) (empty-lines)

🔇 Additional comments (4)
recipes/kmer-db/meta.yaml (4)

1-11: LGTM: Version update and system-specific configurations look good.

The version update to 2.2.2 and the addition of system-specific variables and SHA256 checksums for different architectures are well-implemented. This approach ensures proper handling of the package across various platforms.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


27-29: LGTM: Source section updated correctly for precompiled binaries.

The change to use GitHub releases in the source URL and the templated SHA256 checksum are appropriate for distributing precompiled binaries. This ensures that the correct binary is downloaded for each supported architecture.


Line range hint 1-50: Overall, the changes look good and align with the PR objectives.

The update to use precompiled binaries addresses the compilation issues with clang and C++20 multithreading features. The recipe has been appropriately modified to handle different architectures and the build process has been simplified.

A few minor suggestions have been made to improve the recipe further:

  1. Adding a comment explaining the use of precompiled binaries.
  2. Enhancing the test command to check the help output.
  3. Removing unnecessary skip-lints.
  4. Removing the extra blank line at the end of the file.

Once these minor adjustments are made, the PR should be ready for merging after successful tests.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


43-49: ⚠️ Potential issue

Remove unnecessary skip-lints.

The addition of support for linux-aarch64 and osx-arm64 is excellent for broader compatibility. However, the skip-lints for 'should_be_noarch_generic' and 'should_not_be_noarch_source' seem unnecessary and potentially contradictory given the nature of the package (architecture-specific binaries).

Consider removing the skip-lints section:

 extra:
   additional-platforms:
     - linux-aarch64
     - osx-arm64
-  skip-lints:
-    - should_be_noarch_generic
-    - should_not_be_noarch_source

These lints are typically used for packages that should be architecture-independent, which doesn't apply to kmer-db as it provides architecture-specific binaries.

Likely invalid or redundant comment.

recipes/kmer-db/meta.yaml Outdated Show resolved Hide resolved
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (2)
recipes/kmer-db/meta.yaml (2)

1-11: LGTM! Good job on improving cross-platform support.

The update to version 2.2.2 and the addition of system variables and SHA256 checksums for different architectures significantly improve the package's cross-platform support. The use of Jinja2 templating for conditional inclusion is correct.

Consider adding a comment explaining the purpose of the system variable for better readability:

{% set system = "x64_linux" %}       # [linux and x86_64] # Used to select the correct binary for the current platform
🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


19-25: LGTM! Good improvements to build section.

The changes in the build section are appropriate:

  1. Resetting the build number to 0 for the new version is correct.
  2. Adding the run_exports section improves dependency management.
  3. Updating the build script to copy the pre-compiled binary instead of compiling from source aligns with the PR objectives.
  4. The error handling in the copy command is a good practice.

Consider adding a comment explaining why compilation is no longer needed:

script: |
  # Using pre-compiled binaries due to C++20 multithreading features compatibility issues
  mkdir -p "${PREFIX}/bin"
  cp -v kmer-db "${PREFIX}/bin/" || { echo "Error: Failed to copy kmer-db binary"; exit 1; }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 21f20c5 and 06b940d.

📒 Files selected for processing (1)
  • recipes/kmer-db/meta.yaml (2 hunks)
🧰 Additional context used
🪛 yamllint
recipes/kmer-db/meta.yaml

[error] 1-1: syntax error: found character '%' that cannot start any token

(syntax)


[warning] 50-50: too many blank lines

(1 > 0) (empty-lines)

🔇 Additional comments (4)
recipes/kmer-db/meta.yaml (4)

28-29: LGTM! Appropriate changes to source section.

The updates to the source section are correct and align with the switch to pre-compiled binaries:

  1. The URL now points to GitHub releases instead of the source archive.
  2. The use of the sha256 variable ensures the correct checksum is used for each platform.

These changes support the PR's objective of using pre-compiled binaries to address compilation issues.


41-41: LGTM! Good addition to test commands.

Adding the kmer-db -help command to the test section is a good practice. It not only checks for the existence of the command but also verifies that it runs without errors, providing a more thorough test of the installed package.


43-49: ⚠️ Potential issue

Good addition of platform support, but remove unnecessary skip-lints.

The addition of support for linux-aarch64 and osx-arm64 is excellent for broader compatibility. However, the skip-lints for 'should_be_noarch_generic' and 'should_not_be_noarch_source' are unnecessary and potentially contradictory given the nature of the package (architecture-specific binaries).

Remove the skip-lints section:

 extra:
   additional-platforms:
     - linux-aarch64
     - osx-arm64
-  skip-lints:
-    - should_be_noarch_generic
-    - should_not_be_noarch_source

These lints are typically used for packages that should be architecture-independent, which doesn't apply to kmer-db as it provides architecture-specific binaries.


50-50: ⚠️ Potential issue

Add a newline character at the end of the file.

To comply with YAML best practices and resolve the linting error, please add a newline character at the end of the file.

Apply this change to add a newline at the end of the file:

    - osx-arm64
+
🧰 Tools
🪛 yamllint

[warning] 50-50: too many blank lines

(1 > 0) (empty-lines)

@martin-g martin-g merged commit 8ec8e6c into bioconda:master Oct 9, 2024
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
please review & merge set to ask for merge
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants