Revision: 151
Author: clach04
Date: Wed Aug 21 04:22:58 2013 UTC
Log: 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"
http://code.google.com/p/ctypesgen/source/detail?r=151
Modified:
/trunk/ctypesgencore/libraryloader.py
=======================================
--- /trunk/ctypesgencore/libraryloader.py Sat Oct 1 20:56:43 2011 UTC
+++ /trunk/ctypesgencore/libraryloader.py Wed Aug 21 04:22:58 2013 UTC
@@ -33,6 +33,7 @@
#
----------------------------------------------------------------------------
import os.path, re, sys, glob
+import platform
import ctypes
import ctypes.util
@@ -167,7 +168,21 @@
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]')