nixpkgs/pkgs/applications/science/biology/blast/default.nix
2021-09-15 15:33:44 +00:00

110 lines
3.5 KiB
Nix

{ lib, stdenv, buildPackages, fetchurl, zlib, bzip2, perl, cpio, gawk, coreutils, ApplicationServices }:
stdenv.mkDerivation rec {
pname = "blast";
version = "2.12.0";
src = fetchurl {
url = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/${version}/ncbi-blast-${version}+-src.tar.gz";
sha256 = "122bf45cyj3s3zv2lw1y1rhz7g22v0va560ai30xdjl8sk4wk8zx";
};
sourceRoot = "ncbi-blast-${version}+-src/c++";
configureFlags = [
# With flat Makefile we can use all_projects in order not to build extra.
# These extra cause clang to hang on Darwin.
"--with-flat-makefile"
"--without-makefile-auto-update"
"--with-dll" # build dynamic libraries (static are default)
];
makeFlags = [ "all_projects=app/" ];
preConfigure = ''
export NCBICXX_RECONF_POLICY=warn
export PWD=$(pwd)
export HOME=$PWD
# The configure scripts wants to set AR="ar cr" unless it is already set in
# the environment. Because stdenv sets AR="ar", the result is a bad call to
# the assembler later in the process. Thus, we need to unset AR
unset AR
for awks in scripts/common/impl/is_log_interesting.awk \
scripts/common/impl/report_duplicates.awk; do
substituteInPlace $awks \
--replace /usr/bin/awk ${gawk}/bin/awk
done
for mk in src/build-system/Makefile.meta.in \
src/build-system/helpers/run_with_lock.c ; do
substituteInPlace $mk \
--replace /bin/rm ${coreutils}/bin/rm
done
for mk in src/build-system/Makefile.meta.gmake=no \
src/build-system/Makefile.meta_l \
src/build-system/Makefile.meta_r \
src/build-system/Makefile.requirements \
src/build-system/Makefile.rules_with_autodep.in; do
substituteInPlace $mk \
--replace /bin/echo ${coreutils}/bin/echo
done
for mk in src/build-system/Makefile.meta_p \
src/build-system/Makefile.rules_with_autodep.in \
src/build-system/Makefile.protobuf.in ; do
substituteInPlace $mk \
--replace /bin/mv ${coreutils}/bin/mv
done
substituteInPlace src/build-system/configure \
--replace /bin/pwd ${coreutils}/bin/pwd \
--replace /bin/ln ${coreutils}/bin/ln
substituteInPlace src/build-system/configure.ac \
--replace /bin/pwd ${coreutils}/bin/pwd \
--replace /bin/ln ${coreutils}/bin/ln
substituteInPlace src/build-system/Makefile.meta_l \
--replace /bin/date ${coreutils}/bin/date
'';
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [ perl ];
# perl is necessary in buildInputs so that installed perl scripts get patched
# correctly
buildInputs = [ coreutils perl gawk zlib bzip2 cpio ]
++ lib.optionals stdenv.isDarwin [ ApplicationServices ];
hardeningDisable = [ "format" ];
postInstall = ''
substituteInPlace $out/bin/get_species_taxids.sh \
--replace /bin/rm ${coreutils}/bin/rm
'';
patches = [ ./no_slash_bin.patch ];
enableParallelBuilding = true;
# Many tests require either network access or locally available databases
doCheck = false;
meta = with lib; {
description = ''Basic Local Alignment Search Tool (BLAST) finds regions of
similarity between biological sequences'';
homepage = "https://blast.ncbi.nlm.nih.gov/Blast.cgi";
license = licenses.publicDomain;
# Version 2.10.0 fails on Darwin
# See https://github.com/NixOS/nixpkgs/pull/61430
platforms = platforms.linux;
maintainers = with maintainers; [ luispedro ];
};
}