Upstream-Status: Pending

Index: Python-2.7.12/Lib/distutils/unixccompiler.py
===================================================================
--- Python-2.7.12.orig/Lib/distutils/unixccompiler.py
+++ Python-2.7.12/Lib/distutils/unixccompiler.py
@@ -278,6 +278,8 @@ class UnixCCompiler(CCompiler):
 
 
 
+        print "Looking in %s for %s" % (lib, dirs)
+
         for dir in dirs:
             shared = os.path.join(dir, shared_f)
             dylib = os.path.join(dir, dylib_f)
@@ -298,12 +300,16 @@ class UnixCCompiler(CCompiler):
             # assuming that *all* Unix C compilers do.  And of course I'm
             # ignoring even GCC's "-static" option.  So sue me.
             if os.path.exists(dylib):
+                print "Found %s" % (dylib)
                 return dylib
             elif os.path.exists(xcode_stub):
+                print "Found %s" % (xcode_stub)
                 return xcode_stub
             elif os.path.exists(shared):
+                print "Found %s" % (shared)
                 return shared
             elif os.path.exists(static):
+                print "Found %s" % (static)
                 return static
 
         # Oops, didn't find it in *any* of 'dirs'
