All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <1306526949.1747.8.camel@vorpal>

diff --git a/a/2.hdr b/a/2.hdr
deleted file mode 100644
index e7ce97c..0000000
--- a/a/2.hdr
+++ /dev/null
@@ -1,6 +0,0 @@
-Content-Disposition: attachment;\r
-	filename="0001-server-add-updated-fixed-xmlrpc-server-from-Poky.patch"\r
-Content-Type: text/x-patch;\r
-	name="0001-server-add-updated-fixed-xmlrpc-server-from-Poky.patch";\r
-	charset="UTF-8"\r
-Content-Transfer-Encoding: 7bit\r
diff --git a/a/2.txt b/a/2.txt
deleted file mode 100644
index 16573c7..0000000
--- a/a/2.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-From 4c0915842cd578e67fc9cc85d24538e419a47af8 Mon Sep 17 00:00:00 2001
-From: Joshua Lock <josh@linux.intel.com>
-Date: Fri, 27 May 2011 13:03:55 -0700
-Subject: [PATCH 1/2] server: add updated/fixed xmlrpc server from Poky
-
-Signed-off-by: Joshua Lock <josh@linux.intel.com>
----
- lib/bb/server/xmlrpc.py |  273 +++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 273 insertions(+), 0 deletions(-)
- create mode 100644 lib/bb/server/xmlrpc.py
-
-diff --git a/lib/bb/server/xmlrpc.py b/lib/bb/server/xmlrpc.py
-new file mode 100644
-index 0000000..c43c6cd
---- /dev/null
-+++ b/lib/bb/server/xmlrpc.py
-@@ -0,0 +1,273 @@
-+#
-+# BitBake XMLRPC Server
-+#
-+# Copyright (C) 2006 - 2007  Michael 'Mickey' Lauer
-+# Copyright (C) 2006 - 2008  Richard Purdie
-+#
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License version 2 as
-+# published by the Free Software Foundation.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License along
-+# with this program; if not, write to the Free Software Foundation, Inc.,
-+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-+
-+"""
-+    This module implements an xmlrpc server for BitBake.
-+
-+    Use this by deriving a class from BitBakeXMLRPCServer and then adding
-+    methods which you want to "export" via XMLRPC. If the methods have the
-+    prefix xmlrpc_, then registering those function will happen automatically,
-+    if not, you need to call register_function.
-+
-+    Use register_idle_function() to add a function which the xmlrpc server
-+    calls from within server_forever when no requests are pending. Make sure
-+    that those functions are non-blocking or else you will introduce latency
-+    in the server's main loop.
-+"""
-+
-+import bb
-+import xmlrpclib, sys
-+from bb import daemonize
-+from bb.ui import uievent
-+
-+DEBUG = False
-+
-+from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
-+import inspect, select
-+
-+if sys.hexversion < 0x020600F0:
-+    print("Sorry, python 2.6 or later is required for bitbake's XMLRPC mode")
-+    sys.exit(1)
-+
-+##
-+# The xmlrpclib.Transport class has undergone various changes in Python 2.7
-+# which break BitBake's XMLRPC implementation.
-+# To work around this we subclass Transport and have a copy/paste of method
-+# implementations from Python 2.6.6's xmlrpclib.
-+#
-+# Upstream Python bug is #8194 (http://bugs.python.org/issue8194)
-+# This bug is relevant for Python 2.7.0 and 2.7.1 but was fixed for
-+# Python > 2.7.2
-+##
-+
-+class BBTransport(xmlrpclib.Transport):
-+    def request(self, host, handler, request_body, verbose=0):
-+        h = self.make_connection(host)
-+        if verbose:
-+            h.set_debuglevel(1)
-+
-+        self.send_request(h, handler, request_body)
-+        self.send_host(h, host)
-+        self.send_user_agent(h)
-+        self.send_content(h, request_body)
-+
-+        errcode, errmsg, headers = h.getreply()
-+
-+        if errcode != 200:
-+            raise ProtocolError(
-+                host + handler,
-+                errcode, errmsg,
-+                headers
-+                )
-+
-+        self.verbose = verbose
-+
-+        try:
-+            sock = h._conn.sock
-+        except AttributeError:
-+            sock = None
-+
-+        return self._parse_response(h.getfile(), sock)
-+
-+    def make_connection(self, host):
-+        import httplib
-+        host, extra_headers, x509 = self.get_host_info(host)
-+        return httplib.HTTP(host)
-+
-+    def _parse_response(self, file, sock):
-+        p, u = self.getparser()
-+
-+        while 1:
-+            if sock:
-+                response = sock.recv(1024)
-+            else:
-+                response = file.read(1024)
-+            if not response:
-+                break
-+            if self.verbose:
-+                print "body:", repr(response)
-+            p.feed(response)
-+
-+        file.close()
-+        p.close()
-+
-+        return u.close()
-+
-+def _create_server(host, port):
-+    # Python 2.7.0 and 2.7.1 have a buggy Transport implementation
-+    # For those versions of Python, and only those versions, use our
-+    # own copy/paste BBTransport class.
-+    if (2, 7, 0) <= sys.version_info < (2, 7, 2):
-+        t = BBTransport()
-+        s = xmlrpclib.Server("http://%s:%d/" % (host, port), transport=t, allow_none=True)
-+    else:
-+        s = xmlrpclib.Server("http://%s:%d/" % (host, port), allow_none=True)
-+
-+    return s
-+
-+class BitBakeServerCommands():
-+    def __init__(self, server, cooker):
-+        self.cooker = cooker
-+        self.server = server
-+
-+    def registerEventHandler(self, host, port):
-+        """
-+        Register a remote UI Event Handler
-+        """
-+        s = _create_server(host, port)
-+
-+        return bb.event.register_UIHhandler(s)
-+
-+    def unregisterEventHandler(self, handlerNum):
-+        """
-+        Unregister a remote UI Event Handler
-+        """
-+        return bb.event.unregister_UIHhandler(handlerNum)
-+
-+    def runCommand(self, command):
-+        """
-+        Run a cooker command on the server
-+        """
-+        return self.cooker.command.runCommand(command)
-+
-+    def terminateServer(self):
-+        """
-+        Trigger the server to quit
-+        """
-+        self.server.quit = True
-+        print("Server (cooker) exiting")
-+        return
-+
-+    def ping(self):
-+        """
-+        Dummy method which can be used to check the server is still alive
-+        """
-+        return True
-+
-+class BitBakeServer(SimpleXMLRPCServer):
-+    # remove this when you're done with debugging
-+    # allow_reuse_address = True
-+
-+    def __init__(self, cooker, interface = ("localhost", 0)):
-+        """
-+        Constructor
-+        """
-+        SimpleXMLRPCServer.__init__(self, interface,
-+                                    requestHandler=SimpleXMLRPCRequestHandler,
-+                                    logRequests=False, allow_none=True)
-+        self._idlefuns = {}
-+        self.host, self.port = self.socket.getsockname()
-+        #self.register_introspection_functions()
-+        commands = BitBakeServerCommands(self, cooker)
-+        self.autoregister_all_functions(commands, "")
-+        self.cooker = cooker
-+
-+    def autoregister_all_functions(self, context, prefix):
-+        """
-+        Convenience method for registering all functions in the scope
-+        of this class that start with a common prefix
-+        """
-+        methodlist = inspect.getmembers(context, inspect.ismethod)
-+        for name, method in methodlist:
-+            if name.startswith(prefix):
-+                self.register_function(method, name[len(prefix):])
-+
-+    def register_idle_function(self, function, data):
-+        """Register a function to be called while the server is idle"""
-+        assert hasattr(function, '__call__')
-+        self._idlefuns[function] = data
-+
-+    def serve_forever(self):
-+        bb.cooker.server_main(self.cooker, self._serve_forever)
-+
-+    def _serve_forever(self):
-+        """
-+        Serve Requests. Overloaded to honor a quit command
-+        """
-+        self.quit = False
-+        self.timeout = 0 # Run Idle calls for our first callback
-+        while not self.quit:
-+            #print "Idle queue length %s" % len(self._idlefuns)
-+            self.handle_request()
-+            #print "Idle timeout, running idle functions"
-+            nextsleep = None
-+            for function, data in self._idlefuns.items():
-+                try:
-+                    retval = function(self, data, False)
-+                    if retval is False:
-+                        del self._idlefuns[function]
-+                    elif retval is True:
-+                        nextsleep = 0
-+                    elif nextsleep is 0:
-+                        continue
-+                    elif nextsleep is None:
-+                        nextsleep = retval
-+                    elif retval < nextsleep:
-+                        nextsleep = retval
-+                except SystemExit:
-+                    raise
-+                except:
-+                    import traceback
-+                    traceback.print_exc()
-+                    pass
-+            if nextsleep is None and len(self._idlefuns) > 0:
-+                nextsleep = 0
-+            self.timeout = nextsleep
-+        # Tell idle functions we're exiting
-+        for function, data in self._idlefuns.items():
-+            try:
-+                retval = function(self, data, True)
-+            except:
-+                pass
-+
-+        self.server_close()
-+        return
-+
-+class BitbakeServerInfo():
-+    def __init__(self, server):
-+        self.host = server.host
-+        self.port = server.port
-+
-+class BitBakeServerFork():
-+    def __init__(self, cooker, server, serverinfo, logfile):
-+        daemonize.createDaemon(server.serve_forever, logfile)
-+
-+class BitbakeUILauch():
-+    def launch(self, serverinfo, uifunc, *args):
-+        return uifunc(*args)
-+
-+class BitBakeServerConnection():
-+    def __init__(self, serverinfo):
-+        self.connection = _create_server(serverinfo.host, serverinfo.port)
-+        self.events = uievent.BBUIEventQueue(self.connection)
-+        for event in bb.event.ui_queue:
-+            self.events.queue_event(event)
-+
-+    def terminate(self):
-+        # Don't wait for server indefinitely
-+        import socket
-+        socket.setdefaulttimeout(2)
-+        try:
-+            self.events.system_quit()
-+        except:
-+            pass
-+        try:
-+            self.connection.terminateServer()
-+        except:
-+            pass
--- 
-1.7.5.1
diff --git a/a/3.hdr b/a/3.hdr
deleted file mode 100644
index 3060d1c..0000000
--- a/a/3.hdr
+++ /dev/null
@@ -1,7 +0,0 @@
-Content-Disposition: attachment;\r
-	filename*0=0002-uievent-fix-queueing-of-events-for-xmlrpc-before-UI-.pat;\r
-	filename*1=ch\r
-Content-Type: text/x-patch;\r
-	name="0002-uievent-fix-queueing-of-events-for-xmlrpc-before-UI-.patch";\r
-	charset="UTF-8"\r
-Content-Transfer-Encoding: 7bit\r
diff --git a/a/3.txt b/a/3.txt
deleted file mode 100644
index 1d2176a..0000000
--- a/a/3.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-From 1618318f0a30847b08c158e7ac82f9043126144e Mon Sep 17 00:00:00 2001
-From: Joshua Lock <josh@linux.intel.com>
-Date: Fri, 27 May 2011 13:04:44 -0700
-Subject: [PATCH 2/2] uievent: fix queueing of events for xmlrpc before UI has
- loaded
-
-The change to Queue up events before the UI is spawned broke the xmlrpc
-server because the uievent implementation of BBUIEventQueue expects pickled
-strings for its queue_event() method.
-This is because the RPC exposed event.send() method must accept pickled
-strings, but for xmlrpc event.send() is just mapped to queue_event(). Work
-around this by adding a send_event method which unpickles strings and hands
-them off to queue_event() which can then be used for the remapping.
-
-Signed-off-by: Joshua Lock <josh@linux.intel.com>
----
- lib/bb/ui/uievent.py |    7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/lib/bb/ui/uievent.py b/lib/bb/ui/uievent.py
-index b404805..2fef4e4 100644
---- a/lib/bb/ui/uievent.py
-+++ b/lib/bb/ui/uievent.py
-@@ -63,17 +63,20 @@ class BBUIEventQueue:
- 
-     def queue_event(self, event):
-         self.eventQueueLock.acquire()
--        self.eventQueue.append(pickle.loads(event))
-+        self.eventQueue.append(event)
-         self.eventQueueNotify.set()
-         self.eventQueueLock.release()
- 
-+    def send_event(self, event):
-+        self.queue_event(pickle.loads(event))
-+
-     def startCallbackHandler(self):
- 
-         server = UIXMLRPCServer()
-         self.host, self.port = server.socket.getsockname()
- 
-         server.register_function( self.system_quit, "event.quit" )
--        server.register_function( self.queue_event, "event.send" )
-+        server.register_function( self.send_event, "event.send" )
-         server.socket.settimeout(1)
- 
-         self.EventHandle = self.BBServer.registerEventHandler(self.host, self.port)
--- 
-1.7.5.1
diff --git a/a/content_digest b/N1/content_digest
index c25cb56..6548ee8 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -2,7 +2,7 @@
  "ref\01306515635.27470.284.camel@rex\0"
  "ref\07DC6724C-BF20-4EA1-A87D-32FBEEECDA3B@dominion.thruhere.net\0"
  "From\0Joshua Lock <josh@linux.intel.com>\0"
