From 4e487bf308f80bfea2365565f5b2da3acdaeb757 Mon Sep 17 00:00:00 2001 From: asmaahassan90 <31959389+asmaahassan90@users.noreply.github.com> Date: Sun, 1 Sep 2019 18:11:15 +0200 Subject: Install the newest version of ncbi-rmblastn (#12580) * Install the newest version of ncbi-rmblastn Version ncbi-rmblastn 2.2.28 coonfiguration fails for gcc compiler on ubuntu 16.04 due to some compatibility issues that requires manual intervention to keep the installation going. However you still stumble upon other issues while compiling it. Using Intel compiler passes the configuration step but fails for the compilation process as well. Here I'm using the latest version and patch, and the recommended configuration option as mention in http://www.repeatmasker.org/RMBlast.html * uploading ncbi-blast patch --- .../ncbi-rmblastn/isb-2.9.0+-rmblast-p1.patch | 238 +++++++++++++++++++++ .../builtin/packages/ncbi-rmblastn/package.py | 16 +- 2 files changed, 251 insertions(+), 3 deletions(-) create mode 100644 var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.9.0+-rmblast-p1.patch diff --git a/var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.9.0+-rmblast-p1.patch b/var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.9.0+-rmblast-p1.patch new file mode 100644 index 0000000000..6dd66369e5 --- /dev/null +++ b/var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.9.0+-rmblast-p1.patch @@ -0,0 +1,238 @@ +diff -rupN ncbi-blast-2.9.0+-src.orig/c++/src/app/rmblastn/Makefile.in ncbi-blast-2.9.0+-src/c++/src/app/rmblastn/Makefile.in +--- ncbi-blast-2.9.0+-src.orig/c++/src/app/rmblastn/Makefile.in 1969-12-31 16:00:00.000000000 -0800 ++++ ncbi-blast-2.9.0+-src/c++/src/app/rmblastn/Makefile.in 2019-04-01 13:25:24.854320235 -0700 +@@ -0,0 +1,16 @@ ++# $Id: Makefile.in 371962 2012-08-14 09:45:56Z coulouri $ ++ ++# Meta-makefile("APP" project) ++################################# ++ ++REQUIRES = objects algo ++ ++APP_PROJ = rmblastn ++ ++srcdir = @srcdir@ ++include @builddir@/Makefile.meta ++ ++.PHONY: all $(APP_PROJ) ++ ++rmblastn: ++ ${MAKE} ${MFLAGS} -f Makefile.rmblastn_app +diff -rupN ncbi-blast-2.9.0+-src.orig/c++/src/app/rmblastn/Makefile.rmblastn.app ncbi-blast-2.9.0+-src/c++/src/app/rmblastn/Makefile.rmblastn.app +--- ncbi-blast-2.9.0+-src.orig/c++/src/app/rmblastn/Makefile.rmblastn.app 1969-12-31 16:00:00.000000000 -0800 ++++ ncbi-blast-2.9.0+-src/c++/src/app/rmblastn/Makefile.rmblastn.app 2019-04-01 13:25:24.856320218 -0700 +@@ -0,0 +1,16 @@ ++WATCHERS = camacho madden maning ++ ++APP = rmblastn ++SRC = rmblastn_app ++LIB_ = $(BLAST_INPUT_LIBS) $(BLAST_LIBS) $(OBJMGR_LIBS) ++LIB = blast_app_util $(LIB_:%=%$(STATIC)) ++ ++# De-universalize Mac builds to work around a PPC toolchain limitation ++CFLAGS = $(FAST_CFLAGS:ppc=i386) ++CXXFLAGS = $(FAST_CXXFLAGS:ppc=i386) ++LDFLAGS = $(FAST_LDFLAGS:ppc=i386) ++ ++CPPFLAGS = $(ORIG_CPPFLAGS) ++LIBS = $(CMPRS_LIBS) $(DL_LIBS) $(PCRE_LIBS) $(NETWORK_LIBS) $(ORIG_LIBS) ++ ++REQUIRES = objects -Cygwin +diff -rupN ncbi-blast-2.9.0+-src.orig/c++/src/app/rmblastn/rmblastn_app.cpp ncbi-blast-2.9.0+-src/c++/src/app/rmblastn/rmblastn_app.cpp +--- ncbi-blast-2.9.0+-src.orig/c++/src/app/rmblastn/rmblastn_app.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ ncbi-blast-2.9.0+-src/c++/src/app/rmblastn/rmblastn_app.cpp 2019-04-01 13:25:24.858320200 -0700 +@@ -0,0 +1,183 @@ ++/* $Id: rmblastn_app.cpp 371962 2012-08-14 09:45:56Z coulouri $ ++ * =========================================================================== ++ * ++ * PUBLIC DOMAIN NOTICE ++ * ++ * =========================================================================== ++ * ++ * Authors: Robert M. Hubley ++ * Christiam Camacho ( original blastn_app.cpp ) ++ * ++ */ ++ ++/** @file rmblastn_app.cpp ++ * RMBLASTN command line application ++ */ ++ ++#ifndef SKIP_DOXYGEN_PROCESSING ++static char const rcsid[] = ++ "$Id: rmblastn_app.cpp 371962 2012-08-14 09:45:56Z coulouri $"; ++#endif /* SKIP_DOXYGEN_PROCESSING */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "../blast/blast_app_util.hpp" ++ ++#ifndef SKIP_DOXYGEN_PROCESSING ++USING_NCBI_SCOPE; ++USING_SCOPE(blast); ++USING_SCOPE(objects); ++#endif ++ ++class CRMBlastnApp : public CNcbiApplication ++{ ++public: ++ /** @inheritDoc */ ++ CRMBlastnApp() { ++ CRef version(new CVersion()); ++ version->SetVersionInfo(new CBlastVersion()); ++ SetFullVersion(version); ++ } ++private: ++ /** @inheritDoc */ ++ virtual void Init(); ++ /** @inheritDoc */ ++ virtual int Run(); ++ ++ /// This application's command line args ++ CRef m_CmdLineArgs; ++}; ++ ++ ++ ++void CRMBlastnApp::Init() ++{ ++ // formulate command line arguments ++ m_CmdLineArgs.Reset(new CRMBlastnAppArgs()); ++ ++ // read the command line ++ ++ HideStdArgs(fHideLogfile | fHideConffile | fHideFullVersion | fHideXmlHelp | fHideDryRun); ++ SetupArgDescriptions(m_CmdLineArgs->SetCommandLine()); ++} ++ ++int CRMBlastnApp::Run(void) ++{ ++ int status = BLAST_EXIT_SUCCESS; ++ ++ try { ++ ++ // Allow the fasta reader to complain on invalid sequence input ++ SetDiagPostLevel(eDiag_Warning); ++ ++ /*** Get the BLAST options ***/ ++ const CArgs& args = GetArgs(); ++ CRef opts_hndl; ++ if(RecoverSearchStrategy(args, m_CmdLineArgs)) { ++ opts_hndl.Reset(&*m_CmdLineArgs->SetOptionsForSavedStrategy(args)); ++ } ++ else { ++ opts_hndl.Reset(&*m_CmdLineArgs->SetOptions(args)); ++ } ++ const CBlastOptions& opt = opts_hndl->GetOptions(); ++ ++ /*** Get the query sequence(s) ***/ ++ CRef query_opts = ++ m_CmdLineArgs->GetQueryOptionsArgs(); ++ SDataLoaderConfig dlconfig(query_opts->QueryIsProtein()); ++ dlconfig.OptimizeForWholeLargeSequenceRetrieval(); ++ CBlastInputSourceConfig iconfig(dlconfig, query_opts->GetStrand(), ++ query_opts->UseLowercaseMasks(), ++ query_opts->GetParseDeflines(), ++ query_opts->GetRange()); ++ iconfig.SetSkipSeqCheck(true); ++ CBlastFastaInputSource fasta(m_CmdLineArgs->GetInputStream(), iconfig); ++ CBlastInput input(&fasta, m_CmdLineArgs->GetQueryBatchSize()); ++ ++ /*** Initialize the database/subject ***/ ++ CRef db_args(m_CmdLineArgs->GetBlastDatabaseArgs()); ++ CRef db_adapter; ++ CRef scope; ++ InitializeSubject(db_args, opts_hndl, m_CmdLineArgs->ExecuteRemotely(), ++ db_adapter, scope); ++ _ASSERT(db_adapter && scope); ++ ++ // Initialize the megablast database index now so we can know whether an indexed search will be run. ++ // This is only important for the reference in the report, but would be done anyway. ++ if (opt.GetUseIndex() && !m_CmdLineArgs->ExecuteRemotely()) { ++ CRef my_options(&(opts_hndl->SetOptions())); ++ CSetupFactory::InitializeMegablastDbIndex(my_options); ++ } ++ ++ /*** Get the formatting options ***/ ++ CRef fmt_args(m_CmdLineArgs->GetFormattingArgs()); ++ CBlastFormat formatter(opt, *db_adapter, ++ fmt_args->GetFormattedOutputChoice(), ++ query_opts->GetParseDeflines(), ++ m_CmdLineArgs->GetOutputStream(), ++ fmt_args->GetNumDescriptions(), ++ fmt_args->GetNumAlignments(), ++ *scope, ++ opt.GetMatrixName(), ++ fmt_args->ShowGis(), ++ fmt_args->DisplayHtmlOutput(), ++ opt.GetQueryGeneticCode(), ++ opt.GetDbGeneticCode(), ++ opt.GetSumStatisticsMode(), ++ m_CmdLineArgs->ExecuteRemotely(), ++ db_adapter->GetFilteringAlgorithm(), ++ fmt_args->GetCustomOutputFormatSpec(), ++ m_CmdLineArgs->GetTask() == "megablast", ++ opt.GetMBIndexLoaded()); ++ ++ ++ formatter.PrintProlog(); ++ ++ /*** Process the input ***/ ++ for (; !input.End(); formatter.ResetScopeHistory()) { ++ ++ CRef query_batch(input.GetNextSeqBatch(*scope)); ++ CRef queries(new CObjMgr_QueryFactory(*query_batch)); ++ ++ SaveSearchStrategy(args, m_CmdLineArgs, queries, opts_hndl); ++ ++ CRef results; ++ ++ if (m_CmdLineArgs->ExecuteRemotely()) { ++ CRef rmt_blast = ++ InitializeRemoteBlast(queries, db_args, opts_hndl, ++ m_CmdLineArgs->ProduceDebugRemoteOutput()); ++ results = rmt_blast->GetResultSet(); ++ } else { ++ CLocalBlast lcl_blast(queries, opts_hndl, db_adapter); ++ lcl_blast.SetNumberOfThreads(m_CmdLineArgs->GetNumThreads()); ++ results = lcl_blast.Run(); ++ } ++ ++ ITERATE(CSearchResultSet, result, *results) { ++ formatter.PrintOneResultSet(**result, query_batch); ++ } ++ } ++ ++ formatter.PrintEpilog(opt); ++ ++ if (m_CmdLineArgs->ProduceDebugOutput()) { ++ opts_hndl->GetOptions().DebugDumpText(NcbiCerr, "BLAST options", 1); ++ } ++ ++ } CATCH_ALL(status) ++ return status; ++} ++ ++#ifndef SKIP_DOXYGEN_PROCESSING ++int main(int argc, const char* argv[] /*, const char* envp[]*/) ++{ ++ return CRMBlastnApp().AppMain(argc, argv, 0, eDS_Default, 0); ++} ++#endif /* SKIP_DOXYGEN_PROCESSING */ + +--- ncbi-blast-2.9.0+-src.orig/c++/src/objtools/blast/seqdb_reader/seqdbimpl.cpp 2019-08-02 15:07:03.643749527 -0700 ++++ ncbi-blast-2.9.0+-src/c++/src/objtools/blast/seqdb_reader/seqdbimpl.cpp 2019-08-02 15:07:05.839730395 -0700 +@@ -808,7 +808,6 @@ + if (! m_OidListSetup) { + x_GetOidList(locked); + } +- m_Atlas.Unlock(locked); + + if (const CSeqDBVol * vol = m_VolSet.FindVol(oid, vol_oid)) { + return vol->GetSeqIDs(vol_oid); diff --git a/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py b/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py index a8a9727cad..b23f616163 100644 --- a/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py +++ b/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py @@ -9,9 +9,19 @@ from spack import * class NcbiRmblastn(AutotoolsPackage): """RMBlast search engine for NCBI""" - homepage = "https://www.ncbi.nlm.nih.gov/" - url = "ftp://ftp.ncbi.nlm.nih.gov/blast/executables/rmblast/LATEST/ncbi-rmblastn-2.2.28-src.tar.gz" + homepage = "http://www.repeatmasker.org/RMBlast.html" + url = "ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.9.0/ncbi-blast-2.9.0+-src.tar.gz" - version('2.2.28', 'fb5f4e2e02ffcb1b17af2e9f206c5c22') + version('2.9.0', 'e6a44564e6278c445826ec2720f104b4') + patch('isb-2.9.0+-rmblast-p1.patch', when="@2.9.0") configure_directory = 'c++' + + def configure_args(self): + args = [ + "--with-mt", + "--without-debug", + "--without-krb5", + "--without-openssl", + "--with-projects=scripts/projects/rmblastn/project.lst"] + return args -- cgit v1.2.3-60-g2f50