From 5b12568c4f17fb9914be9e903eff3aad007049ef Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 28 Apr 2021 17:00:58 +0200 Subject: Make Spack able to apply gz compressed remote patches (#22823) Modified ncbi-rmblastn to retrieve patches from remote --- lib/spack/spack/fetch_strategy.py | 2 + lib/spack/spack/util/compression.py | 19 +- .../ncbi-rmblastn/isb-2.11.0+-rmblast.patch | 314 --------------------- .../ncbi-rmblastn/isb-2.9.0+-rmblast-p1.patch | 238 ---------------- .../builtin/packages/ncbi-rmblastn/package.py | 14 +- 5 files changed, 31 insertions(+), 556 deletions(-) delete mode 100644 var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.11.0+-rmblast.patch delete mode 100644 var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.9.0+-rmblast-p1.patch diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index ff41c759ea..b5ce8495e3 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -467,6 +467,8 @@ class URLFetchStrategy(FetchStrategy): tarball_container = os.path.join(self.stage.path, "spack-expanded-archive") + # Below we assume that the command to decompress expand the + # archive in the current working directory mkdirp(tarball_container) with working_dir(tarball_container): decompress(self.archive_file) diff --git a/lib/spack/spack/util/compression.py b/lib/spack/spack/util/compression.py index 2f190e94e1..a1a0e1d6f3 100644 --- a/lib/spack/spack/util/compression.py +++ b/lib/spack/spack/util/compression.py @@ -22,6 +22,22 @@ def allowed_archive(path): return any(path.endswith(t) for t in ALLOWED_ARCHIVE_TYPES) +def _gunzip(archive_file): + """Like gunzip, but extracts in the current working directory + instead of in-place. + + Args: + archive_file (str): absolute path of the file to be decompressed + """ + import gzip + decompressed_file = os.path.basename(archive_file.strip('.gz')) + working_dir = os.getcwd() + destination_abspath = os.path.join(working_dir, decompressed_file) + with gzip.open(archive_file, "rb") as f_in: + with open(destination_abspath, "wb") as f_out: + f_out.write(f_in.read()) + + def decompressor_for(path, extension=None): """Get the appropriate decompressor for a path.""" if ((extension and re.match(r'\.?zip$', extension)) or @@ -30,8 +46,7 @@ def decompressor_for(path, extension=None): unzip.add_default_arg('-q') return unzip if extension and re.match(r'gz', extension): - gunzip = which('gunzip', required=True) - return gunzip + return _gunzip if extension and re.match(r'bz2', extension): bunzip2 = which('bunzip2', required=True) return bunzip2 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 deleted file mode 100644 index 0ca0ef47c9..0000000000 --- a/var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.11.0+-rmblast.patch +++ /dev/null @@ -1,314 +0,0 @@ -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/isb-2.9.0+-rmblast-p1.patch b/var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.9.0+-rmblast-p1.patch deleted file mode 100644 index 6dd66369e5..0000000000 --- a/var/spack/repos/builtin/packages/ncbi-rmblastn/isb-2.9.0+-rmblast-p1.patch +++ /dev/null @@ -1,238 +0,0 @@ -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 3641ece033..e7ef8bf897 100644 --- a/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py +++ b/var/spack/repos/builtin/packages/ncbi-rmblastn/package.py @@ -22,8 +22,18 @@ class NcbiRmblastn(AutotoolsPackage): # 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") + patch( + 'http://www.repeatmasker.org/isb-2.11.0+-rmblast.patch.gz', + sha256='ce985abd3512834adb9ad3e4078fbf9608a33a2ee6538a1e94b641490c92f899', + archive_sha256='0fc27781c2ea2f17645247e2f3775b5d18c56f0b62761a865347be745ea4f6be', + when='@2.11.0' + ) + patch( + 'http://www.repeatmasker.org/isb-2.9.0+-rmblast.patch.gz', + sha256='ffa0845801aed11f4215b452532f3ff5b3dcb49ac8c14169568aaa585b9450ed', + archive_sha256='e746ee480ade608052306fd21f015c8a323f27029f65399275216f9a4c882d59', + when='@2.9.0' + ) configure_directory = 'c++' -- cgit v1.2.3-60-g2f50