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

Request -- use https://crates.io/crates/which for external command checking? #207

Open
nickp60 opened this issue Mar 15, 2024 · 3 comments

Comments

@nickp60
Copy link

nickp60 commented Mar 15, 2024

Hello! This is a bit of a strange request, but I am running into a strange error when running dockerized versions of CoverM. It is related to this somehow, I am not entirely sure why it only fails on a collaborators machine, but CoverM fails when attempting to find the Minimap2 executable using the bash -c 'which minimap2' command, which is here.

When running this manually (not via CoverM), I get the following:

docker run ghcr.io/vdblab/coverm:0.6.1  bash -c "which minimap2"
/opt/conda/bin/minimap2

So far so good. When run on my institute's HPC via singularity, I get

singularity run docker://ghcr.io/vdblab/coverm:0.6.1 bash -c "which minimap2"
INFO:    Using cached SIF image
/opt/conda/bin/minimap2

which is good as well. However, when my collaborator attempts on their cluster, they get

Illegal option --

That results in their CoverM calls failing with the following error:

[2024-03-13T18:11:22Z ERROR bird_tool_utils::external_command_checker] Could not find an available minimap2 executable.
[2024-03-13T18:11:22Z ERROR bird_tool_utils::external_command_checker] The STDERR was: "Illegal option --\n"
[2024-03-13T18:11:22Z ERROR bird_tool_utils::external_command_checker] Cannot continue without minimap2. Testing for presence with `which minimap2` failed
thread 'main' panicked at 'Failed to find installed minimap2: "Cannot continue without minimap2. Testing for presence with `which minimap2` failed"', src/external_command_checker.rs:9:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

We think that somehow Singularity is getting mixed up between system and container versions of which.

Would you be willing to switch to a different method of executable checking? I don't know Rust, but it looks like there is a pretty popular package for this: https://crates.io/crates/which

Thanks in advance!

@microjishuai
Copy link

microjishuai commented Mar 16, 2024

I encountered the same "ERROR bird_tool_utils::external_command_checker] Could not find an available minimap2 executable" when running a coverM.sif container built using apptainer, even though minimap2 was successfully installed in the container.

wwood added a commit that referenced this issue Mar 18, 2024
@wwood
Copy link
Owner

wwood commented Mar 18, 2024

Hi,

Thanks for the specific solution - probably a better idea anyway. I've pushed a new commit which uses the which crate.

I don't actually make that docker/apptainer - so unsure how to test - maybe you can?
Thanks, ben

@nickp60
Copy link
Author

nickp60 commented Mar 18, 2024

Amazing, thank you so much!! I just pushed an image with these changes, and I'll ask our collaborator if it works on their system now!
@microjishuai, would you be willing to try as well?

docker run ghcr.io/vdblab/coverm:0.7.0-dev
# or
singularity run docker://ghcr.io/vdblab/coverm:0.7.0-dev

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants