summaryrefslogtreecommitdiffstats
path: root/lib/bb/server/xmlrpc.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bb/server/xmlrpc.py')
-rw-r--r--lib/bb/server/xmlrpc.py33
1 files changed, 29 insertions, 4 deletions
diff --git a/lib/bb/server/xmlrpc.py b/lib/bb/server/xmlrpc.py
index 82c0e8d8a..3a67ab0cf 100644
--- a/lib/bb/server/xmlrpc.py
+++ b/lib/bb/server/xmlrpc.py
@@ -338,13 +338,38 @@ class BitBakeXMLRPCClient(BitBakeBaseServer):
def saveConnectionDetails(self, remote):
self.remote = remote
+ def saveConnectionConfigParams(self, configParams):
+ self.configParams = configParams
+
def establishConnection(self, featureset):
# The format of "remote" must be "server:port"
try:
[host, port] = self.remote.split(":")
port = int(port)
- except:
- return None
+ except Exception as e:
+ bb.fatal("Failed to read remote definition (%s)" % str(e))
+
+ # use automatic port if port set to -1, meaning read it from
+ # the bitbake.lock file
+ if port == -1:
+ lock_location = "%s/bitbake.lock" % self.configParams.environment.get('BUILDDIR')
+ lock = bb.utils.lockfile(lock_location, False, False)
+ if lock:
+ # This means there is no server running which we can
+ # connect to on the local system.
+ bb.utils.unlockfile(lock)
+ return None
+
+ try:
+ lf = open(lock_location, 'r')
+ remotedef = lf.readline()
+ [host, port] = remotedef.split(":")
+ port = int(port)
+ lf.close()
+ self.remote = remotedef
+ except Exception as e:
+ bb.fatal("Failed to read bitbake.lock (%s)" % str(e))
+
# We need our IP for the server connection. We get the IP
# by trying to connect with the server
try:
@@ -352,8 +377,8 @@ class BitBakeXMLRPCClient(BitBakeBaseServer):
s.connect((host, port))
ip = s.getsockname()[0]
s.close()
- except:
- return None
+ except Exception as e:
+ bb.fatal("Could not create socket for %s:%s (%s)" % (host, port, str(e)))
try:
self.serverImpl = XMLRPCProxyServer(host, port)
self.connection = BitBakeXMLRPCServerConnection(self.serverImpl, (ip, 0), self.observer_only, featureset)