From ee736929d455fe3ee3c75368d4c0129c66ccd6ca Mon Sep 17 00:00:00 2001 From: Yen Chi Hsuan Date: Sun, 22 Nov 2015 00:41:33 +0800 Subject: [PATCH 1/3] Link select.cpython-34m.so with libm.so ceil is introduced since cpython hg rev 88845:827d948ac6aa --- mk/python/3.4.3/python-3.4.3-python-misc.patch | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mk/python/3.4.3/python-3.4.3-python-misc.patch b/mk/python/3.4.3/python-3.4.3-python-misc.patch index 57450625..675eccaf 100644 --- a/mk/python/3.4.3/python-3.4.3-python-misc.patch +++ b/mk/python/3.4.3/python-3.4.3-python-misc.patch @@ -64,6 +64,16 @@ diff -ru Python-3.3.5/setup.py Python-3.3.5-android/setup.py lib = sysconfig.get_config_var('TIMEMODULE_LIB') if lib: time_libs.append(lib) +@@ -631,7 +631,8 @@ + missing.append('spwd') + + # select(2); not on ancient System V +- exts.append( Extension('select', ['selectmodule.c']) ) ++ exts.append( Extension('select', ['selectmodule.c'], ++ libraries=['m']) ) + + # Fred Drake's interface to the Python parser + exts.append( Extension('parser', ['parsermodule.c']) ) @@ -639,7 +639,8 @@ # Operations on audio samples # According to #993173, this one should actually work fine on From 969dbfafd0efdf9f758536feb248c49b5805aa5a Mon Sep 17 00:00:00 2001 From: Yen Chi Hsuan Date: Sun, 22 Nov 2015 01:20:53 +0800 Subject: [PATCH 2/3] Correctly handling in android_version() --- .../3.4.3/python-3.4.3-android-misc.patch | 45 ++++++++++++------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/mk/python/3.4.3/python-3.4.3-android-misc.patch b/mk/python/3.4.3/python-3.4.3-android-misc.patch index 48bb11f4..fa7a1c5a 100644 --- a/mk/python/3.4.3/python-3.4.3-android-misc.patch +++ b/mk/python/3.4.3/python-3.4.3-android-misc.patch @@ -1,7 +1,7 @@ diff -ru Python-3.3.5/Lib/platform.py Python-3.3.5-android/Lib/platform.py --- Python-3.3.5/Lib/platform.py 2014-03-09 09:40:13.000000000 +0100 +++ Python-3.3.5-android/Lib/platform.py 2014-08-04 22:19:36.000000000 +0200 -@@ -368,6 +368,63 @@ +@@ -368,6 +368,76 @@ supported_dists=supported_dists, full_distribution_name=0) @@ -30,37 +30,50 @@ diff -ru Python-3.3.5/Lib/platform.py Python-3.3.5-android/Lib/platform.py + # Try the 'official' API tool first, since /system/build.prop might + # not be the only source for properties. + if os.access('/system/bin/getprop', os.X_OK): ++ def _getprop(prop): ++ android_property_fd = _get_android_property_fd() ++ pass_fds = (android_property_fd,) if android_property_fd else () ++ try: ++ result = subprocess.check_output(['/system/bin/getprop', prop], ++ pass_fds=pass_fds) ++ return result.decode('ascii').strip() ++ except (subprocess.CalledProcessError, UnicodeDecodeError): ++ raise RuntimeError('getprop failed') ++ + try: -+ output = subprocess.check_output(['/system/bin/getprop', -+ _android_version_property]) -+ version = output.decode('ascii').strip() ++ version = _getprop(_android_version_property) + version_obtained = True -+ except (subprocess.CalledProcessError, UnicodeDecodeError): ++ except RuntimeError: + pass + + try: -+ output = subprocess.check_output(['/system/bin/getprop', -+ _android_buildstr_property]) -+ buildstr = output.decode('ascii').strip() ++ buildstr = _getprop(_android_buildstr_property) + buildstr_obtained = True -+ except (subprocess.CalledProcessError, UnicodeDecodeError): ++ except RuntimeError: + pass + done = version_obtained and buildstr_obtained + + # Fall back to parsing /system/build.prop manually. + if not done and os.path.isfile('/system/build.prop'): -+ for line in open('/system/build.prop'): -+ if '=' not in line: ++ for line in open('/system/build.prop', 'rb'): ++ if b'=' not in line: + continue -+ key, val = line.split('=') -+ key = key.strip() ++ key, val = line.split(b'=', maxsplit=1) ++ key = key.strip().decode('ascii') + + if not version_obtained and key == _android_version_property: -+ version = val.strip() -+ elif not buildstr_obtained and key == _android_buildstr_property: -+ buildstr = val.strip() ++ version = val.strip().decode('ascii') ++ if not buildstr_obtained and key == _android_buildstr_property: ++ buildstr = val.strip().decode('ascii') + + return version, buildstr ++ ++def _get_android_property_fd(): ++ android_property_workspace = os.getenv('ANDROID_PROPERTY_WORKSPACE') ++ if android_property_workspace: ++ property_fd_str = android_property_workspace.split(',')[0] ++ if property_fd_str.isdigit(): ++ return int(property_fd_str) + def popen(cmd, mode='r', bufsize=-1): From 76ca3319fd2a79692e753169008d1f475c674497 Mon Sep 17 00:00:00 2001 From: Yen Chi Hsuan Date: Wed, 25 Nov 2015 03:32:00 +0800 Subject: [PATCH 3/3] Use utf-8 everywhere --- mk/python/3.4.3/python-3.4.3-android-misc.patch | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mk/python/3.4.3/python-3.4.3-android-misc.patch b/mk/python/3.4.3/python-3.4.3-android-misc.patch index fa7a1c5a..3914fc9f 100644 --- a/mk/python/3.4.3/python-3.4.3-android-misc.patch +++ b/mk/python/3.4.3/python-3.4.3-android-misc.patch @@ -36,7 +36,7 @@ diff -ru Python-3.3.5/Lib/platform.py Python-3.3.5-android/Lib/platform.py + try: + result = subprocess.check_output(['/system/bin/getprop', prop], + pass_fds=pass_fds) -+ return result.decode('ascii').strip() ++ return result.decode('utf-8').strip() + except (subprocess.CalledProcessError, UnicodeDecodeError): + raise RuntimeError('getprop failed') + @@ -59,12 +59,12 @@ diff -ru Python-3.3.5/Lib/platform.py Python-3.3.5-android/Lib/platform.py + if b'=' not in line: + continue + key, val = line.split(b'=', maxsplit=1) -+ key = key.strip().decode('ascii') ++ key = key.strip().decode('utf-8') + + if not version_obtained and key == _android_version_property: -+ version = val.strip().decode('ascii') ++ version = val.strip().decode('utf-8') + if not buildstr_obtained and key == _android_buildstr_property: -+ buildstr = val.strip().decode('ascii') ++ buildstr = val.strip().decode('utf-8') + + return version, buildstr +