summaryrefslogtreecommitdiffstats
path: root/Lib/py_compile.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1994-08-29 10:52:58 (GMT)
committerGuido van Rossum <guido@python.org>1994-08-29 10:52:58 (GMT)
commit3bb54487675cd28166fc7271b5788b185bcc1b63 (patch)
tree4dd685744d72cedf72db3194a8ffc8f0846d0cfb /Lib/py_compile.py
parent7b1e974b4bd7c17cd90a6d03bab0aaa079d78d29 (diff)
downloadcpython-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.py25
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)