Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/pathfix.py @ 73323:dad02a080bbc
Improve byte-compilation in packaging to be independent of -O or -B.
The code I fixed to comply with PEP 3147 still had one bug: When run
under python -O, some paths for pyc files would be pyo, because I called
imp.cache_from_source without explicit debug_override argument in some
places, and under -O that would return .pyo (this is well explained in
the imp docs). Now all code (util.byte_compile, build_py, install_lib)
can create .pyo files according to options given by users,
without interference from the calling Python’s own optimize mode.
On a related topic, I also removed the code that prevented byte
compilation under python -B. The rationale is that packaging gives
control over the creation of pyc files to the user with its own explicit
option, and the behavior should not be changed if the calling Python
happens to run with -B for whatever reason. I will argue that this is a
bug fix and ask to be allowed to backport this change to distutils.
Finally, I moved one nugget of information about the --compile and
--optimize options from the source into the doc. It clears up a
misunderstanding that I (and maybe other people) had.
| author | Éric Araujo <merwok@netwok.org> |
|---|---|
| date | Thu, 03 Nov 2011 05:08:28 +0100 |
| parents | e3e6aa633f33 |
| children | c57d99a8fc42 6cfe2982de42 |
| rev | line source |
|---|---|
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
1 #!/usr/bin/env python3 |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 # Change the #! line occurring in Python scripts. The new interpreter |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 # pathname must be given with a -i option. |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 # |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 # Command line arguments are files or directories to be processed. |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 # Directories are searched recursively for files whose name looks |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 # like a python module. |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 # Symbolic links are always ignored (except as explicit directory |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 # arguments). Of course, the original file is kept as a back-up |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 # (with a "~" attached to its name). |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 # |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 # Undoubtedly you can do this using find and sed or perl, but this is |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 # a nice example of Python code that recurses down a directory tree |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 # and uses regular expressions. Also note several subtleties like |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 # preserving the file's mode and avoiding to even write a temp file |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 # when no changes are needed for a file. |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 # |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 # NB: by changing only the function fixfile() you can turn this |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 # into a program for a different change to Python programs... |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 import sys |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
33076
diff
changeset
|
23 import re |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 import os |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 from stat import * |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 import getopt |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 err = sys.stderr.write |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 dbg = err |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 rep = sys.stdout.write |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 new_interpreter = None |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
33 preserve_timestamps = False |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 def main(): |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
36 global new_interpreter |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
37 global preserve_timestamps |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
38 usage = ('usage: %s -i /interpreter -p file-or-directory ...\n' % |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
39 sys.argv[0]) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
40 try: |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
41 opts, args = getopt.getopt(sys.argv[1:], 'i:p') |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
37879
diff
changeset
|
42 except getopt.error as msg: |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
43 err(str(msg) + '\n') |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
44 err(usage) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
45 sys.exit(2) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
46 for o, a in opts: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
47 if o == '-i': |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
48 new_interpreter = a.encode() |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
49 if o == '-p': |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
50 preserve_timestamps = True |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
51 if not new_interpreter or not new_interpreter.startswith(b'/') or \ |
|
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
52 not args: |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
53 err('-i option or file-or-directory missing\n') |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
54 err(usage) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
55 sys.exit(2) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
56 bad = 0 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
57 for arg in args: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
58 if os.path.isdir(arg): |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
59 if recursedown(arg): bad = 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
60 elif os.path.islink(arg): |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
61 err(arg + ': will not process symbolic links\n') |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
62 bad = 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
63 else: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
64 if fix(arg): bad = 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
65 sys.exit(bad) |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
66 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
33076
diff
changeset
|
67 ispythonprog = re.compile('^[a-zA-Z0-9_]+\.py$') |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
68 def ispython(name): |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
69 return bool(ispythonprog.match(name)) |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
70 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
71 def recursedown(dirname): |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
72 dbg('recursedown(%r)\n' % (dirname,)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
73 bad = 0 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
74 try: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
75 names = os.listdir(dirname) |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
37879
diff
changeset
|
76 except os.error as msg: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
77 err('%s: cannot list directory: %r\n' % (dirname, msg)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
78 return 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
79 names.sort() |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
80 subdirs = [] |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
81 for name in names: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
82 if name in (os.curdir, os.pardir): continue |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
83 fullname = os.path.join(dirname, name) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
84 if os.path.islink(fullname): pass |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
85 elif os.path.isdir(fullname): |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
86 subdirs.append(fullname) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
87 elif ispython(name): |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
88 if fix(fullname): bad = 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
89 for fullname in subdirs: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
90 if recursedown(fullname): bad = 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
91 return bad |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
92 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
93 def fix(filename): |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
94 ## dbg('fix(%r)\n' % (filename,)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
95 try: |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
96 f = open(filename, 'rb') |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
37879
diff
changeset
|
97 except IOError as msg: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
98 err('%s: cannot open: %r\n' % (filename, msg)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
99 return 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
100 line = f.readline() |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
101 fixed = fixline(line) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
102 if line == fixed: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
103 rep(filename+': no change\n') |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
104 f.close() |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
105 return |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
106 head, tail = os.path.split(filename) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
107 tempname = os.path.join(head, '@' + tail) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
108 try: |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
109 g = open(tempname, 'wb') |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
37879
diff
changeset
|
110 except IOError as msg: |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
111 f.close() |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
112 err('%s: cannot create: %r\n' % (tempname, msg)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
113 return 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
114 rep(filename + ': updating\n') |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
115 g.write(fixed) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
116 BUFSIZE = 8*1024 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
117 while 1: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
118 buf = f.read(BUFSIZE) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
119 if not buf: break |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
120 g.write(buf) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
121 g.close() |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
122 f.close() |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
123 |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
124 # Finishing touch -- move files |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
125 |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
126 mtime = None |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
127 atime = None |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
128 # First copy the file's mode to the temp file |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
129 try: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
130 statbuf = os.stat(filename) |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
131 mtime = statbuf.st_mtime |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
132 atime = statbuf.st_atime |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
133 os.chmod(tempname, statbuf[ST_MODE] & 0o7777) |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
37879
diff
changeset
|
134 except os.error as msg: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
135 err('%s: warning: chmod failed (%r)\n' % (tempname, msg)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
136 # Then make a backup of the original file as filename~ |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
137 try: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
138 os.rename(filename, filename + '~') |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
37879
diff
changeset
|
139 except os.error as msg: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
140 err('%s: warning: backup failed (%r)\n' % (filename, msg)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
141 # Now move the temp file to the original file |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
142 try: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
143 os.rename(tempname, filename) |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
37879
diff
changeset
|
144 except os.error as msg: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
25219
diff
changeset
|
145 err('%s: rename failed (%r)\n' % (filename, msg)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
146 return 1 |
|
65538
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
147 if preserve_timestamps: |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
148 if atime and mtime: |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
149 try: |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
150 os.utime(filename, (atime, mtime)) |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
151 except os.error as msg: |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
152 err('%s: reset of timestamp failed (%r)\n' % (filename, msg)) |
|
e3e6aa633f33
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Senthil Kumaran <orsenthil@gmail.com>
parents:
56221
diff
changeset
|
153 return 1 |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
154 # Return succes |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
155 return 0 |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
156 |
|
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
157 def fixline(line): |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
158 if not line.startswith(b'#!'): |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
159 return line |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
160 if b"python" not in line: |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
4568
diff
changeset
|
161 return line |
|
56221
2644f54e3676
Merged revisions 75061-75062 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42084
diff
changeset
|
162 return b'#! ' + new_interpreter + b'\n' |
|
1799
60660341ee10
newslist.py: Added search for .newslistrc.py;
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
163 |
|
33074
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
31515
diff
changeset
|
164 if __name__ == '__main__': |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
31515
diff
changeset
|
165 main() |
