diff options
author | Jason Wessel <jason.wessel@windriver.com> | 2013-11-25 15:21:26 -0600 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-12-02 17:33:14 +0000 |
commit | a67fde0ab1b225b547aa4c0792f78667e4e031d5 (patch) | |
tree | 4ed918a41a306f5c27b9491cb44a6433b37eede9 /bitbake | |
parent | 6ff9c9e39de57964ad7f711a77243a7049e9cada (diff) | |
download | poky-a67fde0ab1b225b547aa4c0792f78667e4e031d5.tar.gz |
bitbake: bitbake.lock: Add host:port to bitbake.lock for memres server
The idea is to build on the --status-only option for bitbake and
expose a mechanism where the oe init scripts can easily switch between
memres server and the non-memres server.
In the case of the standard oe init script the following
can shut down the server:
if [ -z "$BBSERVER" ] && [ -f bitbake.lock ] ; then
grep ":" bitbake.lock > /dev/null && BBSERVER=`cat bitbake.lock` bitbake --status-only
if [ $? = 0 ] ; then
echo "Shutting down bitbake memory resident server with bitbake -m"
BBSERVER=`cat bitbake.lock` bitbake -m
fi
fi
A similar function can be used to automatically detect if the server
is already running for the oe memres init script. This new
functionality allows for the memres init script to be started in a new
shell and connect up to an alaready running server without seeing the
error of trying to start the server multiple times.
(Bitbake rev: b1803958de8d7c3c3279841e38604a08dc2316cc)
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rwxr-xr-x | bitbake/bin/bitbake | 2 | ||||
-rw-r--r-- | bitbake/lib/bb/cooker.py | 8 | ||||
-rw-r--r-- | bitbake/lib/bb/cookerdata.py | 1 | ||||
-rw-r--r-- | bitbake/lib/bb/server/xmlrpc.py | 7 |
4 files changed, 16 insertions, 2 deletions
diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake index a0a2baa4bc..5857b9242c 100755 --- a/bitbake/bin/bitbake +++ b/bitbake/bin/bitbake | |||
@@ -208,8 +208,10 @@ def start_server(servermodule, configParams, configuration): | |||
208 | if configParams.bind: | 208 | if configParams.bind: |
209 | (host, port) = configParams.bind.split(':') | 209 | (host, port) = configParams.bind.split(':') |
210 | server.initServer((host, int(port))) | 210 | server.initServer((host, int(port))) |
211 | configuration.interface = [ server.serverImpl.host, server.serverImpl.port ] | ||
211 | else: | 212 | else: |
212 | server.initServer() | 213 | server.initServer() |
214 | configuration.interface = [] | ||
213 | 215 | ||
214 | try: | 216 | try: |
215 | configuration.setServerRegIdleCallback(server.getServerIdleCB()) | 217 | configuration.setServerRegIdleCallback(server.getServerIdleCB()) |
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index b36ed6fe36..7b10f80680 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
@@ -125,6 +125,14 @@ class BBCooker: | |||
125 | self.lock = bb.utils.lockfile(lockfile, False, False) | 125 | self.lock = bb.utils.lockfile(lockfile, False, False) |
126 | if not self.lock: | 126 | if not self.lock: |
127 | bb.fatal("Only one copy of bitbake should be run against a build directory") | 127 | bb.fatal("Only one copy of bitbake should be run against a build directory") |
128 | try: | ||
129 | self.lock.seek(0) | ||
130 | self.lock.truncate() | ||
131 | if len(configuration.interface) >= 2: | ||
132 | self.lock.write("%s:%s\n" % (configuration.interface[0], configuration.interface[1])); | ||
133 | self.lock.flush() | ||
134 | except: | ||
135 | pass | ||
128 | 136 | ||
129 | # TOSTOP must not be set or our children will hang when they output | 137 | # TOSTOP must not be set or our children will hang when they output |
130 | fd = sys.stdout.fileno() | 138 | fd = sys.stdout.fileno() |
diff --git a/bitbake/lib/bb/cookerdata.py b/bitbake/lib/bb/cookerdata.py index e640ed0f35..6200b0ebac 100644 --- a/bitbake/lib/bb/cookerdata.py +++ b/bitbake/lib/bb/cookerdata.py | |||
@@ -127,6 +127,7 @@ class CookerConfiguration(object): | |||
127 | self.dump_signatures = False | 127 | self.dump_signatures = False |
128 | self.dry_run = False | 128 | self.dry_run = False |
129 | self.tracking = False | 129 | self.tracking = False |
130 | self.interface = [] | ||
130 | 131 | ||
131 | self.env = {} | 132 | self.env = {} |
132 | 133 | ||
diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py index 3a67ab0cf2..46d074a738 100644 --- a/bitbake/lib/bb/server/xmlrpc.py +++ b/bitbake/lib/bb/server/xmlrpc.py | |||
@@ -198,6 +198,11 @@ class XMLRPCServer(SimpleXMLRPCServer, BaseImplServer): | |||
198 | Constructor | 198 | Constructor |
199 | """ | 199 | """ |
200 | BaseImplServer.__init__(self) | 200 | BaseImplServer.__init__(self) |
201 | if (interface[1] == 0): # anonymous port, not getting reused | ||
202 | self.single_use = True | ||
203 | # Use auto port configuration | ||
204 | if (interface[1] == -1): | ||
205 | interface = (interface[0], 0) | ||
201 | SimpleXMLRPCServer.__init__(self, interface, | 206 | SimpleXMLRPCServer.__init__(self, interface, |
202 | requestHandler=BitBakeXMLRPCRequestHandler, | 207 | requestHandler=BitBakeXMLRPCRequestHandler, |
203 | logRequests=False, allow_none=True) | 208 | logRequests=False, allow_none=True) |
@@ -208,8 +213,6 @@ class XMLRPCServer(SimpleXMLRPCServer, BaseImplServer): | |||
208 | self.autoregister_all_functions(self.commands, "") | 213 | self.autoregister_all_functions(self.commands, "") |
209 | self.interface = interface | 214 | self.interface = interface |
210 | self.single_use = False | 215 | self.single_use = False |
211 | if (interface[1] == 0): # anonymous port, not getting reused | ||
212 | self.single_use = True | ||
213 | 216 | ||
214 | def addcooker(self, cooker): | 217 | def addcooker(self, cooker): |
215 | BaseImplServer.addcooker(self, cooker) | 218 | BaseImplServer.addcooker(self, cooker) |