Example #1
0
    def createHostToolAppList(self, host, srcDir, destDir):  #{{{
        rpmDict = self.getRpmsForMerged(self.MergedID)

        if host == 'cluster':
            print "Host is defined here as cluster.  Skipping.  Copy may be incomplete, please check."
            return []

        sourceList = rpmDict['host-tool']['src']
        for rpm in sourceList:
            try:
                safecopy(srcDir + '/SRPMS/' + rpm, destDir + '/SRPMS')
            except IOError:
                pass

        return rpmDict['host-tool'][host]
Example #2
0
    def createTargetAppList(self, archID, srcDir, destDir):  #{{{
        archName = self._db.Command(
            "SELECT name FROM BuildCfg.archs WHERE id=%s" % archID)[0]['name']
        rpmDict = self.getRpmsForMerged(self.MergedID)

        sourceList = rpmDict['target']['src']
        for rpm in sourceList:
            try:
                safecopy(srcDir + "/SRPMS/" + rpm, destDir + "/SRPMS")
            except IOError:  #test
                pass
        try:
            return rpmDict['target'][archName]
        except KeyError:
            print "Arch %s is released for this product but not in the db." % archName
            logErr("Arch %s is released for this product but not in the db." %
                   archName)
            return []
Example #3
0
    def processSrcRPMS(self, releaseRequestID, srcDir, destDir):  #{{{
        '''Moves all the source RPMS for a release request.'''

        results = self._db.Command(
            "SELECT name FROM release_request WHERE id=%s" % releaseRequestID)
        results = results[0]['name']

        if '-src' in results:
            rpmList = self._createSrcRPMList(releaseRequestID)
            for rpm in rpmList:
                safecopy(srcDir + "/SRPMS/" + rpm, destDir + "/SRPMS")
            logInfo(
                "executing  processSrcRPMS.  Source update true, releaseRequestID: %s"
                % releaseRequestID)
            return True
        else:
            logInfo(
                "executing  processSrcRPMS.  Source update false, releaseRequestID: %s"
                % releaseRequestID)
            return False
Example #4
0
    def createCrossAppList(self, hostID, archID, srcDir, destDir):  #{{{
        hostName = self._db.Command(
            "SELECT name FROM BuildCfg.hosts WHERE id=%s" % hostID)[0]['name']
        archName = self._db.Command(
            "SELECT name FROM BuildCfg.archs WHERE id=%s" % archID)[0]['name']
        rpmDict = self.getRpmsForMerged(self.MergedID)

        sourceList = rpmDict['cross']['src']['src']

        for rpm in sourceList:
            try:
                safecopy(srcDir + "/SRPMS/" + rpm, destDir + "/SRPMS")
            except IOError:
                pass

        try:
            return rpmDict['cross'][archName][hostName]
        except KeyError:
            print "Arch %s Host %s copy failed." % (archName, hostName)
            return []
Example #5
0
File: mvl.py Project: metalsky/mvst
    def updateZone(self, releaseRequestID):  #{{{
        self.setProductID(releaseRequestID)

        patchDir = self.getDestDir()

        if DEBUG:
            patchDir = '/home/rell' + patchDir

        updateDirName = self.getPackageName() + '-' + str(
            self.getHighestBugID()) + '-' + str(
                self.getBuildID(releaseRequestID))

        print os.path.join(patchDir, updateDirName)

        if os.path.exists(os.path.join(patchDir, updateDirName)):
            patchDir = os.path.join(patchDir, updateDirName)
        else:
            patchDir = '/tmp/' + self.getPackageName() + '-' + str(
                self.getHighestBugID()) + '-' + str(
                    self.getBuildID(releaseRequestID))
            self.extractRpms(releaseRequestID, '/tmp')

        if DEBUG:
            patchDir = '/home/rell' + patchDir
            destDir = '/home/rell/mvista/ftp/arch'
        else:
            destDir = '/mvista/ftp/arch'

        updateDirName = self.getZoneDirName(releaseRequestID)
        zoneDirs = self.getZoneDirs()

        for dir in zoneDirs:
            for arch in self.getZoneArchs(dir['id']):
                safecopy(
                    os.path.join(patchDir, arch),
                    os.path.join(destDir, dir['name'], 'updates',
                                 updateDirName, arch))
                logInfo('Processing arch %s (zone)' % arch)

            for host in self.getZoneHosts(dir['id']):
                safecopy(
                    os.path.join(patchDir, 'host', host),
                    os.path.join(destDir, dir['name'], 'updates',
                                 updateDirName, 'host', host))
                logInfo('Processing host %s (zone)' % host)

            safecopy(
                os.path.join(patchDir, 'SRPMS'),
                os.path.join(destDir, dir['name'], 'updates', updateDirName,
                             'SRPMS'))
            logInfo('Processing SRPM %s (zone)' % updateDirName)
