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

[WIP] ncbi-blast: init at 2.7.1 #33961

Closed
wants to merge 2 commits into from
Closed

Conversation

orivej
Copy link
Contributor

@orivej orivej commented Jan 17, 2018

Motivation for this change

BLAST tools are fundamental for bioinformatics. The official package and packages in various distributions are called ncbi-blast or ncbi-blast+, so I used this name.

This PR in its current state is a response to #33956. (I have made it for myself and did not want to publish until I was certain that it was done right, but that issue prompted me to publish it now.) It builds and works. It allows, but does not implement cross compilation. It is not clear that substitute-paths helper should be accepted into all-packages, be scoped to ncbi-blast, be implemented in a different language , or if another approach to packaging Blast+ should be used instead.

Blast+ build process is powered by a set of hand written Makefiles and shell scripts. They call various coreutils and other tools during the build time, but some of those tools are used during run time. It seemed nontrivial to figure out which occurrences of paths to programs are used during the build, which during the run, and which (if any) at both times, so I went with another approach which is both completely automatic and supports cross compilation. (Cross compilation part is not implemented yet.) The idea is to (1) rewrite absolute paths (e.g. /bin/sh, /usr/bin/find) to the paths of build platform tools before the configure phase, and (2) rewrite paths of build platform tools with paths of host platform tools after the install phase. (Nix approach imposes the unusual burden that build platform paths are different from host platform paths. My solution alleviates it by using one set of paths to programs at a time. It works on the same principle that Nix uses to detect run time dependencies of packages.)

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
    (legacy_blast.pl and update_blastdb.pl are not wrapped with perl yet)
  • Fits CONTRIBUTING.md.

@luispedro
Copy link
Contributor

#61430 was merged, so nixpkgs now includes NCBI-blast (v2.10.0)

@c0bw3b c0bw3b closed this Jan 9, 2020
@orivej orivej deleted the ncbi-blast branch March 29, 2023 20:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants