예제 #1
0
 def __init__(self,projects=None,force=False):
     self.afs=AfsConfiguration()
     self.pi=PackageInstallation()
     self.force=force
     if projects==None:
         self.afs.chargeProjects()
         self.pi._projects=self.afs._projects
         self.pi.createHierarchy()
     else:
         self.afs.chargeProjectsFromList(projects)
         self.afs.createHierarchyFromList()
         self.pi._projects=self.afs._projects
예제 #2
0
class Main(object):

    def __init__(self,projects=None,force=False):
        self.afs=AfsConfiguration()
        self.pi=PackageInstallation()
        self.force=force
        if projects==None:
            self.afs.chargeProjects()
            self.pi._projects=self.afs._projects
            self.pi.createHierarchy()
        else:
            self.afs.chargeProjectsFromList(projects)
            self.afs.createHierarchyFromList()
            self.pi._projects=self.afs._projects



    def showErrors(self):
        file=open(self.logDir)

    def installInteraction(self,project):
        if self.afs.projectAlreadyInstalled(project)==True:
            print "Project "+project._name +" is already installed!"
            return False
        else:
                    self.afs.removeSymbolicLink(project)
                    self.pi.getConfig(project)
                    result=raw_input("Project "+project._name+" has been configured, do you want to install it ?(y or n) ")
                    while result not in ("y","n"):
                        result=raw_input("Project "+project._name+" has been configured, do you want to install it ?(y or n) ")
                    if result=='y':
                        self.pi.installProjects(project)
                        return True

    def installInteractionForced(self,project):
        if self.afs.projectAlreadyInstalled(project)==True:
            print "Project "+project._name +" is already installed"
            return False
        else:
            self.afs.removeSymbolicLinkForced(project)
            self.pi.getConfig(project)
            self.pi.installProjects(project)
            return True



    def installPackage(self,project):
         builders=".."+os.sep+".."+os.sep+".."+os.sep+".."+os.sep+"LCG_Builders"+os.sep
         if len(project._dependences)==0:
                 if project._isInstalled==False:
                     if self.installInteraction(project):
                         file=builders+project._name+"/cmt/logs/"+project._name+"_"+project._platform+"_"+"make.log"
                         log=LogChecker(True,file,project._platform)
                         log.checkFiles()
         else:
             for p in project._dependences:
                 pr=self.pi.getProject(p)
                 if pr==None:
                     result=raw_input("Project "+p+" is going to be installed as a symbolic link ?(y or n) ")
                     while result not in ("y","n"):
                         result=raw_input("Project "+p+" is going to be installed as a symbolic link ?(y or n) ")
                     if result=='y':
                         if self.afs.symblinkAlreadyInstalled(p)==False:
                             self.pi.createSymLink(p)
                         else:
                             print "Symbolic link already created"
                 else:
                     self.installPackage(pr)
             if self.installInteraction(project):
                 #print "Before generating the log files2"
                 file=builders+project._name+"/cmt/logs/"+project._name+"_"+project._platform+"_"+"make.log"
                 log=LogChecker(True,file,project._platform)
                 log.checkFiles()

    def installPackageForced(self,project):
         builders=".."+os.sep+".."+os.sep+".."+os.sep+".."+os.sep+"LCG_Builders"+os.sep
         if len(project._dependences)==0:
                 #print "There are not dependences"
                 if project._isInstalled==False:
                     if self.installInteractionForced(project):
                         file=builders+project._name+"/cmt/logs/"+project._name+"_"+project._platform+"_"+"make.log"
                         log=LogChecker(True,file,project._platform)
                         log.checkFiles()
         else:
             for p in project._dependences:
                 #print "Before getting the dependences of "+project._name
                 pr=self.pi.getProject(p)
                 #print "Dependences of "+project._name+" is "+p
                 if pr==None:
                         if self.afs.symblinkAlreadyInstalled(p)==False:
                             self.pi.createSymLink(p)
                         else:
                             print "Symbolic link already created"
                 else:
                     self.installPackageForced(pr)
             if self.installInteractionForced(project):
                 file=builders+project._name+"/cmt/logs/"+project._name+"_"+project._platform+"_"+"make.log"
                 log=LogChecker(True,file,project._platform)
                 log.checkFiles()

    def installPackages(self):
        for i in range(len(self.afs._projects)):
            project=self.afs._projects[i]
            if self.force == False:

                self.installPackage(project)
            else:
                self.installPackageForced(project)



    def checkAfs(self):
         for i in range(len(self.afs._projects)):
            project=self.afs._projects[i]
            print project._name
            #if self.afs.projectAlreadyInstalled(project)==True:
               # print "Project "+project._name +" is already installed"
                #return False
            #else:
            if self.force==False:
                    self.afs.checkProjectVolume(project)
            else:
                    self.afs.checkProjectVolumeForced(project)

    def releasePackages(self):
        for i in range(len(self.afs._projects)):
            project=self.afs._projects[i]
            if self.force==False:
                self.afs.release(project)
            else:
                self.afs.releaseForced(project)