From e0549f5e8895c59c39da838bf71b2c13f7f11751 Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Wed, 21 Apr 2021 22:20:51 -0500 Subject: ncbi-rmblastn: add v2.11.0 (#22788) --- .../ncbi-rmblastn/isb-2.11.0+-rmblast.patch | 314 +++++++++++++++++++++ .../builtin/packages/ncbi-rmblastn/package.py | 14 + 2 files changed, 328 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.11.0+-rmblast.patch (limited to 'var') diff --git a/var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.11.0+-rmblast.patch b/var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.11.0+-rmblast.patch new file mode 100644 index 0000000000..0ca0ef47c9 --- /dev/null +++ b/var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.11.0+-rmblast.patch @@ -0,0 +1,314 @@ +diff -rupN ncbi-blast-2.11.0+-src.orig/c++/src/algo/blast/format/blast_format.cpp ncbi-blast-2.11.0+-src/c++/src/algo/blast/format/blast_format.cpp +--- ncbi-blast-2.11.0+-src.orig/c++/src/algo/blast/format/blast_format.cpp 2020-09-28 11:27:07.000000000 -0700 ++++ ncbi-blast-2.11.0+-src/c++/src/algo/blast/format/blast_format.cpp 2021-02-09 13:45:03.737153875 -0800 +@@ -2463,13 +2463,6 @@ void CBlastFormat::LogBlastSearchInfo(CB + } + } + else { +- string dir = kEmptyStr; +- CFile::SplitPath(m_DbName, &dir); +- string db_name = m_DbName; +- if (dir != kEmptyStr) { +- db_name = m_DbName.substr(dir.length()); +- } +- report.AddParam(CBlastUsageReport::eDBName, db_name); + report.AddParam(CBlastUsageReport::eDBLength, GetDbTotalLength()); + report.AddParam(CBlastUsageReport::eDBNumSeqs, num_seqs); + report.AddParam(CBlastUsageReport::eDBDate, m_DbInfo[0].date); +diff -rupN ncbi-blast-2.11.0+-src.orig/c++/src/app/blast/blast_app_util.cpp ncbi-blast-2.11.0+-src/c++/src/app/blast/blast_app_util.cpp +--- ncbi-blast-2.11.0+-src.orig/c++/src/app/blast/blast_app_util.cpp 2020-08-31 08:38:53.000000000 -0700 ++++ ncbi-blast-2.11.0+-src/c++/src/app/blast/blast_app_util.cpp 2021-02-09 13:43:55.672814151 -0800 +@@ -964,12 +964,6 @@ void LogRPSCmdOptions(blast::CBlastUsage + args.GetBlastDatabaseArgs()->GetSearchDatabase()->GetSeqDb().NotEmpty()) { + + CRef db = args.GetBlastDatabaseArgs()->GetSearchDatabase()->GetSeqDb(); +- string db_name = db->GetDBNameList(); +- int off = db_name.find_last_of(CFile::GetPathSeparator()); +- if (off != -1) { +- db_name.erase(0, off+1); +- } +- report.AddParam(CBlastUsageReport::eDBName, db_name); + report.AddParam(CBlastUsageReport::eDBLength, (Int8) db->GetTotalLength()); + report.AddParam(CBlastUsageReport::eDBNumSeqs, db->GetNumSeqs()); + report.AddParam(CBlastUsageReport::eDBDate, db->GetDate()); +diff -rupN ncbi-blast-2.11.0+-src.orig/c++/src/app/blastdb/blastdbcmd.cpp ncbi-blast-2.11.0+-src/c++/src/app/blastdb/blastdbcmd.cpp +--- ncbi-blast-2.11.0+-src.orig/c++/src/app/blastdb/blastdbcmd.cpp 2020-09-22 06:14:39.000000000 -0700 ++++ ncbi-blast-2.11.0+-src/c++/src/app/blastdb/blastdbcmd.cpp 2021-02-09 13:45:40.331798879 -0800 +@@ -1186,12 +1186,6 @@ void CBlastDBCmdApp::x_AddCmdOptions() + } + + +- string db_name = m_BlastDb->GetDBNameList(); +- int off = db_name.find_last_of(CFile::GetPathSeparator()); +- if (off != -1) { +- db_name.erase(0, off+1); +- } +- m_UsageReport.AddParam(CBlastUsageReport::eDBName, db_name); + m_UsageReport.AddParam(CBlastUsageReport::eDBLength, (Int8) m_BlastDb->GetTotalLength()); + m_UsageReport.AddParam(CBlastUsageReport::eDBNumSeqs, m_BlastDb->GetNumSeqs()); + m_UsageReport.AddParam(CBlastUsageReport::eDBDate, m_BlastDb->GetDate()); +diff -rupN ncbi-blast-2.11.0+-src.orig/c++/src/app/rmblastn/Makefile.in ncbi-blast-2.11.0+-src/c++/src/app/rmblastn/Makefile.in +--- ncbi-blast-2.11.0+-src.orig/c++/src/app/rmblastn/Makefile.in 1969-12-31 16:00:00.000000000 -0800 ++++ ncbi-blast-2.11.0+-src/c++/src/app/rmblastn/Makefile.in 2021-02-09 13:00:33.072893864 -0800 +@@ -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.11.0+-src.orig/c++/src/app/rmblastn/Makefile.rmblastn.app ncbi-blast-2.11.0+-src/c++/src/app/rmblastn/Makefile.rmblastn.app +--- ncbi-blast-2.11.0+-src.orig/c++/src/app/rmblastn/Makefile.rmblastn.app 1969-12-31 16:00:00.000000000 -0800 ++++ ncbi-blast-2.11.0+-src/c++/src/app/rmblastn/Makefile.rmblastn.app 2021-02-09 13:00:33.072893864 -0800 +@@ -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.11.0+-src.orig/c++/src/app/rmblastn/rmblastn_app.cpp ncbi-blast-2.11.0+-src/c++/src/app/rmblastn/rmblastn_app.cpp +--- ncbi-blast-2.11.0+-src.orig/c++/src/app/rmblastn/rmblastn_app.cpp 1969-12-31 16:00:00.000000000 -0800 ++++ ncbi-blast-2.11.0+-src/c++/src/app/rmblastn/rmblastn_app.cpp 2021-02-09 13:55:13.371077793 -0800 +@@ -0,0 +1,197 @@ ++/* $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 ++ */ ++ ++#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); ++ m_StopWatch.Start(); ++ if (m_UsageReport.IsEnabled()) { ++ m_UsageReport.AddParam(CBlastUsageReport::eVersion, GetVersion().Print()); ++ } ++ } ++ ++ ~CRMBlastnApp() { ++ m_UsageReport.AddParam(CBlastUsageReport::eRunTime, m_StopWatch.Elapsed()); ++ } ++private: ++ /** @inheritDoc */ ++ virtual void Init(); ++ /** @inheritDoc */ ++ virtual int Run(); ++ ++ /// This application's command line args ++ CRef m_CmdLineArgs; ++ CBlastUsageReport m_UsageReport; ++ CStopWatch m_StopWatch; ++}; ++ ++ ++ ++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(); ++ ++ /*** 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); ++ ++ /*** 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 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); ++ } ++ ++ LogQueryInfo(m_UsageReport, input); ++ formatter.LogBlastSearchInfo(m_UsageReport); ++ } CATCH_ALL(status) ++ ++ // The program and task name are overwritten here to avoid changing the ++ // "true" values of Program and Task everywhere else in the program ++ m_UsageReport.AddParam(CBlastUsageReport::eProgram, (string) "rmblastn"); ++ m_UsageReport.AddParam(CBlastUsageReport::eTask, (string) "rmblastn"); ++ ++ m_UsageReport.AddParam(CBlastUsageReport::eNumThreads, (int) m_CmdLineArgs->GetNumThreads()); ++ m_UsageReport.AddParam(CBlastUsageReport::eExitStatus, status); ++ return status; ++} ++ ++#ifndef SKIP_DOXYGEN_PROCESSING ++int NcbiSys_main(int argc, ncbi::TXChar* argv[]) ++{ ++ return CRMBlastnApp().AppMain(argc, argv); ++} ++#endif /* SKIP_DOXYGEN_PROCESSING */ +diff -rupN ncbi-blast-2.11.0+-src.orig/c++/src/connect/ncbi_usage_report.cpp ncbi-blast-2.11.0+-src/c++/src/connect/ncbi_usage_report.cpp +--- ncbi-blast-2.11.0+-src.orig/c++/src/connect/ncbi_usage_report.cpp 2020-03-03 10:47:23.000000000 -0800 ++++ ncbi-blast-2.11.0+-src/c++/src/connect/ncbi_usage_report.cpp 2021-02-23 15:38:56.089137179 -0800 +@@ -46,7 +46,7 @@ BEGIN_NCBI_SCOPE + // All parameters can be redefined in the configuration file. + + // Default "pinger" CGI url for reporting statistics. +-const char* kDefault_URL = "https://www.ncbi.nlm.nih.gov/stat"; ++const char* kDefault_URL = "https://www.repeatmasker.org/rmblast/stat"; + + // Usage logging is disabled by default. + const bool kDefault_IsEnabled = false; +@@ -265,11 +265,6 @@ void CUsageReportJob::x_CopyFrom(const C + + static string s_GetOS() + { +- // Check NCBI_OS first, configure can define OS name already +-#if defined(NCBI_OS) +- return NCBI_OS; +-#endif +- // Fallback, try to guess + #if defined(_WIN32) + return "MSWIN"; // Windows + #elif defined(__CYGWIN__) diff --git a/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py b/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py index 9ee11128a6..3641ece033 100644 --- a/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py +++ b/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py @@ -12,11 +12,25 @@ class NcbiRmblastn(AutotoolsPackage): 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.11.0', sha256='d88e1858ae7ce553545a795a2120e657a799a6d334f2a07ef0330cc3e74e1954') version('2.9.0', sha256='a390cc2d7a09422759fc178db84de9def822cbe485916bbb2ec0d215dacdc257') + + # There is a corresponding gzipped patch file associated with each version. + # According to the documentation, http://www.repeatmasker.org/RMBlast.html, + # Download NCBI Blast+ and rmblast patch file: + # ncbi-blast-2.11.0+-src.tar.gz + # isb-2.11.0+-rmblast.patch.gz + # The patch is downloaded and unzipped in the ncbi-rmblastn Spack package + # directory to make it available for the patch directive. + patch('isb-2.11.0+-rmblast.patch', when="@2.11.0") patch('isb-2.9.0+-rmblast-p1.patch', when="@2.9.0") configure_directory = 'c++' + def url_for_version(self, version): + url = "ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/{0}/ncbi-blast-{1}+-src.tar.gz" + return url.format(version, version) + def configure_args(self): args = [ "--with-mt", -- cgit v1.2.3-60-g2f50