annotate Tools/scripts/checkpyc.py @ 6719:faebc1940432 legacy-trunk

Understand -Xlinker option.
author Guido van Rossum <guido@python.org>
date Tue, 02 Dec 1997 20:38:11 +0000
parents 73758db2f464
children 0de662cecacf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4573
73758db2f464 /usr/local/bin/python -> /usr/bin/env python
Guido van Rossum <guido@python.org>
parents: 1506
diff changeset
1 #! /usr/bin/env python
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 # Check that all ".pyc" files exist and are up-to-date
758
bfc655074523 posix -> os
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
3 # Uses module 'os'
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 import sys
758
bfc655074523 posix -> os
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
6 import os
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 from stat import ST_MTIME
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 def main():
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 silent = 0
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 verbose = 0
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 if sys.argv[1:]:
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 500
diff changeset
13 if sys.argv[1] == '-v':
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 verbose = 1
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 500
diff changeset
15 elif sys.argv[1] == '-s':
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 silent = 1
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 MAGIC = '\0\0\0\0'
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 try:
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 if sys.version[:5] >= '0.9.4':
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 MAGIC = '\224\224\224\0'
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 except:
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 pass
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 if not silent:
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 print 'Using MAGIC word', `MAGIC`
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 for dirname in sys.path:
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 try:
758
bfc655074523 posix -> os
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
27 names = os.listdir(dirname)
bfc655074523 posix -> os
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
28 except os.error:
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 print 'Cannot list directory', `dirname`
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 continue
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 if not silent:
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 print 'Checking', `dirname`, '...'
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 names.sort()
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 for name in names:
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 500
diff changeset
35 if name[-3:] == '.py':
758
bfc655074523 posix -> os
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
36 name = os.path.join(dirname, name)
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 try:
758
bfc655074523 posix -> os
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
38 st = os.stat(name)
bfc655074523 posix -> os
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
39 except os.error:
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 print 'Cannot stat', `name`
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 continue
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 if verbose:
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 print 'Check', `name`, '...'
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 name_c = name + 'c'
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 try:
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 f = open(name_c, 'r')
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 except IOError:
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 print 'Cannot open', `name_c`
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 continue
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 magic_str = f.read(4)
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 mtime_str = f.read(4)
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 f.close()
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 if magic_str <> MAGIC:
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 print 'Bad MAGIC word in ".pyc" file',
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 print `name_c`
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 continue
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 mtime = get_long(mtime_str)
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 500
diff changeset
58 if mtime == 0 or mtime == -1:
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 print 'Bad ".pyc" file', `name_c`
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 elif mtime <> st[ST_MTIME]:
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 print 'Out-of-date ".pyc" file',
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 print `name_c`
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 def get_long(s):
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 if len(s) <> 4:
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 return -1
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 return ord(s[0]) + (ord(s[1])<<8) + (ord(s[2])<<16) + (ord(s[3])<<24)
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
68
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 main()