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