diff --git a/build.py b/build.py index ce5e7af2..4a9fd894 100755 --- a/build.py +++ b/build.py @@ -40,8 +40,11 @@ try: except ImportError: from buildtools.backports.shutil_which import which +try: + from setuptools.modified import newer, newer_group +except ImportError: + from distutils.dep_util import newer, newer_group -from distutils.dep_util import newer, newer_group from buildtools.config import Config, msg, opj, posixjoin, loadETG, etg2sip, findCmd, \ phoenixDir, wxDir, copyIfNewer, copyFile, \ macSetLoaderNames, \ diff --git a/buildtools/config.py b/buildtools/config.py index 94c216ec..5bee90cd 100644 --- a/buildtools/config.py +++ b/buildtools/config.py @@ -23,7 +23,10 @@ import platform from distutils.file_util import copy_file from distutils.dir_util import mkpath -from distutils.dep_util import newer +try: + from setuptools.modified import newer +except ImportError: + from distutils.dep_util import newer import distutils.sysconfig @@ -907,29 +910,29 @@ def runcmd(cmd, getOutput=False, echoCmd=True, fatal=True, onError=None): otherKwArgs = dict(stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - sp = subprocess.Popen(cmd, shell=True, env=os.environ, **otherKwArgs) + with subprocess.Popen(cmd, shell=True, env=os.environ, **otherKwArgs) as sp: - output = None - if getOutput: - outputEncoding = 'cp1252' if sys.platform == 'win32' else 'utf-8' - output = sp.stdout.read() - if sys.version_info > (3,): - output = output.decode(outputEncoding) - output = output.rstrip() - - rval = sp.wait() - if rval: - # Failed! - #raise subprocess.CalledProcessError(rval, cmd) - print("Command '%s' failed with exit code %d." % (cmd, rval)) + output = None if getOutput: - print(output) - if onError is not None: - onError() - if fatal: - sys.exit(rval) + outputEncoding = 'cp1252' if sys.platform == 'win32' else 'utf-8' + output = sp.stdout.read() + if sys.version_info > (3,): + output = output.decode(outputEncoding) + output = output.rstrip() - return output + rval = sp.wait() + if rval: + # Failed! + #raise subprocess.CalledProcessError(rval, cmd) + print("Command '%s' failed with exit code %d." % (cmd, rval)) + if getOutput: + print(output) + if onError is not None: + onError() + if fatal: + sys.exit(rval) + + return output def myExecfile(filename, ns): diff --git a/buildtools/distutils_hacks.py b/buildtools/distutils_hacks.py index 3626e986..eafd5983 100644 --- a/buildtools/distutils_hacks.py +++ b/buildtools/distutils_hacks.py @@ -18,7 +18,11 @@ import distutils.command.install_data import distutils.command.install_headers import distutils.command.clean -from distutils.dep_util import newer, newer_group +try: + from setuptools.modified import newer, newer_group +except ImportError: + from distutils.dep_util import newer, newer_group + from distutils import log from .config import Config, posixjoin, loadETG, etg2sip