From 11b220c707a5bd1777e489dac301132be6585c5b Mon Sep 17 00:00:00 2001 From: RjY Date: Thu, 10 Apr 2014 05:44:57 +0100 Subject: [PATCH] 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) --- bootstrap/bootstrap.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/bootstrap/bootstrap.py b/bootstrap/bootstrap.py index dd7e7837..468270b0 100755 --- a/bootstrap/bootstrap.py +++ b/bootstrap/bootstrap.py @@ -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()