setup.py (46 lines of code) (raw):

import subprocess import sys from distutils.command.build import build as DistutilsBuild from distutils.command.build_ext import build_ext as DistutilsBuildExt from setuptools import setup, Extension import build class BuildExt(DistutilsBuildExt): def run(self): pass def build_extension(self, ext): pass class BuildError(Exception): pass class Build(DistutilsBuild): def run(self): self.check_version() self.build() def check_version(self): cmd = ['go', 'help', 'build'] try: build_help = subprocess.check_output(cmd, stderr=subprocess.STDOUT).rstrip() except OSError as e: raise BuildError(""" Unable to execute '{}'. HINT: are you sure `go` is installed? go_vncdriver requires Go version 1.5 or newer. Here are some hints for Go installation: - Ubuntu 14.04: The default golang is too old, but you can get a modern one via: "sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable && sudo apt-get update && sudo apt-get install golang" - Ubuntu 16:04: "sudo apt-get install golang" - OSX, El Capitan or newer: "brew install golang" - Other: you can obtain a recent Go build from https://golang.org/doc/install (DETAIL: original error: {}.)""".format(' '.join(cmd), e)) else: if 'buildmode' not in str(build_help): raise RuntimeError(""" Your Go installation looks too old: go_vncdriver requires Go version 1.5 or newer. Here are some hints for Go installation: - Ubuntu 14.04: The default golang is too old, but you can get a modern one via: "sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable && sudo apt-get update && sudo apt-get install golang" - Ubuntu 16:04: "sudo apt-get install golang" - OSX, El Capitan or newer: "brew install golang" - Other: you can obtain a recent Go build from https://golang.org/doc/install You can obtain a recent Go build from https://golang.org/doc/install. If on Ubuntu, you can follow: https://github.com/golang/go/wiki/Ubuntu. (DETAIL: the output of 'go help build' did not include 'buildmode'.) """) def build(self): try: sys.stderr.write('Running new build\n') build.build() except build.BuildException as e: sys.stderr.write('Could not build go_vncdriver: %s\n' % e) raise DistutilsBuild.run(self) setup(name='go_vncdriver', version='0.4.19', cmdclass={'build': Build, 'build_ext': BuildExt}, ext_modules=[Extension('go_vncdriver', [])], packages=['go_vncdriver'], package_dir={'go_vncdriver': '.'}, package_data={'go_vncdriver': ['go_vncdriver.so']}, setup_requires=['numpy'], install_requires=['numpy'], )