diff options
| -rwxr-xr-x | bitbake/bin/bitbake | 23 | ||||
| -rw-r--r-- | bitbake/lib/bb/server/xmlrpc.py | 24 |
2 files changed, 22 insertions, 25 deletions
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): | |||
| 200 | options.servertype = "xmlrpc" | 200 | options.servertype = "xmlrpc" |
| 201 | options.remote_server = os.environ["BBSERVER"] | 201 | options.remote_server = os.environ["BBSERVER"] |
| 202 | 202 | ||
| 203 | # if BBSERVER says to autodetect, let's do that | ||
| 204 | if options.remote_server: | ||
| 205 | [host, port] = options.remote_server.split(":", 2) | ||
| 206 | port = int(port) | ||
| 207 | # use automatic port if port set to -1, means read it from | ||
| 208 | # the bitbake.lock file; this is a bit tricky, but we always expect | ||
| 209 | # to be in the base of the build directory if we need to have a | ||
| 210 | # chance to start the server later, anyway | ||
| 211 | if port == -1: | ||
| 212 | lock_location = "./bitbake.lock" | ||
| 213 | # we try to read the address at all times; if the server is not started, | ||
| 214 | # we'll try to start it after the first connect fails, below | ||
| 215 | try: | ||
| 216 | lf = open(lock_location, 'r') | ||
| 217 | remotedef = lf.readline() | ||
| 218 | [host, port] = remotedef.split(":") | ||
| 219 | port = int(port) | ||
| 220 | lf.close() | ||
| 221 | options.remote_server = remotedef | ||
| 222 | except Exception as e: | ||
| 223 | sys.exit("Failed to read bitbake.lock (%s), invalid port" % str(e)) | ||
| 224 | |||
| 203 | return options, targets[1:] | 225 | return options, targets[1:] |
| 204 | 226 | ||
| 205 | 227 | ||
| @@ -309,7 +331,6 @@ def main(): | |||
| 309 | # we start a stub server that is actually a XMLRPClient that connects to a real server | 331 | # we start a stub server that is actually a XMLRPClient that connects to a real server |
| 310 | server = servermodule.BitBakeXMLRPCClient(configParams.observe_only) | 332 | server = servermodule.BitBakeXMLRPCClient(configParams.observe_only) |
| 311 | server.saveConnectionDetails(configParams.remote_server) | 333 | server.saveConnectionDetails(configParams.remote_server) |
| 312 | server.saveConnectionConfigParams(configParams) | ||
| 313 | 334 | ||
| 314 | if not configParams.server_only: | 335 | if not configParams.server_only: |
| 315 | if configParams.status_only: | 336 | 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): | |||
| 340 | def saveConnectionDetails(self, remote): | 340 | def saveConnectionDetails(self, remote): |
| 341 | self.remote = remote | 341 | self.remote = remote |
| 342 | 342 | ||
| 343 | def saveConnectionConfigParams(self, configParams): | ||
| 344 | self.configParams = configParams | ||
| 345 | |||
| 346 | def establishConnection(self, featureset): | 343 | def establishConnection(self, featureset): |
| 347 | # The format of "remote" must be "server:port" | 344 | # The format of "remote" must be "server:port" |
| 348 | try: | 345 | try: |
| @@ -351,27 +348,6 @@ class BitBakeXMLRPCClient(BitBakeBaseServer): | |||
| 351 | except Exception as e: | 348 | except Exception as e: |
| 352 | bb.fatal("Failed to read remote definition (%s)" % str(e)) | 349 | bb.fatal("Failed to read remote definition (%s)" % str(e)) |
| 353 | 350 | ||
| 354 | # use automatic port if port set to -1, meaning read it from | ||
| 355 | # the bitbake.lock file | ||
| 356 | if port == -1: | ||
| 357 | lock_location = "%s/bitbake.lock" % self.configParams.environment.get('BUILDDIR') | ||
| 358 | lock = bb.utils.lockfile(lock_location, False, False) | ||
| 359 | if lock: | ||
| 360 | # This means there is no server running which we can | ||
| 361 | # connect to on the local system. | ||
| 362 | bb.utils.unlockfile(lock) | ||
| 363 | return None | ||
| 364 | |||
| 365 | try: | ||
| 366 | lf = open(lock_location, 'r') | ||
| 367 | remotedef = lf.readline() | ||
| 368 | [host, port] = remotedef.split(":") | ||
| 369 | port = int(port) | ||
| 370 | lf.close() | ||
| 371 | self.remote = remotedef | ||
| 372 | except Exception as e: | ||
| 373 | bb.fatal("Failed to read bitbake.lock (%s)" % str(e)) | ||
| 374 | |||
| 375 | # We need our IP for the server connection. We get the IP | 351 | # We need our IP for the server connection. We get the IP |
| 376 | # by trying to connect with the server | 352 | # by trying to connect with the server |
| 377 | try: | 353 | try: |
