extras-buildsys/utils rc-run.py,NONE,1.1

Michael Schwendt (mschwendt) fedora-extras-commits at redhat.com
Sat Sep 30 18:52:24 UTC 2006


Author: mschwendt

Update of /cvs/fedora/extras-buildsys/utils
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv18825

Added Files:
	rc-run.py 
Log Message:
re-use RepoSupport.py from within moved extras repoclosure main script



--- NEW FILE rc-run.py ---
#!/usr/bin/python
# -*- mode: Python; indent-tabs-mode: nil; -*-

# Fedora Extras repoclosure
# If executed as "rc-run-all.py" it processes all releases.

import fcntl, os, sys
import errno, shutil, stat
import datetime, time
import tempfile

workdir = '/srv/rpmbuild/extras-repoclosure'
cachedir = '/srv/rpmbuild/extras-repoclosure/mdcache'

sys.path.append(os.path.normpath(os.path.join(sys.path[0],'pushscript')))
print sys.path
import Utils, RepoSupport


def makereport():
    try:
        os.remove(logfilename)
    except:
        pass
    for arch in rs.ReleaseArchsDict()[release]:
        print '%s (%s)' % (release,arch)
        rcargs = ('-a %s ' % rs.targetarchs[arch])
        for r in rs.ReleaseRepoList(release):
            repoid = rs.RepoId(r,release,arch)
            rcargs += ('-r %s ' % repoid)
        # -n, --newest : yum-utils 0.5
        # -d : modified version only
        Utils.fix_mdcache_access(workdir,cachedir)
        rc = os.system('rc-modified -q -d %s -n -c %s %s >> %s' % (cachedir,conffile,rcargs,logfilename))
        Utils.fix_mdcache_access(workdir,cachedir)
        if rc:
            return False
    return True

# Main.

cfg = Utils.load_config_module('Extras')
Utils.signer_gid_check(cfg.signersgid)
cwd = os.getcwd()
os.chdir(workdir)
os.umask(cfg.signersumask)  # only for our /srv environment

# Delete old log files.
import glob
now = time.time()
for file in glob.glob('./rc-fe*.txt'):
    if ( (now - os.stat(file).st_mtime) > 3600*24*14 ):
        try:
            os.remove(file)
        except:
            pass

today = datetime.date.today()

lockfilename = 'rc-run.lockfile'
f = open(lockfilename,'w')
try:
    print "Trying to acquire lock file,\nwaiting for any active job to terminate:",
    sys.stdout.flush()
    rc = fcntl.flock(f, fcntl.LOCK_EX)
    f.write( ('%s' % today) )
    print "OK"
except IOError, (err, strerr):
    print 'ERROR: %s: %s' % (strerr,lockfilename)
    sys.exit(11)

rs = RepoSupport.RepoSupport(cfg)
releases = []
combinedreport = False

if sys.argv[0].endswith('rc-run-all.py'): # process all releases
    combinedreport = True
    for release in rs.AllReleases():
        releases.append(release)
else: # process one release given as command-line argument
    if len(sys.argv) != 2:
        print 'SYNTAX: %s <release>' % sys.argv[0]
        sys.exit(22)
    release = sys.argv[1]
    if release not in rs.ReleaseArchsDict():
        print 'ERROR: release %s is not supported' % release
        sys.exit(22)
    releases = [release]

conffile = rs.GenerateConfig(rs.AllReleases(),cachedir)

goodlogs = []
badlogs = []
for release in rs.AllReleases():
    if release not in releases:
        continue
    logfilename = ('rc-fe%s-%s.txt' % (release,today))
    rv = False
    for count in range(3):
        rv = makereport()
        if ( rv ):
            goodlogs.append( (release,logfilename) )
            break
        print 'ERROR: running repoclosure for %s failed' % release
        time.sleep(720)
    if ( not rv ):
        badlogs.append( (release,logfilename) )

if combinedreport:
    args = ''
    for (release,logfilename) in goodlogs:
        args += ('%s %s ' % (release,logfilename))
    rc = os.system('rc-report.py %s' % args)
else:
    for (release,logfilename) in goodlogs:
        rc = os.system('rc-report.py %s %s' % (release,logfilename))

os.remove(conffile)
fcntl.flock(f, fcntl.LOCK_UN)
f.close()
os.chdir(cwd)
sys.exit(0)




More information about the scm-commits mailing list