Exemplo n.º 1
0
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 );
}
Exemplo n.º 2
0
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");
	}
}
Exemplo n.º 3
0
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;
}