Compilation fail with MPI in new 1.29 release


Thanks for making and maintaining Mothur. :slight_smile:

I’m updating Mothur on our server and got an error compiling clustersplitcommand.cpp when MPI is turned on.

The cause is obvious - the #ifdef on line 452 of that file introduces an unmatched curly bracket if USE_MPI is defined. I’m not sure if the intention is that the code bracketed by if(!runCluster) should be run on MPI or not. I’m guessing it should, so I just removed the three offending lines to get a clean compilation and hoped for the best. Not tested it yet as I don’t have suitable test data to hand.



my patch:

tbooth@balisaur[mothur-1.29.0+repack]cat debian/patches/fix_mpi_compilation
This file doesn't compile with MPI, and the reason is obvious.
It's not obvious that this is the right fix, though.  Will
post the issue to the forum.
--- a/clustersplitcommand.cpp
+++ b/clustersplitcommand.cpp
@@ -449,9 +449,6 @@
   estart = time(NULL);
         if (!runCluster) { 
-#ifdef USE_MPI
-    }
                 m->mothurOut("Output File Names: "); m->mothurOutEndLine();
                 for (int i = 0; i < distName.size(); i++) { m->mothurOut(distName[i].begin()->first); m->mothurOutEndLine(); m->mothurOut(distName[i].begin()->second); m->mothurOutEndLine(); }

Thanks for bringing this to our attention. You are correct those 3 lines should be removed.