mirror of
https://git.yoctoproject.org/poky
synced 2026-05-09 17:39:31 +00:00
bitbake: server/xmlrpc: Simlify featureset handling
Rather than passing featureset around various places where the data doesn't really belong, run a command at connection time to set the appropriate features. This is similar to what the process server does. (Bitbake rev: c3b5cc5691291c74dd315c4439c80e0e4b2b5c1d) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -89,7 +89,7 @@ class BitBakeServerCommands():
|
|||||||
self.server = server
|
self.server = server
|
||||||
self.has_client = False
|
self.has_client = False
|
||||||
|
|
||||||
def registerEventHandler(self, host, port, featureset = []):
|
def registerEventHandler(self, host, port):
|
||||||
"""
|
"""
|
||||||
Register a remote UI Event Handler
|
Register a remote UI Event Handler
|
||||||
"""
|
"""
|
||||||
@@ -99,13 +99,6 @@ class BitBakeServerCommands():
|
|||||||
if (self.cooker.state in [bb.cooker.state.parsing, bb.cooker.state.running]):
|
if (self.cooker.state in [bb.cooker.state.parsing, bb.cooker.state.running]):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
original_featureset = list(self.cooker.featureset)
|
|
||||||
for f in featureset:
|
|
||||||
self.cooker.featureset.setFeature(f)
|
|
||||||
|
|
||||||
if (original_featureset != list(self.cooker.featureset)):
|
|
||||||
self.cooker.reset()
|
|
||||||
|
|
||||||
self.event_handle = bb.event.register_UIHhandler(s)
|
self.event_handle = bb.event.register_UIHhandler(s)
|
||||||
return self.event_handle
|
return self.event_handle
|
||||||
|
|
||||||
@@ -293,9 +286,15 @@ class BitBakeXMLRPCServerConnection(BitBakeBaseServerConnection):
|
|||||||
return None
|
return None
|
||||||
self.transport.set_connection_token(token)
|
self.transport.set_connection_token(token)
|
||||||
|
|
||||||
self.events = uievent.BBUIEventQueue(self.connection, self.clientinfo, self.featureset)
|
self.events = uievent.BBUIEventQueue(self.connection, self.clientinfo)
|
||||||
for event in bb.event.ui_queue:
|
for event in bb.event.ui_queue:
|
||||||
self.events.queue_event(event)
|
self.events.queue_event(event)
|
||||||
|
|
||||||
|
_, error = self.connection.runCommand(["setFeatures", self.featureset])
|
||||||
|
if error:
|
||||||
|
logger.error("Unable to set the cooker to the correct featureset: %s" % error)
|
||||||
|
raise BaseException(error)
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def removeClient(self):
|
def removeClient(self):
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import socket, threading, pickle
|
|||||||
from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
|
from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
|
||||||
|
|
||||||
class BBUIEventQueue:
|
class BBUIEventQueue:
|
||||||
def __init__(self, BBServer, clientinfo=("localhost, 0"), featureset=[]):
|
def __init__(self, BBServer, clientinfo=("localhost, 0")):
|
||||||
|
|
||||||
self.eventQueue = []
|
self.eventQueue = []
|
||||||
self.eventQueueLock = threading.Lock()
|
self.eventQueueLock = threading.Lock()
|
||||||
@@ -44,7 +44,7 @@ class BBUIEventQueue:
|
|||||||
server.register_function( self.send_event, "event.sendpickle" )
|
server.register_function( self.send_event, "event.sendpickle" )
|
||||||
server.socket.settimeout(1)
|
server.socket.settimeout(1)
|
||||||
|
|
||||||
self.EventHandle = self.BBServer.registerEventHandler(self.host, self.port, featureset)
|
self.EventHandle = self.BBServer.registerEventHandler(self.host, self.port)
|
||||||
|
|
||||||
if (self.EventHandle == None):
|
if (self.EventHandle == None):
|
||||||
bb.fatal("Could not register UI event handler")
|
bb.fatal("Could not register UI event handler")
|
||||||
|
|||||||
Reference in New Issue
Block a user