From: Stefan Krah <stefan@bytereef.org>
Date: Sat, 17 Jul 2010 11:48:58 +0000 (+0000)
Subject: Merged revisions 82927 via svnmerge from
X-Git-Tag: v3.1.3rc1~497
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=61f5f01393d1eace2d31afeba1a7a5d066adfa93;p=python

Merged revisions 82927 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r82927 | stefan.krah | 2010-07-17 13:46:52 +0200 (Sat, 17 Jul 2010) | 4 lines

  Issue #7384: On Gentoo, libreadline.so is a "fake library", so ldd fails.
  In that case, do not attempt to parse stderr output.
........
---

diff --git a/setup.py b/setup.py
index 435cb5363c..332033dd7f 100644
--- a/setup.py
+++ b/setup.py
@@ -547,18 +547,19 @@ class PyBuildExt(build_ext):
             tmpfile = os.path.join(self.build_temp, 'readline_termcap_lib')
             if not os.path.exists(self.build_temp):
                 os.makedirs(self.build_temp)
-            os.system("ldd %s > %s" % (do_readline, tmpfile))
-            fp = open(tmpfile)
-            for ln in fp:
-                if 'curses' in ln:
-                    readline_termcap_library = re.sub(
-                        r'.*lib(n?cursesw?)\.so.*', r'\1', ln
-                    ).rstrip()
-                    break
-                if 'tinfo' in ln: # termcap interface split out from ncurses
-                    readline_termcap_library = 'tinfo'
-                    break
-            fp.close()
+            ret = os.system("ldd %s > %s" % (do_readline, tmpfile))
+            if ret >> 8 == 0:
+                fp = open(tmpfile)
+                for ln in fp:
+                    if 'curses' in ln:
+                        readline_termcap_library = re.sub(
+                            r'.*lib(n?cursesw?)\.so.*', r'\1', ln
+                        ).rstrip()
+                        break
+                    if 'tinfo' in ln: # termcap interface split out from ncurses
+                        readline_termcap_library = 'tinfo'
+                        break
+                fp.close()
             os.unlink(tmpfile)
         # Issue 7384: If readline is already linked against curses,
         # use the same library for the readline and curses modules.