Server: appserver-7f0f8755-nginx-15961cad18524ec5a9db05f2a6a7e440
Current directory: /usr/lib/python2.7/distutils/command
Software: nginx/1.27.5
Shell Command
Create a new file
Upload file
File: build_scripts.py
"""distutils.command.build_scripts Implements the Distutils 'build_scripts' command.""" __revision__ = "$Id$" import os, re from stat import ST_MODE from distutils.core import Command from distutils.dep_util import newer from distutils.util import convert_path from distutils import log # check if Python is called on the first line with this expression first_line_re = re.compile('^#!.*python[0-9.]*([ \t].*)?$') class build_scripts (Command): description = "\"build\" scripts (copy and fixup #! line)" user_options = [ ('build-dir=', 'd', "directory to \"build\" (copy) to"), ('force', 'f', "forcibly build everything (ignore file timestamps"), ('executable=', 'e', "specify final destination interpreter path"), ] boolean_options = ['force'] def initialize_options (self): self.build_dir = None self.scripts = None self.force = None self.executable = None self.outfiles = None def finalize_options (self): self.set_undefined_options('build', ('build_scripts', 'build_dir'), ('force', 'force'), ('executable', 'executable')) self.scripts = self.distribution.scripts def get_source_files(self): return self.scripts def run (self): if not self.scripts: return self.copy_scripts() def copy_scripts (self): """Copy each script listed in 'self.scripts'; if it's marked as a Python script in the Unix way (first line matches 'first_line_re', ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. """ _sysconfig = __import__('sysconfig') self.mkpath(self.build_dir) outfiles = [] for script in self.scripts: adjust = 0 script = convert_path(script) outfile = os.path.join(self.build_dir, os.path.basename(script)) outfiles.append(outfile) if not self.force and not newer(script, outfile): log.debug("not copying %s (up-to-date)", script) continue # Always open the file, but ignore failures in dry-run mode -- # that way, we'll get accurate feedback if we can read the # script. try: f = open(script, "r") except IOError: if not self.dry_run: raise f = None else: first_line = f.readline() if not first_line: self.warn("%s is an empty file (skipping)" % script) continue match = first_line_re.match(first_line) if match: adjust = 1 post_interp = match.group(1) or '' if adjust: log.info("copying and adjusting %s -> %s", script, self.build_dir) if not self.dry_run: outf = open(outfile, "w") if not _sysconfig.is_python_build(): outf.write("#!%s%s\n" % (self.executable, post_interp)) else: outf.write("#!%s%s\n" % (os.path.join( _sysconfig.get_config_var("BINDIR"), "python%s%s" % (_sysconfig.get_config_var("VERSION"), _sysconfig.get_config_var("EXE"))), post_interp)) outf.writelines(f.readlines()) outf.close() if f: f.close() else: if f: f.close() self.copy_file(script, outfile) if os.name == 'posix': for file in outfiles: if self.dry_run: log.info("changing mode of %s", file) else: oldmode = os.stat(file)[ST_MODE] & 07777 newmode = (oldmode | 0555) & 07777 if newmode != oldmode: log.info("changing mode of %s from %o to %o", file, oldmode, newmode) os.chmod(file, newmode) # copy_scripts () # class build_scripts
.
47 Items
Change directory
Remove directory
Rename directory
..
58 Items
Change directory
Remove directory
Rename directory
__init__.py
0.8 KB
Edit
Delete
Copy
Move
Remame
__init__.pyc
0.65 KB
Edit
Delete
Copy
Move
Remame
bdist.py
5.46 KB
Edit
Delete
Copy
Move
Remame
bdist.pyc
5.04 KB
Edit
Delete
Copy
Move
Remame
bdist_dumb.py
5.07 KB
Edit
Delete
Copy
Move
Remame
bdist_dumb.pyc
4.85 KB
Edit
Delete
Copy
Move
Remame
bdist_msi.py
34.37 KB
Edit
Delete
Copy
Move
Remame
bdist_msi.pyc
23.36 KB
Edit
Delete
Copy
Move
Remame
bdist_rpm.py
20.55 KB
Edit
Delete
Copy
Move
Remame
bdist_rpm.pyc
17.18 KB
Edit
Delete
Copy
Move
Remame
bdist_wininst.py
14.84 KB
Edit
Delete
Copy
Move
Remame
bdist_wininst.pyc
10.63 KB
Edit
Delete
Copy
Move
Remame
build.py
5.37 KB
Edit
Delete
Copy
Move
Remame
build.pyc
5 KB
Edit
Delete
Copy
Move
Remame
build_clib.py
7.94 KB
Edit
Delete
Copy
Move
Remame
build_clib.pyc
6.18 KB
Edit
Delete
Copy
Move
Remame
build_ext.py
31.53 KB
Edit
Delete
Copy
Move
Remame
build_ext.pyc
18.81 KB
Edit
Delete
Copy
Move
Remame
build_py.py
15.96 KB
Edit
Delete
Copy
Move
Remame
build_py.pyc
11.18 KB
Edit
Delete
Copy
Move
Remame
build_scripts.py
4.49 KB
Edit
Delete
Copy
Move
Remame
build_scripts.pyc
4.36 KB
Edit
Delete
Copy
Move
Remame
check.py
5.44 KB
Edit
Delete
Copy
Move
Remame
check.pyc
6.05 KB
Edit
Delete
Copy
Move
Remame
clean.py
2.75 KB
Edit
Delete
Copy
Move
Remame
clean.pyc
2.99 KB
Edit
Delete
Copy
Move
Remame
command_template
0.7 KB
Edit
Delete
Copy
Move
Remame
config.py
12.82 KB
Edit
Delete
Copy
Move
Remame
config.pyc
12.35 KB
Edit
Delete
Copy
Move
Remame
install.py
27.34 KB
Edit
Delete
Copy
Move
Remame
install.pyc
17.47 KB
Edit
Delete
Copy
Move
Remame
install_data.py
2.78 KB
Edit
Delete
Copy
Move
Remame
install_data.pyc
3.03 KB
Edit
Delete
Copy
Move
Remame
install_egg_info.py
3.51 KB
Edit
Delete
Copy
Move
Remame
install_egg_info.pyc
4.25 KB
Edit
Delete
Copy
Move
Remame
install_headers.py
1.31 KB
Edit
Delete
Copy
Move
Remame
install_headers.pyc
2.19 KB
Edit
Delete
Copy
Move
Remame
install_lib.py
8.14 KB
Edit
Delete
Copy
Move
Remame
install_lib.pyc
6.5 KB
Edit
Delete
Copy
Move
Remame
install_scripts.py
2.02 KB
Edit
Delete
Copy
Move
Remame
install_scripts.pyc
2.85 KB
Edit
Delete
Copy
Move
Remame
register.py
11.56 KB
Edit
Delete
Copy
Move
Remame
register.pyc
9.94 KB
Edit
Delete
Copy
Move
Remame
sdist.py
18.12 KB
Edit
Delete
Copy
Move
Remame
sdist.pyc
16.27 KB
Edit
Delete
Copy
Move
Remame
upload.py
6.88 KB
Edit
Delete
Copy
Move
Remame
upload.pyc
6.16 KB
Edit
Delete
Copy
Move
Remame