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 FINEMAP to 1.4.2 #51978

Merged
merged 16 commits into from
Nov 21, 2024
Merged

Update FINEMAP to 1.4.2 #51978

merged 16 commits into from
Nov 21, 2024

Conversation

aryarm
Copy link
Contributor

@aryarm aryarm commented Nov 6, 2024

Update FINEMAP: 1.4.1 → 1.4.2


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 Nov 6, 2024

📝 Walkthrough
📝 Walkthrough

Walkthrough

The pull request introduces significant updates to the meta.yaml file for the finemap package. The version number is incremented from 1.4.1 to 1.4.2, and the version is now dynamically generated using Jinja2 templating. The source section has been restructured to adopt a new URL format that incorporates the version variable, along with an updated SHA256 checksum for the Linux binary. The build section has been modified to include a skip directive for non-Linux platforms, and a run_exports entry has been added to ensure maximum pinning for the subpackage finemap. The installation script has been adjusted to create the target directory and install binaries using the templated version. Test commands have been expanded to include multiple execution commands for finemap, replacing the previous existence check. Additionally, the summary description has been reformatted, a new license type and URL have been included, and further build and run requirements have been specified. The about section has also been updated to reflect the new licensing information.

Possibly related PRs

  • Update meta.yaml for spec2vec #49857: The meta.yaml file for the spec2vec package also includes a run_exports entry to pin the subpackage, similar to the changes made in the finemap package.
  • pyslow5: add aarch64/arm64 builds #51105: The pyslow5 package's meta.yaml file was updated to include a new extra section for additional platforms, aligning with the changes made in the finemap package regarding platform specifications.
  • longreadsum: add aarch64/arm64 builds #51121: The longreadsum package's meta.yaml file has been updated to include support for linux-aarch64, paralleling the platform updates in the finemap package.
  • phables: add aarch64/arm64 builds #51124: The phables package's meta.yaml file included updates for additional platforms, consistent with the changes made in the finemap package.
  • Update meta.yaml #51802: The resistify package's meta.yaml file was updated to include a run_exports section, similar to the modifications in the finemap package.

Suggested reviewers

  • martin-g

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.

hopefully someone more knowledgeable than me will be able to figure out how to make osx work too

The osx build is unable to find shared libraries. I tried using install_name_tool to replace the paths to the libraries, but I couldn't get it to work
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/finemap/meta.yaml (2)

9-12: Consider removing OSX source configuration.

Since the build is skipped for non-Linux platforms (line 17), having the OSX source configuration is unnecessary and potentially confusing for maintainers.

 source:
   url: http://www.christianbenner.com/finemap_v{{ version }}_x86_64.tgz # [linux]
   sha256: 3b1fc6eb3c2ccafd647b32e02d0244495cd0ade9ed7d474606c31ebf6e98b0c9 # [linux]
-  url: http://www.christianbenner.com/finemap_v{{ version }}_MacOSX.tgz # [osx]
-  sha256: e2967e5586347a8ac5cbcddf3c0e41bf8d3e7793875f78b509d07903d17a415b # [osx]

20-23: Remove unnecessary OSX installation command.

Since the build is skipped for non-Linux platforms, the OSX installation command can be removed.

 script:
   - mkdir -p ${PREFIX}/bin
   - install -m 755 finemap_v{{ version }}_x86_64 ${PREFIX}/bin/finemap # [linux]
-  - install -m 755 finemap_v{{ version }}_MacOSX ${PREFIX}/bin/finemap # [osx]
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between f6e4b07 and f9bee23.

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

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

(syntax)

🔇 Additional comments (6)
recipes/finemap/meta.yaml (6)

1-7: LGTM! Package metadata follows best practices.

The use of Jinja2 templating for version and name variables is a good practice for maintainability.

🧰 Tools
🪛 yamllint

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

(syntax)


15-19: LGTM! Good addition of run_exports.

The addition of run_exports with max_pin="x" is a good practice to maintain ABI compatibility as mentioned in the PR guidelines.


26-29: LGTM! Requirements are properly specified.

The addition of the C++ compiler requirement is appropriate, and empty host/run sections are fine for this package.


32-33: LGTM! Improved test command.

The change from testing file existence to running --help is an improvement as it verifies basic program functionality.


39-41: LGTM! Improved YAML formatting.

The use of > for the multi-line summary improves YAML readability.


