From c999bb38bd41bf2d0fefce57ab33ffa2cf7097c4 Mon Sep 17 00:00:00 2001 From: Thomas-Karl Pietrowski Date: Thu, 19 Nov 2015 18:51:18 +0100 Subject: [PATCH] New method finding correct "cpu" sting Except of using the platform.architecture for the check, I'm using the platform.machine output to check for the cpu detection. I'm not sure about different outputs on other devices, eg. different ARM versions, so added a dictionary which translates these strings to the correct one found in /lib/*. In case a platform.machine output is unknown to the dictionary, the code will fall back to i386 like the old code and warn the user about that. A missing translation can be easily added to the dictionary to support other platforms. WARNING: This commit is untested and was coded via github webpage. --- setup.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index 3f277c3..0dd6d1c 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ except ImportError: from os import environ from os.path import dirname, join, exists import sys -from platform import architecture +from platform import machine PY3 = sys.version_info >= (3,0,0) @@ -110,8 +110,20 @@ else: shell=True, stdout=subprocess.PIPE).communicate()[0].strip() if not jre_home: raise Exception('Unable to determine JRE_HOME') - cpu = 'amd64' if architecture()[0] == '64bit' else 'i386' - + + # This dictionary converts values from platform.machine() to a "cpu" string. + # It is needed to set the correct lib path, found in the jre_home, eg. /lib//. + machine2cpu = {"i686" : "i386" + "x86_64" : "amd64", + "armv7l" : "arm" + } + if machine() in machine2cpu.keys(): + cpu = machine2cpu[machine()] + else: + print("WARNING: Not able to assign machine() = %s to a cpu value!" %(machine())) + print(" Using cpu = 'i386' instead!") + cpu = 'i386' + if platform == 'win32': incl_dir = join(jdk_home, 'include', 'win32') libraries = ['jvm']