/
usr
/
lib64
/
python2.6
/
distutils
/
command
/
/usr/lib64/python2.6/distutils/command
mkdir
upload
Name
Size
Mode
Actions
bdist.py
5561
0644
edit
dl
rm
bdist.pyc
4710
0644
edit
dl
rm
bdist.pyo
4710
0644
edit
dl
rm
bdist_dumb.py
4901
0644
edit
dl
rm
bdist_dumb.pyc
4627
0644
edit
dl
rm
bdist_dumb.pyo
4627
0644
edit
dl
rm
bdist_msi.py
31388
0644
edit
dl
rm
bdist_msi.pyc
22309
0644
edit
dl
rm
bdist_msi.pyo
22231
0644
edit
dl
rm
bdist_rpm.py
20210
0644
edit
dl
rm
bdist_rpm.py.brprpm
20189
0644
edit
dl
rm
bdist_rpm.pyc
17448
0644
edit
dl
rm
bdist_rpm.pyo
17360
0644
edit
dl
rm
bdist_wininst.py
14930
0644
edit
dl
rm
bdist_wininst.pyc
10814
0644
edit
dl
rm
bdist_wininst.pyo
10736
0644
edit
dl
rm
build.py
5598
0644
edit
dl
rm
build.pyc
5220
0644
edit
dl
rm
build.pyo
5220
0644
edit
dl
rm
build_clib.py
8659
0644
edit
dl
rm
build_clib.pyc
6579
0644
edit
dl
rm
build_clib.pyo
6579
0644
edit
dl
rm
build_ext.py
32279
0644
edit
dl
rm
build_ext.pyc
19705
0644
edit
dl
rm
build_ext.pyo
19705
0644
edit
dl
rm
build_py.py
16820
0644
edit
dl
rm
build_py.pyc
11868
0644
edit
dl
rm
build_py.pyo
11791
0644
edit
dl
rm
build_scripts.py
4692
0644
edit
dl
rm
build_scripts.pyc
4609
0644
edit
dl
rm
build_scripts.pyo
4609
0644
edit
dl
rm
clean.py
2918
0644
edit
dl
rm
clean.pyc
3233
0644
edit
dl
rm
clean.pyo
3233
0644
edit
dl
rm
command_template
719
0644
edit
dl
rm
config.py
13391
0644
edit
dl
rm
config.pyc
12797
0644
edit
dl
rm
config.pyo
12797
0644
edit
dl
rm
install.py
26781
0644
edit
dl
rm
install.pyc
17280
0644
edit
dl
rm
install.pyo
17280
0644
edit
dl
rm
install_data.py
2994
0644
edit
dl
rm
install_data.pyc
3278
0644
edit
dl
rm
install_data.pyo
3278
0644
edit
dl
rm
install_egg_info.py
2587
0644
edit
dl
rm
install_egg_info.pyc
3775
0644
edit
dl
rm
install_egg_info.pyo
3775
0644
edit
dl
rm
install_headers.py
1449
0644
edit
dl
rm
install_headers.pyc
2366
0644
edit
dl
rm
install_headers.pyo
2366
0644
edit
dl
rm
install_lib.py
8577
0644
edit
dl
rm
install_lib.pyc
6940
0644
edit
dl
rm
install_lib.pyo
6940
0644
edit
dl
rm
install_scripts.py
2181
0644
edit
dl
rm
install_scripts.pyc
3063
0644
edit
dl
rm
install_scripts.pyo
3063
0644
edit
dl
rm
register.py
11454
0644
edit
dl
rm
register.pyc
10069
0644
edit
dl
rm
register.pyo
10069
0644
edit
dl
rm
sdist.py
18452
0644
edit
dl
rm
sdist.pyc
15463
0644
edit
dl
rm
sdist.pyo
15463
0644
edit
dl
rm
upload.py
6669
0644
edit
dl
rm
upload.pyc
6211
0644
edit
dl
rm
upload.pyo
6178
0644
edit
dl
rm
wininst-6.0.exe
61440
0644
edit
dl
rm
wininst-7.1.exe
65536
0644
edit
dl
rm
wininst-8.0.exe
61440
0644
edit
dl
rm
wininst-9.0-amd64.exe
223744
0644
edit
dl
rm
wininst-9.0.exe
196096
0644
edit
dl
rm
__init__.py
915
0644
edit
dl
rm
__init__.pyc
704
0644
edit
dl
rm
__init__.pyo
704
0644
edit
dl
rm
Edit:
/usr/lib64/python2.6/distutils/command/build_clib.py
(8659B)
"""distutils.command.build_clib Implements the Distutils 'build_clib' command, to build a C/C++ library that is included in the module distribution and needed by an extension module.""" # This module should be kept compatible with Python 2.1. __revision__ = "$Id: build_clib.py 37828 2004-11-10 22:23:15Z loewis $" # XXX this module has *lots* of code ripped-off quite transparently from # build_ext.py -- not surprisingly really, as the work required to build # a static library from a collection of C source files is not really all # that different from what's required to build a shared object file from # a collection of C source files. Nevertheless, I haven't done the # necessary refactoring to account for the overlap in code between the # two modules, mainly because a number of subtle details changed in the # cut 'n paste. Sigh. import os, string from types import * from distutils.core import Command from distutils.errors import * from distutils.sysconfig import customize_compiler from distutils import log def show_compilers (): from distutils.ccompiler import show_compilers show_compilers() class build_clib (Command): description = "build C/C++ libraries used by Python extensions" user_options = [ ('build-clib', 'b', "directory to build C/C++ libraries to"), ('build-temp', 't', "directory to put temporary build by-products"), ('debug', 'g', "compile with debugging information"), ('force', 'f', "forcibly build everything (ignore file timestamps)"), ('compiler=', 'c', "specify the compiler type"), ] boolean_options = ['debug', 'force'] help_options = [ ('help-compiler', None, "list available compilers", show_compilers), ] def initialize_options (self): self.build_clib = None self.build_temp = None # List of libraries to build self.libraries = None # Compilation options for all libraries self.include_dirs = None self.define = None self.undef = None self.debug = None self.force = 0 self.compiler = None # initialize_options() def finalize_options (self): # This might be confusing: both build-clib and build-temp default # to build-temp as defined by the "build" command. This is because # I think that C libraries are really just temporary build # by-products, at least from the point of view of building Python # extensions -- but I want to keep my options open. self.set_undefined_options('build', ('build_temp', 'build_clib'), ('build_temp', 'build_temp'), ('compiler', 'compiler'), ('debug', 'debug'), ('force', 'force')) self.libraries = self.distribution.libraries if self.libraries: self.check_library_list(self.libraries) if self.include_dirs is None: self.include_dirs = self.distribution.include_dirs or [] if type(self.include_dirs) is StringType: self.include_dirs = string.split(self.include_dirs, os.pathsep) # XXX same as for build_ext -- what about 'self.define' and # 'self.undef' ? # finalize_options() def run (self): if not self.libraries: return # Yech -- this is cut 'n pasted from build_ext.py! from distutils.ccompiler import new_compiler self.compiler = new_compiler(compiler=self.compiler, dry_run=self.dry_run, force=self.force) customize_compiler(self.compiler) if self.include_dirs is not None: self.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: self.compiler.define_macro(name, value) if self.undef is not None: for macro in self.undef: self.compiler.undefine_macro(macro) self.build_libraries(self.libraries) # run() def check_library_list (self, libraries): """Ensure that the list of libraries (presumably provided as a command option 'libraries') is valid, i.e. it is a list of 2-tuples, where the tuples are (library_name, build_info_dict). Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise.""" # Yechh, blecch, ackk: this is ripped straight out of build_ext.py, # with only names changed to protect the innocent! if type(libraries) is not ListType: raise DistutilsSetupError, \ "'libraries' option must be a list of tuples" for lib in libraries: if type(lib) is not TupleType and len(lib) != 2: raise DistutilsSetupError, \ "each element of 'libraries' must a 2-tuple" if type(lib[0]) is not StringType: raise DistutilsSetupError, \ "first element of each tuple in 'libraries' " + \ "must be a string (the library name)" if '/' in lib[0] or (os.sep != '/' and os.sep in lib[0]): raise DistutilsSetupError, \ ("bad library name '%s': " + "may not contain directory separators") % \ lib[0] if type(lib[1]) is not DictionaryType: raise DistutilsSetupError, \ "second element of each tuple in 'libraries' " + \ "must be a dictionary (build info)" # for lib # check_library_list () def get_library_names (self): # Assume the library list is valid -- 'check_library_list()' is # called from 'finalize_options()', so it should be! if not self.libraries: return None lib_names = [] for (lib_name, build_info) in self.libraries: lib_names.append(lib_name) return lib_names # get_library_names () def get_source_files (self): self.check_library_list(self.libraries) filenames = [] for (lib_name, build_info) in self.libraries: sources = build_info.get('sources') if (sources is None or type(sources) not in (ListType, TupleType) ): raise DistutilsSetupError, \ ("in 'libraries' option (library '%s'), " "'sources' must be present and must be " "a list of source filenames") % lib_name filenames.extend(sources) return filenames # get_source_files () def build_libraries (self, libraries): for (lib_name, build_info) in libraries: sources = build_info.get('sources') if sources is None or type(sources) not in (ListType, TupleType): raise DistutilsSetupError, \ ("in 'libraries' option (library '%s'), " + "'sources' must be present and must be " + "a list of source filenames") % lib_name sources = list(sources) log.info("building '%s' library", lib_name) # First, compile the source code to object files in the library # directory. (This should probably change to putting object # files in a temporary build directory.) macros = build_info.get('macros') include_dirs = build_info.get('include_dirs') objects = self.compiler.compile(sources, output_dir=self.build_temp, macros=macros, include_dirs=include_dirs, debug=self.debug) # Now "link" the object files together into a static library. # (On Unix at least, this isn't really linking -- it just # builds an archive. Whatever.) self.compiler.create_static_lib(objects, lib_name, output_dir=self.build_clib, debug=self.debug) # for libraries # build_libraries () # class build_lib
Save
cmd:
run