extras-buildsys-temp/automation2/server aw_manager.py, 1.4, 1.5 bm_server.py, 1.2, 1.3 buildjob.py, 1.2, 1.3 buildmaster.py, 1.2, 1.3 CONFIG.py, 1.1, 1.2
Daniel Williams (dcbw)
fedora-extras-commits at redhat.com
Fri May 13 02:55:05 UTC 2005
Author: dcbw
Update of /cvs/fedora/extras-buildsys-temp/automation2/server
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv7982/server
Modified Files:
aw_manager.py bm_server.py buildjob.py buildmaster.py
CONFIG.py
Log Message:
2005-05-12 Dan Williams <dcbw at redhat.com>
* Add an SRPM build mode that short-circuits CVS checkouts to build an SRPM
queued by the user. This mode CANNOT be enabled at the same time as CVS
checkout mode, since its less secure. It should only be used for local
building and development. To enable this mode, set the 'use_srpm_not_cvs'
config option to True.
enqueue_srpm(<user>, <package name>, <path to SRPM>, <target>)
Index: aw_manager.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys-temp/automation2/server/aw_manager.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- aw_manager.py 12 May 2005 17:12:00 -0000 1.4
+++ aw_manager.py 13 May 2005 02:55:03 -0000 1.5
@@ -63,7 +63,8 @@
try:
status = self._server.status(self.jobid)
except Exception, e:
- print "XMLAW: got error '%s' from AW during update_status()" % e
+ print "AWJ(%s): got error '%s' from build client while attempting " \
+ "to get its status." % (self.awi.address(), e)
self.status = status
return self.status
@@ -117,7 +118,8 @@
if e[0] == 111 or e[0] == 104:
self._unavail_count = self._unavail_count + 1
else:
- print "XMLAW: got error '%s' from AW during get_cur_job()" % e
+ print "AWI(%s): got error '%s' from AW while trying to get " \
+ "current job number" % (self._address, e)
else:
self._unavail_count = 0
if cur_job == 0:
Index: bm_server.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys-temp/automation2/server/bm_server.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- bm_server.py 12 May 2005 16:48:15 -0000 1.2
+++ bm_server.py 13 May 2005 02:55:03 -0000 1.3
@@ -61,6 +61,13 @@
def enqueue(self, username, package, cvs_tag, target, buildreq=None):
""" Accept a job to build and stuff it into the job database """
+ # FIXME we should be passing back a tuple of (error/success, reason)
+
+ if CONFIG.get('use_srpm_not_cvs') == True:
+ email_result(username, cvs_tag, "Error setting up build for %s on "\
+ "%s: this server builds SRPMs, not CVS checkouts." % (cvs_tag, target))
+ return -1
+
print "Request to enqueue '%s' tag '%s' for target '%s' (user '%s')" \
% (package, cvs_tag, target, username)
targets = CONFIG.get('targets')
@@ -80,6 +87,41 @@
self.dbcx.commit()
return 0
+ def enqueue_srpm(self, username, package, srpm_file, target, buildreq=None):
+ """ Accept a job to build from SRPM file and stuff it into the job database """
+
+ # FIXME we should be passing back a tuple of (error/success, reason)
+
+ if CONFIG.get('use_srpm_not_cvs') == False:
+ email_result(username, srpm_file, "Error setting up build for %s on "\
+ "%s: this server builds CVS checkouts, not SRPMS." % (srpm_file, target))
+ return -1
+
+ # We limit the database field to 255 chars
+ if len(srpm_file) > 255:
+ email_result(username, srpm_file, "Error setting up build for %s on "\
+ "%s: try using a shorter path to the SRPM (< 255 chars)." % (srpm_file, target))
+ return -1
+
+ print "Request to enqueue '%s' file '%s' for target '%s' (user '%s')" \
+ % (package, srpm_file, target, username)
+ targets = CONFIG.get('targets')
+ if not targets.has_key(target):
+ print "Error setting up build for %s on %s: target does not exist."\
+ % (srpm_file, target)
+ email_result(username, srpm_file, "Error setting up build for %s on "\
+ "%s: target does not exist." % (srpm_file, target))
+ return -1
+ else:
+ # Insert request into the database
+ self.curs.execute('INSERT INTO jobs (uid, username, package,' \
+ ' cvs_tag, target, buildreq, time_submitted, status)' \
+ ' VALUES (NULL, "%s", "%s", "%s", "%s", "%s", %d, "%s")' \
+ % (username, package, srpm_file, target, buildreq, \
+ time.time(), 'waiting'))
+ self.dbcx.commit()
+ return 0
+
def list_waiting_jobs(self):
self.curs.execute('SELECT uid, username, package, cvs_tag, target' \
' FROM jobs WHERE status="waiting"')
Index: buildjob.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys-temp/automation2/server/buildjob.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- buildjob.py 12 May 2005 16:48:15 -0000 1.2
+++ buildjob.py 13 May 2005 02:55:03 -0000 1.3
@@ -71,18 +71,27 @@
def __init__(self, uid, username, package, cvs_tag, target, arch_welder_manager):
self.awm = arch_welder_manager
self.uid = uid
- self.curstage = 'initialize'
self.username = username
self.starttime = time.time()
self.endtime = None
self.stages_root = CONFIG.get('stages_root')
self.package = package
- self.cvs_tag = cvs_tag
self.target = target
self.buildarches = []
self.sub_jobs = {}
self.failed = False
+ # If we are building and SRPM, cvs_tag will be the SRPM file
+ if CONFIG.get('use_srpm_not_cvs') == True:
+ self.srpmpath = cvs_tag
+ # SRPM builds short-circut to the prep stage (which is right after make_srpm)
+ self.curstage = 'make_srpm'
+ self.cvs_tag = None
+ else:
+ self.srpmpath = None
+ self.curstage = 'initialize'
+ self.cvs_tag = cvs_tag
+
def get_cur_stage(self):
return self.curstage
Index: buildmaster.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys-temp/automation2/server/buildmaster.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- buildmaster.py 12 May 2005 16:48:15 -0000 1.2
+++ buildmaster.py 13 May 2005 02:55:03 -0000 1.3
@@ -35,7 +35,7 @@
# If DB wasn't created, try to create it
curs.execute('CREATE TABLE jobs (uid INTEGER PRIMARY KEY, ' \
'username VARCHAR(20), package VARCHAR(50), ' \
- 'cvs_tag VARCHAR(75), target VARCHAR(20), ' \
+ 'cvs_tag VARCHAR(255), target VARCHAR(20), ' \
'buildreq VARCHAR(75), time_submitted BIGINT, ' \
'status VARCHAR(15))')
dbcx.commit()
@@ -83,7 +83,7 @@
self.dbcx.commit()
item = self.curs.fetchone()
if item:
- print "%d: Adding (%s/%s/%s) to build queue" % (item['uid'], \
+ print "%d: Adding (%s/'%s'/%s) to build queue" % (item['uid'], \
item['package'], item['cvs_tag'], item['target'])
job = BuildJob(item['uid'], item['username'], item['package'],
item['cvs_tag'], item['target'], self.awm)
Index: CONFIG.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys-temp/automation2/server/CONFIG.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CONFIG.py 12 May 2005 16:48:15 -0000 1.1
+++ CONFIG.py 13 May 2005 02:55:03 -0000 1.2
@@ -13,6 +13,11 @@
config_opts['redhat_internal_cvs'] = 1
config_opts['log_url'] = "http://foo.foo.org/logs/"
+# This option disables pulling from CVS. Allowing jobs to be submitted
+# as unknown SRPMs from random people may be a security risk, so don't
+# do this unless you really really want to.
+config_opts['use_srpm_not_cvs'] = False
+
config_opts['targets'] = { 'FC-3' : ['i386', 'x86_64'],
'devel' : ['i386']
}
More information about the fedora-extras-commits
mailing list