summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorJason Wessel <jason.wessel@windriver.com>2013-11-25 15:21:26 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-12-02 17:33:14 +0000
commita67fde0ab1b225b547aa4c0792f78667e4e031d5 (patch)
tree4ed918a41a306f5c27b9491cb44a6433b37eede9 /bitbake
parent6ff9c9e39de57964ad7f711a77243a7049e9cada (diff)
downloadpoky-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-xbitbake/bin/bitbake2
-rw-r--r--bitbake/lib/bb/cooker.py8
-rw-r--r--bitbake/lib/bb/cookerdata.py1
-rw-r--r--bitbake/lib/bb/server/xmlrpc.py7
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)