summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/server
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2020-08-24 14:57:01 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-08-25 18:14:53 +0100
commit0bcc00ac517bdb9a8035397fcac0a402fe1aad13 (patch)
treed4aa8bd9e8660e1e7bb5ac752523237f9b7d5e44 /bitbake/lib/bb/server
parent59421f688ce5a6ca95e7a02bb4e517b4690cad8c (diff)
downloadpoky-0bcc00ac517bdb9a8035397fcac0a402fe1aad13.tar.gz
bitbake: cooker: Defer configuration init to after UI connection
Currently we end up parsing the base configuration multiple times as initially, the right settings haven't come from the UI. We can defer this until later in startup using runCommand as a trigger. The advantage to doing this is improved startup times and ultimately we should be able to avoid the double parse of the base configuration. (Bitbake rev: 3caa43b665604475d2c87ba505efb0b9fca9c2e9) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/server')
-rw-r--r--bitbake/lib/bb/server/process.py38
1 files changed, 21 insertions, 17 deletions
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py
index 65e1eab527..b037e0fb6c 100644
--- a/bitbake/lib/bb/server/process.py
+++ b/bitbake/lib/bb/server/process.py
@@ -58,6 +58,7 @@ class ProcessServer():
58 self.sockname = sockname 58 self.sockname = sockname
59 59
60 self.server_timeout = server_timeout 60 self.server_timeout = server_timeout
61 self.timeout = self.server_timeout
61 self.xmlrpcinterface = xmlrpcinterface 62 self.xmlrpcinterface = xmlrpcinterface
62 63
63 def register_idle_function(self, function, data): 64 def register_idle_function(self, function, data):
@@ -72,21 +73,6 @@ class ProcessServer():
72 73
73 print("Bitbake XMLRPC server address: %s, server port: %s" % (self.xmlrpc.host, self.xmlrpc.port)) 74 print("Bitbake XMLRPC server address: %s, server port: %s" % (self.xmlrpc.host, self.xmlrpc.port))
74 75
75 heartbeat_event = self.cooker.data.getVar('BB_HEARTBEAT_EVENT')
76 if heartbeat_event:
77 try:
78 self.heartbeat_seconds = float(heartbeat_event)
79 except:
80 bb.warn('Ignoring invalid BB_HEARTBEAT_EVENT=%s, must be a float specifying seconds.' % heartbeat_event)
81
82 self.timeout = self.server_timeout or self.cooker.data.getVar('BB_SERVER_TIMEOUT')
83 try:
84 if self.timeout:
85 self.timeout = float(self.timeout)
86 except:
87 bb.warn('Ignoring invalid BB_SERVER_TIMEOUT=%s, must be a float specifying seconds.' % self.timeout)
88
89
90 try: 76 try:
91 self.bitbake_lock.seek(0) 77 self.bitbake_lock.seek(0)
92 self.bitbake_lock.truncate() 78 self.bitbake_lock.truncate()
@@ -129,6 +115,7 @@ class ProcessServer():
129 fds = [self.sock] 115 fds = [self.sock]
130 if self.xmlrpc: 116 if self.xmlrpc:
131 fds.append(self.xmlrpc) 117 fds.append(self.xmlrpc)
118 seendata = False
132 print("Entering server connection loop") 119 print("Entering server connection loop")
133 120
134 def disconnect_client(self, fds): 121 def disconnect_client(self, fds):
@@ -228,6 +215,22 @@ class ProcessServer():
228 if self.xmlrpc in ready: 215 if self.xmlrpc in ready:
229 self.xmlrpc.handle_requests() 216 self.xmlrpc.handle_requests()
230 217
218 if not seendata and hasattr(self.cooker, "data"):
219 heartbeat_event = self.cooker.data.getVar('BB_HEARTBEAT_EVENT')
220 if heartbeat_event:
221 try:
222 self.heartbeat_seconds = float(heartbeat_event)
223 except:
224 bb.warn('Ignoring invalid BB_HEARTBEAT_EVENT=%s, must be a float specifying seconds.' % heartbeat_event)
225
226 self.timeout = self.server_timeout or self.cooker.data.getVar('BB_SERVER_TIMEOUT')
227 try:
228 if self.timeout:
229 self.timeout = float(self.timeout)
230 except:
231 bb.warn('Ignoring invalid BB_SERVER_TIMEOUT=%s, must be a float specifying seconds.' % self.timeout)
232 seendata = True
233
231 ready = self.idle_commands(.1, fds) 234 ready = self.idle_commands(.1, fds)
232 235
233 print("Exiting") 236 print("Exiting")
@@ -323,8 +326,9 @@ class ProcessServer():
323 self.next_heartbeat += self.heartbeat_seconds 326 self.next_heartbeat += self.heartbeat_seconds
324 if self.next_heartbeat <= now: 327 if self.next_heartbeat <= now:
325 self.next_heartbeat = now + self.heartbeat_seconds 328 self.next_heartbeat = now + self.heartbeat_seconds
326 heartbeat = bb.event.HeartbeatEvent(now) 329 if hasattr(self.cooker, "data"):
327 bb.event.fire(heartbeat, self.cooker.data) 330 heartbeat = bb.event.HeartbeatEvent(now)
331 bb.event.fire(heartbeat, self.cooker.data)
328 if nextsleep and now + nextsleep > self.next_heartbeat: 332 if nextsleep and now + nextsleep > self.next_heartbeat:
329 # Shorten timeout so that we we wake up in time for 333 # Shorten timeout so that we we wake up in time for
330 # the heartbeat. 334 # the heartbeat.