diff options
author | Guido van Rossum <guido@python.org> | 1994-08-29 10:52:58 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1994-08-29 10:52:58 (GMT) |
commit | 3bb54487675cd28166fc7271b5788b185bcc1b63 (patch) | |
tree | 4dd685744d72cedf72db3194a8ffc8f0846d0cfb /Lib/py_compile.py | |
parent | 7b1e974b4bd7c17cd90a6d03bab0aaa079d78d29 (diff) | |
download | cpython-3bb54487675cd28166fc7271b5788b185bcc1b63.zip cpython-3bb54487675cd28166fc7271b5788b185bcc1b63.tar.gz cpython-3bb54487675cd28166fc7271b5788b185bcc1b63.tar.bz2 |
New way of generating .pyc files, thanks to Sjoerd.
urllib.py: '+' is not always safe (even though the RFC says so :-( )
whrandom.py: throw away top bits of time to avoid overflow on Mac
(where times can be negative)
Diffstat (limited to 'Lib/py_compile.py')
-rw-r--r-- | Lib/py_compile.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/Lib/py_compile.py b/Lib/py_compile.py new file mode 100644 index 0000000..ed54f47 --- /dev/null +++ b/Lib/py_compile.py @@ -0,0 +1,25 @@ +# Routine to "compile" a .py file to a .pyc file. +# This has intimate knowledge of how Python/import.c does it. +# By Sjoerd Mullender (I forced him to write it :-). + +MAGIC = 0x999903 + +def wr_long(f, x): + f.write(chr( x & 0xff)) + f.write(chr((x >> 8) & 0xff)) + f.write(chr((x >> 16) & 0xff)) + f.write(chr((x >> 24) & 0xff)) + +def compile(file, cfile = None): + import os, marshal, __builtin__ + f = open(file) + codestring = f.read() + timestamp = os.fstat(f.fileno())[8] + f.close() + codeobject = __builtin__.compile(codestring, file, 'exec') + if not cfile: + cfile = file + 'c' + fc = open(cfile, 'w') + wr_long(fc, MAGIC) + wr_long(fc, timestamp) + marshal.dump(codeobject, fc) |