* Write parentheses around `print' operands.
* Set `universal_newlines' on in `Popen' to force handling in text
mode.
* Use an unpleasant hack to inject the `CommandClass' metaclass,
because the official syntax is so different between the two
versions.
import distutils.core as DC
import distutils.log as DL
import distutils.core as DC
import distutils.log as DL
+###--------------------------------------------------------------------------
+### Compatibility hacks.
+
+def with_metaclass(meta, *supers):
+ return meta("#<anonymous base %s>" % meta.__name__,
+ supers or (object,), dict())
+
###--------------------------------------------------------------------------
### Random utilities.
###--------------------------------------------------------------------------
### Random utilities.
The COMMAND must produce exactly one line of output, and must exit with
status zero.
"""
The COMMAND must produce exactly one line of output, and must exit with
status zero.
"""
- kid = SUB.Popen(command, stdout = SUB.PIPE)
+ kid = SUB.Popen(command, stdout = SUB.PIPE, universal_newlines = True)
try:
out = kid.stdout.readline()
junk = kid.stdout.read(1)
try:
out = kid.stdout.readline()
junk = kid.stdout.read(1)
else: CMDS[name] = c
return c
else: CMDS[name] = c
return c
-class Command (DC.Command, object):
+class Command (with_metaclass(CommandClass, DC.Command, object)):
"""
Base class for `mdwsetup' command classes.
"""
Base class for `mdwsetup' command classes.
description = "print the distribution directory name to stdout"
def run(me):
d = me.distribution
description = "print the distribution directory name to stdout"
def run(me):
d = me.distribution
- print '%s-%s' % (d.get_name(), d.get_version())
+ print('%s-%s' % (d.get_name(), d.get_version()))
class build_gen(Command):
"""
class build_gen(Command):
"""