Example #6
0
File: mvl.py Project: metalsky/mvst
    def extractRpms(self, releaseRequestID, destPath=None):  #{{{
        '''	Moves the files needed for this release request into the update directory.
			Dirs are populated as follows:

			target:
				/update path/app path/$arch/target (for all archs)
			cross:
				/update path/app path/$arch/cross/$host (for all archs,hosts)
			host:
				/update path/app path/host/$host   (for all hosts)
			host-tools:
				/update path/app path/host-tools/$host (for all hosts)
			common:
				/update path/app path/host/common
		'''

        logInfo("In extractRPMs.  Initialization steps..")

        self.setProductID(releaseRequestID)
        packageType = self.getPackageType(releaseRequestID)

        srcDir = self.getBuildDir(releaseRequestID)

        if not destPath:
            destDir = self.getDestDir()
        else:
            destDir = destPath

        #print "%s to %s" % (srcDir, destDir)

        if DEBUG:
            destDir = '/home/rell' + destDir

        destDir += '/' + self.getPackageName() + '-' + str(
            self.getHighestBugID()) + '-' + str(
                self.getBuildID(releaseRequestID))

        #Make the SRPM directory regardless of the package type.
        if not os.path.exists(os.path.join(destDir, "SRPMS")):
            os.makedirs(os.path.join(destDir, "SRPMS"))

        if packageType == 'target':
            logInfo("processing target package.")
            #If this release request represents source rpms, copy them and finish.
            #if self.processSrcRPMS(releaseRequestID, srcDir, destDir):
            #	return

            archList = self.getAllArchs()
            for arch in archList:
                logInfo("processing arch %s" % arch)
                targetDir = os.path.join(destDir, arch, "target")
                archID = self.getArchID(arch)
                appList = self.createTargetAppList(archID, srcDir, destDir)
                for app in appList:
                    logInfo("processing app %s" % app)
                    if not os.path.exists(targetDir):
                        os.makedirs(targetDir)
                    if DEBUG:
                        pass
                        print "processing target app %s" % app
                    if os.path.exists(os.path.join(srcDir, arch, "target",
                                                   app)):
                        safecopy(os.path.join(srcDir, arch, "target", app),
                                 targetDir)
                    elif os.path.exists(
                            os.path.join(srcDir, arch, "target", "optional",
                                         app)):
                        if not os.path.exists(
                                os.path.join(targetDir, "optional")):
                            os.makedirs(os.path.join(targetDir, "optional"))
                        safecopy(
                            os.path.join(srcDir, arch, "target", "optional",
                                         app),
                            os.path.join(targetDir, "optional"))
                    else:
                        raise Exception, "This target app does not exist.  Something is wrong.  Aborting. \n %s" % os.path.join(
                            srcDir, arch, "target", app)

        elif packageType == 'host':
            logInfo("processing host package.")

            hostList = self.getHosts()
            for host in hostList:
                logInfo("processing host %s" % host)
                appList = self.createHostAppList(host, srcDir, destDir)
                for app in appList:
                    logInfo("processing app %s" % app)
                    if not os.path.exists(os.path.join(destDir, "host", host)):
                        os.makedirs(os.path.join(destDir, "host", host))
                    if DEBUG:
                        print "processing host app %s" % app
                    safecopy(os.path.join(srcDir,"host",host,app) , \
                      os.path.join(destDir,"host",host))

        elif packageType == 'host-tool':
            logInfo("processing host-tool package.")

            hostList = self.getHosts()
            for host in hostList:
                logInfo("processing host %s" % host)
                appList = self.createHostToolAppList(host, srcDir, destDir)
                for app in appList:
                    logInfo("processing app %s" % app)
                    if not os.path.exists(
                            os.path.join(destDir, "host-tools", host)):
                        os.makedirs(os.path.join(destDir, "host-tools", host))
                    if DEBUG:
                        print "processing host-tool app %s" % app
                    safecopy(os.path.join(srcDir,"host-tools",host,app) , \
                      os.path.join(destDir,"host-tools",host))

        elif packageType == 'cross':
            logInfo("processing cross package.")
            #if self.processSrcRPMS(releaseRequestID, srcDir, destDir):
            #	return

            for host in self.getHosts():
                for arch in self.getAllArchs():
                    logInfo("processing host-arch pair %s/%s" % (host, arch))
                    appList = self.createCrossAppList(self.getHostID(host),
                                                      self.getArchID(arch),
                                                      srcDir, destDir)
                    for app in appList:
                        logInfo("processing app %s" % app)
                        if not os.path.exists(
                                os.path.join(destDir, arch, "cross", host)):
                            os.makedirs(
                                os.path.join(destDir, arch, "cross", host))
                        if DEBUG:
                            print "processing cross app %s" % app
                        safecopy(os.path.join(srcDir,arch,"cross",host,app) , \
                            os.path.join(destDir,arch,"cross",host) )

        elif packageType == 'cross-common':
            logInfo("processing cross noarch package.")
            #if self.processSrcRPMS(releaseRequestID, srcDir, destDir):
            #	if DEBUG:
            #print "Processing Source RPMs."
            #return

            for arch in self.getAllArchs():
                logInfo("processing arch %s" % arch)
                appList = self.createAppList(releaseRequestID, archString=arch)
                for app in appList:
                    logInfo("processing app %s" % app)
                    if not os.path.exists(
                            os.path.join(destDir, arch, "cross", "common")):
                        os.makedirs(
                            os.path.join(destDir, arch, "cross", "common"))
                    if DEBUG:
                        print "processing cross-common app %s" % app
                    safecopy(os.path.join( srcDir,arch,"cross","common",app) , \
                       os.path.join( destDir,arch,"cross","common" ))


#		elif packageType == 'host-tool':
#			for host in self.getHosts():
#				pass#returnList.append(destDir + "/host-tools/" + host)
        else:
            raise Exception, "Package type mismatch. Contact [email protected] with the ID of this request."