- "Subject\0Re: [OE-core] [PATCH 00/11] Add PR service and integrate PKGV/PKGR from OE\0"
+ "Subject\0Re: [PATCH 00/11] Add PR service and integrate PKGV/PKGR from OE\0"
  "Date\0Fri, 27 May 2011 13:09:06 -0700\0"
  "To\0openembedded-core@lists.openembedded.org\0"
  "Cc\0bitbake-devel@lists.openembedded.org\0"
@@ -102,351 +102,5 @@
  "Joshua Lock\n"
  "        Yocto Project Build Monkey\n"
          Intel Open Source Technology Centre
- "\01:2\0"
- "fn\00001-server-add-updated-fixed-xmlrpc-server-from-Poky.patch\0"
- "b\0"
- "From 4c0915842cd578e67fc9cc85d24538e419a47af8 Mon Sep 17 00:00:00 2001\n"
- "From: Joshua Lock <josh@linux.intel.com>\n"
- "Date: Fri, 27 May 2011 13:03:55 -0700\n"
- "Subject: [PATCH 1/2] server: add updated/fixed xmlrpc server from Poky\n"
- "\n"
- "Signed-off-by: Joshua Lock <josh@linux.intel.com>\n"
- "---\n"
- " lib/bb/server/xmlrpc.py |  273 +++++++++++++++++++++++++++++++++++++++++++++++\n"
- " 1 files changed, 273 insertions(+), 0 deletions(-)\n"
- " create mode 100644 lib/bb/server/xmlrpc.py\n"
- "\n"
- "diff --git a/lib/bb/server/xmlrpc.py b/lib/bb/server/xmlrpc.py\n"
- "new file mode 100644\n"
- "index 0000000..c43c6cd\n"
- "--- /dev/null\n"
- "+++ b/lib/bb/server/xmlrpc.py\n"
- "@@ -0,0 +1,273 @@\n"
- "+#\n"
- "+# BitBake XMLRPC Server\n"
- "+#\n"
- "+# Copyright (C) 2006 - 2007  Michael 'Mickey' Lauer\n"
- "+# Copyright (C) 2006 - 2008  Richard Purdie\n"
- "+#\n"
- "+# This program is free software; you can redistribute it and/or modify\n"
- "+# it under the terms of the GNU General Public License version 2 as\n"
- "+# published by the Free Software Foundation.\n"
- "+#\n"
- "+# This program is distributed in the hope that it will be useful,\n"
- "+# but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
- "+# GNU General Public License for more details.\n"
- "+#\n"
- "+# You should have received a copy of the GNU General Public License along\n"
- "+# with this program; if not, write to the Free Software Foundation, Inc.,\n"
- "+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
- "+\n"
- "+\"\"\"\n"
- "+    This module implements an xmlrpc server for BitBake.\n"
- "+\n"
- "+    Use this by deriving a class from BitBakeXMLRPCServer and then adding\n"
- "+    methods which you want to \"export\" via XMLRPC. If the methods have the\n"
- "+    prefix xmlrpc_, then registering those function will happen automatically,\n"
- "+    if not, you need to call register_function.\n"
- "+\n"
- "+    Use register_idle_function() to add a function which the xmlrpc server\n"
- "+    calls from within server_forever when no requests are pending. Make sure\n"
- "+    that those functions are non-blocking or else you will introduce latency\n"
- "+    in the server's main loop.\n"
- "+\"\"\"\n"
- "+\n"
- "+import bb\n"
- "+import xmlrpclib, sys\n"
- "+from bb import daemonize\n"
- "+from bb.ui import uievent\n"
- "+\n"
- "+DEBUG = False\n"
- "+\n"
- "+from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler\n"
- "+import inspect, select\n"
- "+\n"
- "+if sys.hexversion < 0x020600F0:\n"
- "+    print(\"Sorry, python 2.6 or later is required for bitbake's XMLRPC mode\")\n"
- "+    sys.exit(1)\n"
- "+\n"
- "+##\n"
- "+# The xmlrpclib.Transport class has undergone various changes in Python 2.7\n"
- "+# which break BitBake's XMLRPC implementation.\n"
- "+# To work around this we subclass Transport and have a copy/paste of method\n"
- "+# implementations from Python 2.6.6's xmlrpclib.\n"
- "+#\n"
- "+# Upstream Python bug is #8194 (http://bugs.python.org/issue8194)\n"
- "+# This bug is relevant for Python 2.7.0 and 2.7.1 but was fixed for\n"
- "+# Python > 2.7.2\n"
- "+##\n"
- "+\n"
- "+class BBTransport(xmlrpclib.Transport):\n"
- "+    def request(self, host, handler, request_body, verbose=0):\n"
- "+        h = self.make_connection(host)\n"
- "+        if verbose:\n"
- "+            h.set_debuglevel(1)\n"
- "+\n"
- "+        self.send_request(h, handler, request_body)\n"
- "+        self.send_host(h, host)\n"
- "+        self.send_user_agent(h)\n"
- "+        self.send_content(h, request_body)\n"
- "+\n"
- "+        errcode, errmsg, headers = h.getreply()\n"
- "+\n"
- "+        if errcode != 200:\n"
- "+            raise ProtocolError(\n"
- "+                host + handler,\n"
- "+                errcode, errmsg,\n"
- "+                headers\n"
- "+                )\n"
- "+\n"
- "+        self.verbose = verbose\n"
- "+\n"
- "+        try:\n"
- "+            sock = h._conn.sock\n"
- "+        except AttributeError:\n"
- "+            sock = None\n"
- "+\n"
- "+        return self._parse_response(h.getfile(), sock)\n"
- "+\n"
- "+    def make_connection(self, host):\n"
- "+        import httplib\n"
- "+        host, extra_headers, x509 = self.get_host_info(host)\n"
- "+        return httplib.HTTP(host)\n"
- "+\n"
- "+    def _parse_response(self, file, sock):\n"
- "+        p, u = self.getparser()\n"
- "+\n"
- "+        while 1:\n"
- "+            if sock:\n"
- "+                response = sock.recv(1024)\n"
- "+            else:\n"
- "+                response = file.read(1024)\n"
- "+            if not response:\n"
- "+                break\n"
- "+            if self.verbose:\n"
- "+                print \"body:\", repr(response)\n"
- "+            p.feed(response)\n"
- "+\n"
- "+        file.close()\n"
- "+        p.close()\n"
- "+\n"
- "+        return u.close()\n"
- "+\n"
- "+def _create_server(host, port):\n"
- "+    # Python 2.7.0 and 2.7.1 have a buggy Transport implementation\n"
- "+    # For those versions of Python, and only those versions, use our\n"
- "+    # own copy/paste BBTransport class.\n"
- "+    if (2, 7, 0) <= sys.version_info < (2, 7, 2):\n"
- "+        t = BBTransport()\n"
- "+        s = xmlrpclib.Server(\"http://%s:%d/\" % (host, port), transport=t, allow_none=True)\n"
- "+    else:\n"
- "+        s = xmlrpclib.Server(\"http://%s:%d/\" % (host, port), allow_none=True)\n"
- "+\n"
- "+    return s\n"
- "+\n"
- "+class BitBakeServerCommands():\n"
- "+    def __init__(self, server, cooker):\n"
- "+        self.cooker = cooker\n"
- "+        self.server = server\n"
- "+\n"
- "+    def registerEventHandler(self, host, port):\n"
- "+        \"\"\"\n"
- "+        Register a remote UI Event Handler\n"
- "+        \"\"\"\n"
- "+        s = _create_server(host, port)\n"
- "+\n"
- "+        return bb.event.register_UIHhandler(s)\n"
- "+\n"
- "+    def unregisterEventHandler(self, handlerNum):\n"
- "+        \"\"\"\n"
- "+        Unregister a remote UI Event Handler\n"
- "+        \"\"\"\n"
- "+        return bb.event.unregister_UIHhandler(handlerNum)\n"
- "+\n"
- "+    def runCommand(self, command):\n"
- "+        \"\"\"\n"
- "+        Run a cooker command on the server\n"
- "+        \"\"\"\n"
- "+        return self.cooker.command.runCommand(command)\n"
- "+\n"
- "+    def terminateServer(self):\n"
- "+        \"\"\"\n"
- "+        Trigger the server to quit\n"
- "+        \"\"\"\n"
- "+        self.server.quit = True\n"
- "+        print(\"Server (cooker) exiting\")\n"
- "+        return\n"
- "+\n"
- "+    def ping(self):\n"
- "+        \"\"\"\n"
- "+        Dummy method which can be used to check the server is still alive\n"
- "+        \"\"\"\n"
- "+        return True\n"
- "+\n"
- "+class BitBakeServer(SimpleXMLRPCServer):\n"
- "+    # remove this when you're done with debugging\n"
- "+    # allow_reuse_address = True\n"
- "+\n"
- "+    def __init__(self, cooker, interface = (\"localhost\", 0)):\n"
- "+        \"\"\"\n"
- "+        Constructor\n"
- "+        \"\"\"\n"
- "+        SimpleXMLRPCServer.__init__(self, interface,\n"
- "+                                    requestHandler=SimpleXMLRPCRequestHandler,\n"
- "+                                    logRequests=False, allow_none=True)\n"
- "+        self._idlefuns = {}\n"
- "+        self.host, self.port = self.socket.getsockname()\n"
- "+        #self.register_introspection_functions()\n"
- "+        commands = BitBakeServerCommands(self, cooker)\n"
- "+        self.autoregister_all_functions(commands, \"\")\n"
- "+        self.cooker = cooker\n"
- "+\n"
- "+    def autoregister_all_functions(self, context, prefix):\n"
- "+        \"\"\"\n"
- "+        Convenience method for registering all functions in the scope\n"
- "+        of this class that start with a common prefix\n"
- "+        \"\"\"\n"
- "+        methodlist = inspect.getmembers(context, inspect.ismethod)\n"
- "+        for name, method in methodlist:\n"
- "+            if name.startswith(prefix):\n"
- "+                self.register_function(method, name[len(prefix):])\n"
- "+\n"
- "+    def register_idle_function(self, function, data):\n"
- "+        \"\"\"Register a function to be called while the server is idle\"\"\"\n"
- "+        assert hasattr(function, '__call__')\n"
- "+        self._idlefuns[function] = data\n"
- "+\n"
- "+    def serve_forever(self):\n"
- "+        bb.cooker.server_main(self.cooker, self._serve_forever)\n"
- "+\n"
- "+    def _serve_forever(self):\n"
- "+        \"\"\"\n"
- "+        Serve Requests. Overloaded to honor a quit command\n"
- "+        \"\"\"\n"
- "+        self.quit = False\n"
- "+        self.timeout = 0 # Run Idle calls for our first callback\n"
- "+        while not self.quit:\n"
- "+            #print \"Idle queue length %s\" % len(self._idlefuns)\n"
- "+            self.handle_request()\n"
- "+            #print \"Idle timeout, running idle functions\"\n"
- "+            nextsleep = None\n"
- "+            for function, data in self._idlefuns.items():\n"
- "+                try:\n"
- "+                    retval = function(self, data, False)\n"
- "+                    if retval is False:\n"
- "+                        del self._idlefuns[function]\n"
- "+                    elif retval is True:\n"
- "+                        nextsleep = 0\n"
- "+                    elif nextsleep is 0:\n"
- "+                        continue\n"
- "+                    elif nextsleep is None:\n"
- "+                        nextsleep = retval\n"
- "+                    elif retval < nextsleep:\n"
- "+                        nextsleep = retval\n"
- "+                except SystemExit:\n"
- "+                    raise\n"
- "+                except:\n"
- "+                    import traceback\n"
- "+                    traceback.print_exc()\n"
- "+                    pass\n"
- "+            if nextsleep is None and len(self._idlefuns) > 0:\n"
- "+                nextsleep = 0\n"
- "+            self.timeout = nextsleep\n"
- "+        # Tell idle functions we're exiting\n"
- "+        for function, data in self._idlefuns.items():\n"
- "+            try:\n"
- "+                retval = function(self, data, True)\n"
- "+            except:\n"
- "+                pass\n"
- "+\n"
- "+        self.server_close()\n"
- "+        return\n"
- "+\n"
- "+class BitbakeServerInfo():\n"
- "+    def __init__(self, server):\n"
- "+        self.host = server.host\n"
- "+        self.port = server.port\n"
- "+\n"
- "+class BitBakeServerFork():\n"
- "+    def __init__(self, cooker, server, serverinfo, logfile):\n"
- "+        daemonize.createDaemon(server.serve_forever, logfile)\n"
- "+\n"
- "+class BitbakeUILauch():\n"
- "+    def launch(self, serverinfo, uifunc, *args):\n"
- "+        return uifunc(*args)\n"
- "+\n"
- "+class BitBakeServerConnection():\n"
- "+    def __init__(self, serverinfo):\n"
- "+        self.connection = _create_server(serverinfo.host, serverinfo.port)\n"
- "+        self.events = uievent.BBUIEventQueue(self.connection)\n"
- "+        for event in bb.event.ui_queue:\n"
- "+            self.events.queue_event(event)\n"
- "+\n"
- "+    def terminate(self):\n"
- "+        # Don't wait for server indefinitely\n"
- "+        import socket\n"
- "+        socket.setdefaulttimeout(2)\n"
- "+        try:\n"
- "+            self.events.system_quit()\n"
- "+        except:\n"
- "+            pass\n"
- "+        try:\n"
- "+            self.connection.terminateServer()\n"
- "+        except:\n"
- "+            pass\n"
- "-- \n"
- 1.7.5.1
- "\01:3\0"
- "fn\00002-uievent-fix-queueing-of-events-for-xmlrpc-before-UI-.patch\0"
- "b\0"
- "From 1618318f0a30847b08c158e7ac82f9043126144e Mon Sep 17 00:00:00 2001\n"
- "From: Joshua Lock <josh@linux.intel.com>\n"
- "Date: Fri, 27 May 2011 13:04:44 -0700\n"
- "Subject: [PATCH 2/2] uievent: fix queueing of events for xmlrpc before UI has\n"
- " loaded\n"
- "\n"
- "The change to Queue up events before the UI is spawned broke the xmlrpc\n"
- "server because the uievent implementation of BBUIEventQueue expects pickled\n"
- "strings for its queue_event() method.\n"
- "This is because the RPC exposed event.send() method must accept pickled\n"
- "strings, but for xmlrpc event.send() is just mapped to queue_event(). Work\n"
- "around this by adding a send_event method which unpickles strings and hands\n"
- "them off to queue_event() which can then be used for the remapping.\n"
- "\n"
- "Signed-off-by: Joshua Lock <josh@linux.intel.com>\n"
- "---\n"
- " lib/bb/ui/uievent.py |    7 +++++--\n"
- " 1 files changed, 5 insertions(+), 2 deletions(-)\n"
- "\n"
- "diff --git a/lib/bb/ui/uievent.py b/lib/bb/ui/uievent.py\n"
- "index b404805..2fef4e4 100644\n"
- "--- a/lib/bb/ui/uievent.py\n"
- "+++ b/lib/bb/ui/uievent.py\n"
- "@@ -63,17 +63,20 @@ class BBUIEventQueue:\n"
- " \n"
- "     def queue_event(self, event):\n"
- "         self.eventQueueLock.acquire()\n"
- "-        self.eventQueue.append(pickle.loads(event))\n"
- "+        self.eventQueue.append(event)\n"
- "         self.eventQueueNotify.set()\n"
- "         self.eventQueueLock.release()\n"
- " \n"
- "+    def send_event(self, event):\n"
- "+        self.queue_event(pickle.loads(event))\n"
- "+\n"
- "     def startCallbackHandler(self):\n"
- " \n"
- "         server = UIXMLRPCServer()\n"
- "         self.host, self.port = server.socket.getsockname()\n"
- " \n"
- "         server.register_function( self.system_quit, \"event.quit\" )\n"
- "-        server.register_function( self.queue_event, \"event.send\" )\n"
- "+        server.register_function( self.send_event, \"event.send\" )\n"
- "         server.socket.settimeout(1)\n"
- " \n"
- "         self.EventHandle = self.BBServer.registerEventHandler(self.host, self.port)\n"
- "-- \n"
- 1.7.5.1
 
-70333eccf70ac9a2fa2571ab1d31618a52cb050070bd8ed9813322ad5c3196d1
+850e5b0c6132fe5d2d1631d2e2550d6e828a59f3e6830cc5df3ff50e08d2c49e

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.