From patchwork Fri Sep 20 14:23:50 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [12,of,13,V2,py3,support] setup: handle more invalid python3 syntax From: Augie Fackler X-Patchwork-Id: 2560 Message-Id: To: mercurial-devel@selenic.com Date: Fri, 20 Sep 2013 10:23:50 -0400 # HG changeset patch # User Augie Fackler # Date 1379619522 14400 # Thu Sep 19 15:38:42 2013 -0400 # Node ID f1b096a613612935b9b556b25b33c32a29f75f67 # Parent 7f550b19c99c2913fe6ae147ba8e1ce793ddd07f setup: handle more invalid python3 syntax This should keep the file portable to both python2 and python3. diff --git a/setup.py b/setup.py --- a/setup.py +++ b/setup.py @@ -13,11 +13,18 @@ '''A helper function to emulate 2.6+ bytes literals using string literals.''' return s.encode('latin1') + printf = eval('print') + libdir_escape = 'unicode_escape' else: + libdir_escape = 'string_escape' def b(s): '''A helper function to emulate 2.6+ bytes literals using string literals.''' return s + def printf(*args, **kwargs): + f = kwargs.get('file', sys.stdout) + end = kwargs.get('end', '\n') + f.write(b' '.join(args) + end) # Solaris Python packaging brain damage try: @@ -152,8 +159,8 @@ and not e.startswith(b('warning: Not importing')) \ and not e.startswith(b('obsolete feature not enabled'))] if err: - print >> sys.stderr, "stderr from '%s':" % (' '.join(cmd)) - print >> sys.stderr, '\n'.join([' ' + e for e in err]) + printf("stderr from '%s':" % (' '.join(cmd)), file=sys.stderr) + printf(b('\n').join([b(' ') + e for e in err]), file=sys.stderr) return '' return out @@ -403,7 +410,7 @@ if b('\0') in data: continue - data = data.replace('@LIBDIR@', libdir.encode('string_escape')) + data = data.replace(b('@LIBDIR@'), libdir.encode(libdir_escape)) fp = open(outfile, 'wb') fp.write(data) fp.close()