void MkFMapCmd ( const std::string & aDir, const std::string & aBeforeTarget, const std::string & anAfterTarget, const std::string & aBeforeCom, const std::string & anAfterCom, const std::vector<std::string > &aSet , std::string FileMk = "", // int aNbProc = 0 // Def = MM Proc ) { if (aNbProc<=0) aNbProc = NbProcSys(); if (FileMk=="") FileMk = ( isUsingSeparateDirectories()?MMTemporaryDirectory():Dir2Write() ) + "MkStdMM" + GetUnikId(); // FileMk = MMDir() + "MkStdMM" + GetUnikId(); cEl_GPAO aGPAO; string targetPath = ( isUsingSeparateDirectories()?MMTemporaryDirectory():aDir+aBeforeTarget ); for (int aK=0 ; aK<int(aSet.size()) ; aK++) { std::string aTarget = targetPath + aSet[aK] + anAfterTarget; std::string aCom = aBeforeCom + aDir+ aSet[aK] + anAfterCom; aGPAO.GetOrCreate(aTarget,aCom); aGPAO.TaskOfName("all").AddDep(aTarget); } aGPAO.GenerateMakeFile(FileMk); //std::string aCom = g_externalToolHandler.get( "make" ).callName()+" all -f " + FileMk + " -j" + ToString(aNbProc); //VoidSystem(aCom.c_str()); launchMake( FileMk, "all", aNbProc ); }
cPackObsLiaison::cPackObsLiaison ( cAppliApero & anAppli, const cBDD_PtsLiaisons & aBDL, int aCpt ) : mAppli (anAppli), mBDL (aBDL), mId (aBDL.Id()), mFlagArc (mAppli.Gr().alloc_flag_arc()) { ELISE_ASSERT ( aBDL.KeySet().size() == aBDL.KeyAssoc().size(), "KeySet / KeyAssoc sizes in BDD_PtsLiaisons" ); int aNbTot = 0 ; for (int aKS=0 ; aKS<int(aBDL.KeySet().size()) ; aKS++) { std::string keyset = aBDL.KeySet()[aKS]; cInterfChantierNameManipulateur * iChantierNM = mAppli.ICNM(); if ( isUsingSeparateDirectories() ) iChantierNM->setDir( MMOutputDirectory() ); const std::vector<std::string> * aVName = iChantierNM->Get(keyset); if ( isUsingSeparateDirectories() ) iChantierNM->setDir( MMInputDirectory() ); aNbTot += (int)aVName->size(); if (1) { // if none of inverse files exist, filenames are processed in inverse order bool addReverseFile = true; for ( std::vector<std::string>::const_iterator itN = aVName->begin(); itN!=aVName->end(); itN++ ) { pair<string,string> filenames = mAppli.ICNM()->Assoc2To1( aBDL.KeyAssoc()[aKS], *itN, false ); string reversePackname = mAppli.OutputDirectory()+mAppli.ICNM()->Assoc1To2( aBDL.KeyAssoc()[aKS], filenames.second, filenames.first, true ); if ( ELISE_fp::exist_file( reversePackname ) ) { addReverseFile = false; break; } } bool aFirst = true; for ( std::vector<std::string>::const_iterator itN = aVName->begin(); itN!=aVName->end(); itN++ ) { bool aMultiple = aBDL.UseAsPtMultiple().ValWithDef(true); if (aFirst) mIsMult = aMultiple; else ELISE_ASSERT(mIsMult==aMultiple,"Incoherence Multiple/No-Multiple"); std::pair<std::string,std::string> aPair = mAppli.ICNM()->Assoc2To1(aBDL.KeyAssoc()[aKS],*itN,false); std::string aN1 = aPair.first; std::string aN2 = aPair.second; // std::cout <<" POLLLL " << aN1 << aN2 << "\n"; getchar(); addFileToObservation( aN1, aN2, *itN, aBDL, aCpt, aKS==0, false ); aFirst = false; } if ( addReverseFile && mIsMult ) { for ( std::vector<std::string>::const_iterator itN = aVName->begin(); itN!=aVName->end(); itN++ ) { std::pair<std::string,std::string> aPair = mAppli.ICNM()->Assoc2To1(aBDL.KeyAssoc()[aKS],*itN,false); addFileToObservation( aPair.second, aPair.first, *itN, aBDL, aCpt, aKS==0, true ); } } } else { // On rajoutera ici le cas ou fichier contient N Pack } } if (mAppli.ShowMes()) std::cout << "NB PACK PTS " << aNbTot << "\n"; if (aNbTot == 0) { std::cout << "FOR LIAISONS " << aBDL.Id() << "\n"; ELISE_ASSERT(false,"Cannot find any pack\n"); } }
void cEl_GPAO::DoComInParal(const std::list<std::string> & aL,std::string FileMk , int aNbProc ,bool Exe,bool MoinsK) { if (aNbProc<=0) aNbProc = NbProcSys(); // Modif MPD, certain process plantent apres qq heures en finissant sur // FAIL IN : // "/usr/bin/make" all -f "/home/mpd/MMM/culture3d/TestOpenMMmmmmMkStdMM" -j8 // Suspecte que c'est du a un "ecrasement" entre les Makefile lance par des process concurents; // tente un unique Id sur ces makefiles ... if (FileMk==""){ if ( isUsingSeparateDirectories() ) FileMk = MMTemporaryDirectory() + "MkStdMM" +GetUnikId(); else FileMk = Dir2Write() + "MkStdMM" +GetUnikId(); } else if (Exe) { FileMk = FileMk + GetUnikId(); } cEl_GPAO aGPAO; int aK=0; for ( std::list<std::string>::const_iterator itS=aL.begin(); itS!=aL.end(); itS++ ) { std::string aName ="Task_" + ToString(aK); cElTask & aTsk = aGPAO.NewTask(aName,*itS); aGPAO.TaskOfName("all").AddDep(aTsk); aK++; } aGPAO.GenerateMakeFile(FileMk); /* //std::string aCom = g_externalToolHandler.get( "make" ).callName()+" all -f " + FileMk + " -j" + ToString(aNbProc) + " "; if (MoinsK) aCom = aCom + " -k "; if (Exe) { VoidSystem(aCom.c_str()); ELISE_fp::RmFile(FileMk); } else { std::cout << aCom << "\n"; } */ std::string aSilent = " -s "; std::string aContinueOnError = (MoinsK?"-k":""); if ( Exe ) { // launchMake( FileMk, "all", aNbProc, (MoinsK?"-k":"") ); launchMake( FileMk, "all", aNbProc, aSilent + aContinueOnError); ELISE_fp::RmFile(FileMk); } else cout << g_externalToolHandler.get( "make" ).callName()+" all -f " + FileMk + " -j" + ToString(aNbProc) + " " << endl; }