mdwsetup.py: Fixes for Python 3 compatibility.
[cfd] / mdwsetup.py
index 57832a2..385634d 100644 (file)
@@ -34,6 +34,13 @@ import distutils.core as DC
 import distutils.log as DL
 
 ###--------------------------------------------------------------------------
 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.
 
 def uniquify(seq):
 ### Random utilities.
 
 def uniquify(seq):
@@ -73,10 +80,10 @@ def progoutput(command):
   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()
   try:
     out = kid.stdout.readline()
-    junk = kid.stdout.read()
+    junk = kid.stdout.read(1)
   finally:
     kid.stdout.close()
   if junk != '': raise ValueError \
   finally:
     kid.stdout.close()
   if junk != '': raise ValueError \
@@ -227,7 +234,7 @@ class CommandClass (type):
     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.
 
@@ -250,7 +257,7 @@ class distdir (Command):
   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):
   """