diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake index 86d32cff09..fcfe0434ce 100755 --- a/bitbake/bin/bitbake +++ b/bitbake/bin/bitbake @@ -200,6 +200,28 @@ class BitBakeConfigParameters(cookerdata.ConfigParameters): options.servertype = "xmlrpc" options.remote_server = os.environ["BBSERVER"] + # if BBSERVER says to autodetect, let's do that + if options.remote_server: + [host, port] = options.remote_server.split(":", 2) + port = int(port) + # use automatic port if port set to -1, means read it from + # the bitbake.lock file; this is a bit tricky, but we always expect + # to be in the base of the build directory if we need to have a + # chance to start the server later, anyway + if port == -1: + lock_location = "./bitbake.lock" + # we try to read the address at all times; if the server is not started, + # we'll try to start it after the first connect fails, below + try: + lf = open(lock_location, 'r') + remotedef = lf.readline() + [host, port] = remotedef.split(":") + port = int(port) + lf.close() + options.remote_server = remotedef + except Exception as e: + sys.exit("Failed to read bitbake.lock (%s), invalid port" % str(e)) + return options, targets[1:] @@ -309,7 +331,6 @@ def main(): # we start a stub server that is actually a XMLRPClient that connects to a real server server = servermodule.BitBakeXMLRPCClient(configParams.observe_only) server.saveConnectionDetails(configParams.remote_server) - server.saveConnectionConfigParams(configParams) if not configParams.server_only: if configParams.status_only: diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py index 5dcaa6c7b0..6fc5543a80 100644 --- a/bitbake/lib/bb/server/xmlrpc.py +++ b/bitbake/lib/bb/server/xmlrpc.py @@ -340,9 +340,6 @@ 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: @@ -351,27 +348,6 @@ class BitBakeXMLRPCClient(BitBakeBaseServer): 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: