| Author: Andrei Gherzan <andrei@gherzan.ro> |
| Date: Sun Mar 25 02:02:27 2012 +0200 |
| |
| This patch was added for 64bit host machines. In the compile process python |
| is checking if platform is a 64bit platform using sys.maxint which is the host's |
| value. The patch fixes this issue so that python would check if TARGET machine |
| is 64bit not the HOST machine. In this way will have "dl" and "imageop" modules |
| built if HOST machine is 64bit but the target machine is 32bit. |
| |
| Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> |
| |
| Upstream-Status: Pending |
| |
| Index: Python-2.7.2/setup.py |
| =================================================================== |
| --- Python-2.7.2.orig/setup.py 2012-03-25 01:10:41.540163187 +0200 |
| +++ Python-2.7.2/setup.py 2012-03-25 01:26:06.092539990 +0200 |
| @@ -23,6 +23,21 @@ |
| # This global variable is used to hold the list of modules to be disabled. |
| disabled_module_list = [] |
| |
| +def target_is_64bit_platform (): |
| + """ |
| + In case of cross-compile, some modules are not build as setup checks if HOST |
| + is 64bit and not TARGET. |
| + As python was built for TARGET we can check this in pyconfig.h in this way: |
| + Sizeof LONG on a 32 bit platform is 4 bytes |
| + Sizeof LONG on a 64 bit platform is 8 bytes |
| + """ |
| + pyconf = open("pyconfig.h").read() |
| + aux = re.search(r"#s*define\s+SIZEOF_LONG\s+8\s*", pyconf) |
| + if aux is not None: |
| + return True |
| + else: |
| + return False |
| + |
| def add_dir_to_list(dirlist, dir): |
| """Add the directory 'dir' to the list 'dirlist' (at the front) if |
| 1) 'dir' is not already in 'dirlist' |
| @@ -628,7 +643,7 @@ |
| exts.append( Extension('audioop', ['audioop.c']) ) |
| |
| # Disabled on 64-bit platforms |
| - if sys.maxint != 9223372036854775807L: |
| + if not target_is_64bit_platform(): |
| # Operations on images |
| exts.append( Extension('imageop', ['imageop.c']) ) |
| else: |
| @@ -1418,7 +1433,7 @@ |
| missing.append('_codecs_%s' % loc) |
| |
| # Dynamic loading module |
| - if sys.maxint == 0x7fffffff: |
| + if not target_is_64bit_platform(): |
| # This requires sizeof(int) == sizeof(long) == sizeof(char*) |
| dl_inc = find_file('dlfcn.h', [], inc_dirs) |
| if (dl_inc is not None) and (platform not in ['atheos']): |