blob: ee66c8ac425be92952e2e05527911833e01adaee [file] [log] [blame]
import fedora.client.pkgdb
import fedora.client.fas2
import entity
import logging
import os
import tempfile
import utils
import commands
import config
FAS_USER = "alcapcom"
FAS_PWD = "*********"
class Distrib:
ID = "fedora"
NAME = "Fedora Project"
def __init__(self, releases):
self.releases = releases
def getPackageName(self, updateId):
cmd = "rpm -q --whatprovides --qf '%{NAME} ' " + "osgi\(%s\)" % updateId
s, o = commands.getstatusoutput(cmd)
# FIXME: here we take the first package that provide the given osgi bundle.
o.split(' ')[0]
return s, o
def getSpecfileContent(self, pkgName, tag):
pwd = commands.getoutput("pwd");
tmpDir = tempfile.mkdtemp("%s-%s_spec" % (config.APP_NAME, pkgName))
os.chdir(tmpDir)
specfile = os.path.join(pkgName, tag, pkgName + ".spec")
cmd = "CVSROOT=:pserver:anonymous@cvs.fedoraproject.org:/cvs/pkgs cvs co %s" % specfile
status = os.system(cmd)
if status > 0:
config.LOG.error("Error during '%s'" % cmd)
return
content = utils.readFile(specfile)
os.chdir(pwd)
os.system("rm -rf " + tmpDir)
return content
def makeChroot(self, distRelease):
outputDir = os.path.join(config.OUTPUT_DIR, "mock", distRelease.tag)
if os.path.exists(config.CHROOT_DIR % distRelease.mockConfig):
cmd = "mock --update -r %s --resultdir=%s" % (distRelease.mockConfig, outputDir)
else:
cmd = "mock --init -r %s --resultdir=%s" % (distRelease.mockConfig, outputDir)
status = os.system(cmd)
if status > 0:
config.LOG.error("Error during '%s'" % cmd)
return
cmd = "mock --install -r %s eclipse\* --resultdir=%s" % (distRelease.mockConfig, outputDir)
status = os.system(cmd)
if status > 0:
config.LOG.error("Error during '%s'" % cmd)
return
return
# TODO: add co-maintainers
class Process:
DESCRIPTION = "Fedora Process"
def run(self, pkgsToUpdate, distRelease):
pkgdb = fedora.client.pkgdb.PackageDB()
for pkgToUpdate in pkgsToUpdate:
pkgName = pkgToUpdate.packageName.strip()
if distRelease.tag == "devel":
tag = "F-devel"
else:
tag = distRelease.tag
pkg_info = pkgdb.get_package_info(pkgName, tag)
pkg_info = pkg_info['packageListings'][0]
owner = pkg_info['owneruser']
fas = fedora.client.fas2.AccountSystem()
fas.username = FAS_USER
fas.password = FAS_PWD
person = fas.person_by_username(owner)
packager = entity.Packager(owner, person["human_name"] , person["email"], config.DISTRIB, pkgName)
for action in config.ACTIONS:
actionOutput = action.run(pkgToUpdate, packager, distRelease)
loginfo = "%s (%s) for %s [%s]" % (action.DESCRIPTION, pkgToUpdate.packageName, packager.name, actionOutput)
config.LOG.info(loginfo)