bootstrap: fix bootstrap.py with python2
- import print_function - wrap buffer, which is required in py3 to read/write bytes (not strings) from stdin/stdout, but missing in py2 (gives AttributeError)master
parent
f6ea500080
commit
11b220c707
|
@ -1,8 +1,21 @@
|
|||
#!/usr/bin/env python3
|
||||
#!/usr/bin/env python
|
||||
|
||||
from __future__ import print_function
|
||||
import sys
|
||||
import struct
|
||||
|
||||
def read():
|
||||
try:
|
||||
return sys.stdin.buffer.read()
|
||||
except AttributeError:
|
||||
return sys.stdin.read()
|
||||
|
||||
def write(out):
|
||||
try:
|
||||
sys.stdout.buffer.write(out)
|
||||
except AttributeError:
|
||||
sys.stdout.write(out)
|
||||
|
||||
def main():
|
||||
# read PLAYPAL from stdin, write minimal doom2.wad to stdout
|
||||
if sys.stdin.isatty():
|
||||
|
@ -11,7 +24,7 @@ def main():
|
|||
sys.exit(1)
|
||||
|
||||
# three lumps needed - see bootstrap/README.txt
|
||||
lumps = [(b'PLAYPAL', sys.stdin.buffer.read()),
|
||||
lumps = [(b'PLAYPAL', read()),
|
||||
(b'TEXTURE1', struct.pack("i", 0)), # empty texture1
|
||||
(b'PNAMES', struct.pack("i8s", 1, b''))] # single pname
|
||||
|
||||
|
@ -23,15 +36,14 @@ def main():
|
|||
pos += len(data)
|
||||
|
||||
# write wad header
|
||||
wadheader = (b'IWAD', len(waddir), pos)
|
||||
sys.stdout.buffer.write(struct.pack("4sii", *wadheader))
|
||||
write(struct.pack("4sii", b'IWAD', len(waddir), pos))
|
||||
|
||||
# write lump contents
|
||||
for name, data in lumps:
|
||||
sys.stdout.buffer.write(data)
|
||||
write(data)
|
||||
|
||||
# write wad directory
|
||||
for i in waddir:
|
||||
sys.stdout.buffer.write(struct.pack("ii8s", *i))
|
||||
write(struct.pack("ii8s", *i))
|
||||
|
||||
if __name__ == "__main__": main()
|
||||
|
|
Loading…
Reference in New Issue