bpo-36146: Refactor setup.py (GH-12093)
* Rename globals to upper case to better distinguish if a variable is global or local: * Rename cross_compiling to CROSS_COMPILING * Rename host_platform to HOST_PLATFORM * Rename disabled_module_list to DISABLED_MODULE_LIST * Add MS_WINDOWS, CYGWIN and MACOS constants. * Use booleans: replace "return 0" with "return False" and replace "return 1" with "return True"
This commit is contained in:
parent
4173772031
commit
4cbea518a0
141
setup.py
141
setup.py
|
@ -16,7 +16,7 @@ from distutils.command.install_lib import install_lib
|
|||
from distutils.command.build_scripts import build_scripts
|
||||
from distutils.spawn import find_executable
|
||||
|
||||
cross_compiling = "_PYTHON_HOST_PLATFORM" in os.environ
|
||||
CROSS_COMPILING = "_PYTHON_HOST_PLATFORM" in os.environ
|
||||
|
||||
# Set common compiler and linker flags derived from the Makefile,
|
||||
# reserved for building the interpreter and the stdlib modules.
|
||||
|
@ -42,15 +42,18 @@ def get_platform():
|
|||
if sys.platform.startswith('osf1'):
|
||||
return 'osf1'
|
||||
return sys.platform
|
||||
host_platform = get_platform()
|
||||
HOST_PLATFORM = get_platform()
|
||||
MS_WINDOWS = (HOST_PLATFORM == 'win32')
|
||||
CYGWIN = (HOST_PLATFORM == 'cygwin')
|
||||
MACOS = (HOST_PLATFORM == 'darwin')
|
||||
|
||||
VXWORKS = ('vxworks' in host_platform)
|
||||
VXWORKS = ('vxworks' in HOST_PLATFORM)
|
||||
|
||||
# Were we compiled --with-pydebug or with #define Py_DEBUG?
|
||||
COMPILED_WITH_PYDEBUG = ('--with-pydebug' in sysconfig.get_config_var("CONFIG_ARGS"))
|
||||
|
||||
# This global variable is used to hold the list of modules to be disabled.
|
||||
disabled_module_list = []
|
||||
DISABLED_MODULE_LIST = []
|
||||
|
||||
def add_dir_to_list(dirlist, dir):
|
||||
"""Add the directory 'dir' to the list 'dirlist' (after any relative
|
||||
|
@ -124,7 +127,7 @@ def find_file(filename, std_dirs, paths):
|
|||
'paths' is a list of additional locations to check; if the file is
|
||||
found in one of them, the resulting list will contain the directory.
|
||||
"""
|
||||
if host_platform == 'darwin':
|
||||
if MACOS:
|
||||
# Honor the MacOSX SDK setting when one was specified.
|
||||
# An SDK is a directory with the same structure as a real
|
||||
# system, but with only header files and libraries.
|
||||
|
@ -134,7 +137,7 @@ def find_file(filename, std_dirs, paths):
|
|||
for dir in std_dirs:
|
||||
f = os.path.join(dir, filename)
|
||||
|
||||
if host_platform == 'darwin' and is_macosx_sdk_path(dir):
|
||||
if MACOS and is_macosx_sdk_path(dir):
|
||||
f = os.path.join(sysroot, dir[1:], filename)
|
||||
|
||||
if os.path.exists(f): return []
|
||||
|
@ -143,7 +146,7 @@ def find_file(filename, std_dirs, paths):
|
|||
for dir in paths:
|
||||
f = os.path.join(dir, filename)
|
||||
|
||||
if host_platform == 'darwin' and is_macosx_sdk_path(dir):
|
||||
if MACOS and is_macosx_sdk_path(dir):
|
||||
f = os.path.join(sysroot, dir[1:], filename)
|
||||
|
||||
if os.path.exists(f):
|
||||
|
@ -157,7 +160,7 @@ def find_library_file(compiler, libname, std_dirs, paths):
|
|||
if result is None:
|
||||
return None
|
||||
|
||||
if host_platform == 'darwin':
|
||||
if MACOS:
|
||||
sysroot = macosx_sdk_root()
|
||||
|
||||
# Check whether the found file is in one of the standard directories
|
||||
|
@ -166,7 +169,7 @@ def find_library_file(compiler, libname, std_dirs, paths):
|
|||
# Ensure path doesn't end with path separator
|
||||
p = p.rstrip(os.sep)
|
||||
|
||||
if host_platform == 'darwin' and is_macosx_sdk_path(p):
|
||||
if MACOS and is_macosx_sdk_path(p):
|
||||
# Note that, as of Xcode 7, Apple SDKs may contain textual stub
|
||||
# libraries with .tbd extensions rather than the normal .dylib
|
||||
# shared libraries installed in /. The Apple compiler tool
|
||||
|
@ -195,7 +198,7 @@ def find_library_file(compiler, libname, std_dirs, paths):
|
|||
# Ensure path doesn't end with path separator
|
||||
p = p.rstrip(os.sep)
|
||||
|
||||
if host_platform == 'darwin' and is_macosx_sdk_path(p):
|
||||
if MACOS and is_macosx_sdk_path(p):
|
||||
if os.path.join(sysroot, p[1:]) == dirname:
|
||||
return [ p ]
|
||||
|
||||
|
@ -236,7 +239,7 @@ class PyBuildExt(build_ext):
|
|||
|
||||
# Remove modules that are present on the disabled list
|
||||
extensions = [ext for ext in self.extensions
|
||||
if ext.name not in disabled_module_list]
|
||||
if ext.name not in DISABLED_MODULE_LIST]
|
||||
# move ctypes to the end, it depends on other modules
|
||||
ext_map = dict((ext.name, i) for i, ext in enumerate(extensions))
|
||||
if "_ctypes" in ext_map:
|
||||
|
@ -411,7 +414,7 @@ class PyBuildExt(build_ext):
|
|||
ext.name)
|
||||
return
|
||||
|
||||
if host_platform == 'darwin' and (
|
||||
if MACOS and (
|
||||
sys.maxsize > 2**32 and '-arch' in ext.extra_link_args):
|
||||
# Don't bother doing an import check when an extension was
|
||||
# build with an explicit '-arch' flag on OSX. That's currently
|
||||
|
@ -425,7 +428,7 @@ class PyBuildExt(build_ext):
|
|||
|
||||
# Workaround for Cygwin: Cygwin currently has fork issues when many
|
||||
# modules have been imported
|
||||
if host_platform == 'cygwin':
|
||||
if CYGWIN:
|
||||
self.announce('WARNING: skipping import check for Cygwin-based "%s"'
|
||||
% ext.name)
|
||||
return
|
||||
|
@ -439,7 +442,7 @@ class PyBuildExt(build_ext):
|
|||
sys.path_importer_cache.clear()
|
||||
|
||||
# Don't try to load extensions for cross builds
|
||||
if cross_compiling:
|
||||
if CROSS_COMPILING:
|
||||
return
|
||||
|
||||
loader = importlib.machinery.ExtensionFileLoader(ext.name, ext_filename)
|
||||
|
@ -492,7 +495,7 @@ class PyBuildExt(build_ext):
|
|||
if not find_executable('dpkg-architecture'):
|
||||
return
|
||||
opt = ''
|
||||
if cross_compiling:
|
||||
if CROSS_COMPILING:
|
||||
opt = '-t' + sysconfig.get_config_var('HOST_GNU_TYPE')
|
||||
tmpfile = os.path.join(self.build_temp, 'multiarch')
|
||||
if not os.path.exists(self.build_temp):
|
||||
|
@ -550,11 +553,11 @@ class PyBuildExt(build_ext):
|
|||
# Ensure that /usr/local is always used, but the local build
|
||||
# directories (i.e. '.' and 'Include') must be first. See issue
|
||||
# 10520.
|
||||
if not cross_compiling:
|
||||
if not CROSS_COMPILING:
|
||||
add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
|
||||
add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
|
||||
# only change this for cross builds for 3.3, issues on Mageia
|
||||
if cross_compiling:
|
||||
if CROSS_COMPILING:
|
||||
self.add_cross_compiling_paths()
|
||||
self.add_multiarch_paths()
|
||||
|
||||
|
@ -577,7 +580,7 @@ class PyBuildExt(build_ext):
|
|||
for directory in reversed(options.dirs):
|
||||
add_dir_to_list(dir_list, directory)
|
||||
|
||||
if (not cross_compiling and
|
||||
if (not CROSS_COMPILING and
|
||||
os.path.normpath(sys.base_prefix) != '/usr' and
|
||||
not sysconfig.get_config_var('PYTHONFRAMEWORK')):
|
||||
# OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework
|
||||
|
@ -594,7 +597,7 @@ class PyBuildExt(build_ext):
|
|||
# lib_dirs and inc_dirs are used to search for files;
|
||||
# if a file is found in one of those directories, it can
|
||||
# be assumed that no additional -I,-L directives are needed.
|
||||
if not cross_compiling:
|
||||
if not CROSS_COMPILING:
|
||||
lib_dirs = self.compiler.library_dirs + system_lib_dirs
|
||||
inc_dirs = self.compiler.include_dirs + system_include_dirs
|
||||
else:
|
||||
|
@ -616,14 +619,14 @@ class PyBuildExt(build_ext):
|
|||
srcdir = sysconfig.get_config_var('srcdir')
|
||||
|
||||
# OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
|
||||
if host_platform in ['osf1', 'unixware7', 'openunix8']:
|
||||
if HOST_PLATFORM in ['osf1', 'unixware7', 'openunix8']:
|
||||
lib_dirs += ['/usr/ccs/lib']
|
||||
|
||||
# HP-UX11iv3 keeps files in lib/hpux folders.
|
||||
if host_platform == 'hp-ux11':
|
||||
if HOST_PLATFORM == 'hp-ux11':
|
||||
lib_dirs += ['/usr/lib/hpux64', '/usr/lib/hpux32']
|
||||
|
||||
if host_platform == 'darwin':
|
||||
if MACOS:
|
||||
# This should work on any unixy platform ;-)
|
||||
# If the user has bothered specifying additional -I and -L flags
|
||||
# in OPT and LDFLAGS we might as well use them here.
|
||||
|
@ -786,7 +789,7 @@ class PyBuildExt(build_ext):
|
|||
os.makedirs(self.build_temp)
|
||||
# Determine if readline is already linked against curses or tinfo.
|
||||
if do_readline:
|
||||
if cross_compiling:
|
||||
if CROSS_COMPILING:
|
||||
ret = os.system("%s -d %s | grep '(NEEDED)' > %s" \
|
||||
% (sysconfig.get_config_var('READELF'),
|
||||
do_readline, tmpfile))
|
||||
|
@ -819,7 +822,7 @@ class PyBuildExt(build_ext):
|
|||
elif self.compiler.find_library_file(lib_dirs, 'curses'):
|
||||
curses_library = 'curses'
|
||||
|
||||
if host_platform == 'darwin':
|
||||
if MACOS:
|
||||
os_release = int(os.uname()[2].split('.')[0])
|
||||
dep_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
|
||||
if (dep_target and
|
||||
|
@ -833,7 +836,7 @@ class PyBuildExt(build_ext):
|
|||
if find_file('readline/rlconf.h', inc_dirs, []) is None:
|
||||
do_readline = False
|
||||
if do_readline:
|
||||
if host_platform == 'darwin' and os_release < 9:
|
||||
if MACOS and os_release < 9:
|
||||
# In every directory on the search path search for a dynamic
|
||||
# library and then a static library, instead of first looking
|
||||
# for dynamic libraries on the entire path.
|
||||
|
@ -999,7 +1002,7 @@ class PyBuildExt(build_ext):
|
|||
db_inc_paths.append('/pkg/db-3.%d/include' % x)
|
||||
db_inc_paths.append('/opt/db-3.%d/include' % x)
|
||||
|
||||
if cross_compiling:
|
||||
if CROSS_COMPILING:
|
||||
db_inc_paths = []
|
||||
|
||||
# Add some common subdirectories for Sleepycat DB to the list,
|
||||
|
@ -1022,7 +1025,7 @@ class PyBuildExt(build_ext):
|
|||
|
||||
db_ver_inc_map = {}
|
||||
|
||||
if host_platform == 'darwin':
|
||||
if MACOS:
|
||||
sysroot = macosx_sdk_root()
|
||||
|
||||
class db_found(Exception): pass
|
||||
|
@ -1031,7 +1034,7 @@ class PyBuildExt(build_ext):
|
|||
# search path.
|
||||
for d in inc_dirs + db_inc_paths:
|
||||
f = os.path.join(d, "db.h")
|
||||
if host_platform == 'darwin' and is_macosx_sdk_path(d):
|
||||
if MACOS and is_macosx_sdk_path(d):
|
||||
f = os.path.join(sysroot, d[1:], "db.h")
|
||||
|
||||
if db_setup_debug: print("db: looking for db.h in", f)
|
||||
|
@ -1082,7 +1085,7 @@ class PyBuildExt(build_ext):
|
|||
db_incdir.replace("include", 'lib'),
|
||||
]
|
||||
|
||||
if host_platform != 'darwin':
|
||||
if not MACOS:
|
||||
db_dirs_to_check = list(filter(os.path.isdir, db_dirs_to_check))
|
||||
|
||||
else:
|
||||
|
@ -1147,7 +1150,7 @@ class PyBuildExt(build_ext):
|
|||
'/usr/local/include/sqlite',
|
||||
'/usr/local/include/sqlite3',
|
||||
]
|
||||
if cross_compiling:
|
||||
if CROSS_COMPILING:
|
||||
sqlite_inc_paths = []
|
||||
MIN_SQLITE_VERSION_NUMBER = (3, 0, 8)
|
||||
MIN_SQLITE_VERSION = ".".join([str(x)
|
||||
|
@ -1156,12 +1159,12 @@ class PyBuildExt(build_ext):
|
|||
# Scan the default include directories before the SQLite specific
|
||||
# ones. This allows one to override the copy of sqlite on OSX,
|
||||
# where /usr/include contains an old version of sqlite.
|
||||
if host_platform == 'darwin':
|
||||
if MACOS:
|
||||
sysroot = macosx_sdk_root()
|
||||
|
||||
for d_ in inc_dirs + sqlite_inc_paths:
|
||||
d = d_
|
||||
if host_platform == 'darwin' and is_macosx_sdk_path(d):
|
||||
if MACOS and is_macosx_sdk_path(d):
|
||||
d = os.path.join(sysroot, d[1:])
|
||||
|
||||
f = os.path.join(d, "sqlite3.h")
|
||||
|
@ -1212,7 +1215,7 @@ class PyBuildExt(build_ext):
|
|||
'_sqlite/util.c', ]
|
||||
|
||||
sqlite_defines = []
|
||||
if host_platform != "win32":
|
||||
if not MS_WINDOWS:
|
||||
sqlite_defines.append(('MODULE_NAME', '"sqlite3"'))
|
||||
else:
|
||||
sqlite_defines.append(('MODULE_NAME', '\\"sqlite3\\"'))
|
||||
|
@ -1222,7 +1225,7 @@ class PyBuildExt(build_ext):
|
|||
if '--enable-loadable-sqlite-extensions' not in sysconfig.get_config_var("CONFIG_ARGS"):
|
||||
sqlite_defines.append(("SQLITE_OMIT_LOAD_EXTENSION", "1"))
|
||||
|
||||
if host_platform == 'darwin':
|
||||
if MACOS:
|
||||
# In every directory on the search path search for a dynamic
|
||||
# library and then a static library, instead of first looking
|
||||
# for dynamic libraries on the entire path.
|
||||
|
@ -1253,7 +1256,7 @@ class PyBuildExt(build_ext):
|
|||
dbm_setup_debug = False # verbose debug prints from this script?
|
||||
dbm_order = ['gdbm']
|
||||
# The standard Unix dbm module:
|
||||
if host_platform not in ['cygwin']:
|
||||
if not CYGWIN:
|
||||
config_args = [arg.strip("'")
|
||||
for arg in sysconfig.get_config_var("CONFIG_ARGS").split()]
|
||||
dbm_args = [arg for arg in config_args
|
||||
|
@ -1335,7 +1338,7 @@ class PyBuildExt(build_ext):
|
|||
missing.append('_gdbm')
|
||||
|
||||
# Unix-only modules
|
||||
if host_platform != 'win32':
|
||||
if not MS_WINDOWS:
|
||||
if not VXWORKS:
|
||||
# Steen Lumholt's termios module
|
||||
exts.append( Extension('termios', ['termios.c']) )
|
||||
|
@ -1357,12 +1360,12 @@ class PyBuildExt(build_ext):
|
|||
panel_library = 'panel'
|
||||
if curses_library == 'ncursesw':
|
||||
curses_defines.append(('HAVE_NCURSESW', '1'))
|
||||
if not cross_compiling:
|
||||
if not CROSS_COMPILING:
|
||||
curses_includes.append('/usr/include/ncursesw')
|
||||
# Bug 1464056: If _curses.so links with ncursesw,
|
||||
# _curses_panel.so must link with panelw.
|
||||
panel_library = 'panelw'
|
||||
if host_platform == 'darwin':
|
||||
if MACOS:
|
||||
# On OS X, there is no separate /usr/lib/libncursesw nor
|
||||
# libpanelw. If we are here, we found a locally-supplied
|
||||
# version of libncursesw. There should also be a
|
||||
|
@ -1370,7 +1373,7 @@ class PyBuildExt(build_ext):
|
|||
# for OS X but we need _XOPEN_SOURCE_EXTENDED here for
|
||||
# ncurses wide char support
|
||||
curses_defines.append(('_XOPEN_SOURCE_EXTENDED', '1'))
|
||||
elif host_platform == 'darwin' and curses_library == 'ncurses':
|
||||
elif MACOS and curses_library == 'ncurses':
|
||||
# Building with the system-suppied combined libncurses/libpanel
|
||||
curses_defines.append(('HAVE_NCURSESW', '1'))
|
||||
curses_defines.append(('_XOPEN_SOURCE_EXTENDED', '1'))
|
||||
|
@ -1381,7 +1384,7 @@ class PyBuildExt(build_ext):
|
|||
include_dirs=curses_includes,
|
||||
define_macros=curses_defines,
|
||||
libraries = curses_libs) )
|
||||
elif curses_library == 'curses' and host_platform != 'darwin':
|
||||
elif curses_library == 'curses' and not MACOS:
|
||||
# OSX has an old Berkeley curses, not good enough for
|
||||
# the _curses module.
|
||||
if (self.compiler.find_library_file(lib_dirs, 'terminfo')):
|
||||
|
@ -1425,7 +1428,7 @@ class PyBuildExt(build_ext):
|
|||
zlib_h = zlib_inc[0] + '/zlib.h'
|
||||
version = '"0.0.0"'
|
||||
version_req = '"1.1.3"'
|
||||
if host_platform == 'darwin' and is_macosx_sdk_path(zlib_h):
|
||||
if MACOS and is_macosx_sdk_path(zlib_h):
|
||||
zlib_h = os.path.join(macosx_sdk_root(), zlib_h[1:])
|
||||
with open(zlib_h) as fp:
|
||||
while 1:
|
||||
|
@ -1437,7 +1440,7 @@ class PyBuildExt(build_ext):
|
|||
break
|
||||
if version >= version_req:
|
||||
if (self.compiler.find_library_file(lib_dirs, 'z')):
|
||||
if host_platform == "darwin":
|
||||
if MACOS:
|
||||
zlib_extra_link_args = ('-Wl,-search_paths_first',)
|
||||
else:
|
||||
zlib_extra_link_args = ()
|
||||
|
@ -1469,7 +1472,7 @@ class PyBuildExt(build_ext):
|
|||
|
||||
# Gustavo Niemeyer's bz2 module.
|
||||
if (self.compiler.find_library_file(lib_dirs, 'bz2')):
|
||||
if host_platform == "darwin":
|
||||
if MACOS:
|
||||
bz2_extra_link_args = ('-Wl,-search_paths_first',)
|
||||
else:
|
||||
bz2_extra_link_args = ()
|
||||
|
@ -1575,23 +1578,23 @@ class PyBuildExt(build_ext):
|
|||
self.detect_ctypes(inc_dirs, lib_dirs)
|
||||
|
||||
# Richard Oudkerk's multiprocessing module
|
||||
if host_platform == 'win32': # Windows
|
||||
if MS_WINDOWS:
|
||||
macros = dict()
|
||||
libraries = ['ws2_32']
|
||||
|
||||
elif host_platform == 'darwin': # Mac OSX
|
||||
elif MACOS: # Mac OSX
|
||||
macros = dict()
|
||||
libraries = []
|
||||
|
||||
elif host_platform == 'cygwin': # Cygwin
|
||||
elif CYGWIN:
|
||||
macros = dict()
|
||||
libraries = []
|
||||
|
||||
elif host_platform.startswith('openbsd'):
|
||||
elif HOST_PLATFORM.startswith('openbsd'):
|
||||
macros = dict()
|
||||
libraries = []
|
||||
|
||||
elif host_platform.startswith('netbsd'):
|
||||
elif HOST_PLATFORM.startswith('netbsd'):
|
||||
macros = dict()
|
||||
libraries = []
|
||||
|
||||
|
@ -1599,7 +1602,7 @@ class PyBuildExt(build_ext):
|
|||
macros = dict()
|
||||
libraries = ['rt']
|
||||
|
||||
if host_platform == 'win32':
|
||||
if MS_WINDOWS:
|
||||
multiprocessing_srcs = [ '_multiprocessing/multiprocessing.c',
|
||||
'_multiprocessing/semaphore.c',
|
||||
]
|
||||
|
@ -1629,12 +1632,12 @@ class PyBuildExt(build_ext):
|
|||
# End multiprocessing
|
||||
|
||||
# Platform-specific libraries
|
||||
if host_platform.startswith(('linux', 'freebsd', 'gnukfreebsd')):
|
||||
if HOST_PLATFORM.startswith(('linux', 'freebsd', 'gnukfreebsd')):
|
||||
exts.append( Extension('ossaudiodev', ['ossaudiodev.c']) )
|
||||
else:
|
||||
missing.append('ossaudiodev')
|
||||
|
||||
if host_platform == 'darwin':
|
||||
if MACOS:
|
||||
exts.append(
|
||||
Extension('_scproxy', ['_scproxy.c'],
|
||||
extra_link_args=[
|
||||
|
@ -1697,7 +1700,7 @@ class PyBuildExt(build_ext):
|
|||
tcltk_libs = os.environ.get('_TCLTK_LIBS')
|
||||
if not (tcltk_includes and tcltk_libs):
|
||||
# Resume default configuration search.
|
||||
return 0
|
||||
return False
|
||||
|
||||
extra_compile_args = tcltk_includes.split()
|
||||
extra_link_args = tcltk_libs.split()
|
||||
|
@ -1707,7 +1710,7 @@ class PyBuildExt(build_ext):
|
|||
extra_link_args = extra_link_args,
|
||||
)
|
||||
self.extensions.append(ext)
|
||||
return 1
|
||||
return True
|
||||
|
||||
def detect_tkinter_darwin(self, inc_dirs, lib_dirs):
|
||||
# The _tkinter module, using frameworks. Since frameworks are quite
|
||||
|
@ -1742,7 +1745,7 @@ class PyBuildExt(build_ext):
|
|||
else:
|
||||
# Tk and Tcl frameworks not found. Normal "unix" tkinter search
|
||||
# will now resume.
|
||||
return 0
|
||||
return False
|
||||
|
||||
# For 8.4a2, we must add -I options that point inside the Tcl and Tk
|
||||
# frameworks. In later release we should hopefully be able to pass
|
||||
|
@ -1796,7 +1799,7 @@ class PyBuildExt(build_ext):
|
|||
extra_link_args = frameworks,
|
||||
)
|
||||
self.extensions.append(ext)
|
||||
return 1
|
||||
return True
|
||||
|
||||
def detect_tkinter(self, inc_dirs, lib_dirs):
|
||||
# The _tkinter module.
|
||||
|
@ -1811,7 +1814,7 @@ class PyBuildExt(build_ext):
|
|||
# Rather than complicate the code below, detecting and building
|
||||
# AquaTk is a separate method. Only one Tkinter will be built on
|
||||
# Darwin - either AquaTk, if it is found, or X11 based Tk.
|
||||
if (host_platform == 'darwin' and
|
||||
if (MACOS and
|
||||
self.detect_tkinter_darwin(inc_dirs, lib_dirs)):
|
||||
return
|
||||
|
||||
|
@ -1834,7 +1837,7 @@ class PyBuildExt(build_ext):
|
|||
# Check for the include files on Debian and {Free,Open}BSD, where
|
||||
# they're put in /usr/include/{tcl,tk}X.Y
|
||||
dotversion = version
|
||||
if '.' not in dotversion and "bsd" in host_platform.lower():
|
||||
if '.' not in dotversion and "bsd" in HOST_PLATFORM.lower():
|
||||
# OpenBSD and FreeBSD use Tcl/Tk library names like libtcl83.a,
|
||||
# but the include subdirs are named like .../include/tcl8.3.
|
||||
dotversion = dotversion[:-1] + '.' + dotversion[-1]
|
||||
|
@ -1860,7 +1863,7 @@ class PyBuildExt(build_ext):
|
|||
include_dirs.append(dir)
|
||||
|
||||
# Check for various platform-specific directories
|
||||
if host_platform == 'sunos5':
|
||||
if HOST_PLATFORM == 'sunos5':
|
||||
include_dirs.append('/usr/openwin/include')
|
||||
added_lib_dirs.append('/usr/openwin/lib')
|
||||
elif os.path.exists('/usr/X11R6/include'):
|
||||
|
@ -1876,7 +1879,7 @@ class PyBuildExt(build_ext):
|
|||
added_lib_dirs.append('/usr/X11/lib')
|
||||
|
||||
# If Cygwin, then verify that X is installed before proceeding
|
||||
if host_platform == 'cygwin':
|
||||
if CYGWIN:
|
||||
x11_inc = find_file('X11/Xlib.h', [], include_dirs)
|
||||
if x11_inc is None:
|
||||
return
|
||||
|
@ -1895,11 +1898,11 @@ class PyBuildExt(build_ext):
|
|||
libs.append('tk'+ version)
|
||||
libs.append('tcl'+ version)
|
||||
|
||||
if host_platform in ['aix3', 'aix4']:
|
||||
if HOST_PLATFORM in ['aix3', 'aix4']:
|
||||
libs.append('ld')
|
||||
|
||||
# Finally, link with the X11 libraries (not appropriate on cygwin)
|
||||
if host_platform != "cygwin":
|
||||
if not CYGWIN:
|
||||
libs.append('X11')
|
||||
|
||||
ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
|
||||
|
@ -1947,7 +1950,7 @@ class PyBuildExt(build_ext):
|
|||
|
||||
def configure_ctypes(self, ext):
|
||||
if not self.use_system_libffi:
|
||||
if host_platform == 'darwin':
|
||||
if MACOS:
|
||||
return self.configure_ctypes_darwin(ext)
|
||||
print('INFO: Could not locate ffi libs and/or headers')
|
||||
return False
|
||||
|
@ -1965,7 +1968,7 @@ class PyBuildExt(build_ext):
|
|||
'_ctypes/cfield.c']
|
||||
depends = ['_ctypes/ctypes.h']
|
||||
|
||||
if host_platform == 'darwin':
|
||||
if MACOS:
|
||||
sources.append('_ctypes/malloc_closure.c')
|
||||
sources.append('_ctypes/darwin/dlfcn_simple.c')
|
||||
extra_compile_args.append('-DMACOSX')
|
||||
|
@ -1973,7 +1976,7 @@ class PyBuildExt(build_ext):
|
|||
# XXX Is this still needed?
|
||||
## extra_link_args.extend(['-read_only_relocs', 'warning'])
|
||||
|
||||
elif host_platform == 'sunos5':
|
||||
elif HOST_PLATFORM == 'sunos5':
|
||||
# XXX This shouldn't be necessary; it appears that some
|
||||
# of the assembler code is non-PIC (i.e. it has relocations
|
||||
# when it shouldn't. The proper fix would be to rewrite
|
||||
|
@ -1984,7 +1987,7 @@ class PyBuildExt(build_ext):
|
|||
# finding some -z option for the Sun compiler.
|
||||
extra_link_args.append('-mimpure-text')
|
||||
|
||||
elif host_platform.startswith('hp-ux'):
|
||||
elif HOST_PLATFORM.startswith('hp-ux'):
|
||||
extra_link_args.append('-fPIC')
|
||||
|
||||
ext = Extension('_ctypes',
|
||||
|
@ -2000,7 +2003,7 @@ class PyBuildExt(build_ext):
|
|||
libraries=['m'])
|
||||
self.extensions.extend([ext, ext_test])
|
||||
|
||||
if host_platform == 'darwin':
|
||||
if MACOS:
|
||||
if '--with-system-ffi' not in sysconfig.get_config_var("CONFIG_ARGS"):
|
||||
return
|
||||
# OS X 10.5 comes with libffi.dylib; the include files are
|
||||
|
@ -2101,7 +2104,7 @@ class PyBuildExt(build_ext):
|
|||
if machine:
|
||||
# Override automatic configuration to facilitate testing.
|
||||
define_macros = config[machine]
|
||||
elif host_platform == 'darwin':
|
||||
elif MACOS:
|
||||
# Universal here means: build with the same options Python
|
||||
# was built with.
|
||||
define_macros = config['universal']
|
||||
|
@ -2115,7 +2118,7 @@ class PyBuildExt(build_ext):
|
|||
elif sizeof_size_t == 4:
|
||||
ppro = sysconfig.get_config_var('HAVE_GCC_ASM_FOR_X87')
|
||||
if ppro and ('gcc' in cc or 'clang' in cc) and \
|
||||
not 'sunos' in host_platform:
|
||||
not 'sunos' in HOST_PLATFORM:
|
||||
# solaris: problems with register allocation.
|
||||
# icc >= 11.0 works as well.
|
||||
define_macros = config['ppro']
|
||||
|
@ -2208,7 +2211,7 @@ class PyBuildExt(build_ext):
|
|||
return ssl_ext, hashlib_ext
|
||||
|
||||
def _detect_nis(self, inc_dirs, lib_dirs):
|
||||
if host_platform in {'win32', 'cygwin', 'qnx6'}:
|
||||
if MS_WINDOWS or CYGWIN or HOST_PLATFORM == 'qnx6':
|
||||
return None
|
||||
|
||||
libs = []
|
||||
|
|
Loading…
Reference in New Issue