/
usr
/
lib
/
python2.7
/
site-packages
/
setuptools
/
command
/
/usr/lib/python2.7/site-packages/setuptools/command
mkdir
upload
Name
Size
Mode
Actions
alias.py
2426
0644
edit
dl
rm
alias.pyc
3098
0644
edit
dl
rm
alias.pyo
3098
0644
edit
dl
rm
bdist_egg.py
18185
0644
edit
dl
rm
bdist_egg.pyc
18388
0644
edit
dl
rm
bdist_egg.pyo
18388
0644
edit
dl
rm
bdist_rpm.py
1508
0644
edit
dl
rm
bdist_rpm.pyc
1914
0644
edit
dl
rm
bdist_rpm.pyo
1914
0644
edit
dl
rm
bdist_wininst.py
637
0644
edit
dl
rm
bdist_wininst.pyc
1191
0644
edit
dl
rm
bdist_wininst.pyo
1191
0644
edit
dl
rm
build_clib.py
4484
0644
edit
dl
rm
build_clib.pyc
2844
0644
edit
dl
rm
build_clib.pyo
2844
0644
edit
dl
rm
build_ext.py
13173
0644
edit
dl
rm
build_ext.pyc
12571
0644
edit
dl
rm
build_ext.pyo
12527
0644
edit
dl
rm
build_py.py
9596
0644
edit
dl
rm
build_py.pyc
10667
0644
edit
dl
rm
build_py.pyo
10667
0644
edit
dl
rm
develop.py
8046
0644
edit
dl
rm
develop.pyc
7900
0644
edit
dl
rm
develop.pyo
7900
0644
edit
dl
rm
dist_info.py
960
0644
edit
dl
rm
dist_info.pyc
1799
0644
edit
dl
rm
dist_info.pyo
1799
0644
edit
dl
rm
easy_install.py
87032
0644
edit
dl
rm
easy_install.pyc
80382
0644
edit
dl
rm
easy_install.pyo
80325
0644
edit
dl
rm
egg_info.py
24800
0644
edit
dl
rm
egg_info.pyc
25896
0644
edit
dl
rm
egg_info.pyo
25896
0644
edit
dl
rm
install.py
4683
0644
edit
dl
rm
install.pyc
4953
0644
edit
dl
rm
install.pyo
4953
0644
edit
dl
rm
install_egg_info.py
2203
0644
edit
dl
rm
install_egg_info.pyc
3185
0644
edit
dl
rm
install_egg_info.pyo
3185
0644
edit
dl
rm
install_lib.py
3840
0644
edit
dl
rm
install_lib.pyc
4870
0644
edit
dl
rm
install_lib.pyo
4824
0644
edit
dl
rm
install_scripts.py
2439
0644
edit
dl
rm
install_scripts.pyc
2891
0644
edit
dl
rm
install_scripts.pyo
2891
0644
edit
dl
rm
launcher manifest.xml
628
0644
edit
dl
rm
py36compat.py
4986
0644
edit
dl
rm
py36compat.pyc
5550
0644
edit
dl
rm
py36compat.pyo
5550
0644
edit
dl
rm
register.py
270
0644
edit
dl
rm
register.pyc
710
0644
edit
dl
rm
register.pyo
710
0644
edit
dl
rm
rotate.py
2164
0644
edit
dl
rm
rotate.pyc
3036
0644
edit
dl
rm
rotate.pyo
3036
0644
edit
dl
rm
saveopts.py
658
0644
edit
dl
rm
saveopts.pyc
1129
0644
edit
dl
rm
saveopts.pyo
1129
0644
edit
dl
rm
sdist.py
6711
0644
edit
dl
rm
sdist.pyc
7823
0644
edit
dl
rm
sdist.pyo
7823
0644
edit
dl
rm
setopt.py
5085
0644
edit
dl
rm
setopt.pyc
6050
0644
edit
dl
rm
setopt.pyo
6050
0644
edit
dl
rm
test.py
9214
0644
edit
dl
rm
test.pyc
10468
0644
edit
dl
rm
test.pyo
10468
0644
edit
dl
rm
upload.py
1172
0644
edit
dl
rm
upload.pyc
1636
0644
edit
dl
rm
upload.pyo
1636
0644
edit
dl
rm
upload_docs.py
7311
0644
edit
dl
rm
upload_docs.pyc
7842
0644
edit
dl
rm
upload_docs.pyo
7813
0644
edit
dl
rm
__init__.py
594
0644
edit
dl
rm
__init__.pyc
882
0644
edit
dl
rm
__init__.pyo
882
0644
edit
dl
rm
Edit:
/usr/lib/python2.7/site-packages/setuptools/command/build_ext.py
(13173B)
import os import sys import itertools import imp from distutils.command.build_ext import build_ext as _du_build_ext from distutils.file_util import copy_file from distutils.ccompiler import new_compiler from distutils.sysconfig import customize_compiler, get_config_var from distutils.errors import DistutilsError from distutils import log from setuptools.extension import Library from setuptools.extern import six try: # Attempt to use Cython for building extensions, if available from Cython.Distutils.build_ext import build_ext as _build_ext # Additionally, assert that the compiler module will load # also. Ref #1229. __import__('Cython.Compiler.Main') except ImportError: _build_ext = _du_build_ext # make sure _config_vars is initialized get_config_var("LDSHARED") from distutils.sysconfig import _config_vars as _CONFIG_VARS def _customize_compiler_for_shlib(compiler): if sys.platform == "darwin": # building .dylib requires additional compiler flags on OSX; here we # temporarily substitute the pyconfig.h variables so that distutils' # 'customize_compiler' uses them before we build the shared libraries. tmp = _CONFIG_VARS.copy() try: # XXX Help! I don't have any idea whether these are right... _CONFIG_VARS['LDSHARED'] = ( "gcc -Wl,-x -dynamiclib -undefined dynamic_lookup") _CONFIG_VARS['CCSHARED'] = " -dynamiclib" _CONFIG_VARS['SO'] = ".dylib" customize_compiler(compiler) finally: _CONFIG_VARS.clear() _CONFIG_VARS.update(tmp) else: customize_compiler(compiler) have_rtld = False use_stubs = False libtype = 'shared' if sys.platform == "darwin": use_stubs = True elif os.name != 'nt': try: import dl use_stubs = have_rtld = hasattr(dl, 'RTLD_NOW') except ImportError: pass if_dl = lambda s: s if have_rtld else '' def get_abi3_suffix(): """Return the file extension for an abi3-compliant Extension()""" for suffix, _, _ in (s for s in imp.get_suffixes() if s[2] == imp.C_EXTENSION): if '.abi3' in suffix: # Unix return suffix elif suffix == '.pyd': # Windows return suffix class build_ext(_build_ext): def run(self): """Build extensions in build directory, then copy if --inplace""" old_inplace, self.inplace = self.inplace, 0 _build_ext.run(self) self.inplace = old_inplace if old_inplace: self.copy_extensions_to_source() def copy_extensions_to_source(self): build_py = self.get_finalized_command('build_py') for ext in self.extensions: fullname = self.get_ext_fullname(ext.name) filename = self.get_ext_filename(fullname) modpath = fullname.split('.') package = '.'.join(modpath[:-1]) package_dir = build_py.get_package_dir(package) dest_filename = os.path.join(package_dir, os.path.basename(filename)) src_filename = os.path.join(self.build_lib, filename) # Always copy, even if source is older than destination, to ensure # that the right extensions for the current Python/platform are # used. copy_file( src_filename, dest_filename, verbose=self.verbose, dry_run=self.dry_run ) if ext._needs_stub: self.write_stub(package_dir or os.curdir, ext, True) def get_ext_filename(self, fullname): filename = _build_ext.get_ext_filename(self, fullname) if fullname in self.ext_map: ext = self.ext_map[fullname] use_abi3 = ( six.PY3 and getattr(ext, 'py_limited_api') and get_abi3_suffix() ) if use_abi3: so_ext = _get_config_var_837('EXT_SUFFIX') filename = filename[:-len(so_ext)] filename = filename + get_abi3_suffix() if isinstance(ext, Library): fn, ext = os.path.splitext(filename) return self.shlib_compiler.library_filename(fn, libtype) elif use_stubs and ext._links_to_dynamic: d, fn = os.path.split(filename) return os.path.join(d, 'dl-' + fn) return filename def initialize_options(self): _build_ext.initialize_options(self) self.shlib_compiler = None self.shlibs = [] self.ext_map = {} def finalize_options(self): _build_ext.finalize_options(self) self.extensions = self.extensions or [] self.check_extensions_list(self.extensions) self.shlibs = [ext for ext in self.extensions if isinstance(ext, Library)] if self.shlibs: self.setup_shlib_compiler() for ext in self.extensions: ext._full_name = self.get_ext_fullname(ext.name) for ext in self.extensions: fullname = ext._full_name self.ext_map[fullname] = ext # distutils 3.1 will also ask for module names # XXX what to do with conflicts? self.ext_map[fullname.split('.')[-1]] = ext ltd = self.shlibs and self.links_to_dynamic(ext) or False ns = ltd and use_stubs and not isinstance(ext, Library) ext._links_to_dynamic = ltd ext._needs_stub = ns filename = ext._file_name = self.get_ext_filename(fullname) libdir = os.path.dirname(os.path.join(self.build_lib, filename)) if ltd and libdir not in ext.library_dirs: ext.library_dirs.append(libdir) if ltd and use_stubs and os.curdir not in ext.runtime_library_dirs: ext.runtime_library_dirs.append(os.curdir) def setup_shlib_compiler(self): compiler = self.shlib_compiler = new_compiler( compiler=self.compiler, dry_run=self.dry_run, force=self.force ) _customize_compiler_for_shlib(compiler) if self.include_dirs is not None: compiler.set_include_dirs(self.include_dirs) if self.define is not None: # 'define' option is a list of (name,value) tuples for (name, value) in self.define: compiler.define_macro(name, value) if self.undef is not None: for macro in self.undef: compiler.undefine_macro(macro) if self.libraries is not None: compiler.set_libraries(self.libraries) if self.library_dirs is not None: compiler.set_library_dirs(self.library_dirs) if self.rpath is not None: compiler.set_runtime_library_dirs(self.rpath) if self.link_objects is not None: compiler.set_link_objects(self.link_objects) # hack so distutils' build_extension() builds a library instead compiler.link_shared_object = link_shared_object.__get__(compiler) def get_export_symbols(self, ext): if isinstance(ext, Library): return ext.export_symbols return _build_ext.get_export_symbols(self, ext) def build_extension(self, ext): ext._convert_pyx_sources_to_lang() _compiler = self.compiler try: if isinstance(ext, Library): self.compiler = self.shlib_compiler _build_ext.build_extension(self, ext) if ext._needs_stub: cmd = self.get_finalized_command('build_py').build_lib self.write_stub(cmd, ext) finally: self.compiler = _compiler def links_to_dynamic(self, ext): """Return true if 'ext' links to a dynamic lib in the same package""" # XXX this should check to ensure the lib is actually being built # XXX as dynamic, and not just using a locally-found version or a # XXX static-compiled version libnames = dict.fromkeys([lib._full_name for lib in self.shlibs]) pkg = '.'.join(ext._full_name.split('.')[:-1] + ['']) return any(pkg + libname in libnames for libname in ext.libraries) def get_outputs(self): return _build_ext.get_outputs(self) + self.__get_stubs_outputs() def __get_stubs_outputs(self): # assemble the base name for each extension that needs a stub ns_ext_bases = ( os.path.join(self.build_lib, *ext._full_name.split('.')) for ext in self.extensions if ext._needs_stub ) # pair each base with the extension pairs = itertools.product(ns_ext_bases, self.__get_output_extensions()) return list(base + fnext for base, fnext in pairs) def __get_output_extensions(self): yield '.py' yield '.pyc' if self.get_finalized_command('build_py').optimize: yield '.pyo' def write_stub(self, output_dir, ext, compile=False): log.info("writing stub loader for %s to %s", ext._full_name, output_dir) stub_file = (os.path.join(output_dir, *ext._full_name.split('.')) + '.py') if compile and os.path.exists(stub_file): raise DistutilsError(stub_file + " already exists! Please delete.") if not self.dry_run: f = open(stub_file, 'w') f.write( '\n'.join([ "def __bootstrap__():", " global __bootstrap__, __file__, __loader__", " import sys, os, pkg_resources, imp" + if_dl(", dl"), " __file__ = pkg_resources.resource_filename" "(__name__,%r)" % os.path.basename(ext._file_name), " del __bootstrap__", " if '__loader__' in globals():", " del __loader__", if_dl(" old_flags = sys.getdlopenflags()"), " old_dir = os.getcwd()", " try:", " os.chdir(os.path.dirname(__file__))", if_dl(" sys.setdlopenflags(dl.RTLD_NOW)"), " imp.load_dynamic(__name__,__file__)", " finally:", if_dl(" sys.setdlopenflags(old_flags)"), " os.chdir(old_dir)", "__bootstrap__()", "" # terminal \n ]) ) f.close() if compile: from distutils.util import byte_compile byte_compile([stub_file], optimize=0, force=True, dry_run=self.dry_run) optimize = self.get_finalized_command('install_lib').optimize if optimize > 0: byte_compile([stub_file], optimize=optimize, force=True, dry_run=self.dry_run) if os.path.exists(stub_file) and not self.dry_run: os.unlink(stub_file) if use_stubs or os.name == 'nt': # Build shared libraries # def link_shared_object( self, objects, output_libname, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): self.link( self.SHARED_LIBRARY, objects, output_libname, output_dir, libraries, library_dirs, runtime_library_dirs, export_symbols, debug, extra_preargs, extra_postargs, build_temp, target_lang ) else: # Build static libraries everywhere else libtype = 'static' def link_shared_object( self, objects, output_libname, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): # XXX we need to either disallow these attrs on Library instances, # or warn/abort here if set, or something... # libraries=None, library_dirs=None, runtime_library_dirs=None, # export_symbols=None, extra_preargs=None, extra_postargs=None, # build_temp=None assert output_dir is None # distutils build_ext doesn't pass this output_dir, filename = os.path.split(output_libname) basename, ext = os.path.splitext(filename) if self.library_filename("x").startswith('lib'): # strip 'lib' prefix; this is kludgy if some platform uses # a different prefix basename = basename[3:] self.create_static_lib( objects, basename, output_dir, debug, target_lang ) def _get_config_var_837(name): """ In https://github.com/pypa/setuptools/pull/837, we discovered Python 3.3.0 exposes the extension suffix under the name 'SO'. """ if sys.version_info < (3, 3, 1): name = 'SO' return get_config_var(name)
Save
cmd:
run