diff options
Diffstat (limited to 'bitbake/lib/prserv/serv.py')
| -rw-r--r-- | bitbake/lib/prserv/serv.py | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/bitbake/lib/prserv/serv.py b/bitbake/lib/prserv/serv.py index d8bdf31ba9..719941b32e 100644 --- a/bitbake/lib/prserv/serv.py +++ b/bitbake/lib/prserv/serv.py | |||
| @@ -97,16 +97,7 @@ class PRServer(SimpleXMLRPCServer): | |||
| 97 | return | 97 | return |
| 98 | 98 | ||
| 99 | def start(self): | 99 | def start(self): |
| 100 | if self.daemon is True: | 100 | self.daemonize() |
| 101 | logger.info("PRServer: try to start daemon...") | ||
| 102 | self.daemonize() | ||
| 103 | else: | ||
| 104 | atexit.register(self.delpid) | ||
| 105 | pid = str(os.getpid()) | ||
| 106 | pf = file(self.pidfile, 'w+') | ||
| 107 | pf.write("%s\n" % pid) | ||
| 108 | pf.close() | ||
| 109 | self.work_forever() | ||
| 110 | 101 | ||
| 111 | def delpid(self): | 102 | def delpid(self): |
| 112 | os.remove(self.pidfile) | 103 | os.remove(self.pidfile) |
| @@ -118,6 +109,7 @@ class PRServer(SimpleXMLRPCServer): | |||
| 118 | try: | 109 | try: |
| 119 | pid = os.fork() | 110 | pid = os.fork() |
| 120 | if pid > 0: | 111 | if pid > 0: |
| 112 | os.waitpid(pid, 0) | ||
| 121 | #parent return instead of exit to give control | 113 | #parent return instead of exit to give control |
| 122 | return | 114 | return |
| 123 | except OSError as e: | 115 | except OSError as e: |
| @@ -131,7 +123,7 @@ class PRServer(SimpleXMLRPCServer): | |||
| 131 | try: | 123 | try: |
| 132 | pid = os.fork() | 124 | pid = os.fork() |
| 133 | if pid > 0: #parent | 125 | if pid > 0: #parent |
| 134 | sys.exit(0) | 126 | os._exit(0) |
| 135 | except OSError as e: | 127 | except OSError as e: |
| 136 | raise Exception("%s [%d]" % (e.strerror, e.errno)) | 128 | raise Exception("%s [%d]" % (e.strerror, e.errno)) |
| 137 | 129 | ||
| @@ -155,7 +147,7 @@ class PRServer(SimpleXMLRPCServer): | |||
| 155 | pf.close() | 147 | pf.close() |
| 156 | 148 | ||
| 157 | self.work_forever() | 149 | self.work_forever() |
| 158 | sys.exit(0) | 150 | os._exit(0) |
| 159 | 151 | ||
| 160 | class PRServSingleton(): | 152 | class PRServSingleton(): |
| 161 | def __init__(self, dbfile, logfile, interface): | 153 | def __init__(self, dbfile, logfile, interface): |
| @@ -164,21 +156,14 @@ class PRServSingleton(): | |||
| 164 | self.interface = interface | 156 | self.interface = interface |
| 165 | self.host = None | 157 | self.host = None |
| 166 | self.port = None | 158 | self.port = None |
| 167 | self.event = threading.Event() | ||
| 168 | 159 | ||
| 169 | def _work(self): | 160 | def start(self): |
| 170 | self.prserv = PRServer(self.dbfile, self.logfile, self.interface, False) | 161 | self.prserv = PRServer(self.dbfile, self.logfile, self.interface) |
| 162 | self.prserv.start() | ||
| 171 | self.host, self.port = self.prserv.getinfo() | 163 | self.host, self.port = self.prserv.getinfo() |
| 172 | self.event.set() | ||
| 173 | self.prserv.work_forever() | ||
| 174 | del self.prserv.db | 164 | del self.prserv.db |
| 175 | 165 | ||
| 176 | def start(self): | ||
| 177 | self.working_thread = threading.Thread(target=self._work) | ||
| 178 | self.working_thread.start() | ||
| 179 | |||
| 180 | def getinfo(self): | 166 | def getinfo(self): |
| 181 | self.event.wait() | ||
| 182 | return (self.host, self.port) | 167 | return (self.host, self.port) |
| 183 | 168 | ||
| 184 | class PRServerConnection(): | 169 | class PRServerConnection(): |
