Fix build on Centos.
authorCarl Hetherington <cth@carlh.net>
Mon, 11 Sep 2017 00:31:21 +0000 (01:31 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 11 Sep 2017 00:31:21 +0000 (01:31 +0100)
wscript

diff --git a/wscript b/wscript
index 3764afd93278aac37ca225a8eb1466a6f49cdde2..2ab71e2fe5fc32fb8bb8cd933245ccf29af4de72 100644 (file)
--- a/wscript
+++ b/wscript
@@ -6,6 +6,45 @@ APPNAME = 'libsub'
 VERSION = '1.2.4devel'
 API_VERSION = '-1.0'
 
+try:
+    from subprocess import STDOUT, check_output, CalledProcessError
+except ImportError:
+    # python 2.6 (in Centos 6) doesn't include check_output
+    # monkey patch it in!
+    import subprocess
+    STDOUT = subprocess.STDOUT
+
+    def check_output(*popenargs, **kwargs):
+        if 'stdout' in kwargs:  # pragma: no cover
+            raise ValueError('stdout argument not allowed, '
+                             'it will be overridden.')
+        process = subprocess.Popen(stdout=subprocess.PIPE,
+                                   *popenargs, **kwargs)
+        output, _ = process.communicate()
+        retcode = process.poll()
+        if retcode:
+            cmd = kwargs.get("args")
+            if cmd is None:
+                cmd = popenargs[0]
+            raise subprocess.CalledProcessError(retcode, cmd,
+                                                output=output)
+        return output
+    subprocess.check_output = check_output
+
+    # overwrite CalledProcessError due to `output`
+    # keyword not being available (in 2.6)
+    class CalledProcessError(Exception):
+
+        def __init__(self, returncode, cmd, output=None):
+            self.returncode = returncode
+            self.cmd = cmd
+            self.output = output
+
+        def __str__(self):
+            return "Command '%s' returned non-zero exit status %d" % (
+                self.cmd, self.returncode)
+    subprocess.CalledProcessError = CalledProcessError
+
 def options(opt):
     opt.load('compiler_cxx')
     opt.add_option('--enable-debug', action='store_true', default=False, help='build with debugging information and without optimisation')