chiark
/
gitweb
/
~mdw
/
runlisp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mdwsetup.py: Fixes for Python 3 compatibility.
[runlisp]
/
mdwsetup.py
diff --git
a/mdwsetup.py
b/mdwsetup.py
index 45772fb6f3a70a7ecff1040501747973f650a62a..385634d19334c4ee953f7cfd8ee4edb53c8038aa 100644
(file)
--- a/
mdwsetup.py
+++ b/
mdwsetup.py
@@
-33,6
+33,13
@@
import subprocess as SUB
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.
@@
-73,9
+80,12
@@
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)
- out = kid.stdout.readline()
- junk = kid.stdout.read()
+ kid = SUB.Popen(command, stdout = SUB.PIPE, universal_newlines = True)
+ try:
+ out = kid.stdout.readline()
+ junk = kid.stdout.read(1)
+ finally:
+ kid.stdout.close()
if junk != '': raise ValueError \
("Child process `%s' produced unspected output %r" % (command, junk))
rc = kid.wait()
if junk != '': raise ValueError \
("Child process `%s' produced unspected output %r" % (command, junk))
rc = kid.wait()
@@
-104,14
+114,17
@@
def pkg_config(pkg, version):
spec = '%s >= %s' % (pkg, version)
spec = '%s >= %s' % (pkg, version)
- for word in progoutput(['pkg-config', '--cflags', spec]).split():
+ try: cflags = OS.environ["%s_CFLAGS" % pkg]
+ except KeyError: cflags = progoutput(['pkg-config', '--cflags', spec])
+ for word in cflags.split():
if word.startswith('-I'): INCLUDEDIRS.append(word[2:])
if word.startswith('-I'): INCLUDEDIRS.append(word[2:])
- else: weird('--cflags', word)
-
- for word in progoutput(['pkg-config', '--libs', spec]).split():
+ else: weird('CFLAGS', word)
+ try: libs = OS.environ["%s_LIBS" % pkg]
+ except KeyError: libs = progoutput(['pkg-config', '--libs', spec])
+ for word in libs.split():
if word.startswith('-L'): LIBDIRS.append(word[2:])
elif word.startswith('-l'): LIBS.append(word[2:])
if word.startswith('-L'): LIBDIRS.append(word[2:])
elif word.startswith('-l'): LIBS.append(word[2:])
- else: weird('
--libs
', word)
+ else: weird('
LIBS
', word)
###--------------------------------------------------------------------------
### Substituting variables in files.
###--------------------------------------------------------------------------
### Substituting variables in files.
@@
-221,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.
@@
-244,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):
"""