2-2: Verify version update compatibility.

Please ensure that version 1.4.2 maintains backward compatibility with 1.4.1.

✅ Verification successful

Based on the output from the shell scripts, I can generate the final response as we have clear information about the version update from the upstream website.

Version 1.4.2 is a safe, backward-compatible update

The update from 1.4.1 to 1.4.2 only includes bugfixes as per the upstream changelog (dated 27-Apr-2023), with no breaking changes mentioned. This type of update typically maintains backward compatibility.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any breaking changes in the new version

# Look for CHANGELOG or release notes in the repository
echo "Searching for changelog information..."
fd -i -g 'change*' -g 'release*' -g 'history*'

# Check upstream website for version information
echo "Checking upstream website for version details..."
curl -sL "http://www.christianbenner.com" | grep -A 5 "1.4.2"

Length of output: 1347

@aryarm
Copy link
Contributor Author

aryarm commented Nov 8, 2024

@BiocondaBot please add label

I updated the recipe to work for linux, but I wasn't able to get it to work for osx too. The osx build is unable to find shared libraries. I tried using install_name_tool to replace the paths to the libraries, but I couldn't get it to work:
aryarm/aryarm-conda#13
I left the osx lines in there in case someone more knowledgeable decides to give it a shot one day

@BiocondaBot BiocondaBot added the please review & merge set to ask for merge label Nov 8, 2024
recipes/finemap/meta.yaml Outdated Show resolved Hide resolved
recipes/finemap/meta.yaml Outdated Show resolved Hide resolved
recipes/finemap/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/finemap/meta.yaml (2)

9-12: Consider removing macOS source configuration

Since the PR objectives mention unresolved macOS build issues and line 17 skips non-Linux builds, the macOS source configuration could be removed to avoid confusion. However, if you plan to fix macOS support in the future, it's acceptable to keep it commented out.

  - url: http://www.christianbenner.com/finemap_v{{ version }}_x86_64.tgz # [linux]
    sha256: 3b1fc6eb3c2ccafd647b32e02d0244495cd0ade9ed7d474606c31ebf6e98b0c9 # [linux]
-  - url: http://www.christianbenner.com/finemap_v{{ version }}_MacOSX.tgz # [osx]
-    sha256: e2967e5586347a8ac5cbcddf3c0e41bf8d3e7793875f78b509d07903d17a415b # [osx]

21-23: Simplify installation script

Since non-Linux builds are skipped, the macOS installation line can be removed.

  script:
    - mkdir -p ${PREFIX}/bin
    - install -m 755 finemap_v{{ version }}_x86_64 ${PREFIX}/bin/finemap # [linux]
-    - install -m 755 finemap_v{{ version }}_MacOSX ${PREFIX}/bin/finemap # [osx]
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between f9bee23 and 21fac97.

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

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

(syntax)

🔇 Additional comments (5)
recipes/finemap/meta.yaml (5)

1-7: LGTM! Good use of Jinja2 templating

The package metadata is well-structured with proper templating variables.

🧰 Tools
🪛 yamllint

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

(syntax)


15-19: LGTM! Good use of run_exports

The run_exports configuration helps prevent ABI compatibility issues, which aligns with the PR guidelines.


31-32: LGTM! Improved test command

The new test command is better as it verifies that the binary can execute successfully.


38-39: LGTM! Better YAML formatting

Good use of the YAML block scalar > for the multi-line summary.


2-2: Verify version update compatibility

Please ensure that version 1.4.2 doesn't introduce breaking changes that would require additional configuration.

✅ Verification successful

Let me gather more information about this package and its version changes.


Based on the meta.yaml analysis, I can now generate the final response:

Version update appears safe to proceed

The version update to 1.4.2 appears safe as:

  • Package has no dependencies that could be affected
  • Binary-only package with simple installation
  • No breaking changes in package structure
  • Test command remains consistent (--help flag)
  • Pin subpackage strategy remains appropriate
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any changelog or release notes
rg -i "changelog|release.*notes" --type md

Length of output: 152


Script:

#!/bin/bash
# Check the meta.yaml file for any dependencies or build requirements
cat recipes/finemap/meta.yaml

# Look for any README or documentation specific to finemap
fd -t f "README|CHANGELOG" recipes/finemap/

Length of output: 1209

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 (1)
recipes/finemap/meta.yaml (1)

21-23: Consider removing unused macOS installation script.

