From 5ebd9bfff19a73ace09360f74b6171fe1a6a8f2e Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 7 Jun 2013 18:13:04 +0100 Subject: bitbake: prserv: Adapt autostart to bitbake-worker With the change to bitbake-worker we need to ensure the workers know how to contact the PR service, the magic 0 port and singleton is no longer enough. (Bitbake rev: c761751e259bb8e940552a28794b45887b5a72d9) Signed-off-by: Richard Purdie --- bitbake/bin/bitbake-worker | 1 + bitbake/lib/bb/cooker.py | 2 +- bitbake/lib/bb/runqueue.py | 1 + bitbake/lib/prserv/serv.py | 11 +++++++++-- 4 files changed, 12 insertions(+), 3 deletions(-) (limited to 'bitbake') diff --git a/bitbake/bin/bitbake-worker b/bitbake/bin/bitbake-worker index 8edf8dd658..6580078aff 100755 --- a/bitbake/bin/bitbake-worker +++ b/bitbake/bin/bitbake-worker @@ -280,6 +280,7 @@ class BitbakeWorker(object): bb.msg.loggerDefaultVerbose = self.workerdata["logdefaultverbose"] bb.msg.loggerVerboseLogs = self.workerdata["logdefaultverboselogs"] bb.msg.loggerDefaultDomains = self.workerdata["logdefaultdomain"] + self.data.setVar("PRSERV_HOST", self.workerdata["prhost"]) def handle_ping(self, _): workerlog_write("Handling ping\n") diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 77273dcb29..f375a6f581 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py @@ -1177,7 +1177,7 @@ class BBCooker: # necessary from the data store. #bb.utils.empty_environment() try: - prserv.serv.auto_start(self.data) + self.prhost = prserv.serv.auto_start(self.data) except prserv.serv.PRServiceConfigError: bb.event.fire(CookerExit(), self.event_data) return diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 577f04a6c5..bd42538688 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py @@ -831,6 +831,7 @@ class RunQueue: "logdefaultverbose" : bb.msg.loggerDefaultVerbose, "logdefaultverboselogs" : bb.msg.loggerVerboseLogs, "logdefaultdomain" : bb.msg.loggerDefaultDomains, + "prhost" : self.cooker.prhost, } worker.stdin.write("" + pickle.dumps(self.cooker.configuration) + "") diff --git a/bitbake/lib/prserv/serv.py b/bitbake/lib/prserv/serv.py index d7ab9ee0d5..7f9331d13b 100644 --- a/bitbake/lib/prserv/serv.py +++ b/bitbake/lib/prserv/serv.py @@ -207,6 +207,9 @@ class PRServerConnection(): def importone(self, version, pkgarch, checksum, value): return self.connection.importone(version, pkgarch, checksum, value) + def getinfo(self): + return self.host, self.port + def start_daemon(dbfile, host, port, logfile): pidfile = PIDPREFIX % (host, port) try: @@ -271,7 +274,7 @@ def auto_start(d): host_params = filter(None, (d.getVar('PRSERV_HOST', True) or '').split(':')) if not host_params: - return True + return None if len(host_params) != 2: logger.critical('\n'.join(['PRSERV_HOST: incorrect format', @@ -296,7 +299,11 @@ def auto_start(d): port = int(host_params[1]) try: - return PRServerConnection(host,port).ping() + connection = PRServerConnection(host,port) + connection.ping() + realhost, realport = connection.getinfo() + return str(realhost) + ":" + str(realport) + except Exception: logger.critical("PRservice %s:%d not available" % (host, port)) raise PRServiceConfigError -- cgit v1.2.3-54-g00ecf