X-Git-Url: https://git.distorted.org.uk/~mdw/runlisp/blobdiff_plain/f3c13bfa1db49e33489169ac92153e7a7d1c3110..0ebebfc000cec6d2f974f26074bc6ff3c7f304d7:/mdwsetup.py diff --git a/mdwsetup.py b/mdwsetup.py index 57832a2..0bce572 100644 --- a/mdwsetup.py +++ b/mdwsetup.py @@ -34,6 +34,13 @@ import distutils.core as DC import distutils.log as DL ###-------------------------------------------------------------------------- +### Compatibility hacks. + +def with_metaclass(meta, *supers): + return meta("#" % meta.__name__, + supers or (object,), dict()) + +###-------------------------------------------------------------------------- ### 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. """ - 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() + junk = kid.stdout.read(1) finally: kid.stdout.close() if junk != '': raise ValueError \ @@ -227,7 +234,7 @@ class CommandClass (type): 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. @@ -250,9 +257,9 @@ class distdir (Command): 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): """ Generate files, according to the `genfiles'. @@ -281,7 +288,7 @@ class build (_build, Command): sub_commands = [('build_gen', lambda me: me.distribution.genfiles)] sub_commands += _build.sub_commands -class clean_gen(Command): +class clean_gen (Command): """ Remove the generated files, as listed in `genfiles'. @@ -293,7 +300,7 @@ class clean_gen(Command): d = me.distribution for g in d.genfiles: g.clean(dry_run_p = me.dry_run) -class clean_others(Command): +class clean_others (Command): """ Remove the files listed in the `cleanfiles' argument to `setup'. """