Since the build is skipped for non-linux64 platforms (line 17), the macOS installation script on line 23 will never be executed. Consider removing it to avoid confusion.

  script:
    - mkdir -p ${PREFIX}/bin
    - install -m 755 finemap_v{{ version }}_x86_64 ${PREFIX}/bin/finemap # [linux]
-   - install -m 755 finemap_v{{ version }}_MacOSX ${PREFIX}/bin/finemap # [osx]
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 21fac97 and f6d3bca.

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

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

(syntax)

🔇 Additional comments (5)
recipes/finemap/meta.yaml (5)

1-7: LGTM! Version update and templating look good.

The version update to 1.4.2 matches the PR objectives, and the use of Jinja2 templating for version and name is a good practice.

🧰 Tools
🪛 yamllint

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

(syntax)


9-12: LGTM! Source configuration is properly structured.

The source configuration correctly:

  • Uses platform-specific selectors
  • Implements proper YAML list formatting for URLs and checksums
  • Uses templated version variables

15-19: LGTM! Build configuration follows best practices.

The configuration correctly:

  • Resets build number for new version
  • Implements run_exports as per Bioconda guidelines
  • Skips non-linux64 platforms due to known issues

27-27: LGTM! Improved test command.

The new test command finemap --help is more thorough than the previous file existence check as it verifies that the binary is properly installed and executable.


33-34: LGTM! Improved summary formatting.

The use of YAML block scalar indicator (>) improves the readability of the summary field while maintaining the same content.

recipes/finemap/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: 2

🧹 Outside diff range and nitpick comments (2)
recipes/finemap/meta.yaml (2)

9-12: Ensure consistent selector usage.

The selectors should be consistent throughout the file. Currently using both linux64 and not linux64. Consider standardizing to one format.

-  - url: http://www.christianbenner.com/finemap_v{{ version }}_x86_64.tgz # [linux64]
-    sha256: 3b1fc6eb3c2ccafd647b32e02d0244495cd0ade9ed7d474606c31ebf6e98b0c9 # [linux64]
+  - url: http://www.christianbenner.com/finemap_v{{ version }}_x86_64.tgz  # [linux]
+    sha256: 3b1fc6eb3c2ccafd647b32e02d0244495cd0ade9ed7d474606c31ebf6e98b0c9  # [linux]

22-24: Simplify installation script by removing skipped platform.

Since the build is skipped for non-linux64 platforms (line 17), the MacOS installation command can be removed to avoid confusion.

  script:
    - mkdir -p ${PREFIX}/bin
-    - install -m 755 finemap_v{{ version }}_x86_64 ${PREFIX}/bin/finemap # [linux64]
-    - install -m 755 finemap_v{{ version }}_MacOSX ${PREFIX}/bin/finemap # [osx]
+    - install -m 755 finemap_v{{ version }}_x86_64 ${PREFIX}/bin/finemap
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between f6d3bca and 7519e0b.

