mdwsetup.py (progoutput): Only read one byte to decide whether there is more.
[runlisp] / mdwsetup.py
index 45772fb..0210714 100644 (file)
@@ -74,8 +74,11 @@ def progoutput(command):
   status zero.
   """
   kid = SUB.Popen(command, stdout = SUB.PIPE)
-  out = kid.stdout.readline()
-  junk = kid.stdout.read()
+  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()
@@ -104,14 +107,17 @@ def pkg_config(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:])
-    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:])
-    else: weird('--libs', word)
+    else: weird('LIBS', word)
 
 ###--------------------------------------------------------------------------
 ### Substituting variables in files.