changeset 495:7e9a60417cb3

`os.EX_OK` etc are only defined on UNIX and Mac. Replace with fallback constants. Fixes #298 so Windows slaves now run successfully
author dfraser
date Mon, 14 Jul 2008 14:49:19 +0000
parents 9c9bf7a69bf0
children a0fa17e33348
files bitten/slave.py
diffstat 1 files changed, 12 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/slave.py
+++ b/bitten/slave.py
@@ -26,6 +26,10 @@
 from bitten.recipe import Recipe
 from bitten.util import xmlio
 
+EX_OK = getattr(os, "EX_OK", 0)
+EX_UNAVAILABLE = getattr(os, "EX_UNAVAILABLE", 69)
+EX_PROTOCOL = getattr(os, "EX_PROTOCOL", 76)
+
 __all__ = ['BuildSlave', 'ExitSlave']
 __docformat__ = 'restructuredtext en'
 
@@ -144,7 +148,7 @@
                 self._execute_build(None, fileobj)
             finally:
                 fileobj.close()
-            return os.EX_OK
+            return EX_OK
 
         urls = []
         while True:
@@ -159,7 +163,7 @@
                 except urllib2.HTTPError, e:
                     # HTTPError doesn't have the "reason" attribute of URLError
                     log.error(e)
-                    raise ExitSlave(os.EX_UNAVAILABLE)
+                    raise ExitSlave(EX_UNAVAILABLE)
                 except urllib2.URLError, e:
                     # Is this a temporary network glitch or something a bit
                     # more severe?
@@ -168,14 +172,14 @@
                         log.warning(e)
                     else:
                         log.error(e)
-                        raise ExitSlave(os.EX_UNAVAILABLE)
+                        raise ExitSlave(EX_UNAVAILABLE)
             except ExitSlave, e:
                 return e.exit_code
             time.sleep(self.poll_interval)
 
     def quit(self):
         log.info('Shutting down')
-        raise ExitSlave(os.EX_OK)
+        raise ExitSlave(EX_OK)
 
     def _create_build(self, url):
         xml = xmlio.Element('slave', name=self.name)[
@@ -207,7 +211,7 @@
             return False
         else:
             log.error('Unexpected response (%d %s)', resp.code, resp.msg)
-            raise ExitSlave(os.EX_PROTOCOL)
+            raise ExitSlave(EX_PROTOCOL)
 
     def _initiate_build(self, build_url):
         log.info('Build pending at %s', build_url)
@@ -217,7 +221,7 @@
                 self._execute_build(build_url, resp)
             else:
                 log.error('Unexpected response (%d): %s', resp.code, resp.msg)
-                self._cancel_build(build_url, exit_code=os.EX_PROTOCOL)
+                self._cancel_build(build_url, exit_code=EX_PROTOCOL)
         except KeyboardInterrupt:
             log.warning('Build interrupted')
             self._cancel_build(build_url)
@@ -248,7 +252,7 @@
                 _rmtree(basedir)
             if self.single_build:
                 log.info('Exiting after single build completed.')
-                raise ExitSlave(os.EX_OK)
+                raise ExitSlave(EX_OK)
 
     def _execute_step(self, build_url, recipe, step):
         failed = False
@@ -296,7 +300,7 @@
 
         return not failed or step.onerror != 'fail'
 
-    def _cancel_build(self, build_url, exit_code=os.EX_OK):
+    def _cancel_build(self, build_url, exit_code=EX_OK):
         log.info('Cancelling build at %s', build_url)
         if not self.local:
             resp = self.request('DELETE', build_url)
Copyright (C) 2012-2017 Edgewall Software