Skip to content

Commit

Permalink
BLD: simplify build_ext (#1135)
Browse files Browse the repository at this point in the history
  • Loading branch information
fangchenli committed Mar 14, 2022
1 parent 589f95c commit 8272d41
Showing 1 changed file with 9 additions and 48 deletions.
57 changes: 9 additions & 48 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python
import os
import subprocess
from distutils.errors import CCompilerError, DistutilsExecError, DistutilsPlatformError
from distutils.errors import CompileError

from setuptools import setup, Extension
from setuptools.command.sdist import sdist
Expand Down Expand Up @@ -36,56 +36,17 @@ def __check_submodules(self):
raise ValueError('Submodule not clean: %s' % line)


class BuildFailed(Exception):
pass


class optional_build_ext(build_ext):
def run(self):
def build_extensions(self):
try:
build_ext.run(self)
except DistutilsPlatformError:
raise BuildFailed()

def build_extension(self, ext):
try:
build_ext.build_extension(self, ext)
except (CCompilerError, DistutilsExecError, DistutilsPlatformError,
IOError, ValueError):
raise BuildFailed()


try:
# Set default options for setuptools sphinx command;
# setup(command_options=...) can't specify two builders
from sphinx.setup_command import BuildDoc as BuildDocSphinx
class BuildDoc(BuildDocSphinx):
def initialize_options(self):
super(BuildDoc, self).initialize_options()
self.builder = ['html', 'man']
except ImportError:
BuildDoc = None
super().build_extensions()
except CompileError:
self.extensions = []
super().build_extensions()


def run_setup(build_binary=False):
ext_modules = []
if build_binary:
ext_modules = ext_modules.append(Extension("asv._rangemedian", ["asv/_rangemedian.cpp"]))

cmdclass = {'build_ext': optional_build_ext, 'sdist': sdist_checked}

if BuildDoc is not None:
cmdclass['build_sphinx'] = BuildDoc

if __name__ == "__main__":
setup(
ext_modules=ext_modules,
cmdclass=cmdclass,
ext_modules=[Extension("asv._rangemedian", ["asv/_rangemedian.cpp"])],
cmdclass={"build_ext": optional_build_ext, "sdist": sdist_checked},
)


if __name__ == "__main__":
try:
run_setup(build_binary=True)
except BuildFailed:
print("Compiling asv._rangemedian failed -- continuing without it")
run_setup(build_binary=False)

0 comments on commit 8272d41

Please sign in to comment.