extras-buildsys/server Builder.py, 1.6, 1.7 BuilderManager.py, 1.4, 1.5 CONFIG.py, 1.18, 1.19
Daniel Williams (dcbw)
fedora-extras-commits at redhat.com
Sat Jul 16 15:47:45 UTC 2005
Author: dcbw
Update of /cvs/fedora/extras-buildsys/server
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv10181/server
Modified Files:
Builder.py BuilderManager.py CONFIG.py
Log Message:
2005-07-16 Dan Williams <dcbw at redhat.com>
* builder/builder.py
server/Builder.py
server/BuilderManager.py
- Make the builder aware of what mock targets & arches it can actually
build, and expose that information to the build server
- On the server, make sure that we ask the builder to only build for
arches that it supports for the target we request
(This makes noarch jobs work correctly everywhere)
Index: Builder.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/Builder.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Builder.py 14 Jul 2005 19:12:04 -0000 1.6
+++ Builder.py 16 Jul 2005 15:47:43 -0000 1.7
@@ -56,16 +56,18 @@
self._server = XMLRPCServerProxy.PlgXMLRPCServerProxy(self._address, None)
self._server_lock = threading.Lock()
self._unavail_count = 0
- self._arches = []
+ self._target_arches = []
builder_xmlrpc_lock.acquire()
try:
- self._arches = self._server.supported_arches()
+ self._target_arches = self._server.supported_target_arches()
+ for target in self._target_arches.keys():
+ self._target_arches[target].append('noarch')
except socket.error:
builder_xmlrpc_lock.release()
raise RuntimeError
builder_xmlrpc_lock.release()
+
self._alive = True
- self._arches.append('noarch')
self._stop = False
self._prepping_jobs = False
@@ -87,12 +89,18 @@
def xmlrpc_lock_release(self):
builder_xmlrpc_lock.release()
- def arches(self):
- return self._arches
-
- def can_build_arch(self, arch):
- if arch in self._arches:
- return True
+ def arches(self, target):
+ arches = None
+ try:
+ arches = self._target_arches[target]
+ except:
+ pass
+ return arches
+
+ def can_build_arch_on_target(self, arch, target):
+ if self._target_arches.has_key(target) and len(self._target_arches[target]) > 0:
+ if arch in self._target_arches[target]:
+ return True
return False
def address(self):
@@ -105,14 +113,18 @@
return self._alive
def start_job(self, par_job, target, arch, srpm_url):
- if not arch in self._arches or not self.available():
+ if not self.available():
+ raise RuntimeError
+ if not self._target_arches.has_key(target) or len(self._target_arches[target]) == 0:
+ raise RuntimeError
+ if not arch in self._target_arches[target]:
raise RuntimeError
builder_xmlrpc_lock.acquire()
self._server_lock.acquire()
try:
jobid = self._server.start(target, arch, srpm_url)
- except (socket.error, xmlrpclib.ProtocolError):
+ except (socket.error, OpenSSL.SSL.SysCallError, xmlrpclib.ProtocolError):
jobid = 0
self._server_lock.release()
builder_xmlrpc_lock.release()
@@ -200,7 +212,12 @@
def to_dict(self):
client_dict = {}
client_dict['address'] = self._address
- client_dict['arches'] = self._arches
+ arches = []
+ for target in self._target_arches.keys():
+ for arch in self._target_arches[target]:
+ if not arch in arches:
+ arches.append(arch)
+ client_dict['arches'] = arches
if self._cur_jobid:
client_dict['status'] = 'building'
else:
Index: BuilderManager.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/BuilderManager.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- BuilderManager.py 11 Jul 2005 20:13:37 -0000 1.4
+++ BuilderManager.py 16 Jul 2005 15:47:43 -0000 1.5
@@ -146,7 +146,7 @@
continue
# Find a free builder for this request
for builder in self.running_builders:
- if builder.available() and builder.can_build_arch(req['arch']):
+ if builder.available() and builder.can_build_arch_on_target(req['arch'], req['target']):
try:
job = builder.start_job(parent, req['target'], req['arch'], req['srpm_url'])
except RuntimeError:
Index: CONFIG.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/CONFIG.py,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- CONFIG.py 12 Jul 2005 20:12:32 -0000 1.18
+++ CONFIG.py 16 Jul 2005 15:47:43 -0000 1.19
@@ -55,7 +55,7 @@
# Further architectures on a per-package basis are configured in each target's
# package file. See the config option 'addl_package_arches_dir'.
#
-config_opts['targets'] = { 'devel' : ['i386'] }
+config_opts['targets'] = { 'development' : ['i386'] }
# If you're using CVS building, sometimes the CVS directory layout won't match
More information about the fedora-extras-commits
mailing list