python3: do not rely only on LIBRARY_PATH for old compilers

The cross-compilation improvements integrated in Python rely on the
compiler exposing a line starting with LIBRARY_PATH when called with
-E -v. This is used by Python setup.py to find the installation
locations of libraries.

However, this LIBRARY_PATH line is not shown by very old compilers,
such as the gcc 4.2.x compiler used on the AVR32 architecture. This
causes libraries installed in the sysroot, such as libffi, to not be
detected by the setup.py script.

To fix this problem, this patch adds addtional logic to setup.py,
which consists in deriving the library paths from the sysroot
location, if no LIBRARY_PATH field was found.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Index: b/setup.py
===================================================================
--- a/setup.py
+++ b/setup.py
@@ -427,6 +427,7 @@
         in_incdirs = False
         inc_dirs = []
         lib_dirs = []
+        compiler_has_library_path = False
         try:
             if ret >> 8 == 0:
                 with open(tmpfile) as fp:
@@ -438,6 +439,7 @@
                         elif line.startswith("End of search list"):
                             in_incdirs = False
                         elif is_gcc and line.startswith("LIBRARY_PATH"):
+                            compiler_has_library_path = True
                             for d in line.strip().split("=")[1].split(":"):
                                 d = os.path.normpath(d)
                                 if '/gcc/' not in d:
@@ -449,6 +451,15 @@
         finally:
             os.unlink(tmpfile)
 
+        if not compiler_has_library_path:
+            ret = os.system("%s -print-file-name=libc.a | sed -r -e 's:(usr/)?lib(32|64)?/([^/]*/)?libc\.a::' >%s" % (gcc, tmpfile))
+            with open(tmpfile) as fp:
+                line = fp.readline().strip()
+                add_dir_to_list(self.compiler.library_dirs,
+                                os.path.join(line, "usr", "lib"))
+                add_dir_to_list(self.compiler.library_dirs,
+                                os.path.join(line, "lib"))
+
     def detect_modules(self):
         # Ensure that /usr/local is always used, but the local build
         # directories (i.e. '.' and 'Include') must be first.  See issue