📒 Files selected for processing (2)
  • recipes/finemap/LICENSE (1 hunks)
  • recipes/finemap/meta.yaml (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • recipes/finemap/LICENSE
🧰 Additional context used
🪛 yamllint
recipes/finemap/meta.yaml

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

(syntax)

🔇 Additional comments (2)
recipes/finemap/meta.yaml (2)

1-7: LGTM! Version update and templating look good.

The version update to 1.4.2 is correctly implemented using Jinja2 templating.

🧰 Tools
🪛 yamllint

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

(syntax)


27-28: LGTM! Improved test command.

The test command finemap --help is better than the previous file existence check as it verifies the binary is executable.

recipes/finemap/meta.yaml Outdated Show resolved Hide resolved
recipes/finemap/meta.yaml Outdated Show resolved Hide resolved
aryarm and others added 5 commits November 11, 2024 15:19
The OSX binary will not work. It needs to be relinked so that the shared library paths point to the conda versions. But relinking doesn't work because the binary was not built with the -headerpad_max_install_names option
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
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/finemap/meta.yaml (1)

16-17: Consider removing run_exports for binary package

The run_exports section with max_pin="x" might be unnecessarily strict for a binary package that doesn't provide shared libraries for linking. This is typically used for compiled libraries to ensure ABI compatibility.

-  run_exports:
-    - {{ pin_subpackage('finemap', max_pin="x") }}
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between acc89b4 and 41777dd.

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

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

(syntax)

🔇 Additional comments (4)
recipes/finemap/meta.yaml (4)

1-7: LGTM: Package metadata is well-structured

The version update to 1.4.2 is properly implemented using Jinja2 templating.

🧰 Tools
🪛 yamllint

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

(syntax)


23-31: LGTM: Requirements are appropriate

The dependencies (libgomp, libgcc) are correctly specified for both build and run environments, which is necessary for the OpenMP-enabled binary.


51-57: LGTM: Lint exceptions are appropriate

The skip-lints are correctly configured for this binary package, addressing compiler usage, platform specificity, and style conventions.


33-39: Verify example data availability

The test configuration references example data, but we need to verify if this data is included in the downloaded binary package.

✅ Verification successful

Example data is present in the package

The verification confirms that the example data files are included in the downloaded binary package at finemap_v1.4.2_x86_64/example/. The package contains all necessary example files referenced in the test configuration:

  • data - main data file
  • data.z - z-scores file
  • data.ld - linkage disequilibrium file
  • data.k - configuration file
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if example data is present in the source package

# Download and check the package contents
curl -sL "http://www.christianbenner.com/finemap_v1.4.2_x86_64.tgz" | tar tzf - | grep -i "example"

Length of output: 275

@aryarm
Copy link
Contributor Author

aryarm commented Nov 13, 2024

@BiocondaBot please fetch artifacts

@BiocondaBot
Copy link
Collaborator

Package(s) built are ready for inspection:

Arch Package Zip File / Repodata CI Instructions
linux-64 finemap-1.4.2-hb192632_0.tar.bz2 linux-64.zip GitHub Actions
showYou may also use conda to install after downloading and extracting the zip file. conda install -c ./packages <package name>

@aryarm
Copy link
Contributor Author

aryarm commented Nov 13, 2024

@martin-g , this is ready for another review, if you're able 🙌

I removed the compiler requirement and replaced it with requirements for each of the dynamic shared libraries that conda-bld reported in the binary. I also added more thorough tests using the example data in the source.

I decided to give up on the possibility of a MacOS build. As far as I can tell, it would require that the binary be rebuilt, but the source code isn't published.

Lastly, I wanted to point out a few warnings that I didn't resolve:

  • WARNING :: get_rpaths_raw()=[] and patchelf=[''] disagree for /opt/conda/conda-bld/finemap_1731534642894/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_place/bin/finemap :: (link)
  • WARNING (finemap): run-exports library package conda-forge/linux-64::libgomp==14.2.0=h77fa898_1 in requirements/run but it is not used (i.e. it is overdepending or perhaps statically linked? If that is what you want then add it to build/ignore_run_exports) (link)
  • WARNING (finemap): run-exports library package conda-forge/noarch::sysroot_linux-64==2.17=h4a8ded7_18 in requirements/run but it is not used (i.e. it is overdepending or perhaps statically linked? If that is what you want then add it to build/ignore_run_exports) (link)

I'm genuinely unsure of how to fix the first warning. And for the other two: I wasn't sure if it was safe to add those packages to ignore_run_exports. (Even after searching online quite a bit, I still don't really understand whether run_exports is relevant to this PR.) Please let me know what you think!

run: []
build:
- {{ stdlib("c") }}
- libgomp
Copy link
Member

Choose a reason for hiding this comment

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

please use the compiler directive here.

Copy link
Contributor Author

@aryarm aryarm Nov 17, 2024

Choose a reason for hiding this comment

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

Hi @bgruening !

Is this what you're thinking?

Suggested change
- libgomp
- {{ compiler('cxx') }}
- libgomp

I actually had something like this in 8a0e784, but we decided to remove it in #51978 (comment), since I'm simply copying a binary and not compiling it. Shall I add it back?

Copy link
Member

Choose a reason for hiding this comment

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

Yes this is what I was thinking. If @martin-g is ok with the way you have it now let's keep it.

Adding libgomp and libgcc will be done by the complier directive and it's a bit more portable. But you eitherway skip everything but linux64. So 🤷

Copy link
Contributor Author

@aryarm aryarm Nov 18, 2024

Choose a reason for hiding this comment

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

Ok, thanks for explaining!

I would like to make it work on macos eventually, so maybe it's a good idea to go with the more portable option for better future proofing. Or I can add a comment that explains to do that in the future.

I'll wait to hear thoughts from @martin-g

Copy link
Contributor

Choose a reason for hiding this comment

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

I'll take a closer look later today!

Copy link
Contributor

Choose a reason for hiding this comment

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

Do you need anything in the requirements > build section if you don't build it from source ?

Copy link
Contributor Author

@aryarm aryarm Nov 20, 2024

Choose a reason for hiding this comment

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

I tried that locally. The tests still seem to pass when I remove the requirements > build section, but conda-bld will issue a bunch of warnings.

WARNING (finemap,bin/finemap): /lib64/libdl.so.2 not found in packages, sysroot(s) nor the missing_dso_whitelist... is this binary repackaging?
WARNING (finemap,bin/finemap): /lib64/libm.so.6 not found in packages, sysroot(s) nor the missing_dso_whitelist... is this binary repackaging?
WARNING (finemap,bin/finemap): $RPATH/libgomp.so.1 not found in packages, sysroot(s) nor the missing_dso_whitelist... is this binary repackaging?
WARNING (finemap,bin/finemap): /lib64/libgcc_s.so.1 not found in packages, sysroot(s) nor the missing_dso_whitelist... is this binary repackaging?
WARNING (finemap,bin/finemap): /lib64/libpthread.so.0 not found in packages, sysroot(s) nor the missing_dso_whitelist... is this binary repackaging?
WARNING (finemap,bin/finemap): /lib64/libc.so.6 not found in packages, sysroot(s) nor the missing_dso_whitelist... is this binary repackaging?
WARNING (finemap,bin/finemap): /lib64/ld-linux-x86-64.so.2 not found in packages, sysroot(s) nor the missing_dso_whitelist... is this binary repackaging?

Should I just ignore those by adding the DSOs to missing_dso_whitelist? I was concerned that adding a package to missing_dso_whitelist might prevent conda-bld from automatically updating the path to the DSO in the binary (using patchelf) - since I couldn't find much info about the exact function of missing_dso_whitelist

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't have any experience with this kind of problems but I think you need to move those deps to requirements > host

Copy link
Contributor Author

@aryarm aryarm Nov 20, 2024

Choose a reason for hiding this comment

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

That makes sense. From what I've read online, shared libraries like those are supposed to be placed in the host section to ensure portability.

But when I move those requirements into the host section, I still get the same warnings mentioned above. So I guess I'll add them to missing_dso_whitelist

Also please feel free to let me know if there's somewhere else where I should also try to ask these questions. I've only recently been trying to learn how to create conda recipes, so I'm not very familiar with all of the resources yet.

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

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 41777dd and e610d61.

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

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

(syntax)

🔇 Additional comments (6)
recipes/finemap/meta.yaml (6)

1-7: LGTM: Package metadata is well-structured

The version update and Jinja2 templating are implemented correctly.

🧰 Tools
🪛 yamllint

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

(syntax)


13-29: Build configuration looks good with documented platform limitations

The build configuration properly handles:

  • Platform restrictions with clear documentation about macOS limitations
  • Version pinning through run_exports
  • DSO warnings through whitelist

Note: Future macOS support would require rebuilding with -headerpad_max_install_names option.


31-39: Requirements are properly structured for binary distribution

The host and run requirements correctly specify the necessary shared libraries.


41-48: Improved test coverage with functional tests

The test section now includes comprehensive functional tests using example data.


59-65: Extra configuration is properly documented

The lint skips are justified and well-documented. Maintainers list is up to date.


9-11: Verify source URL and checksum

The URL template and checksum look correct, but let's verify:

recipes/finemap/meta.yaml Show resolved Hide resolved
Copy link
Member

@bgruening bgruening left a comment

Choose a reason for hiding this comment

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

I wish we could just compile it from source. This looks very hacky to me. Maybe we can try compiling from source for the next release?

@bgruening bgruening merged commit 838bee1 into bioconda:master Nov 21, 2024
6 checks passed
@aryarm
Copy link
Contributor Author

aryarm commented Nov 21, 2024

Thanks for merging and for all of the suggestions, @bgruening and @martin-g ! Agreed that this seemed very hacky.

I can try to email the author next time and ask for the source code to be published. It would be much easier that way.

@aryarm aryarm deleted the patch-1 branch November 21, 2024 15:12
@bgruening
Copy link
Member

That would be nice. Thanks @aryarm

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.

5 participants