diff options
| -rwxr-xr-x | bitbake/lib/bb/main.py | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/bitbake/lib/bb/main.py b/bitbake/lib/bb/main.py index 3fc3ff51e2..1c32e9308d 100755 --- a/bitbake/lib/bb/main.py +++ b/bitbake/lib/bb/main.py | |||
| @@ -303,8 +303,10 @@ class BitBakeConfigParameters(cookerdata.ConfigParameters): | |||
| 303 | 303 | ||
| 304 | # if BBSERVER says to autodetect, let's do that | 304 | # if BBSERVER says to autodetect, let's do that |
| 305 | if options.remote_server: | 305 | if options.remote_server: |
| 306 | [host, port] = options.remote_server.split(":", 2) | 306 | port = -1 |
| 307 | port = int(port) | 307 | if options.remote_server != 'autostart': |
| 308 | host, port = options.remote_server.split(":", 2) | ||
| 309 | port = int(port) | ||
| 308 | # use automatic port if port set to -1, means read it from | 310 | # use automatic port if port set to -1, means read it from |
| 309 | # the bitbake.lock file; this is a bit tricky, but we always expect | 311 | # the bitbake.lock file; this is a bit tricky, but we always expect |
| 310 | # to be in the base of the build directory if we need to have a | 312 | # to be in the base of the build directory if we need to have a |
| @@ -321,17 +323,18 @@ class BitBakeConfigParameters(cookerdata.ConfigParameters): | |||
| 321 | lf.close() | 323 | lf.close() |
| 322 | options.remote_server = remotedef | 324 | options.remote_server = remotedef |
| 323 | except Exception as e: | 325 | except Exception as e: |
| 324 | raise BBMainException("Failed to read bitbake.lock (%s), invalid port" % str(e)) | 326 | if options.remote_server != 'autostart': |
| 327 | raise BBMainException("Failed to read bitbake.lock (%s), invalid port" % str(e)) | ||
| 325 | 328 | ||
| 326 | return options, targets[1:] | 329 | return options, targets[1:] |
| 327 | 330 | ||
| 328 | 331 | ||
| 329 | def start_server(servermodule, configParams, configuration, features): | 332 | def start_server(servermodule, configParams, configuration, features): |
| 330 | server = servermodule.BitBakeServer() | 333 | server = servermodule.BitBakeServer() |
| 331 | single_use = not configParams.server_only | 334 | single_use = not configParams.server_only and os.getenv('BBSERVER') != 'autostart' |
| 332 | if configParams.bind: | 335 | if configParams.bind: |
| 333 | (host, port) = configParams.bind.split(':') | 336 | (host, port) = configParams.bind.split(':') |
| 334 | server.initServer((host, int(port)), single_use) | 337 | server.initServer((host, int(port)), single_use=single_use) |
| 335 | configuration.interface = [server.serverImpl.host, server.serverImpl.port] | 338 | configuration.interface = [server.serverImpl.host, server.serverImpl.port] |
| 336 | else: | 339 | else: |
| 337 | server.initServer(single_use=single_use) | 340 | server.initServer(single_use=single_use) |
| @@ -445,6 +448,14 @@ def bitbake_main(configParams, configuration): | |||
| 445 | server = start_server(servermodule, configParams, configuration, featureset) | 448 | server = start_server(servermodule, configParams, configuration, featureset) |
| 446 | bb.event.ui_queue = [] | 449 | bb.event.ui_queue = [] |
| 447 | else: | 450 | else: |
| 451 | if os.getenv('BBSERVER') == 'autostart': | ||
| 452 | if configParams.remote_server == 'autostart' or \ | ||
| 453 | not servermodule.check_connection(configParams.remote_server, timeout=2): | ||
| 454 | configParams.bind = 'localhost:0' | ||
| 455 | srv = start_server(servermodule, configParams, configuration, featureset) | ||
| 456 | configParams.remote_server = '%s:%d' % tuple(configuration.interface) | ||
| 457 | bb.event.ui_queue = [] | ||
| 458 | |||
| 448 | # we start a stub server that is actually a XMLRPClient that connects to a real server | 459 | # we start a stub server that is actually a XMLRPClient that connects to a real server |
| 449 | server = servermodule.BitBakeXMLRPCClient(configParams.observe_only, | 460 | server = servermodule.BitBakeXMLRPCClient(configParams.observe_only, |
| 450 | configParams.xmlrpctoken) | 461 | configParams.xmlrpctoken) |
