From 01ce5c22d68e0e46ea93766fcbcbbee58e41c968 Mon Sep 17 00:00:00 2001 From: clach04 Date: Wed, 21 Aug 2013 04:22:58 +0000 Subject: [PATCH] Fix test suite failures under Ubuntu 12.04 due to multiarch. Updated loader as libc and libm loading was failing due to looking in wrong directories. Tested platform: $ cat /etc/*elease DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Ubuntu 12.04.1 LTS" --- ctypesgencore/libraryloader.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/ctypesgencore/libraryloader.py b/ctypesgencore/libraryloader.py index 71132f2c..7cc8d819 100644 --- a/ctypesgencore/libraryloader.py +++ b/ctypesgencore/libraryloader.py @@ -33,6 +33,7 @@ # ---------------------------------------------------------------------------- import os.path, re, sys, glob +import platform import ctypes import ctypes.util @@ -167,7 +168,21 @@ def _create_ld_so_cache(self): try: directories.extend([dir.strip() for dir in open('/etc/ld.so.conf')]) except IOError: pass - directories.extend(['/lib', '/usr/lib', '/lib64', '/usr/lib64']) + unix_lib_dirs_list = ['/lib', '/usr/lib', '/lib64', '/usr/lib64'] + if sys.platform.startswith('linux'): + # Try and support multiarch work in Ubuntu + # https://wiki.ubuntu.com/MultiarchSpec + bitage = platform.architecture()[0] + if bitage.startswith('32'): + # Assume Intel/AMD x86 compat + unix_lib_dirs_list += ['/lib/i386-linux-gnu', '/usr/lib/i386-linux-gnu'] + elif bitage.startswith('64'): + # Assume Intel/AMD x86 compat + unix_lib_dirs_list += ['/lib/x86_64-linux-gnu', '/usr/lib/x86_64-linux-gnu'] + else: + # guess... + unix_lib_dirs_list += glob.glob('/lib/*linux-gnu') + directories.extend(unix_lib_dirs_list) cache = {} lib_re = re.compile(r'lib(.*)\.s[ol]')