|
Last change
on this file since 1538 was 2, checked in by Yuri Dario, 15 years ago |
|
Initial import for vendor code.
|
-
Property svn:eol-style
set to
native
|
|
File size:
2.0 KB
|
| Line | |
|---|
| 1 | #! /usr/bin/env python
|
|---|
| 2 | # Check that all ".pyc" files exist and are up-to-date
|
|---|
| 3 | # Uses module 'os'
|
|---|
| 4 |
|
|---|
| 5 | import sys
|
|---|
| 6 | import os
|
|---|
| 7 | from stat import ST_MTIME
|
|---|
| 8 | import imp
|
|---|
| 9 |
|
|---|
| 10 | def main():
|
|---|
| 11 | silent = 0
|
|---|
| 12 | verbose = 0
|
|---|
| 13 | if sys.argv[1:]:
|
|---|
| 14 | if sys.argv[1] == '-v':
|
|---|
| 15 | verbose = 1
|
|---|
| 16 | elif sys.argv[1] == '-s':
|
|---|
| 17 | silent = 1
|
|---|
| 18 | MAGIC = imp.get_magic()
|
|---|
| 19 | if not silent:
|
|---|
| 20 | print 'Using MAGIC word', repr(MAGIC)
|
|---|
| 21 | for dirname in sys.path:
|
|---|
| 22 | try:
|
|---|
| 23 | names = os.listdir(dirname)
|
|---|
| 24 | except os.error:
|
|---|
| 25 | print 'Cannot list directory', repr(dirname)
|
|---|
| 26 | continue
|
|---|
| 27 | if not silent:
|
|---|
| 28 | print 'Checking ', repr(dirname), '...'
|
|---|
| 29 | names.sort()
|
|---|
| 30 | for name in names:
|
|---|
| 31 | if name[-3:] == '.py':
|
|---|
| 32 | name = os.path.join(dirname, name)
|
|---|
| 33 | try:
|
|---|
| 34 | st = os.stat(name)
|
|---|
| 35 | except os.error:
|
|---|
| 36 | print 'Cannot stat', repr(name)
|
|---|
| 37 | continue
|
|---|
| 38 | if verbose:
|
|---|
| 39 | print 'Check', repr(name), '...'
|
|---|
| 40 | name_c = name + 'c'
|
|---|
| 41 | try:
|
|---|
| 42 | f = open(name_c, 'r')
|
|---|
| 43 | except IOError:
|
|---|
| 44 | print 'Cannot open', repr(name_c)
|
|---|
| 45 | continue
|
|---|
| 46 | magic_str = f.read(4)
|
|---|
| 47 | mtime_str = f.read(4)
|
|---|
| 48 | f.close()
|
|---|
| 49 | if magic_str <> MAGIC:
|
|---|
| 50 | print 'Bad MAGIC word in ".pyc" file',
|
|---|
| 51 | print repr(name_c)
|
|---|
| 52 | continue
|
|---|
| 53 | mtime = get_long(mtime_str)
|
|---|
| 54 | if mtime == 0 or mtime == -1:
|
|---|
| 55 | print 'Bad ".pyc" file', repr(name_c)
|
|---|
| 56 | elif mtime <> st[ST_MTIME]:
|
|---|
| 57 | print 'Out-of-date ".pyc" file',
|
|---|
| 58 | print repr(name_c)
|
|---|
| 59 |
|
|---|
| 60 | def get_long(s):
|
|---|
| 61 | if len(s) <> 4:
|
|---|
| 62 | return -1
|
|---|
| 63 | return ord(s[0]) + (ord(s[1])<<8) + (ord(s[2])<<16) + (ord(s[3])<<24)
|
|---|
| 64 |
|
|---|
| 65 | if __name__ == '__main__':
|
|---|
| 66 | main()
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.