93 lines
3.9 KiB
Diff
93 lines
3.9 KiB
Diff
|
do not "adjust" python files before copying
|
||
|
|
||
|
-Khem
|
||
|
|
||
|
Upstream-Status: Inappropriate [Embedded-Specific]
|
||
|
|
||
|
---
|
||
|
Lib/distutils/command/build_scripts.py | 43 +++------------------------------
|
||
|
1 file changed, 4 insertions(+), 39 deletions(-)
|
||
|
|
||
|
--- a/Lib/distutils/command/build_scripts.py
|
||
|
+++ b/Lib/distutils/command/build_scripts.py
|
||
|
@@ -51,10 +51,7 @@ class build_scripts(Command):
|
||
|
|
||
|
|
||
|
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.
|
||
|
+ """Copy each script listed in 'self.scripts'
|
||
|
"""
|
||
|
self.mkpath(self.build_dir)
|
||
|
outfiles = []
|
||
|
@@ -78,64 +75,10 @@ class build_scripts(Command):
|
||
|
if not self.dry_run:
|
||
|
raise
|
||
|
f = None
|
||
|
- else:
|
||
|
- encoding, lines = tokenize.detect_encoding(f.readline)
|
||
|
- f.seek(0)
|
||
|
- 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 = True
|
||
|
- post_interp = match.group(1) or b''
|
||
|
-
|
||
|
- if adjust:
|
||
|
- log.info("copying and adjusting %s -> %s", script,
|
||
|
- self.build_dir)
|
||
|
- updated_files.append(outfile)
|
||
|
- if not self.dry_run:
|
||
|
- if not sysconfig.python_build:
|
||
|
- executable = self.executable
|
||
|
- else:
|
||
|
- executable = os.path.join(
|
||
|
- sysconfig.get_config_var("BINDIR"),
|
||
|
- "python%s%s" % (sysconfig.get_config_var("VERSION"),
|
||
|
- sysconfig.get_config_var("EXE")))
|
||
|
- executable = os.fsencode(executable)
|
||
|
- shebang = b"#!" + executable + post_interp + b"\n"
|
||
|
- # Python parser starts to read a script using UTF-8 until
|
||
|
- # it gets a #coding:xxx cookie. The shebang has to be the
|
||
|
- # first line of a file, the #coding:xxx cookie cannot be
|
||
|
- # written before. So the shebang has to be decodable from
|
||
|
- # UTF-8.
|
||
|
- try:
|
||
|
- shebang.decode('utf-8')
|
||
|
- except UnicodeDecodeError:
|
||
|
- raise ValueError(
|
||
|
- "The shebang ({!r}) is not decodable "
|
||
|
- "from utf-8".format(shebang))
|
||
|
- # If the script is encoded to a custom encoding (use a
|
||
|
- # #coding:xxx cookie), the shebang has to be decodable from
|
||
|
- # the script encoding too.
|
||
|
- try:
|
||
|
- shebang.decode(encoding)
|
||
|
- except UnicodeDecodeError:
|
||
|
- raise ValueError(
|
||
|
- "The shebang ({!r}) is not decodable "
|
||
|
- "from the script encoding ({})"
|
||
|
- .format(shebang, encoding))
|
||
|
- with open(outfile, "wb") as outf:
|
||
|
- outf.write(shebang)
|
||
|
- outf.writelines(f.readlines())
|
||
|
- if f:
|
||
|
- f.close()
|
||
|
- else:
|
||
|
- if f:
|
||
|
+ if f:
|
||
|
f.close()
|
||
|
- updated_files.append(outfile)
|
||
|
- self.copy_file(script, outfile)
|
||
|
+ updated_files.append(outfile)
|
||
|
+ self.copy_file(script, outfile)
|
||
|
|
||
|
if os.name == 'posix':
|
||
|
for file in outfiles:
|